本文探讨了私有以太坊的背景、类型及其与公共以太坊的差异,重点分析了Hyperledger Besu和Consensys Quorum两个私有以太坊项目,包括它们的特性、共识算法、权限控制及私有交易处理等方面。此外,文章还总结了构建私有以太坊的必要性和建议,尤其在企业环境中的应用。
1.1 私有以太坊的背景
1.2 私有以太坊的类型
1.2.1 Hyperledger Besu
1.2.2 Consensys Quorum
2.1 共识算法
2.2 权限控制
2.3 私有交易(Tessera)
2.4 实现私有以太坊
最近,越来越多的企业开始利用区块链作为基础设施提供服务。在构建区块链网络时,这些企业主要面临的一个问题是决定使用哪个主网作为其基础设施。目前,54% 的开发者正在以太坊区块链上开展区块链项目,使其成为最广泛使用的区块链之一。然而,交易速度慢和区块数据公开的特性使得企业的使用变得困难。
图 1. 区块链三难困境
这导致了企业导向的以太坊的创建,保留了以太坊的技术特性,但由特定授权的组织或团体控制的节点管理。由于节点和区块数据不被公开,这种方法放弃了区块链三难困境中的去中心化,但使企业能够由于更快的交易处理实现更高的安全性和可扩展性。
在本文中,我们将检查基于开源以太坊构建的企业网络的区块链项目,并探讨每个项目的特性及其与以太坊的区别。
以太坊客户端是指能够连接到以太坊网络以创建和发送交易、执行智能合约等任务的软件。
图 2. 截至 2024 年 4 月,以太坊共识客户端和执行客户端的状态(来源: clientdiversity)
在这些客户端中,geth 是望用于利用以太坊功能的最常用客户端。除了图 2 中列出的公共客户端外,还有像 Hyperledger Besu 和 GoQuorum 这样的私有执行客户端,设计上仅允许有限数量的参与者。本文将探讨被称为私有以太坊的 Hyperledger Besu 和 Quorum,并检查它们与公共以太坊的不同之处。
表 1. 以太坊客户端比较
Hyperledger Besu 是 Linux 基金会的 Hyperledger 项目 下的一个区块链项目。它支持以太坊虚拟机 (EVM) 的实现,并且是一个开源项目。它由 Consensys 的 Pegasys 工程团队于 2018 年作为 Pantheon 项目开始,2019 年时 转移到 Hyperledger 并继续开发。与用 Go 开发的 geth 不同,Hyperledger Besu 使用 Java 开发为其自己的以太坊客户端。
Hyperledger Besu 提供私有网络和公有网络两种模式,可以形成自己的网络,并且可以与以太坊进行互操作。
图 3. Besu 私有网络配置(来源: Besu Docs)
图 4. Besu 公共网络配置(来源: Besu Docs)
私有网络可以形成一个独立于以太坊主网或测试网的网络,并且具有在保持交易隐私的同时处理参与者之间交易的能力。
在 Besu 的公共网络中,它能够与以太坊主网进行互联,并作为以太坊的执行客户端。在 以太坊合并升级 之后,以太坊客户端可以分为“共识客户端”和“执行客户端”,而 Hyperledger Besu 也作为执行客户端与公共以太坊节点配合使用。
因此,在图 4中所示的 Besu 公共网络示意图中,共识部分位于 Besu 核心之外,主要使用 Consensys 的 Teku 作为共识客户端。通过参考 linked 资源可以实现将 Besu 和 Teku 连接到以太坊主网以便操作。
在图 3 所示的私有网络示意图中,使用 QBFT、IBFT2.0 和 Clique 等共识算法。私有区块链通过企业或组织之间的共识使用,从而显著减少网络内恶意攻击的可能性。因此,共识过程的要求比以太坊的要求宽松,使用诸如 QBFT 和 IBFT 等简单高效的共识机制。关于具体共识算法的详细信息将在下面的第 2 章中介绍。
Quorum 是 J.P. Morgan 于 2016 年创建的一个私有以太坊项目,并于 2020 年 8 月 被 Consensys 收购。在收购前,J.P. Morgan 和 Consensys 曾在创建企业以太坊联盟 (EEA) 和开发 Hyperledger Besu 上合作,而收购使 Quorum 与 Consensys 的其他 web3 产品具有互操作性。
Quorum 是通过分叉公共以太坊客户端 geth (go-ethereum) 开发的,由于 Hyperledger Besu 也是以太坊客户端的 Java 版本,因此两者之间的功能差异并不显著。Hyperledger Besu 最初由 Consensys 开发,而 Quorum 也是在 Consensys 与 J.P. Morgan 的合作下开发的,因此两个项目紧密合作,正在开发的功能是共享的。
下面是一个表格,说明 Hyperledger Besu 和 Quorum 之间的差异。最显著的区别是,Besu 可以配置为与公共以太坊网络互操作,而 Quorum 只能私用。
表 2. Hyperledger Besu 和 Quorum 比较(来源: Visa Crypto Blog)
这两个项目的一个共同特征是它们遵循企业以太坊联盟 (EEA) 的规范。EEA 是一个支持企业使用以太坊技术进行业务应用的组织,通过提供标准规范来帮助企业更轻松和安全地使用以太坊区块链。接下来,我们将探讨私有以太坊有何规范以及它与以太坊的不同。
共识算法是在区块链中确保参与节点达成一致的最关键因素。它使区块链网络中的参与者能够就新区块或交易的有效性达成一致,从而确保所有参与者之间的一致性和可靠性。
在私有以太坊中,由于仅有验证过或受信任的公司和组织的批准参与者进行通信,网络内恶意活动的可能性降低。因此,通常选择 PBFT(实用拜占庭容错)家族的共识算法,这些算法在节点数较少的情况下提供高吞吐量和低时延。Hyperledger Besu 和 Quorum 中可用的共识算法包括:
私有以太坊保留了以太坊的概念,但由于网络由有限节点组成,因此在交易速度上有优势。主要区别在于,不同于以太坊需要考虑交易顺序的天然费用概念,私有以太坊中仅有限数量的节点创建区块,因此不需要思考交易的排序。
虽然在以太坊中提出了各种技术方法来解决 MEV(最大可提取价值)问题,但在私有以太坊中,由于在节点参与者的共识下无需设置天然费用,因此以太坊面临的挑战并不存在。
接下来,私有以太坊的一个特性是它仅允许有限数量的参与者获得权限。在 Besu 和 Quorum 中,有两种限制权限的方法:限制节点权限和限制账户权限。
图 5. 节点权限控制图(来源: Besu Docs)
在 Besu 中,节点权限控制仅允许授权节点参与网络。为了实现这一点,Besu 在配置文件中定义了一份允许的节点列表,只有在列表中的节点可以参与网络。这可以通过在配置文件中使用选项 — permissions-nodes-config-file-enabled 和 — permissions-nodes-config-file=<file path> 来激活。
2. 账户权限控制
图 6. 账户权限控制图(来源: Besu Docs)
同样,可以限制特定账户是否可以发送交易或创建合约。可以使用账户权限列表来管理可以发送交易的账户地址。与节点权限控制类似,这可以通过在配置文件中使用选项 — permissions-accounts-config-file-enabled 和 — permissions-accounts-config-file=<file path> 来开启。
节点权限和账户权限都可以通过参与者的共识进行控制,当两个或多个机构建立网络时,事先达成协议以确保跨所有节点均匀应用十分重要。除了配置文件,区块链网络的访问权限也可以通过智能合约进行控制或管理,因此不强制要求通过配置文件中的选项进行控制。
最后,像 Besu 和 Quorum 这样的私有以太坊平台可以使用 Tessera 来加密交易数据。Tessera 是由 Consensys 为 Quorum 和 Besu 提供的隐私管理工具,负责处理在区块链网络上创建、传输和存储私有交易。与公共以太坊不同,在公共以太坊中,网络中的所有参与者都可以看到数据,而 Tessera 使用 PKI(公钥基础设施)来加密交易数据,并使用接收者的公钥再次加密以安全地传输交易。
加密的交易数据存储在 Tessera 节点中,每个 Tessera 节点仅存储其用户参与的私有交易的数据。
图 7. Quorum 节点与 Tessera 节点之间隐私交易处理的过程(来源: Tessera Docs)
图 7 展示了在 Quorum 网络中使用 Tessera 处理加密私有交易的过程。此过程涉及参与者 A(发送者)、参与者 B(接收者)和参与者 C(未参与交易的节点),从他们的角度按照以下步骤进行。
- A 通过 DApp(去中心化应用)生成私有交易 A 并将其发送到 Quorum 节点 A。
- 接收交易 A,加密其内容,并将其发送到 Tessera 节点 A。
- 计算交易 A 的哈希并将其作为一般交易 B 广播到 Quorum 网络。
- 接收私有交易 A 并将其存储。
- 发送确认信号回 Quorum 节点 A,确认已收到私有交易 A。
- Quorum 节点 B 接收一般交易 B,并使用私有交易 A 的哈希向 Tessera 节点 B 请求数据。
- 使用私有交易 A 的哈希来检索交易。
- 将检索到的交易发送给 Quorum 节点 B。
- 准备执行交易 A,并开始呼叫“隐私预编译”及所需数据。
在上述过程中,参与者 C 收到了一般交易 B,但由于 Tessera 节点 C 不拥有隐私交易 A 的数据,因此无法查询相关隐私数据。
通过这种方式,Tessera 可用于隐私至关重要的各种领域,如个人信息、医疗数据、财务信息和供应链管理。它在特定节点或公司之间安全共享和处理重要数据方面非常有效。
由于私有以太坊是基于以太坊开源代码的项目,因此其大部分功能都基于以太坊。即使是 ConsenSys 和 J.P. Morgan 以外的公司,也可以利用公开的 go-ethereum 源代码在本地 PC 上创建私有区块链网络。
创世文件由参与区块链网络的所有节点记录,并可以定义区块链网络的初始配置和设置。让我们看看私有区块链如何通过 Hyperledger Besu 提供的创世文件来管理共识算法和访问控制。
{
"config": {
"chainId": 2018,
"berlinBlock": 0,
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
}
},
"nonce": "0x0",
"timestamp": "0x58ee40ba",
"extraData": "0xf83ea00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000c0",
"gasLimit": "0x1fffffffffffff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb": {
"balance": "0xad78ebc5ac6200000"
}
}
}
上面的文件是定义 Besu 网络初始配置的 创世文件 的示例。
在上面提到的 alloc 设置中,主要放置组成网络的节点的公钥信息,以为节点分配初始余额。如前所述,在企业以太坊中,只有获批准的用户参与到区块链网络中,因此天然费用通常是多余的,但由于使用了以太坊的开源,因此创世文件中保留了这一概念。
因此,通过查看 Hyperledger Besu 的创世文件,可以了解正在配置的网络的共识算法和节点信息。然而,由于节点是内部管理而非外部管理,私有网络的配置文件信息只能在内部进行验证。
通过本文,我们探讨了私有以太坊的背景、各种类型及其构建示例。私有以太坊在现代商业环境中发挥着至关重要的作用,而企业和组织需要安全性、效率和定制化的区块链解决方案。特别是私有以太坊可以确保数据的透明性和不可篡改性,同时确保必要的隐私。
尽管构建私有以太坊看起来复杂,但如果正确构建,可以显著提高企业运营的效率并提供新创新的机会。因此,其应用范围和影响预计将在未来进一步扩大。
https://usa.visa.com/solutions/crypto/enterprise-blockchain.html
https://blog.web3labs.com/a-comparison-of-ethereum-clients
https://blog.web3labs.com/web3development/comparing-byzantine-fault-tolerance-consensus-algorithms
https://www.hyperledger.org/blog/why-hyperledger-besu-is-a-top-choice-for-financial-use-cases
- 原文链接: medium.com/@chaisomsri96...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!