본문 바로가기
Ethereum

[Ethereum] Geth 로 Private Network 만들기 #1

by smilemugi 2022. 12. 6.

Geth는 이더리움재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. Geth를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드, node 라고도 함)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. Geth는 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임엇이 다른 노드와 통신한다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수 도 있다. 그리고, RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 한다.

https://geth.ethereum.org/docs/

Private Network 구축 - puppeth

puppeth 은 Ethereum private network  구성을 쉽게 하기 위해서 사용되는 유틸리티이다.

 

blockchain 이라는 폴더를 만들고, puppeth 입력

(puppeth 가 실행이 안된다면, geth 설치할 때, Development tools 를 체크하지 않았기 때문이다.)

네트워크 이름을 입력 후

2. Configure new genesis 선택

1. Create new genesis from scratch 선택

1. Ethash - proof-of-work 선택

pre-funded 는 패스

network ID 입력

 

 

2. Manage existing genesis 선택

2. Export genesis configurations 선택

엔터

Control-D 키를 눌러 puppeth  콘솔에서 나온다.

 

처음 생성한 폴더(blockchain)에 가 보면, mynetwork.json 이 생성된 것을 확인할 수 있다.

 

위 만들어진 genesis 노드(mynetwork.json)를 이용, Private Network를 초기화

geth --datadir . init mynetwork.json

폴더를 확인해 보면 추가된 geth, keystore 를 볼 수 있다.

계정 생성

다음 명령어로 무작위로 이더리움 계정을 생성

geth --datadir . account new

사용할 Password 입력 후 엔터

생성된 계정들은 keystore 에 저장된다.

다음과 같이 계정 3개 생성 및 확인(geth --datadir . account list)

Private Network 실행

노드 실행 - 첫번째 방법

geth --datadir . --networkid 2659 --allow-insecure-unlock --port 38722 --http --http.addr "0.0.0.0" --http.port 8722 --http.corsdomain "*" --http.api "admin,db,eth,debug,miner,net,shh,txpool,personal,web3"

 

노드 실행 - 두번째 방법

geth --datadir . --networkid {네트워크 ID}

(여기서는 network id : 2659)

위와 같이 Private Network 실행 화면 이 뜨게 되고, Looking for peers 라는 글이 반복적으로 나오면서 상대방 노드를 계속 찾게 된다.

 

노드 실행 옵션

--nodiscover : peer를 찾는 기능을 사용하지 않는다. (수동으로 추가)

https://geth.ethereum.org/docs/interface/command-line-options

 

Private Network (노드)에 접속

위 노드 실행을 첫번째 방법으로 하였을 때

geth attach rpc:http://localhost:8722

위 노드 실행을 두번째 방법으로 하였을 때

위 Private Network 실행 화면에서 "IPC endpoint opened" 가 가리키고 있는 "url=\\.\pipe\geth.ipc" 를 이용해서 아래 명령어를 입력한다.

geth attach \\.\pipe\geth.ipc

위 콘솔에서 ipc를 통해 json-rpc 를 사용해 geth와 통신한다.

'Ethereum' 카테고리의 다른 글

[Ethereum] geth Private Network 계정을 MetaMask로 가져오기  (0) 2022.12.07
[Ethereum] Geth - 채굴 #2  (0) 2022.12.07
[Ethereum] 개발 환경 설정  (0) 2022.12.06