主页 > imtoken官方版下载安卓最新版 > Hyperledger Besu 快速入门教程【企业以太坊】

Hyperledger Besu 快速入门教程【企业以太坊】

Besu 是 Hyperledger 中的企业级以太坊产品以太坊浏览器,其最大的优势在于兼容以太坊主网。 本教程介绍如何使用Hyperledger Besu快速启动企业以太坊网络并使用JSON RPC进行数据查询和交易提交,以及如何使用Truffle开发企业以太坊DApp并使用内置工具进行数据调试和运维监控.

1.启动企业以太坊网络

以太坊教程推荐:

首先克隆 Besu 的 quickstart 存储库的源代码:

git clone https://github.com/PegaSysEng/besu-quickstart.git

然后进入besu-quickstart目录,执行如下命令构建besu的docker镜像:

./run.sh

上面的命令将构建 docker 镜像并启动 4 个容器来模拟具有 6 个 besu 节点的企业以太坊网络。 当脚本执行完成后,可以看到如下输出信息:

*************************************
Besu Quickstart 
*************************************
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

以及访问端点列表:

****************************************************************
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                                                                        
****************************************************************

要再次显示访问端点,请使用以下命令:

./list.sh

2.使用企业以太坊区块浏览器

在本教程中我们使用 Alethio 轻量级以太坊浏览器,您也可以使用 EthScan。

在浏览器中打开上述web block explorer端点中列出的地址,即可查看企业以太坊网络中的区块数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-44vk4G6K-1579227029039)(hyperledger-besu-tutorial/ExplorerSummary.png)]

在区块浏览器中可以看到有6个besu节点:4个普通节点,1个出块节点,1个引导节点。

点击最佳区块右侧的区块编号,可以显示该区块的详细数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xG0UGyt7-1579227029040)(hyperledger-besu-tutorial/ExplorerBlockDetails.png)]

点击左上角的放大镜可以搜索区块、交易哈希或以太坊地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nE62glIk-1579227029041)(hyperledger-besu-tutorial/ExplorerSearch.png)]

3.监控Besu节点运行状态

可以使用Prometheus、Grafana等运维监控工具可视化节点的健康状态和运行情况。 参考前面给出的访问端点,直接在浏览器中访问这些工具。 例如使用 Grafana:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YvCcHe4E-1579227029042)(hyperledger-besu-tutorial/grafana.png)]

4.使用JSON-RPC访问Besu节点

Besu 支持标准的以太坊 JSON-RPC API 接口。 例如使用curl调用web3_clientVersion命令查看节点的版本:

curl -X POST --data '{
    "jsonrpc":"2.0",
    "method":"web3_clientVersion",
    "params":[],
    "id":1
}' 

表示上面列出的访问端点的地址,需要根据自己的实际情况进行替换,例如:32768/jsonrpc。 上述命令的返回结果类似如下:

{
   "jsonrpc" : "2.0",
   "id" : 1,
   "result" : "besu/"
}

或者使用net_peerCount命令查看节点连接的Peer数量:

curl -X POST --data '{
    "jsonrpc":"2.0",
    "method":"net_peerCount",
    "params":[],
    "id":1
}' 

结果如下:

{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : "0x6"
}

或者使用 eth_blockNumber 查看最新的区块号:

curl -X POST --data '{
    "jsonrpc":"2.0",
    "method":"eth_blockNumber",
    "params":[],
    "id":1
}' 

结果如下:

{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : "0x8b8"
}

5.使用MetaMask创建企业以太坊交易

在发送企业以太坊交易之前,我们需要先创建一个账户,或者使用在这个私有网络的创世配置中声明的几个账户:

账户1:也是币基地址

Address: 0xfe3b557e8fb62b89f4916b721be55ceb828dbd73
Private key : 0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63
Initial balance : 0xad78ebc5ac6200000 (200000000000000000000 in decimal)

帐户 2:

Address: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57
Private key : 0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3
Initial balance : 0x90000000000000000000000 (2785365088392105618523029504 in decimal)

帐户 3:

Address: 0xf17f52151EbEF6C7334FAD080c5704D77216b732
Private key : 0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f
Initial balance : 0x90000000000000000000000 (2785365088392105618523029504 in decimal

登录MetaMask后,链接到我们搭建的Besu网络的一个节点,就可以创建交易了。

6、基于Besu网络的Truffle宠物店Demo

要运行 Truffle 的 Pet Shop 演示以太坊浏览器,首先我们需要安装 truffle 和 pet-shop 模板,然后我们需要对 Besu 的企业以太坊网络进行一些简单的调整。

首先安装松露:

npm install -g truffle

然后创建 pet-shop-tutorial 目录并移入其中:

mkdir pet-shop-tutorial
cd pet-shop-tutorial

然后解压缩 Truffle 的宠物店盒子:

truffle unbox pet-shop

安装松露钱包:

npm install --save @truffle/hdwallet-provider

接下来修改pet-shop-tutorial目录下的truffle-config.js文件,添加我们的wallet provider。 请参考以下修改:

const PrivateKeyProvider = require("truffle-hdwallet-provider");
const privateKey = "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63";
module.exports = {
  // See 
  // 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, ""),
      network_id: "*"
    },
  }
};