Test.sol
•
Simple Storage 컨트랙트를 정의하는 test.sol이 있다고 가정
•
다음과 같은 방법으로 test.sol을 컴파일
$ ls
test.sol
$ solcjs --bin true --abi true -o out test.sol //npm방식
$ ls
out test.sol
$ tree out
out
├── test_sol_SimpleStorage.abi
└── test_sol_SimpleStorage.bin
0 directories, 2 files
Bash
복사
Bytecode&ABI
Solidity 소스코드(.sol파일)를 컴파일하면 Bytecode(.bin파일)와 ABI(.abi파일)가생성
Bytecode
•
컨트랙트를 배포할때 블록체인에 저장하는 정보
•
Bytecode는 Solidity 소스코드를 EVM이 이해할 수 있는 형태로 변환한 것
•
컨트랙트 배포시 HEX로 표현된 Bytecode를 TX에 담아 노드에 전달
ABI(ApplicationBinaryInterface) a.k.a. JSON interface
•
ABI는 컨트랙트 함수를 JSON 형태로 표현한 정보로 EVM이 컨트랙트 함수를 실행할 때 필요
•
컨트랙트 함수를 실행하려는 사람은 ABI정보를 노드에제공
ByteCode 예시
ABI 예시