[Ethereum] Ethernaut 풀이 - 0.Hello Ethenaut

in #kr-dev6 years ago


안녕하세요. 개발자 모도리입니다.
지난 포스팅(Ethernaut 소개)에서는 Ethernaut을 소개하고 이용하기 전 준비 사항들을 알아봤습니다. 이번에는 본격적으로 Level 0 문제를 풀어 보도록 하겠습니다.

0.Hello Ethernaut

지난 번 포스팅에서는 9번 항목의 맛보기까지만 진행을 했습니다.
00_previous_post.png

TIP!을 잘 생각하면서 진행을 해보겠습니다.

contract.info()

  • info 함수를 호출하면 아래와 같은 메세지가 나옵니다.
    01_info.png
  • info1 함수를 호출해 봐야겠죠?

contract.info1()

  • info1 함수를 호출한 화면입니다.
    02_info1.png
  • 이번에는 info2를 호출하라고 하는데, parameter로 "Hello"를 넣으라고 하네요.

contract.info2()

  • 시키는데로 info2 함수에 parameter로 "Hello"를 넣어서 호출합니다.
    03_info2.png
  • infoNum이라는 property가 다음 info 함수의 숫자를 가지고 있는데, infoNum 이라는게 있는건지 Num 대신 무슨 숫자를 넣어야 될지 조금 헷갈립니다.
  • 이때 아까 TIP!!!이 있었죠. contract의 ABI를 확인해 보겠습니다. contract 명령어를 입력합니다.
    04_abi_infoNum.png
  • 실제로 infoNum이라는 함수가 존재하네요.

contract.infoNum()

  • 존재를 확인했으니 infoNum 을 호출해 봅니다.
    04_infoNum.png
  • 분명 infoNum이 다음 info 함수의 숫자를 가지고 있다고 했는데, 그냥 봐서는 잘 모르겠습니다. 그래서 결과 값을 한번 펼쳐봤습니다. 숫자가 몇 개 있는데, 그 중 42가 눈에 띕니다.
  • 혹시 모르니 ABI를 확인해 보겠습니다.
    05_abi_info42.png
  • info42 함수가 존재하네요.

contract.info42()

  • info42 함수를 호출합니다.
    06_info42.png
  • 메소드(함수) 이름이 theMethodName 이라니 설마... 했지만 정말 있습니다.
    07_abi_theMethodName.png

contract.theMethodName()

  • 호출합니다. (도대체 언제까지 해야 될까요? ㅠㅠ)
    08_theMethodName.png

contract.method7123949()

  • 아시죠? 또 호출합니다.
    09_method7123949.png
  • 갑자기 password를 알고 있냐고 물어봅니다. 하.... 설마....
    10_abi_password.png
  • 친절하게도 public 함수로 password를 부를 수 있게 되어 있습니다.
  • password를 확인해 보겠습니다.
    11_password.png
  • 그리고 authenticate 함수도 확인해 보겠습니다.
    12_abi_authenticate.png
  • authenticate 함수는 input으로 1개를 받는데, 아마도 password 겠죠?

contract.authenticate()

  • 앞서 확인한 password를 parameter로 해서 authenticate 함수를 호출합니다.
    13_authenticate.png
  • 이거는 쓰기 함수 인가보네요. gas fee를 달라고 합니다.
    14_metamask_submit.png
  • 적당한 가격을 넣고, submit을 누릅니다.
  • 잠시 후 트랜잭션이 보내지고, 채굴까지 완료가 됩니다.
    15_sent_mined.png
  • 더 이상 요구하는게 없으니 완료된 것 같죠?

Submit instance

  • level을 완료했다는 표시로 submit instance버튼을 누릅니다.
    16_submit_instance.png
  • 또 gas fee를 요구하네요. 이건 ethernaut smart contract에 현재 지갑 주소가 level을 complete 했다를 저장하기 위해 발생시키는 트랜잭션입니다.
  • 채굴까지 정상적으로 완료가 되면, 아래와 같이 level completed 화면이 콘솔에 뜹니다.
    17_level_complete.png

Level Completed

  • 임수를 완수 했다는 표시로 몇 가지 변화가 있습니다.
  • 우선 체크 표시와 completed 배지가 생깁니다.
    20_complete.png
  • 그리고 해당 instance의 smart contract 코드로 맨 아래 보여집니다.
    19_solidity_code.png
  • 그리고 제일 중요한 다음 level로 넘어갈 수 있는 버튼이 새롭게 생겼습니다.
    18_go_to_the_next_level.png

명령어 하나 하나씩을 설명해 가면서 문제를 풀어보았는데, 혹시나 중간에 이해가 안되는 부분이 있으시다면 편하게 댓글 남겨주시면 제가 아는 한도 내에서 정성껏 답변 드리겠습니다. 다음 문제도 계속 올리도록 하겠습니다. ^^

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 63149.00
ETH 3156.91
USDT 1.00
SBD 3.85