1. 변수
1.1. 상태변수
- 컨트랙트 저장소(이더리움 블록체인)에 영구적으로 저장되는 변수를 말함
- 컨트랙트 최상단에 선언
pragma solidity ^0.8.14;
contract SimpleStorage{
unit storedData;
unit storedData2 = 20;
}
- 상태변수 접근 수준
- internal (default)
- 컨트랙트 및 해당 컨트랙트 상속받은 컨트랙트 접근 가능
- 외부에서 엑세스 불가
- public
- 컨트랙트 내에서 직접 퍼블릭 상태 변수 사용 가능
- 외부 컨트랙트나 클라이언트 코드에서 getter함수로 접근 가능
- private
- constant / immutable
1.2. 지역변수
pragma solidity ^0.8.14;
contract SimpleStorage{
function simpleFunction() public pure returns(unit){
unit a;
unit b = 1;
a = 1;
unit c = a + b;
return c
}
}
1.3. 전역변수
- 다른 개발 언어들과는 다른 의미임
- 전역변수는 블록체인 안에 특수 변수를 말함 (지정되어있음)
function f(unit start, unit daysAfter) public {
if (block.timestamp >= start + daysAfter * 1 days){
}
}
- block : 블록에 대한 정보를 가지고 있음
- msg : 컨트랙트를 시작한 트랙잭션 콜이나 메시지 콜에대한 정보를 가지고 있음
- tx : 트랜잭션 데이터를 가지고 있음
- This : 현재 컨트랙트를 참조한다
함수
function 함수이름 (파라미터 형식1 파라미터1, 파라미터 형식2, 파라미터2, ...){...}
function 함수이름 (파라미터 형식1 파라미터1,...) returns (반환형식) {...}
view, pure
- view : 함수 밖의 변수들을 읽을 수 있으나 변경 불가능
unit256 public a = 1;
function read_a() public view returns(unit256){
return a+2;
}
- pure : 함수 밖의 변수들을 읽지 못하고, 변경도 불가능 (함수 내에서만 변수사용)
function read_b() public pure returns(unit256){
unit256 b = 1;
return b+2;
}
- view, pure 둘다 명시 안할 시 함수 밖의 변수들을 읽어서, 변경을 해야함
unit256 public a = 1;
function read_c() public returns(unit256){
a = 3;
return a+2;
}
selfdestruct(컨트랙트 생성자의 주소);
함수제어자(modifier)
- 비슷한 역할을 하는 코드를 모아서 만든 특별한 형태의 함수
- 함수 선언에 modifier를 추가하여 함수에 변경자를 적용 할 수 있음
- 변경자 : 함수를 실행하기 전, 요구 조건을 만족하는지 확인하는 작업
- 변경자는 _; 로 함수를 실행함
- 함수가 돌다가 _; 를 만나면 변경자 함수를 동작시키고 변경자 함수가 종료되면 그다음음 함수를 계속 실행한다.