컨트랙트 외부에 있는 사람들은 2종류가 있음
- 일반 유저 - 트랜잭션을 만들어서 보낼 수 있음
- 컨트랙트 - 컨트랙트의 함수를 호출할 수 있음
조건? Public 키워드로 외부에 노출되어 있어야 함
(Public 말고 다른 키워드도 있음 -> external)
Getter 함수 생성
-> 그 값을 반환하는 함수
변수가 있고
변수의 값을 반환
Visibility?
Private -> 상속받은 애가 함수를 사용 못함
Internal -> 바깥에선 못 쓰는데 안에선 쓸 수 있다. 상속받은 애가 쓸 수 있다.
함수는 바깥에서 트랜잭션을 보내서 실행할 수 있다
꼭 트랜잭션이 아니어도 되지만
상태를 변경하는 함수를 쓸 땐 트랜잭션 필요
chairperson = Msg.sender
이 컨트랙트를 배포한 사람의 주소를 저 변수에 기록해놔라
Why? require이 true값이면 아무 문제 없이 진행됨
false면 뒤에 메시지를 보여줌
require문으로 condition을 강제할 수 있다
뒤에 giveRightToVote = 투표권을 줄 수 있는 살마은
OnlyChair만 된다로 강제
클라이언트가 이벤트를 리스닝할 수 있어
노드에 계속 물어봄
어떤 이벤트 발생했어?
블록에서 내가 리스닝하는 이벤트가 발생하면
= 내가 리스닝하고 있는 컨트랙트의 이벤트가 발생하면
무언가 할 수 있는 메커니즘이 있음
어떤 사건이 발생했을 때
그때 일을 처리하는 게 중요
(언제 발생할지 모르니까 기다리는거)
큐가 이벤트
Voted란 이벤트가 발생하면
이벤트 발생한게 누구인지, 어느 안건에 투표한건지 알고 싶다
그런 이벤트 정의한 다음에
vote란 함수 안에서
msg.sender가 어느 proposal에 투표했다 이벤트 발생함
- address payable?
address에 직접 클레이를 보내거나
컨트랙트 내에서 어느 어드레스에서 다른 어드레스로 클레이 보냄
실제 클레이가 오고갈 수 있는 기능은
-> address payable만 가능
- Reference Types
Unit -> 밸류 타입
그 하나로 값이기 때문에 사이즈 영역 정해져있음 (고정)
메모리 할당하기가 편하니까
사이즈가 정해져있지 않고 늘어날 수 있는 경우
Reference type 씀
Why? 데이타 사이즈 바뀔 수 있으니까
- 함수의 종류와 함께 사라지는 값 => 메모리로 만듦
https://www.inflearn.com/course/klaytn-스마트계약과-탈중앙앱/dashboard
'Blockchain' 카테고리의 다른 글
Crypto Travel Rule (0) | 2022.04.25 |
---|---|
블록체인의 문제 (0) | 2022.04.10 |
멀티체인(MultiChain) (0) | 2022.04.07 |
메인체인(main chain) (0) | 2022.04.05 |
Transactions (0) | 2022.04.05 |