create account

[Ethereum] Ethernaut 풀이 - 0.Hello Ethenaut by modolee

View this thread on: hive.blogpeakd.comecency.com
· @modolee ·
$0.11
[Ethereum] Ethernaut 풀이 - 0.Hello Ethenaut
https://steemitimages.com/DQmWQDjyP5d1RNW3mkCWUkDQ6yh3uDJFUZErPpaKBwKi4gM/iron_modolee.png
안녕하세요. 개발자 모도리입니다.
지난 포스팅([Ethernaut 소개](https://steemit.com/kr-dev/@modolee/ethereum-ethernaut))에서는 Ethernaut을 소개하고 이용하기 전 준비 사항들을 알아봤습니다. 이번에는 본격적으로 Level 0 문제를 풀어 보도록 하겠습니다.

# 0.Hello Ethernaut
지난 번 포스팅에서는 9번 항목의 맛보기까지만 진행을 했습니다.
![00_previous_post.png](https://cdn.steemitimages.com/DQmXyXxwM6PcxN35prJwS4xC4FiveHh6goH7hToNNmCGS3C/00_previous_post.png)

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

### contract.info()
* info 함수를 호출하면 아래와 같은 메세지가 나옵니다.
![01_info.png](https://cdn.steemitimages.com/DQmcv8W58DoyumdjSi67TGpHeGy86Ln1HJwFc4UDVeQvTD3/01_info.png)
* info1 함수를 호출해 봐야겠죠?

### contract.info1()
* info1 함수를 호출한 화면입니다.
![02_info1.png](https://cdn.steemitimages.com/DQmPiehtTi6kJSafi2WCwdkQDyvBy4rD2oxokSYdzetVPvB/02_info1.png)
* 이번에는 info2를 호출하라고 하는데, parameter로 "Hello"를 넣으라고 하네요.

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

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

### contract.info42()
* info42 함수를 호출합니다.
![06_info42.png](https://cdn.steemitimages.com/DQmdKrbHuEQXBFochupLNJCH6BpgvhNh1HE7BeeaBfdmHEg/06_info42.png)
* 메소드(함수) 이름이 theMethodName 이라니 설마... 했지만 정말 있습니다.
![07_abi_theMethodName.png](https://cdn.steemitimages.com/DQmfKutxSaa87ZG41ib7C2J2fqJf8UfdP9gVoamELLJpZXT/07_abi_theMethodName.png)

### contract.theMethodName()
* 호출합니다. (도대체 언제까지 해야 될까요? ㅠㅠ)
![08_theMethodName.png](https://cdn.steemitimages.com/DQmTfkasrPPtbi9cVT1KdYt5TToKjjBHLZooYjN4uSqtaQJ/08_theMethodName.png)

### contract.method7123949()
* 아시죠? 또 호출합니다.
![09_method7123949.png](https://cdn.steemitimages.com/DQmWdLPHfQTqr4UMgRsHkUR4QNMNJBC77ZprJWUojscn882/09_method7123949.png)
* 갑자기 password를 알고 있냐고 물어봅니다. 하.... 설마....
![10_abi_password.png](https://cdn.steemitimages.com/DQmSkELQVDXweGemBFZu4PyjxdgNaRf9sVKV3r3cGfCJTej/10_abi_password.png)
* 친절하게도 public 함수로 password를 부를 수 있게 되어 있습니다.
* password를 확인해 보겠습니다.
![11_password.png](https://cdn.steemitimages.com/DQmatuib6gRFnYuva9hxD6E5x5n2hUxhiDfbB9gcYX6yDeu/11_password.png)
* 그리고 authenticate 함수도 확인해 보겠습니다.
![12_abi_authenticate.png](https://cdn.steemitimages.com/DQmbmita54QUYfhhBodpZU7Ezbp9pAqaej8ZNAvW2KpQdnx/12_abi_authenticate.png)
* authenticate 함수는 input으로 1개를 받는데, 아마도 password 겠죠?

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

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

### Level Completed
* 임수를 완수 했다는 표시로 몇 가지 변화가 있습니다.
* 우선 체크 표시와 completed 배지가 생깁니다.
![20_complete.png](https://cdn.steemitimages.com/DQmUBuYYKpZEcr1kzA8rbvLP2mMYftccCucuEwftftMeY6N/20_complete.png)
* 그리고 해당 instance의 smart contract 코드로 맨 아래 보여집니다.
![19_solidity_code.png](https://cdn.steemitimages.com/DQmaNAqCS5Be7mgzhV3kAAgaD5M1MWKKb4a6PB9YD7fov1j/19_solidity_code.png)
* 그리고 제일 중요한 다음 level로 넘어갈 수 있는 버튼이 새롭게 생겼습니다.
![18_go_to_the_next_level.png](https://cdn.steemitimages.com/DQmU9R97SWPSH5kiNV8yseCswGcMGaS8zfJmPq3vuFxVU68/18_go_to_the_next_level.png)

명령어 하나 하나씩을 설명해 가면서 문제를 풀어보았는데, 혹시나 중간에 이해가 안되는 부분이 있으시다면 편하게 댓글 남겨주시면 제가 아는 한도 내에서 정성껏 답변 드리겠습니다. 다음 문제도 계속 올리도록 하겠습니다. ^^
👍  , ,
properties (23)
authormodolee
permlinkethereum-ethernaut-0-hello-ethenaut
categorykr-dev
json_metadata{"tags":["kr-dev","kr","ethereum","solidity","ethernaut"],"image":["https://steemitimages.com/DQmWQDjyP5d1RNW3mkCWUkDQ6yh3uDJFUZErPpaKBwKi4gM/iron_modolee.png","https://cdn.steemitimages.com/DQmXyXxwM6PcxN35prJwS4xC4FiveHh6goH7hToNNmCGS3C/00_previous_post.png","https://cdn.steemitimages.com/DQmcv8W58DoyumdjSi67TGpHeGy86Ln1HJwFc4UDVeQvTD3/01_info.png","https://cdn.steemitimages.com/DQmPiehtTi6kJSafi2WCwdkQDyvBy4rD2oxokSYdzetVPvB/02_info1.png","https://cdn.steemitimages.com/DQmWiK4StWc3gy98jPArb4czFpyzkbHidzYXvnRdWtMgD8m/03_info2.png","https://cdn.steemitimages.com/DQmZAhNaSUoa2MVrdtFoHw9xkJssSBpRGqLXBAtp6mpnMFZ/04_abi_infoNum.png","https://cdn.steemitimages.com/DQmNcLr7wvBJANQrd2Zg9jiTcZ2kxAsfMmm1qEY2f44pAS9/04_infoNum.png","https://cdn.steemitimages.com/DQmTCxU8dsBnwCnX9XgQgTzc7GYGwDSRVhVG4QSLP1GaqdS/05_abi_info42.png","https://cdn.steemitimages.com/DQmdKrbHuEQXBFochupLNJCH6BpgvhNh1HE7BeeaBfdmHEg/06_info42.png","https://cdn.steemitimages.com/DQmfKutxSaa87ZG41ib7C2J2fqJf8UfdP9gVoamELLJpZXT/07_abi_theMethodName.png","https://cdn.steemitimages.com/DQmTfkasrPPtbi9cVT1KdYt5TToKjjBHLZooYjN4uSqtaQJ/08_theMethodName.png","https://cdn.steemitimages.com/DQmWdLPHfQTqr4UMgRsHkUR4QNMNJBC77ZprJWUojscn882/09_method7123949.png","https://cdn.steemitimages.com/DQmSkELQVDXweGemBFZu4PyjxdgNaRf9sVKV3r3cGfCJTej/10_abi_password.png","https://cdn.steemitimages.com/DQmatuib6gRFnYuva9hxD6E5x5n2hUxhiDfbB9gcYX6yDeu/11_password.png","https://cdn.steemitimages.com/DQmbmita54QUYfhhBodpZU7Ezbp9pAqaej8ZNAvW2KpQdnx/12_abi_authenticate.png","https://cdn.steemitimages.com/DQmUBuy552DHhSCyi3dhyhnWLh35nZrpASNabFy9WHxcHPv/13_authenticate.png","https://cdn.steemitimages.com/DQmZTFEPxN3FmLGwNKKT23o1egMEECe5TZJJB4tm3Ti1MRm/14_metamask_submit.png","https://cdn.steemitimages.com/DQmcDrUTFbLLqGDnf7tScYc59qj11rU8KoPY7MaktFdSQoT/15_sent_mined.png","https://cdn.steemitimages.com/DQme3DtJ5HWZD8KAeDQ3hpWwoWJi5XGK7KQAvSzzhGDrZrQ/16_submit_instance.png","https://cdn.steemitimages.com/DQmcG6uTwTrekktzae4oZzZw935CzwqGSBHWzP13c5R9d1b/17_level_complete.png","https://cdn.steemitimages.com/DQmUBuYYKpZEcr1kzA8rbvLP2mMYftccCucuEwftftMeY6N/20_complete.png","https://cdn.steemitimages.com/DQmaNAqCS5Be7mgzhV3kAAgaD5M1MWKKb4a6PB9YD7fov1j/19_solidity_code.png","https://cdn.steemitimages.com/DQmU9R97SWPSH5kiNV8yseCswGcMGaS8zfJmPq3vuFxVU68/18_go_to_the_next_level.png"],"links":["https://steemit.com/kr-dev/@modolee/ethereum-ethernaut"],"app":"steemit/0.1","format":"markdown"}
created2018-06-17 07:04:51
last_update2018-06-17 07:04:51
depth0
children0
last_payout2018-06-24 07:04:51
cashout_time1969-12-31 23:59:59
total_payout_value0.081 HBD
curator_payout_value0.025 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length4,800
author_reputation285,192,678,959
root_title"[Ethereum] Ethernaut 풀이 - 0.Hello Ethenaut"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id61,062,555
net_rshares47,996,759,943
author_curate_reward""
vote details (3)