当前区块链平台的数量正在很快快速增长,这对于行业而言毫无疑问是一件好事,但区块链之间信息孤岛的问题,仍然是个未解难题。在公链领域,比特币和以太坊是仅次于的两个公链,因此很多跨链协议主要解决问题的就是这两大区块链之间的通信问题。而在联盟链领域,IBM的Fabric、摩根大通的Quorum以及R3的Corda是企业用于最少的区块链框架,那如何去构建这些联盟链之间的通信呢?在去年的时候,网卓新闻网,埃森哲(Accenture)宣告,他们研发并测试了两个解决方案,其目的使两个或多个主要的联盟链生态系统需要构建构建。从那时起,Hyperledger(超级账本)联盟研发了一个新的解决方案,专门为没中央相连者节点的许可区块链创立,而这个新的区块链构建框架,被称作Hyperledger Lab。
而这个区块链构建框架的设计原则是这样的:1. 在有所不同联盟链账本之间构建必要传输;2. 可插拔模型和组件;3. 灵活性的市场需求和数据协议;4. 利用预先不存在的角色;这个区块链构建框架为每个可互操作的区块链(这里指联盟链)引进了一个“互操作性检验者”覆盖面积网络。互操作性检验者将通过检验本地节点的账本版本(步骤1到3)来联合处置来自本地节点的给定催促。每个催促都由检验者亲笔签名的(可配备的)低于quorum数接收者(步骤4和5)。
即使某些检验者重开或不参予,网络也可以之后工作,前提是可以确保低于quorum数。任何安全性的链外通信系统,都可以传送由分布式账本的传输检验者证书的消息(步骤6)。而来自外部分布式账本的证明,可以由接收者在本地或用于链上逻辑(一般来说是智能合约)根据该外部分布式账本的传输检验者的公钥展开检验(步骤7和8)。而下面这个教程,展示了如何在Fabric、Quorum以及Corda网络之间传输非常简单资产。
一、部署先决条件DockerDocker-composeNode.js npm=5.6,node = 8.9Fabric1.4JDK 8留意:Fabric SDK有更加严苛的引擎拒绝(npm6.0和node9.0)脚本和以下命令只在Ubuntu 18.04上测试过一、安装程序由于该示例运营在Hyperledger Fabric和Quorum上,因此我们首先必须加装并运营这两种结构的本地网络。考虑到我们必须运营2个或更加多的DLT网络,展示的选用设置是在Docker容器中,目前我们还没反对手动加装。
我们将部署2条接入的区块链(每条链4个节点再加联盟),我们建议在有所不同的机器上部署环境:例如,在一台机器上部署Fabric区块链和涉及联盟,在另一台机器上部署Quorum区块链和涉及联盟。导航系统到示例文件夹:cd examples/simple-asset-transfer 加装 npm 倚赖项:npm i导航系统到示例Fabric API文件夹:cd example/simple-asset-transfer/fabric/api 加装 npm 倚赖项:npm i导航系统到示例Quorum API文件夹:cd example/simple-asset-transfer/quorum/api 加装 npm 倚赖项:npm i有关能用命令,请求查阅example package.json,它在非常简单资产移往(simple-asset-transfer)文件夹中:cat package.json。
1、1 Fabric区块链要运营Fabric区块链,你可用于以下脚本:npm run fabric这将自动为Fabric节点拉取适当的镜像(image),并运营一个由同一地下通道( channel)内的2个的组织区分的4个节点构成的环境,以及监听端口4000 的Fabric SDK。如果你早已有一个进程在监听端口4000,那么你可以在 Fabric api 配置文件Fabric/api/config.json中变更它。
留意:一些bash脚本将必要提到在端口4000上运营的应用程序,如果你变更了Fabric SDK端口,已完成后,你有可能必须自己中止应用程序。Fabric 网络和SDK将在后台启动,你可以用于npm run fabric:log表明Fabric节点输入,并用于cat fabric/logs/start.log表明SDK输入。或者,你可以用于Fabric/artifacts中的配备来遵循Fabric文档,并部署来自``fabric/contracts`的合约。
1、2 Fabric联盟要落成检验者的覆盖面积网络,我们必须在本地建构docker 镜像 :npm run fed:build然后,你就可以运营4个检验者的联盟:npm run fed:fabric 联盟检验者依赖Fabric节点和连接器来继续执行区块链操作者和检验,配置文件配备设置为在端口4000本地查询Fabric SDK的运营实例。如果要在有所不同端口或其他计算机上运营Fabric SDK,则适当地改动federations/docker-compose-Fabric.yml,为每个服务查询URL:“:4000”,并改动字符串以指向准确的端点。联盟将在后台启动,你可以用于npm run fed:fabric:log表明Fabric联盟检验者输入。1、3 Quorum区块链要运营Quorum区块链,你可以用于以下脚本:npm run quorum这将用于Tessera和RAFT运营一个由7个节点构成的Quorum网络,Tessera有可能必须几分钟才能几乎启动,你必需等候它,然后才能启动以下命令。
当Tessera准备好时,你可以所列你的docker容器docker ps,并等候它们全部变成“身体健康”(healthy)状态。然后,你就可以建构npm run quorum:api:build,然后运营自定义Quorum API npm run quorum:api ,Quorum API将配置文件用于端口5050、5051、5052和5053,你可以在Quorum api docker-compose文件quorum/api/docker-compose.yml 中变更它,为每个服务查询APP_PORT: 505。
Quorum网络和SDK将在后台启动,你可以分别用于npm run quorum:log和npm run Quorum api:log来表明Quorum节点和Quorum API输入。1、4 Quorum联盟与Fabric联盟完全相同,为了落成检验者的覆盖面积网络,我们需在本地建构docker镜像:npm run fed:build。如果你计划在同一台计算机上部署两个联盟,则不用新的分解镜像。
然后,你就可以运营4个检验者构成的联盟:npm run fed:quorum Quorum联盟检验者依赖Fabric 节点和连接器继续执行区块链操作者和检验,配置文件配备设置为在端口5050上本地查询Fabric SDK的运营实例。如果要在有所不同端口或其他计算机上运营Fabric SDK,则适当地改动federations/docker-compose-Fabric.yml,为每个服务查询URL:“:5050”,并改动字符串以指向准确的端点。1、5 Corda区块链首先你必须创建和部署一个Corda网络,为此,你必须运营以下脚本:npm run corda:build读取适当的组件和装配Corda节点的过程,可能会消耗你几分钟的时间。
在顺利部署Corda节点和web服务器后,你就可以运营Corda网络了。要运营Corda区块链,你可以用于以下脚本:npm run Corda这将运营一个由5个节点和4个web服务器构成的Corda网络。部署过程大约必须几分钟的时间。
1、6 Corda联盟如上所述,如果你早已创建了docker镜像,那么你就不必须修复它了。创建完了后,运营下脚本:npm run fed:build然后,你就可以运营一个由4个检验者构成的联盟:npm run fed:corda Corda联盟检验者依赖连接器来启动时Corda东流和检验。联盟将在后台启动,你可以用于npm run fed:corda:log来表明Corda联盟检验者输入。二、场景所有的场景都相连到了上面提及的三个区块链及其联盟。
如果用于配置文件端口在本地运营所有内容,则可以行进并用于以下命令启动其中一个场景。否则,你将被迫改动坐落于场景(scenarios)文件夹/simple-asset-transfer(非常简单资产出让)文件夹中的配置文件,以给定每个网络的准确url。场景1 : share-pub-key(分享公钥):npm run scenario:share从Corda、Quorum和Fabric区块链提供所有检验者的公钥,并在参予区块链之间分享它们。
步骤1为每个活跃的Corda检验者调用askForPubKey,并搜集它们;步骤2为每个活跃的Quorum检验者调用askForPubKey,并搜集它们;步骤3为每个活跃的Fabric检验者调用askForPubKey,并搜集它们;调用addForeignValidator,将Corda + Quorum的公钥存储到Fabric智能合约当中;调用addForeignValidator,将Corda + Fabric的公钥存储到Quorum智能合约当中;调用addForeignValidator,将Fabric + Quorum的公钥存储到Corda账本当中;录:如果早已存储了公钥,则最后的步骤将告终,多次启动脚本将自动造成此问题。场景2: fabric到quorum:npm run scenario:FtQ场景3 :quorum到fabric:npm run scenario:QtF场景4: corda到quorum:npm run scenario:CtQ场景5: corda到fabric:npm run scenario:CtF场景6: fabric到corda:npm run scenario:FtC场景7: quorum到corda:npm run scenario:QtC而上面的应用于场景,就必须以下这些步骤:步骤1调用createAsset在“给定链”上分解具备伪随机ID的标准资产;步骤2调用 lockAsset以吊销登录“给定链”上目标公钥(可选)的资产;步骤2.5(可选)调用getAsset以检验“给定链”上的资产状态;步骤3 为资产的出厂调用askForSignature并搜集检验者的亲笔签名(应当有4个);步骤4 调用verifySignature检查“引入链”上分解的证明;步骤5调用copyAsset在“引入链”上创立给定资产的副本;三、测试测试有两个版本:本地单元测试和测试调用正在运营的区块链环境。要运营本地单元测试,可以在simple-asset-transfer(非常简单资产出让)文件夹中用于npm run test。要运营拓展测试,则可以用于npm run test:bc。
留意:与场景类似于,test:bc同时相连到Fabric和Quorum区块链。如果用于配置文件端口在本地运营所有内容,则可以之后,否则,你将被迫改动坐落于tests(测试)文件夹中的配置文件,以给定每个网络的准确url。四、未来的工作构建Hyperledger Indy以管理有所不同区块链的互操作性检验者身份;构建更加简单的互操作性用例(例如,原子交换或资产实时);测试可扩展性和性能;构建更加多联盟链平台(例如Hyperledger Sawtooth、Digital Asset等);在覆盖面积网络内构建保密通信,检验者网络不应与本地账本的保密设置相匹配;用BLS亲笔签名方案更换当前亲笔签名方案,以优化证明大小(Hyperledger Ursa在这方面是领先者);涉及资料:1、https://www.hyperledger.org/blog/2019/11/20/accenture-open-sources-blockchain-integration-framework-as-a-hyperledger-lab2、https://github.com/hyperledger-labs/blockchain-integration-framework/blob/master/docs/tutorials/simple-asset-transfer.md3、https://github.。
本文关键词:在,开元官网平台,Fabric,、,Quorum,以及,Corda,之间,实现,跨链
本文来源:开元官网平台-www.softwareforbad.com