[Blockchain] 솔리디티 solc & Compile
solc / Compile / bytecode / ABI
스마트 컨트랙트 코딩 👉 소스 코드 컴파일 👉 ABI 로부터 스마트 컨트랙트 객체 생성 👉 스마트 컨트랙트 배포 👉 채굴
-
‘솔리디티’ 언어로 스마트 컨트랙트 코딩
-
EVM은 솔리디티를 못읽기때문에 ‘solc’를 이용하여 소스코드 컴파일
-
EVM이 읽게 ‘바이트코드’ 형태로 만듬
-
구체적인 정보는 ‘ABI’ 에서 취득해야한다
-
‘ABI’와 ‘바이트코드’를 사용해 컨트랙트 객체를 만들어준 뒤
-
사용될 지갑주소가 포함된 트랙잭션을 생성해 함께 배포(deploy) 한다
-
배포(deploy)의 결과로는 트랙잭션 해시를 반환받는다
-
블록의 채굴이 이루어지면 최종적으로 이더리움 블록체인에 스마트 컨트랙트가 올라간다
⭐ 솔리디티 파일이 ‘컴파일’ 되면 컨트랙트 객체가 생성이 되는데
실제 블록체인에 배포될 코드인 ‘바이트코드’와
‘ABI (json 형태로 쉽게 보여지는 코드)’ 가 생성된다ABI는 👉 json 형태로 input, name, type 이런것들이 담겨있다
bytecode는 👉 0과 1 등 으로, 컴퓨터가 읽을 수 있는 언어
ex) 0101010100
solc (솔리디티 파일을 컴파일하는 Javascript 라이브러리)
‘솔리디티’ 언어를 이용하여 스마트 계약을 작성(코딩)하게 되면
확장자가 ‘.sol’ 인 파일을 생성하게 된다‘.sol’ 파일은 사람이 읽을 수 있는 파일이지 / 컴퓨터가 이해하는 파일이 아니기 때문에 / 바로 EVM (이더리움 가상 머신)에 올릴 수 없다
그래서 ‘솔리디티’ 를 👉 ‘바이트 코드’로 변환해서 EVM에 올려야 하는데
이처럼 ‘.sol’ 파일을 컴파일 해야 할 때, ‘solc’ 라이브러리를 사용해야 한다
컴파일 (Compile)
‘특정 프로그래밍 언어’로 쓰여 있는 문서를 👉 ‘다른 프로그래밍 언어’로 옮기는 언어 번역하는 과정
‘고급 프로그래밍 언어’를 실행 프로그램으로 만들기 위해 👉 ‘저급 프로그래밍 언어’로 바꾸는 과정
‘원시 코드’에서 👉 ‘목적 코드’로 옮기는 과정