许可区块链解决方案的五个挑战以及解决问题的工具和协议

实现许可的区块链解决方案既有趣又具有挑战性。每天,主流媒体上都有新文章声称,区块链技术将如何改变行业,但现实并没有那么迷人。区块链给已经建立的企业业务流程带来了巨大的价值,但是大多数被许可的区块链实现都没有通过试点阶段。在最初的兴奋之后,大多数团队意识到,要将新的Web3技术集成到现有的企业堆栈中,大规模实现许可的区块链应用程序需要大量的技术技能和基础设施构建。
在过去的一年里,Invector Labs的团队已经接触到了高度复杂的区块链场景,每个场景都有自己的一组基础设施挑战。在与经历过几次软件革命的技术人员分享我们的经验时,他们中的许多人将web应用程序的实现与Netscape早期的web应用程序或Oracle以及IBM DB2早期的数据库系统的实现相提并论。在这些实例中,这些技术的真实应用程序的用例比相应的基础设施发展得更快。这种动态与云计算或移动计算等最近的转型技术运动形成了鲜明对比,在这些技术运动中,基础设施从一开始就非常稳固。
获得许可的区块链解决方案的真正挑战是什么?从标识、数据存储、集成或消息传递等核心基础设施领域,到部署和管理智能合约的流程;获得许可的区块链应用程序要求开发人员在适当的位置设置正确的构建块,以提高效率。在Invector Labs,我们很幸运地试验了许多新的区块链协议或工具,我们经常使用这些协议或工具来解决许可的区块链实现所面临的挑战。不幸的是,根据底层的区块链堆栈,这些工具和技术看起来完全不同。

通往任何获得许可的区块链应用程序的道路都要从两个基本决定开始:

许可区块链解决方案的五个挑战以及解决问题的工具和协议

第一个问题的答案将决定区块链应用程序的核心开发堆栈。目前,像Hyperledger Fabric、Quorum或Parity这样的以太坊变体是区块链解决方案的主要选择,此外还有像R3 Corda或Hyperledger Sawtooth也有一定的吸引力。至少在纸面上,像Dfinity或Hashgraph这样的即将出现的堆栈似乎非常适合获得许可的区块链解决方案,但它们在实践中尚未得到证明。
第二个问题的答案将决定许可的区块链应用程序的核心基础结构。提供和维护内部区块链网络远非一件容易的事情,而且最受许可的区块链堆栈也不能很好地与Docker或Kubernetes等平台集成。区块链即服务 (BaaS)平台,如azure BaaS、Kaleido或最近AWS提供的服务,可以真正地简化区块链网络的供应和管理,允许开发人员专注于构建dApp,而不是基础设施。
下图说明了上述两个问题的决策过程。

许可区块链解决方案的五个挑战以及解决问题的工具和协议


获得许可的区块链应用程序的真正挑战
选择一个区块链平台和相应的运行时只是旅程的开始。任何经过许可的区块链解决方案,只要比经过美化的数据库更复杂,就会遇到底层平台无法直接解决的大量基础设施挑战。让我们来探索其中的一些。
集成
如果您在许可的区块链应用程序中使用智能合约,那么您可能会面临与API的脱链系统通信的挑战。Oracle是处理外部通信的区块链架构的组件。然而,实施Oracle是一项高度发展的工作。我们发现有几个技术在这方面很有帮助:
·Chainlink: Chainlink提供了一个简单的编程模型,可以将比特币或以太坊智能合约与外部输入连接起来。该框架还避免了依赖“集中的Oracle”作为单一故障点。
·Rhombus: Rhombus是Oracle竞赛的最新参与者,它为以太坊智能合约与外部数据系统的连接提供了一个非常优雅的模型。Rhombus支持基于激活模式(如计划或按需)以及推或拉数据访问模式的不同Oracle架构。
·Oraclize: Oraclize专注于将API和数据系统连接到不同的区块链,如Ethereum、EOS、Hyperledger Fabric或BlockApps。Oraclize的编程模型并不像其他替代方案那样丰富,但它通过对不同区块链的强大支持来弥补这一点。
数据访问
被许可的区块链对信息的书写很有帮助,但对信息的阅读却没什么帮助。大多数经过许可的区块链解决方案都需要与区块链中记录的数据交互,但是这些数据很难访问,而且非常难以理解。以下是一些帮助应对这一挑战的协议:
·图表: 图表提供了一种机制,用于将Ethereum智能契合约处理的数据公开为GraphQL端点。这允许外部应用程序使用熟悉的GraphQL syntaxs查询区块链数据。
数据隐私
许多获得许可的区块链场景在受监管的行业中运行,这些行业具有很强的数据隐私约束。因此,保护和加强对链上数据的访问控制是获得许可的区块链解决方案的关键要求。下面,我列出了一些我们发现在这方面有帮助的技术:
· Quorum: Quorum区块链使用零知识证明的形式为私有事务提供本地支持。
· Aztec:最近宣布的Aztec协议在以太坊智能合约中提供了零知识隐私的可靠实现。
数据存储
区块链并不是存储大量数据的最佳工具。获得许可的区块链解决方案通常需要外部数据存储。不幸的是,许多适合公共区块链的分散化存储解决方案并不适用于许可的区块链场景。以下是这方面的一些解决方案:
·BigchainDB:  BigchainDB为事务的存储和查询提供了一个经过优化的分散式数据库模型。可以使用MongoDB查询语言来查询BigchainDB中的数据,MongoDB查询语言支持丰富的数据访问交互。
·IPFS专用网: IPFS是区块链应用最流行的存储系统,但通常被视为区块链的公共解决方案。但是,IPFS支持将通信限制到一组已知节点的私有网络的配置。
·AWS量子账本: 我们对即将发布的AWS量子账本数据库非常感兴趣。在许多获得许可的区块链场景中,没有共识的不变性概念当然是切实可行的,如果没有ese,量子账本也可以成为私有分散式应用程序的补充存储模型。
身份
在许可的区块链解决方案网络中参与者的身份相对来说是众所周知的。因此,许多复杂的协商共识计算协议在这些场景中是多余的。此外,大多数企业已经拥有了它们希望在许可的区块链解决方案中利用的用户目录。下面列出的技术有助于处理许可的区块链解决方案中的标识:
·uPort: uPort一直在稳步构建一系列用于管理分散式应用中的身份协议和解决方案。当前堆栈与以太坊智能合约兼容,可以在许可的区块链应用程序中使用
·Azure BaaS: Azure团队出色地扩展了不同区块链的核心协议,以利用Azure Active Directory身份。最近的一个例子是在以太坊应用程序中实现了权威验证协商共识协议。
在消息传递、测试、版本控制和许多其他领域,区块链应用程序的许可还面临着更多的挑战。本文中列出的协议和工具是我们在现实世界实现中发现的最有效解决方案,但是在不久的将来,可能会有大量即将出现的技术堆栈。