geth로 private-network 만들다가 옵션 키워드가 변경되어 기록하고자 남긴다.
(몇 시간 동안 헤메다가 찾았다.)
geth.ethereum.org 이곳에서 windows 라고 적힌 걸 다운받고 실행한다.
(나는 현재 1.10.17을 다운받았다.)
cmd를 열어
cd C:\\Program Files\\Geth
입력한다.
(geth를 편하게 이용하기 위해 환경변수에 path를 추가한다.)
원하는 위치에 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"
}
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