안녕하세요.
오픈제플린(OpenZeppelin)에서 제공하는 이더넛(Ethernaut)문제를 풀어보고자 합니다.
영상으로 쉽게 확인하세요.
이더넛 이란?
"The Ethernaut is a Web3/Solidity based wargame played in the Ethereum Virtual Machine." 라고 간단하게 설명이 되어 있는데요. EVM에서 실행되는 웹3/솔리디티 기반의 워게임 이라고 합니다. 여기서 워게임은 해킹과 보안의 개념으로 생각하시면 됩니다. 즉 이더넛은 보안적으로 문제가 있는 스마트 컨트랙를 제공하고, 저희가 해당 스마트 컨트랙를 해킹하는 게임이라고 생각하시면 됩니다.
이 과정을 통해서, 저희가 스마트 컨트랙트를 작성할 때, 보안적인 문제를 많이 고려할 수 있게 될 것 입니다.
이더넛을 접속하게 되면, 아래와 같이 나옵니다.
그림 1에서 볼 수 있듯이, 이더넛은 Goerli, Mumbai, Sepolia, Optimism_goerli, Arbitrum_goerli 네트워크를 지원 합니다.
저는 Sepolia 네트워크에서 문제를 풀도록 하겠습니다.
현재 제 메타마스크는 Polygon 네트워크로 설정돼 있기에, Switch to Sepolia를 클릭하겠습니다.
Switch to Sepolia 클리 후 메타 마스크의 네트워크 전환을 클릭해 Sepolia로 변환합니다.
위 그림과 같이 이더넛은 29개의 보안문제를 제공합니다.
0번째 문제인 Hello Ethernaut을 클릭합니다.
Hello Ethernaut은 문제를 풀기보다는, 이더넛 문제를 어떤식으로 풀 수 있는지 알려주는 튜토리얼이라 생각할 수 있습니다.
이더넛 가이드는 다음과 같습니다.
1. 메타마스크 설치
2. 개발자 도구 열기 -> player 입력하기.
개발자 도구는 윈도우 기준으로 F12를 눌러서 열 수 있습니다.
그림5와 같이, 이더넛의 문제를 풀려면, 개발자 도구를 열어서 해결해야 합니다.
그러고 나서 player를 입력하시면, 현재 이더넛 사이트에 연결된 지갑의 주소가 나오는것을 확인 할 수 있습니다.
3. 개발자 도구에 help() 입력 -> await getBalance(player)
그림6과 같이 help()를 입력하면, 이더넛의 명령어를 확인할 수 있습니다.
이부분은 문제를 풀면서 자연스럽게 다뤄 보도록 하겠습니다.
그림6의 help() 화면에서 볼 수 있듯이, await getBalance(특정주소)는 특정주소의 현재 이더의 잔액을 보여줍니다.
4. 개발자 도구에서 ethernaut 입력
ethernaut을 입력하면, 아래 그림과 같이 스마트 컨트랙트의 정보가 나오는것을 알 수 있다.
ethernaut은 간단히 말해서, 29개의 각 문제를 제공하는 메인 스마트 컨트랙트라고 생각할 수 있다.
5. 개발자 도구에 await ethernaut.owner() 입력 해보기
그림10에서 볼 수 있듯이, ethernaut abi에 owner라는 함수를 확인 할 수 있으며, await ethernaut.owner()를 통해 ethernaut 스마트 컨트랙트의 owner를 알 수 있다.
이더넛 문제를 풀려면, 트랜잭션을 보낼 가스비용, 약간의 부가적인 이더가 필요하므로 테스트넷 이더를 받아야한다.
테스트넷 이더를 받는 링크는 알케미(Alchemy) 웹사이트며, 테스트넷 이더를 받기 위해 아이디가 필요하다.
7. Get new instance 버튼 클릭해, 문제 부여 받기
Get new instance 버튼 클릭해, 문제를 부여 받는다.
해당 버튼을 클릭하면, 가이드 5번에서 다룬 이더넛의 메인 스마트 컨트랙트인 ethernaut을 통해 문제를 부여 받는것을 알 수 있다.
Get new instance 버튼 클릭후, 개발자 도구에서 트랜잭션이 완료 된것을 확인할 수 있으며, 현재 문제의 Instance 주소도 알 수 있다.
8. 개발자 도구에서 contract 입력 해보기
개발자 도구에서 contract 입력시, 위 그림과 같이 나오는것을 알 수 있다.
9. 개발자 도구에서 await contract.info() 입력하기
await contract.info() 를 입력하면 그림 16과 나오는것을 알 수 있다.
이제부터 Hello Ethernaut의 문제가 시작된다.
해당 문제는 영상을 통해서 참고 하기 바랍니다 . (12분 12초 부터 보세요)