컨트렉트에 어떤걸 하고 선언하고 정의할 수 있나요?
- state variables (상태변수)
- functions (함수들)
- function modifiers (함수 제어자)
- events (이벤트)
- struct types (struct, 구조체)
- enum types (바뀌지 않는 상수)
state variables (상태변수)
- 블록체인에 영구히 저장할 값은 상태변수로 선언
- public 키워드를 사용하여 변수를 외부에 노출가능 (이때 함수실행을 돕는 getter함수가 생성됨)
functions (함수들)
- external, public(모두 공개), internal, private중 하나로 visibility 설정
- payable(
function () public payable
), view, pure등 함수의 유형을 정의가능
function modifiers (함수 제어자)
함수 실행전 require과 같이 실행시킬지 분기 발생.
함수 제어자 내부 마지막에 _;
를 넣음
events (이벤트)
로깅같은 것?
- 이벤트가 실행될 때마다 트랜잭션 로그에 저장(나 이 블록에 포함되면서 이거했다~)
- 저장된 로그는 클라이언트가 스무스하게 listening할 수 있음
매번 새롭게 함수를 불러오기보다 액션이 있을때만 이 이벤트를 실행시키자!
이를 이용해 다른일을 유용하게 쓸 수 있다고 한다,,
struct types (struct, 구조체)
구조체.
자기자신을 넣을 순 없음.
enum types (바뀌지 않는 상수)
월화수목금토일 과 같은 바뀌지 않는 것들
enum status{
Open;
Closed;
}
이런 것들을 표현할 때 유용할 수 있다.