컨트랙트 : 이더리움 애플리케이션의 기본적인 요소
Version Pragma : 해당 코드가 이용해야 하는 솔리디티 버전을 선언하는 것. 맨 위에 작성해야 한다.
ex) pragma solidity ^0.4.19;
상태 변수 : 계약 내에서 선언됐으나 함수에 속하지는 않는 변수. 컨트랙트 저장소에 영구적으로 저장된다.
구조체 : 복합 자료형. 서로 다른 자료형으로 지정된 여러 개의 변수로 구성된다. 변수 외의 코드는 포함하지 않는다.
ex)
struct Person{
uint age;
string name;
}
배열 : 타입이 같은 값들의 모둠을 참조.
ex) uint[2] age;
age = [int(10) , 20];
ex) int[] age = [int(10) , 20];
int[] age = new int[](5);
함수 : 상태 변수를 읽거나 상태 변수에 값을 쓰는 매커니즘이다. 호출을 통해 실행할 수 있는 코드의 단위. 함수는 파라미터를 받아들여서 로직을 수행하고 호출자에게 값을 반환할 수 있다. 함수 인자명을 _로 시작해서 전역 변수와 구별하는 것이 관례이다.
ex)
function createZombie(string _name, uint _dna){
}
ex)
struct Person{
uint age;
string name;
}
Person[] public people;
이 때 새로운 Peson을 생성하고 배열에 추가하기 위해서
Person harry = Person(15, "harry");
people.push(harry);
또는
people.push(Person(15, "harry"));
ex)
function _addToArray(uint _number) private {
numbers.push(_number);
}
ex)
string a = "hello";
function sayHello() public returns (string) {
return a;
}
pure : 어떤 데이터도 접근하지( 읽고 쓰지 ) 않는다. 인자 값만 활용해서 반환 값을 정한다.
constant : 0.4.17 버전 이전에는 view/pure 대신 쓰임. 지금은 거의 안 쓴다고 한다.
payable : 함수가 에더를 받을 수 있게 한다.
ex) view 예시
function _generateRandomDna(string _str) private view returns (uint){
}
ex)
keccak256("aaaab"); -> 6e91ec6b61....로 바뀜
ex)
uint8 a = 5;
uint b = 6;
uint8 c = a * uint8(b);
ex)
event Added(uint x, uint y);
function add(uint _x, uint _y) {
uint result = _x + _y;
Added(_x, _y, result);
}
클라이언트 (자바스크립트):
YourContract.Added(function(error, result)){
//결과와 관련된 행동
}