Windows에서 geth로 private-network 만들기

NAEMAMDAEROG·2022년 4월 25일
0

geth로 private-network 만들다가 옵션 키워드가 변경되어 기록하고자 남긴다.
(몇 시간 동안 헤메다가 찾았다.)

1. Geth 설치

geth.ethereum.org 이곳에서 windows 라고 적힌 걸 다운받고 실행한다.
(나는 현재 1.10.17을 다운받았다.)

cmd를 열어

cd C:\\Program Files\\Geth

입력한다.
(geth를 편하게 이용하기 위해 환경변수에 path를 추가한다.)

2. Genesis Block 생성

원하는 위치에 private-blockchain 폴더를 만든다.
그 안에 node1, node2 폴더를 만든다.
genesis.json 파일을 만든다.

{
  "config": {
    "chainId": 4777,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },
  "alloc": {},
  "difficulty": "0x400",
  "extraData": "",
  "gasLimit": "0x7A1200",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

3. Private Network 생성

cd private-blockchain
geth --datadir node1 init genesis.json

마지막에 Successfully wrote genesis state 라고 뜨면 genesis block 생성이 완료된 것 이다.

network에 접속하기 위해 다음의 명령어를 입력한다.

geth --networkid 4777 --datadir node1 --nodiscover --port 30303 --http --http.port "8545" --http.addr "0.0.0.0" --http.corsdomain "*" --http.api "eth, net, web3, miner, debug, personal, rpc" console

마지막에 > 가 뜨면 제대로 된 것이다.

private-network를 형성할 다른 노드를 만들기 위해 위에서 했던 것처럼 genesis block을 생성하고

geth --networkid 4777 --datadir node2 --nodiscover --port 30304 --http --http.port "8546" --http.addr "0.0.0.0" --http.corsdomain "*" --http.api "eth, net, web3, miner, debug, personal, rpc" console

접속한다.

주의할 점은 컴퓨터 하나에서 두 개 노드의 네트워크에 접속하고 있기 때문에, genesis block을 생성하고 데이터를 저장할 위치와 port와 http.port 번호를 다르게 설정해야 한다.

Fatal: Error starting protocol stack: Access is denied.
두 번째 노드로 네트워크를 들어갈 때 저런 에러가 생긴다면 --ipcdisable을 추가하면 된다.
리눅스에서는 발생하지 않고 윈도우에서만 발생하는 에러 같은데 왜 그런지는 모르겠다.

geth --networkid 4777 --datadir node2 --nodiscover --port 30304 --http --http.port "8546" --http.addr "0.0.0.0" --http.corsdomain "*" --http.api "eth, net, web3, miner, debug, personal, rpc" --ipcdisable console

출처 : https://2016reck.tistory.com/11

profile
Blockchain & Programming 공부 기록

0개의 댓글