Solidity - (2) 바이너리 코드 분석

Moonshot·2022년 4월 12일
0

Solidity

목록 보기
2/5

트러플 콘솔에 접속해서 배포된 스마트 컨트랙트의 어드레스를 이용하여

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에 기술되어 있는 인스트럭션이 바이너리 코드 대신 명령어로 나와있다.

profile
Jidoil

0개의 댓글