Hyperledger Fabric可以支持以太坊

在今天我们要讲的这个时间点上,很少有人没有听过区块链这个词。尽管围绕该技术有各种所有嗡嗡声和炒作,但是区块链技术的学习曲线还是比较陡峭的。当我们遇到熟悉该技术的人时,我们会将区块链分解为四个主要部分:

  • 1.分类帐技术:如何存储数据?数据可以是很多东西,例如交易日志,或者只是区块链世界的当前状态。每个节点都可以使用自己的数据库,并且数据库不需要在网络中的所有节点上相同。
  • 2.共识机制:所有参与者如何就区块排序和当前状态达成一致?
  • 3.会员服务:如何管理身份以及允许谁进入网络?
  • 4.智能合约运行时或应用程序:我可以部署哪些智能合约或者这是什么类型的应用程序?

我们相信大多数区块链技术可以分为四个部分,开发者/消费者应该能够在每个级别进行选择。以Hyperledger Fabric为例:

  • 1.分类账本技术:实际的区块链或交易日志使用merkle哈希存储在对等方的文件系统中,而区块链世界的当前状态分别存储在数据库中以便快速查找。
  • 2.共识机制:认可模式和订购服务的综合效果在网络中达成共识。
  • 3.会员服务:Fabric具有会员服务提供商(MSP)的概念,通过颁发证书,验证身份和验证用户来管理身份的概念。MSP是Fabric中许可的核心部分。
  • 4.智能合约运行时:Fabric主要支持用Go或Node.js编写的智能合约。

本着扩展选择的精神,Hyperledger Fabric现在支持以太坊虚拟机(EVM)字节码智能合约。合约现在可以用Solidity或Vyper等语言编写。除了引入新的智能合约运行时,Fabric还有一个相应的web3提供程序,可用于使用web3.js开发去中心化的应用程序(DApps)。这一新功能是1.3版本的一部分,其目标是使开发人员能够为许可平台迁移或创建DApp。

智能合约运行时

在深入了解EVM集成的细节之前,让我们扩展智能合约运行时的概念。通常,运行时指的是特定平台支持的语言。但是还有许多其他考虑因素需要权衡。由于区块链的性质,这些运行时必须以分布式的方式进行评估。由于许多节点(如果不是全部)必须运行和存储这些合约,因此网络必须注意支持的运行时。语言会影响任意合约的计算密集程度以及它们的确定性。虽然两者都不一定是限制,但它们会给合约开发者带来不公平的负担。另一个重要因素是合约开发人员自己所经历的语言。随着区块链的出现,没有技术背景的开发人员有所增加,因此选择新语言并不总是一个实用的解决方案。智能合约运行时的影响使得选择区块链网络变得更加困难。通过引入EVM,我们希望确保Solidity智能合约和许可网络不是互斥的。

执行

作为集成EVM的一部分,我们希望重新创建以太坊的一些开发人员体验。因此,集成可以分为两个关键部分:EVM用户链代码(EVM user chaincode)和web3提供程序Fab3

用户Chaincode

EVM用户链代码是Hyperledger Burrow EVM的封装包。我们还添加了启用帐户和合约代码查询的功能。以下是作为集成的一部分做出的几个关键设计决策。

帐号

以太坊有两种类型的帐户,外部拥有帐户(EOA)和合约帐户。EOA基本上是从用户的公钥和以太的余额生成的地址。作为这项工作的一部分,Fabric不会引入以太网或任何其他token,因此未明确存储EOA。但是,用户帐户地址是从用户的公钥即时生成的。

合约帐户包含合约的运行时EVM字节码。在以太坊之后,EVM链代码将在链上存储这些类型的账户。通过EVM进行智能合约部署不需要像Fabric工作流程那样手动安装智能合约。

gas

EVM中的每条指令都需要一定量的gas。对于通过EVM运行的每笔交易,必须提供足够的gas以确保完成。这确保了“矿工”不会因无限循环而导致DoS风险,并且浪费计算资源基本上如果没有为特定交易提供足够的gas,它将在完成之前退出。在其当前的迭代中,EVM链代码为每个交易提供大量硬编码的gas。

Fab3

我们从以太坊生态系统采用的另一个关键部分是以太坊JSON RPC API。API定义了客户端可以与以太坊网络交互的系统方式。但是,由于以太坊和Fabric的不同,Fab3并没有完全实现API。它支持足够的指令以允许使用web3.js库编写的DApp。

按照本教程试用新功能 。

未来的计划

我们的下一个目标包括启用智能合约事件,以及扩展Fab3支持,以便可以使用Remix和Truffle等客户端与Fabric进行交互。我们也在寻找可以采用的以太坊生态系统的其他方面。这一新功能也是2018年12月瑞士巴塞尔Hyperledger全球论坛的一个研讨会的主题。快来加入我们,带上你的EVM智能合约和DApps吧。

我们鼓励开发人员尝试使用该功能并向我们提供反馈!要开始使用Hyperledger Fabric和EVM,你可以立即下载1.3代码:https://www.hyperledger.org/projects/fabric

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文Hyperledger Fabric可以支持以太坊