Hyperledger Besu介绍

今天,我们很高兴地宣布Hyperledger Besu加入超级账本成为最新项目。Hyperledger Besu是一个基于Java的以太坊客户机,它以前叫做Pantheon,是提交给超级账本的第一个可以在公链上运行的区块链项目。Besu代表企业对为其应用构建许可型和开放型网络案例的兴趣在日益增长。
该项目的设计和架构策略致力于干净的界面和模块化,目标是使Hyperledger Besu成为开放的开发和部署平台。Besu被设计成尽可能模块化,它将共识算法和其他关键区块链特点分离开来,使得这些组件易于升级或实现。通过在客户端中的元素之间创建干净的接口(例如,网络、存储、EVM等),我们相信企业将可以更容易地配置以太坊来满足他们的需求,同时也为其他超级账本项目创造机会来集成和使用Besu的代码库的元素。
Hyperledger Besu是什么?
Hyperledger Besu是一个开源的以太坊客户端,它采用Apache2.0许可协议,使用Java语言编写。它可以在以太坊公网或私有许可型网络上运行,也可以在Rinkeby、Ropsten和Göi等测试网络上运行。Hyperledger Besu包含了PoW、PoA和IBFT在内的几个共识算法,并且拥有专门为联盟链环境中使用而设计的全面的许可方案。
什么是 “以太坊客户端”?
Hyperledger Besu是数种以太坊客户端之一。以太坊客户端执行以太坊协议。一个以太坊客户端包括:
· 一个在以太坊区块链中处理交易的执行环境
· 交易执行数据持久化所需存储
· 与其他以太坊节点通信、同步状态所需要的端到端(P2P)网络
· 应用开发人员与区块链交互所需要的API
Hyperledger Besu有什么特点?
Hyperledger Besu执行以太坊企业联盟(EEA)规范。EEA规范是为了在以太坊中的各种开源和闭源代码项目之间创建通用接口,以确保用户没有供应商锁定,并为构建应用程序的团队创建标准接口。Besu通过与EEA客户机规范保持一致来实现企业特性。
Hyperledger Besu具有以下特点: 
以太坊虚拟机 (EVM): EVM是图灵完备的虚拟机,允许通过在以太坊区块链中部署和执行智能合约完成交易。
存储:Hyperledger Besu使用RocksDB键-值数据库来做本地持久化保存链数据。这个数据分成一些子类:
共识算法:Hyperledger Besu执行各种共识算法,涉及到交易验证、区块验证和区块生产(即挖矿中的工作量证明)。这些算法包括:
   · PoA(Proof of Authority权威证明): Hyperledger Besu执行了几种权威证明协议。当参与者相互认识,并且有一定程度的信任(例如,在某个许可型联盟链中)时,将使用权威证明的共识协议。
       · IBFT 2.0:IBFT 2.0网络中,交易和区块由被称为验证者的已批准的帐户进行验证。验证者轮流创建下一个区块。现有的验证者提议并投票决定是否添加或移除验证者。IBFT2.0有即时的结果。当使用IBFT2.0时,没有分支,所有有效的区块都包含在主链中。
       · Clique: Clique比IBFT 2.0更具容错性。Clique容忍多达半数的验证者失效,而IBFT2.0网络需要大于或等于⅔验证者才能运行以创建区块。Clique没有即时的结果。使用Clique的实现必须认识到可能发生分叉和链重组。
  · PoW (Ethash): PoW(Proof of Work工作量证明)用于以太坊主网的挖矿行为。
存储:Hyperledger Besu使用RocksDB键-值数据库来做本地持久化保存链数据。这个数据分成一些子类:
· 区块链:区块链数据由块头和块体组成,块头形成数据“链”,用来对区块链状态进行加密验证;块体包含已排序了的交易列表以及交易凭据,交易凭据包含与交易执行相关的元数据(包括交易日志)。
· 全局状态(World State):每个块头通过一个stateRoot 哈希表达一个全局状态。全局状态是从地址到帐户的映射。外部拥有的帐户包含一个以太余额,而智能合约帐户则额外包含可执行代码和存储。
P2P网络:Hyperledger Besu执行以太坊的devp2p网络协议,用于客户端之间的通信,并为IBFT2实现了附加的子协议:
· 发现(Discovery): 一个基于UDP的协议,用于网络上查找端点
· RLPx: 一个基于TCP的协议,用于端点之间通过各种“子协议”进行通信:
   · ETH子协议(Ethereum Wire Protocol):用于全网同步区块链状态和传播新的交易。
   · IBF子协议:被IBFT2用于共识协议,加速共识决策。
面向用户的API:Hyperledger Besu通过HTTP和WebSocket协议以及GraphQL API提供了以太坊主网和EEA JSON-RPC API。
· JSON-RPC
    · HTTP JSON-RPC服务
    · WebSocket JSON-RPC服务
· GraphQL
监控:Hyperledger Besu允许你监控节点和网络性能
· 节点性能采用Prometheus 或者debug_metrics JSON-RPC API进行监控
· 网络性能采用 Alethio工具例如Block Explorer和 EthStats Network Monitor进行监控
隐私:Hyperledger Besu中的隐私指的是在交易当事人之间保持交易秘密的能力。其他方无法访问交易内容、发送方或参与方列表。Besu使用一个私有交易管理器来实现隐私。
许可: 许可型网络通过启用节点许可和/或帐户许可,只允许指定的节点和帐户参与。
Hyperledger Besu支持什么?
Hyperledger Besu包括一个命令行界面,以及基于HTTP和WebSocket的API,用于在以太坊网络中运行、维护和监控节点。
Besu客户端的API支持典型的以太坊功能,例如智能合约和dapp开发、部署和运营用户案例。Truffle、Remix和 web3j 工具使这些活动成为可能。客户端实现了标准JSON-RPC API,使得与生态系统工具的集成变得简单。客户端还支持创建私有的、经过许可的联盟网络。
出于安全考量,Hyperledger Besu不支持客户端的密钥管理。替代方案是,您可以使用EthSigner或任何与以太坊兼容的钱包来管理私钥。EthSigner 提供了对您的密钥存储的访问,并通过Hashicorp Vault和Microsoft Azure等工具对交易进行签名。
在Besu中,可以使用基于智能合约和本地配置的节点和帐户许可。在客户端中可以使用零知识方法(包括Aztec协议的使用)进行私下交易。链下方法需要使用Orion,它是一个开源的私下交易管理器,由PegaSys单独开发。

在更高层次上,Hyperledger Besu的架构如下:

Hyperledger Besu介绍

谁参与了Hyperledger Besu?
PegaSys, 是ConsenSys的协议工程团队,自从2018年11月启动Pantheon项目以来,已经成为Hyperledger Besu核心代码库的主要的贡献者和维护者。他们建立这个以太坊客户端的目的是降低企业的进入壁垒,维护和扩展主网。他们已经开发了一个在代码库上使用和构建方面的活跃社区。此外,在Besu之上还有多个应用程序,以及在生产中使用Besu的联合企业。PegaSys团队很高兴能与超级账本社区合作,继续加强Hyperledger Besu平台。