프라이빗 이더리움에 간단한 VDR 스마트 컨트랙트 배포하기
개요
Ganache 환경에 간단한 VDR 스마트 컨트랙트 배포하기를 통해 로컬 개발환경을 구성하고, 개발된 스마트 컨트랙트에 대한 테스트 및 Ganache 에 배포하는, 일련의 개발 사이클을 수행해 보았습니다. 이제 프라이빗 이더리움상에 배포해 보겠습니다. 이를 위해선 프라이빗 이더리움 구성이 선행되어야 합니다.
사전 프로그램 설치
프라이빗 이더리움은 로컬 PC 환경에 구성하고, 이를 위해 go-ethereum (geth)
를 사용합니다.
geth 는 Go 언어로 작성된 이더리움 클라이언트로 쉽게 이더리움 네트워크에 접속하거나 구동할 수 있습니다.
필요한 설치 과정은 다음 Post 를 참고하기 바랍니다.
배포 준비하기
Truffle 환경에서 배포할 네트워크는 truffle-config.js
에서 지정합니다.
- 위치 :
~\truffle\truffle-config.js
truffle-config.js 네트워크 설정 부분
배포할 네트워크명을 지정한 후 필요한 정보를 설정합니다.
(생략)
networks: {
(생략)
private: {
host: "연결할 노드 URL or IP",
port: 연결할 노드 Port,
network_id: "블록체인 네트워크 ChainId"
}
}
설정에 필요한 정보는 프라이빗 이더리움을 실행 설정값입니다. 따라서, 프라이빗 이더리움을 실행하면서 원하는 값을 부여하면 됩니다.
- 추가 설정값 #1 :
--http --http.port 9545 --networkid 15
(생략)
networks: {
(생략)
private: {
host: "127.0.0.1",
port: 9545,
network_id: "15"
}
}
프라이빗 이더리움에 접속해 스마트 컨트랙트를 배포합니다. 컨트랙트는 트랜잭션으로 작성되어 발송인 서명 후 배포됩니다.
이를 위해 발송인 주소
와 서명을 위한 PrivateKey
를 알아야 합니다.
현재 Miner 계정만 있으므로, Miner 계정을 발송인으로 지정하면 다음과 같은 설정값이 추가됩니다.
- 추가 설정값 #2 :
--unlock <Miner 주소> --password <Miner privatekey 파일 경로> --allow-insecure-unlock
Miner PrivateKey
는 직접 입력하지 않고, 텍스트 파일에 Privatekey를 저장한 후 그 경로를 지정합니다.
추가로, 블록체인 노드는 실행시 기본값으로 계정의 갖고 있는 이더(ether)를 사용(송금, 가스비 지불 등)할 수 없도록 차단되어 있습니다. 이를 --allow-insecure-unlock
옵션으로 해제합니다.
프라이빗 이더리움을 실행할 최종 명령어는 다음과 같습니다.
- 명령어 :
geth --http --http.port 9545 --networkid 15 --unlock 0x20639eB849F4e0C35C5900e34d94F34A962f8551 --password .\chaindata\keystore\miner_privatekey.txt --allow-insecure-unlock --datadir .\chaindata --mine --miner.threads=1
프라이빗 이더리움 준비
배포하기
truffle 디렉토리에서 다음의 명령어로 배포합니다.
- 명령어 :
truffle migrate --network private
스마트 컨트랙트 배포
댓글남기기