본문 바로가기

연구활동/블록체인

[이더리움에 데이터베이스 연결하기] 1-Private Ethereum Network Building (사설 이더리움 환경 구성하기)

본 방법은 실습용으로 사설 이더리움 체인을 만드는 과정을 담고 있습니다.

 

먼저 방법은 다음의 구성으로 이루어져 있습니다.

 

1. Geth 설치

2. Genesis Block 생성

3. Private Network 생성

 

 

 

 

1.  Geth 설치

본 글에서 Geth은 Windwos 10 기준설치 방법입니다.

 

먼저 다음의 URL을 이용하여 Windows 버전의 Geth를 설치합니다.

https://geth.ethereum.org/downloads/

 

Downloads | Go Ethereum

Retrieving packages from release server...

geth.ethereum.org

만약에 홈페이지에서 Release Package 관련하여 문구가 뜰 경우 계속해서 기다리면 접속이 가능합니다. 만약에 기다려도 되지 않거나 Fail 이 뜨게되면 Mirror 사이트를 이용하도록 합시다.

 

다만, Mirror site의 Geeth 는 1.8.17 과 1.8.3 버전이므로 유의하시길 바랍니다.

github.com/EthFans/wiki/wiki/Ethereum-Geth-Mirror

 

본 글에서는 1.9.14 버전 Geth를 설치합니다.

 

설치하실때 설치 경로를 그대로 두고 설치하면 경로사 이름이 길때 다음과 같은 창이 뜨는 것을 볼 수 있습니다.

설치 중 경고창이 뜰 수 있습니다.

이 창은 크게 무시하셔도 상관은 없습니다. 다만 설치된 경로( C:\Program Files\Geth )에서 geth를 실행시켜야 하는데, 이러한 작업이 번거로우시면 환경변수에 해당 geth 경로를 추가하시면 됩니다.

 

 

설치가 완료되면 cmd를 이용하여서 geth가 설치된 경로에서 개발자 네트워크에 접속하도록 합니다.

cmd를 이용하여 개발자 네트워크를 실행시킵니다.

 

밑의 그림과 같은 창이 뜬다면 접속이 완료된 것을 확인할 수 있습니다.

 

 

2. Genesis Block 생성

 

이제 사설 네트워크 구성을 위해 genesis block 을 생성하도록 합니다. genesis block 은 원하는 곳에 파일을 생성하도록 하며, 다음 그림처럼 값을 입력하여 줍니다.

 

3. Private Network 생성

 

이제 private network 를 생성하도록 합니다. 

 

명령어는 geth --datadir test1 init genesis.json 를 입력하도록 합니다.

 

해당 로그가 보인다면 private network 를 생성하는 genesis block 생성이 완료된 것입니다.

 

이제 생성한 network 에 접속할 일만 남았습니다. 접속은 다음의 명령어를 사용어를 사용하시면 됩니다.

 

geth --networkid 1004 --datadir test1 --nodiscover --port 30303 --rpc --rpcport "8545" --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth, net, web3, miner, debug, personal, rpc" console

 

위의 로그들이 뜨면 접속이 완료된 것을 확인할 수 있습니다.

 

 

이후 private network를 형성할 다른 노드를 만들기 위해서는 2번에서 했던것과 마찬가지로 genesis block 을 생성 한다음, 생성한 private network 에 3번과 같이 접속하면 됩니다.

 

geth --networkid 1004 --datadir test2 --nodiscover --port 30304 --rpc --rpcport "8546" --rpcaddr "0.0.0.0" --rpccorsdomain "*" --ipcdisable --rpcapi "eth, net, web3, miner, debug, personal, rpc" console

 

다만, 주의할 것은 현재 저희는 컴퓨터 하나에서 이더리움 네트워크에 접속고 있으며, genesis block을 생성하고 데이터를 저장할 위치와 port와 rpcport번호를 다르게 설정하도록 합니다.

 

 

이제 노드들을 연결해봅시다.

 

먼저 첫번째 노드에서 admin.nodeInfo.enode 명령어를 이용해 주소를 가져옵니다.

 

 

이후 두번째 노드에서 admin.addPeer("enode://......") 명령어를 이용해 동기화를 시킵니다.

 

아래창이 뜬다면 동기화가 성공적으로 이루어지고 있는 것을 확인할 수 있습니다.

 

이후 생성된 네트워크에서 personal.newAccount("eth")로 account를 만들어보고, miner.start() 로 채굴을 실행해 봅니다.

 

이상 private network 구축편을 마치고, 이후 트랜잭션 전송 및 및 트랜잭션에 정보를 넣는 방법과 관련하여서 포스팅을 하겠습니다.