알아두어야할 사람 : DAPP 개발자 및 스마트컨트렉트 개발자와 같이 일하는 백엔드 개발자, 블록체인 프로젝트에 참여하는 모든 개발자/기획자
직접 스마트컨트렉트를 짜지 않더라도 결국 블록체인 개발자와 협업을 하려면 배포의 과정에서는 기본적인 이해가 필요하게 됩니다. 스마트컨트렉트의 경우에는 한번 배포하면 수정이 불가능하여 보통 테스트넷에서 계속해서 배포하고 테스트하는 과정을 거치게 됩니다. 따라서 아래의 3가지 용어는 블록체인 프로젝트에 참여하는 개발자라면 알아야하는 기본적인 지식들이라고 할 수 있습니다.
- bytecode
블록체인에서 쓰이는 스마트 컨트렉트는 블록체인에 그대로 올라가는것이 아니라 bytecode로 올라갑니다. 연결되는 블록의 data 공간 안에 bytecode를 넣어서 트렌젝션을 보내고, 블록이 연결되는 순간 장부에 bytecode가 기록되어서 블록체인 네트워크에 있는 가상의 컴퓨터가 이 bytecode를 가지고 코드를 실행하게 됩니다. 따라서 블록체인 위의 프로그램인 스마트컨트렉트를 블록체인에 보낼때는 bytecode를 블록안에 담아 연결시키게 됩니다.
블록체인에 스마트 컨트렉트를 배포(bytecode를 블록에 입력)하고 난 후 스마트 컨트렉트와 연결하기 위해서는 2가지가 필요합니다. 그것은 바로 ABI와 CA의 address입니다
bytecode를 찾기 위해서는 스마트 컨트렉트의 주소값 CA값이 필요하고
찾고 나서 이를 실행하기 위해서는 ABI라는 사람이 정의한 함수이름과 같은 메타정보가 담긴 값이 들어간 정보가 필요합니다.
2. ABI module로 만들기
ABI는 길이가 길기 때문에 모듈로 만들어서 사용합니다. 먼저 복사해두었던 ABI를 모듈로 저장해두고 불러옵니다.
var exampleABI = require(‘./javascripts/exapmleABI’);
저장된 공간에서 모듈을 다음과 같이 불러옵니다. express를 사용하면 정적 파일은 public 부터 경로가 설정되므로 이 점을 유의해서 경로를 설정하시면 됩니다.
3. CA 변경하기
CA는 contract Address로 스마트컨트렉트마다 주어지는 주소 입니다. 스마트컨트렉트에 오류가 발생하면 수정이 안되기 때문에 새로 배포를 하게 되는데요 이때 새로 배포된 CA를 ABI와 같이 수정해주어야 합니다. 주소가 바라보는 위치로 블록체인 네트워크의 bytecode를 찾아가고 ABI로 메타정보를 읽어기 때문에 CA와 ABI 2개만 바꾸면 스마트컨트렉트를 연결시키거나 바꿀 수 있습니다.