트러플 콘솔에 접속해서 배포된 스마트 컨트랙트의 어드레스를 이용하여
web3.eth.getCode("contract adress")
터미널에 입력하면 0x로 시작하는 바이너리 코드가 출력된다.
Ethereum Yellowpaper - 클릭 시 이동
30페이지를 보면 바이너리 코드에 해당하는 인스트럭션이 각각 기술되어 있다.
내가 배포한 Jidoreum의 바이너리 코드는 아래와 같이 바이트로 해체할 수 있고 해석할 수 있다.
0x60 80 60 40 52 34 80 15 61 00 10 57
0x60 : 0x60 PUSH1 0 1 Place 1 byte item on stack.
0x80 : <- 스택에 들어감 (
0x80 : DUP1 1 2 Duplicate 1st stack item.
0x60 : 0x60 PUSH1 0 1 Place 1 byte item on stack.
0x40 : <- 스택에 들어감 ( 0x40 BLOCKHASH 1 1 Get the hash of one of the 256 most recent complete blocks. )
0x52 : 이더리움 옐로우 페이퍼의 30페이지에 기술되어 있는 Instruction 대로 계속해서 실행됨.
이러한 방식으로 스마트컨트랙트는 바이너리코드로 만들어진 뒤
이더리움 버추얼 머신과 상호작용한다.
마찬가지로 이더리움 황서 30 Page에 기술되어 있는 인스트럭션이 바이너리 코드 대신 명령어로 나와있다.