Hyperledger Besu企业以太坊快速教程
Hyperledger Besu企業(yè)以太坊快速教程
?發(fā)表于?2020-01-17?|??分類于?以太坊
Besu是Hyperledger中的企業(yè)以太坊產(chǎn)品,其最大優(yōu)勢在于兼容以太坊主網(wǎng)。 本教程介紹如何使用Hyperledger Besu快速啟動一個企業(yè)以太坊網(wǎng)絡(luò)并利用 JSON RPC進(jìn)行數(shù)據(jù)查詢和交易提交,以及如何使用Truffle開發(fā)企業(yè)以太坊 DApp并使用內(nèi)置的工具進(jìn)行數(shù)據(jù)調(diào)試和運維監(jiān)控。
1、啟動企業(yè)以太坊網(wǎng)絡(luò)
以太坊教程推薦:?Dapp入門?|?電商Dapp實戰(zhàn)?|?Token實戰(zhàn)?|?Php對接?|?Java對接?|?Python對接?|?C#對接?|?Dart對接
首先克隆Besu的quickstart倉庫的源代碼:
| 1 | git clone https://github.com/PegaSysEng/besu-quickstart.git |
然后進(jìn)入besu-quickstart目錄,執(zhí)行如下命令構(gòu)建besu的docker鏡像:
| 1 | ./run.sh |
上面的命令會構(gòu)建docker鏡像并啟動4個容器來模擬一個 包含6個besu節(jié)點的企業(yè)以太坊網(wǎng)絡(luò)。當(dāng)腳本執(zhí)行完成后,你可以看到如下 輸出信息:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ************************************* Besu Quickstart <version> ************************************* List endpoints and services ----------------------------------Name Command State Ports --------------------------------------------------------------------------------------------------------- besu-quickstart_bootnode_1 /opt/besu/bootnode_sta ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_explorer_1 nginx -g daemon off; Up 0.0.0.0:32768->80/tcp besu-quickstart_grafana_1 /run.sh Up 3000/tcp besu-quickstart_minernode_1 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_node_1 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_node_2 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_node_3 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_node_4 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp besu-quickstart_prometheus_1 /bin/prometheus --config.f ... Up 9090/tcp besu-quickstart_rpcnode_1 /opt/besu/node_start.s ... Up 30303/tcp, 8545/tcp, 8546/tcp |
以及訪問端結(jié)點列表:
| 1 2 3 4 5 6 7 8 | **************************************************************** JSON-RPC HTTP service endpoint : http://localhost:32768/jsonrpc JSON-RPC WebSocket service endpoint : ws://localhost:32768/jsonws GraphQL HTTP service endpoint : http://localhost:32768/graphql Web block explorer address : http://localhost:32768 Prometheus address : http://localhost:32768/prometheus/graph Grafana address : http://localhost:32768/grafana-dashboard **************************************************************** |
- JSON-RPC HTTP服務(wù)用于DApp或Metamask錢包的訪問
- JSON-RPC WebSocket服務(wù)用于DApp通過websocket訪問節(jié)點
- GraphQL HTTP服務(wù)用于DApp或Metamask錢包的訪問節(jié)點的GraphQL服務(wù)
- Web區(qū)塊瀏覽服務(wù)用于瀏覽區(qū)塊,在你的瀏覽器中輸入該地址即可
- Prometheus服務(wù)用于為Prometheus儀表盤提供指標(biāo)數(shù)據(jù)
- Grafana服務(wù)用于為Grafana儀表盤提供數(shù)據(jù)
要再次顯示訪問端結(jié)點,可以使用如下命令:
| 1 | ./list.sh |
2、使用企業(yè)以太坊區(qū)塊瀏覽器
在本教程中我們使用Alethio輕量級以太坊瀏覽器,你也可以使用EthScan。
在你的瀏覽器中打開前面提到的web block explorer endpoint列出的地址,就可以 查看企業(yè)以太坊網(wǎng)絡(luò)中的區(qū)塊數(shù)據(jù)了。
可以在區(qū)塊瀏覽器中看到有6個besu節(jié)點:4個普通節(jié)點、1個出塊節(jié)點和一個引導(dǎo)節(jié)點。
點擊?Best Block?右側(cè)的區(qū)塊號就可以顯示該區(qū)塊的詳細(xì)數(shù)據(jù):
點擊左上角的放大鏡,就可以搜索區(qū)塊、交易哈希、或以太坊地址:
3、監(jiān)視Besu節(jié)點的運行狀況
可以使用Prometheus和Grafana這些運維監(jiān)視工具來可視化節(jié)點的健康狀態(tài) 和運行情況。參考前面給出的訪問端結(jié)點,可以在你的瀏覽器中直接訪問這些工具。 例如使用Grafana:
?
4、使用JSON-RPC訪問Besu節(jié)點
Besu支持標(biāo)準(zhǔn)的以太坊JSON-RPC API接口。例如使用curl調(diào)用web3_clientVersion?命令來查看節(jié)點的版本:
| 1 2 3 4 5 6 | curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1 }' <http-rpc-endpoint> |
其中<http-rpc-endpoint>表示前面列出的訪問端結(jié)點的地址,你需要 根據(jù)自己的實際情況替換,例如http://localhost:32768/jsonrpc。 上面命令的返回結(jié)果類似如下:
| 1 2 3 4 5 | {"jsonrpc" : "2.0","id" : 1,"result" : "besu/<version number>" } |
或者使用net_peerCount命令 查看節(jié)點已連接的Peer數(shù)量:
| 1 2 3 4 5 6 | curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1 }' <http-rpc-endpoint> |
結(jié)果如下:
| 1 2 3 4 5 | {"jsonrpc" : "2.0","id" : 1,"result" : "0x6" } |
或者使用eth_blockNumber查看 最新的區(qū)塊號:
| 1 2 3 4 5 6 | curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1 }' <http-rpc-endpoint> |
結(jié)果如下:
| 1 2 3 4 5 | {"jsonrpc" : "2.0","id" : 1,"result" : "0x8b8" } |
5、使用MetaMask創(chuàng)建企業(yè)以太坊交易
在發(fā)送企業(yè)以太坊交易之前,我們需要先創(chuàng)建一個賬號,或者使用這個私有網(wǎng)絡(luò)的 創(chuàng)世配置中已經(jīng)聲明的幾個賬號:
賬號1 :同時也是幣基地址
| 1 2 3 | Address: 0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 Private key : 0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63 Initial balance : 0xad78ebc5ac6200000 (200000000000000000000 in decimal) |
賬號2:
| 1 2 3 | Address: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57 Private key : 0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3 Initial balance : 0x90000000000000000000000 (2785365088392105618523029504 in decimal) |
賬號3:
| 1 2 3 | Address: 0xf17f52151EbEF6C7334FAD080c5704D77216b732 Private key : 0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f Initial balance : 0x90000000000000000000000 (2785365088392105618523029504 in decimal |
在登錄進(jìn)MetaMask之后,鏈接到我們建立的Besu網(wǎng)絡(luò)的某個節(jié)點,然后你就可以 創(chuàng)建交易了。
6、基于Besu網(wǎng)絡(luò)的Truffle寵物商店演示
要運行Truffle的Pet Shop演示,首先我們需要安裝truffle及pet-shop模板, 然后還需要針對Besu的企業(yè)以太坊網(wǎng)絡(luò)進(jìn)行一些簡單的調(diào)整。
首先安裝truffle:
| 1 | npm install -g truffle |
然后創(chuàng)建pet-shop-tutorial目錄并進(jìn)入該目錄:
| 1 2 | mkdir pet-shop-tutorial cd pet-shop-tutorial |
然后解壓Truffle的pet-shop box:
| 1 | truffle unbox pet-shop |
安裝truffle-wallet:
| 1 | npm install --save @truffle/hdwallet-provider |
接下來修改pet-shop-tutorial目錄中的truffle-config.js文件,以便 添加我們的錢包提供器。請參考以下內(nèi)容進(jìn)行修改:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | const PrivateKeyProvider = require("truffle-hdwallet-provider"); const privateKey = "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63";module.exports = {// See <http://truffleframework.com/docs/advanced/configuration>// for more about customizing your Truffle configuration!networks: {development: {host: "127.0.0.1",port: 7545,network_id: "*" // Match any network id},quickstartWallet: {provider: () => new PrivateKeyProvider(privateKey, "<YOUR HTTP RPC NODE ENDPOINT>"),network_id: "*"},} }; |
將?<YOUR HTTP RPC NODE ENDPOINT>替換為你的HTTP RPC訪問端結(jié)點, 例如 http://localhost:32770/jsonrpc 。
將privateKey替換為前面的賬戶1,即幣基地址,其中有以太幣。
由于我們使用企業(yè)以太坊網(wǎng)絡(luò)而不是Ganache仿真器,因此在執(zhí)行合約 部署時,需要指定網(wǎng)絡(luò):
| 1 | truffle migrate --network quickstartWallet |
輸出結(jié)果類似如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | sing network 'quickstartWallet'.Running migration: 1_initial_migration.jsDeploying Migrations...... 0xfc1dbc1eaa14fa283c2c4415364579da0d195b3f2f2fefd7e0edb600a6235bdbMigrations: 0x9a3dbca554e9f6b9257aaa24010da8377c57c17e Saving successful migration to network...... 0x77cc6e9966b886fb74268f118b3ff44cf973d32b616ed4f050b3eabf0a31a30e Saving artifacts... Running migration: 2_deploy_contracts.jsDeploying Adoption...... 0x5035fe3ea7dab1d81482acc1259450b8bf8fefecfbe1749212aca86dc765660aAdoption: 0x2e1f232a9439c3d459fceca0beef13acc8259dd8 Saving successful migration to network...... 0xa7b5a36e0ebc9c25445ce29ff1339a19082d0dda516e5b72c06ee6b99a901ec0 Saving artifacts... |
你可以在區(qū)塊瀏覽器中查看上述輸出中的合約地址。
同樣,在執(zhí)行測試時也要指定使用我們的企業(yè)以太坊網(wǎng)絡(luò):
| 1 | truffle test --network quickstartWallet |
輸出結(jié)果如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Using network 'quickstartWallet'.Compiling ./contracts/Adoption.sol... Compiling ./test/TestAdoption.sol... Compiling truffle/Assert.sol... Compiling truffle/DeployedAddresses.sol...TestAdoption? testUserCanAdoptPet (2071ms)? testGetAdopterAddressByPetId (6070ms)? testGetAdopterAddressByPetIdInArray (6077ms)3 passing (37s) |
7、企業(yè)以太坊網(wǎng)絡(luò)的停止/重啟/清理
使用如下腳本停止Besu構(gòu)成的企業(yè)以太坊網(wǎng)絡(luò),但不刪除dockers容器:
| 1 | ./stop.sh |
使用如下命令重新啟動企業(yè)以太坊網(wǎng)絡(luò):
| 1 | ./resume.sh |
如果要停止網(wǎng)絡(luò)并刪除相應(yīng)的docker容器,使用如下命令:
| 1 | ./remove.sh |
原文鏈接:Private Network Quickstart Tutorial?
匯智網(wǎng)翻譯整理,轉(zhuǎn)載請標(biāo)明出處
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Hyperledger Besu企业以太坊快速教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【我的区块链之路】- Hyperledg
- 下一篇: 利用Hyperledger Fabric