想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!
实现许可的区块链解决方案既有趣又具备挑战性。天天,主流媒体上都有新文章声称,区块链技术将如何改变行业,但现实并无那么迷人。区块链给已经创建的企业业务流程带来了巨大的价值,可是大多数被许可的区块链实现都没有经过试点阶段。在最初的兴奋以后,大多数团队意识到,要将新的Web3技术集成到现有的企业堆栈中,大规模实现许可的区块链应用程序须要大量的技术技能和基础设施构建。web
在过去的一年里,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身份。最近的一个例子是在以太坊应用程序中实现了权威验证协商共识协议。
在消息传递、测试、版本控制和许多其余领域,区块链应用程序的许可还面临着更多的挑战。本文中列出的协议和工具是咱们在现实世界实现中发现的最有效解决方案,可是在不久的未来,可能会有大量即将出现的技术堆栈。