建立安全組:安全組是例項之間通訊的規則列表。就我而言,我將使用這些規則
在PEGASYS網站上找到了上述埠。這是besu網路所需的所有埠。不要忘記為SSH新增埠22。現在我將在私有子網上建立兩個例項作為引導節點。
訪問專用子網
專用子網是沒有連結到網際網路閘道器的路由的子網。因此無法對其例項進行SSH。為了能夠在您的例項上執行命令,您可以使用AWS Systems Manager會話管理器或AWS Systems Manager執行命令,但我認為最快最簡單的SSH例項方式是從公共子網上的另一個例項訪問它, 使用“ ncat”開啟埠22。命令為:
IP開啟埠22:
ncat --sh-exec "ncat PRIVATE.SUBNET.IP 22" -l 2222 &
然後,您需要將keypair.pem檔案複製到公共例項中,然後像通常在本地計算機上一樣執行ssh命令。
ssh -i "keyname.pem" admin@chaindaily
現在我已經訪問了這個例項,並且可以安裝bootnode。
我將首先下載並安裝Hyperledger Besu。然後我再ibft2配置為共識演算法。以下命令摘自官方文件和PEGASYS網站。請注意,這些命令是所有節點的標準配置。
sudo apt-get update && sudo apt-get install openjdk-11-jdk
wget https://bintray.com/api/ui/download/hyperledger-org/besu-repo/besu-1.3.6.tar.gz
sudo mkdir -p /opt/besu/
sudo chown -R $USER:$USER /opt/besu/
tar -C /opt/besu/ -xvf besu-1.3.6.tar.gz
cd /opt/besu/
touch ibftConfigFile.json
使用nano命令開啟ibftCongfigFile.json
nano ibftConfigFile.json
然後
{
"genesis": {
"config": {
"chainId": 2018,
"constantinoplefixblock": 0,
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 10
}
},
"nonce": "0x0",
"timestamp": "0x58ee40ba",
"gasLimit": "0x47b760",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"fe3b557e8fb62b89f4916b721be55ceb828dbd73": {
"privateKey": "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "0xad78ebc5ac6200000"
},
"627306090abaB3A6e1400e9345bC60c78a8BEf57": {
"privateKey": "c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "90000000000000000000000"
},
"f17f52151EbEF6C7334FAD080c5704D77216b732": {
"privateKey": "ae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "90000000000000000000000"
}
}
},
"blockchain": {
"nodes": {
"generate": true,
"count": 4
}
}
}
使用besu命令為節點生成金鑰
besu-1.3.6/bin/besu operator generate-blockchain-config
--config-file=ibftConfigFile.json --to=networkFiles --private-key-file-name=key
移動genesis.json檔案
mv networkFiles/genesis.json /opt/besu/
然後建立一個資料夾名資料以新增節點的公鑰和私鑰
mkdir keys
mv networkFiles/keys/0x......./key keys/
mv networkFiles/keys/0x......./key.pub /keys/
好的,就是這樣!我們已經安裝了besu網路,現在該節點可以使用了。
初始化Bootnode
Bootnode是由區塊鏈建立的第一個節點,用於幫助其他對等節點找到您的區塊鏈。
初始化Bootnode
besu-1.3.6/bin/besu --data-path=data --genesis-file=./genesis.json
--rpc-http-enabled --rpc-http-api=IBFT --rpc-http-host=0.0.0.0
--host-whitelist="*" --rpc-http-cors-origins="all" --metrics-enabled
--metrics-host=0.0.0.0 --metrics-port=9545 --p2p-host=10.0.0.24 &
(別忘了在--p2p主機上新增自己的私人地址)
您可以在文件中找到相同的命令。我剛把p2p主機改成了私有IP。執行此命令後,需要搜尋此行:
2020-03-28 18:21:47.836+00:00 | main | INFO | DefaultP2PNetwork
| Enode URL enode://d357bdefa4e6f6bdf99020707194823acd0f3d808ef2
59f47616a4154a7b4d8007b0573d6ebc02cb378f2f5f279205d2e537279a5987
admin@chaindaily:30303
其他節點將使用Enode URL與您建立聯絡。好的,現在我們完成了。您可以根據需要建立任意數量的引導節點。通常是生產環境中的2個引導節點。
然後,對於公共子網上的例項,您將重複相同的過程,除了最後一步,您將使用Enode URL。
besu-1.3.6/bin/besu --data-path=data --genesis-file=./genesis.json
--node-private-key-file=/opt/besu/keys/key
--bootnodes=enode://ca6c54e4be70c38abbc2d05c4eaafcc057b9e38db33feb6
7a95ef37a7a5fcccde814e90573193a204502b8948336741fc5a47405a69a2a77f9
admin@chaindaily:30303 --rpc-http-enabled
--rpc-http-host=0.0.0.0 --host-whitelist="*"
--rpc-http-api=ETH,NET,IBFT --rpc-http-cors-origins="all"
--metrics-enabled --metrics-host=0.0.0.0 --metrics-port=9545
--p2p-host=10.0.2.141 &
(不要忘記在--p2p-host上新增您自己的私人地址)
現在您要做的就是使用scp將“ besu”目錄從第一個例項複製到其他例項。
scp -i besuvalidatornode.pem -r admin@chaindaily:/opt/besu/data /opt/besu
不幸的是,僅使用兩個節點就無法實現拜占庭容錯(儘管有節點,但仍能夠正常執行並達成共識)。
改進之處
1. 最明顯的是,與“ t2.micro”相比,增加例項數量或使用更好的例項型別。
2. 使用Orion作為私人交易管理員.它生成並維護私有/公共金鑰對,提供用於在Orion節點之間通訊的API和用於與以太坊客戶端等通訊的API。
3. 或者您可以在Docker上使用Besu。
在Docker上使用Besu
您需要做的就是執行此命令。然後,您將在例項上執行帶有Orion的IBFT2。
./run-privacy.sh -c ibft2
Besu示例網路容器為您提供了執行所有型別演算法的許多選擇。您需要自定義容器,以便僅擁有所需容器並避免浪費資源。如果您執行上面的命令,它將建立4個節點:第一個節點是一個引導節點,其他依賴於該節點。因此,如果bootnode發生故障,所有其他節點都會失敗。為了在生產中使用Besu示例網路,您需要透過新增另一個引導節點併為其建立三個其他節點來修改filedocker-compose_poa.yml檔案。好了,到此結束。