使用IBFT2在亞馬遜Web Services上搭建Hyperledger Besu

買賣虛擬貨幣
本文我將使用IBFT2共識演算法建立一個私有區塊鏈。使用VPC和專用/公用子網,建立8個型別為t2.micro的EC2例項。兩個例項將在專用子網中使用,其餘例項將在公共子網中使用。1. 設定VPC。2. 建立一個安全組。3. 在專用子網上安裝bootnodes。4. 在公共子網上安裝節點。設定VPC
VPC用於為私有區塊鏈部署隔離的例項。虛擬私有云(VPC)是在公共雲環境中分配的按需配置的共享計算資源池,可在使用資源的不同組織之間提供一定程度的隔離。在建立例項之前,我需要初始化它們之間的通訊。因此我將為VPC建立一個安全組。

建立安全組:安全組是例項之間通訊的規則列表。就我而言,我將使用這些規則

在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檔案。好了,到此結束。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;