블록체인 학습
0 XP

Chapter 10 마무리 테스트

이번 테스트에서는 이 차시에서 배운 이벤트 선언, emit 발행, indexed 매개변수, 매핑(상태 변수) 을 종합해 작은 토큰 컨트랙트를 완성합니다. 실제 ERC-20의 축소판이라고 보면 됩니다.

지갑과 익스플로러는 표준 Transfer(address indexed from, address indexed to, uint256 value) 로그 를 읽어 거래 내역을 보여줍니다. from 과 to 가 indexed 라서 topic 으로 저장되고, 덕분에 "이 주소가 보낸/받은 전송"을 빠르게 조회할 수 있습니다. 시그니처가 한 글자라도 다르면 표준 도구가 인식하지 못하니 정확히 맞추세요.

토큰 전송은 ① 보내는 사람 잔액 확인(require) → ② 잔액 갱신(상태 변수) → ③ Transfer 발행 순서로 작성합니다. getBalance 는 잔액을 바꾸지 않고 조회만 하므로 view 로 선언합니다.

해야 할 일:

  1. EventToken 컨트랙트를 만드세요.
  2. balanceOf 라는 public 매핑(address => uint256)을 선언하세요.
  3. Transfer 이벤트를 선언하세요. 매개변수는 address indexed from, address indexed to, uint256 value 입니다.
  4. 생성자에서 배포자(msg.sender)에게 1000 만큼의 잔액을 주세요.
  5. transfer(address to, uint256 value) 함수를 만드세요.
    • 보내는 사람의 잔액이 충분한지 require 로 확인
    • 잔액을 갱신(보내는 쪽 감소, 받는 쪽 증가)
    • Transfer 이벤트 발행
  6. getBalance(address account) 함수를 만드세요. 해당 주소의 잔액을 view 로 반환합니다.

balanceOf 를 public 으로 두면 컴파일러가 자동 getter 를 만들어 줍니다. 그래도 이 테스트는 명시적으로 getBalance 를 요구하니 view 함수로 따로 구현하세요.

완성 후 Run 을 눌러 모든 조건을 통과하는지 확인하세요.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.