Go Ethereum(Geth)을 사용하여 여러 대의 PC로 개인 네트워크 설정
이 블로그는 서로 다른 컴퓨터에서 여러 노드가 실행되는 사설 블록체인 네트워크를 설정하는 방법을 설명합니다.
This tutorial is meant for those with some knowledge of Ethereum and smart contracts, who have some knowledge of nodes, geth and POA, etc.
The purpose of building this blog is to write down the detailed operation history and my memo for learning the dApps.
If you are also interested and want to get hands dirty, just follow these steps below and have fun!~
전제 조건
Geth 및 Node.js 설치됨
NOTE: In the following Command Line Interface (CLI) We mark the two CLIs running on different computers as
pc1$
andpc2$
.
Do not copy the prefixpc1$
andpc2$
.
시작하기
IP 주소 확인
이 CLI 명령을 사용하여 macOS 장치 pc1의 IP 주소를 알 수 있습니다.
pc1$ ifconfig|grep netmask|awk '{print $2}'
산출:
127.0.0.1
1X.1XX.2XX.35
Use the second one not 127.0.0.1.
새로운 Geth 계정 생성
pc1$ geth account new
산출:
예를 들어 :
Your new key was generated
Public address of the key:
0xXa79b38262Xf270d5A3141X4F326X76A9F37e9E4
Path of the secret key file:
......
NOTE: The path of the secret key file is import because you will find the private key of your account in that directory. It will be used when you want to import Geth account to MetaMask.
Geth 데이터베이스 초기화
다음 코드를 복사하여 붙여넣고 이름을 genesis.json으로 지정합니다.
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"ethash": {}
},
"difficulty": "1",
"gasLimit": "8000000",
"alloc": {}
}
제네시스 블록을 생성하기 위한 코드입니다.
이를 사용하여 블록체인 노드를 생성하려면 이 파일을 생성한 디렉터리로 이동하고 다음 명령을 실행합니다.
This imports and sets the canonical genesis block for your chain.
pc1$ geth init --datadir . genesis.json
네트워킹 설정
노드가 원하는 초기 상태로 초기화되면 P2P 네트워크를 설정할 때입니다.
Any node can be used as an entry point. I recommend dedicating a single node as the rendezvous point which all other nodes use to join. This node is called the ‘bootstrap node’.
pc1$ geth --datadir . --keystore ~/Library/ethereum/keystore --unlock 0 --nodiscover -http --http.api 'personal,eth,net,web3,txpool,miner' --http.corsdomain "*" --networkid 15 --nat extip:IP_ADDRESS --mine --miner.etherbase="GETH_ACCOUNT_ADDRESS"
Replace the keystore route, GETH_ACCOUNT_ADDRESS and the IP_ADDRESS with yours.
이제 다른 CLI를 사용하여 JS 콘솔을 사용하여 부트 노드의 '노드 레코드'를 추출합니다.
pc1$ geth attach geth.ipc --exec admin.nodeInfo.enr
This command should print a base64 string such as the following example. Other nodes will use the information contained in the bootstrap node record to connect to your peer-to-peer network.
다른 머신에서 구성원 노드 실행
Linux Ubuntu에서 멤버 노드를 실행하기 전에 먼저 부트스트랩 노드에 사용된 것과 동일한 제네시스 파일로 멤버 노드를 초기화해야 합니다.
Navigate to the directory /genesis.json first.
pc2$ geth init --datadir . genesis.json
그런 다음 두 번째 노드를 부트스트랩 노드에 연결합니다.
옵션 1:
pc2$ geth --datadir . --networkid 15 --port 30304 --bootnodes "enr:-YOUR_ENR_STRING"
In this option:
Node 2 will not be a miner.
Use your own enr string.
옵션 2:
(권장) 또는 다음 노드를 사용하여 두 번째 노드를 부트스트랩 노드에 연결합니다.
pc2$ geth account new
pc2$ geth --datadir . --keystore /home/yongchang/.ethereum/keystore --allow-insecure-unlock --http --http.api 'personal,eth,net,web3,txpool,miner' --http.corsdomain "*" --networkid 15 --port 30304 --mine --miner.etherbase="YOUR_ACCOUNT_ADDRESS" --bootnodes "BOOTNODE ENR"
Node 2 will be a miner using this command
Use your own keystore route, account address and enr string.
연결 상태를 확인하십시오.
새 CLI를 열고 다음을 입력합니다.
pc2$ geth attach geth.ipc
동료 찾기:
> admin.peers
피어 번호 표시:
> net.peerCount
이더리움 블록 채굴
블록체인 채굴을 시작하려면 다음을 실행할 수 있습니다.
> miner.start()
잠시 동안 실행되도록 한 다음 다음을 입력하여 마이닝을 중지합니다.
> miner.stop()
이제 우리는 새로운 블록을 채굴하기 위해 일부 토큰을 보상했습니다. 다음 명령을 실행하여 이를 확인할 수 있습니다.
> eth.getBalance(eth.accounts[0])
토큰 보내기
옵션 1:
> eth.sendTransaction({from: ACCOUNT_pc1_STRING, to: ACCOUNT_pc2_STRING, value: 5000})
Value here is in Wei (Where 1 ETH equals 1 x 10 ^ 18 Wei)
트랜잭션이 올바르게 수행된 경우 녹색 트랜잭션 해시를 얻어야 합니다(한동안 채굴해야 함).
옵션 2:
MetaMask를 사용하여 ETH를 account_pc1에서 account_pc2로 또는 그 반대로 전송할 수 있습니다. 더 빠르고 간단해야 합니다.
즐겨!
참조
https://geth.ethereum.org/
https://spectrum.ieee.org/blockchain-interoperability
Reference
이 문제에 관하여(Go Ethereum(Geth)을 사용하여 여러 대의 PC로 개인 네트워크 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yongchanghe/set-up-a-private-network-with-multiple-pcs-using-go-ethereum-geth-3gm6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)