摘自wecross公众号

1. 场景

跨链的基础操作为:对方链执行某个操作完成后,本地链才可执行另一个操作。

区块链A的执行结果被发到区块链B上。区块链B在执行请求Y前,必须先判断X是否上链。判断的方法是,在区块链B的运行环境中,验证区块链A与X相关的执行结果是否有效。验证通过,表示X已上链,区块链B可继续执行后续步骤:发送请求Y,在区块链B进行上链。

问题:区块链B必须信任区块链A的执行机制。

2. 方案研究

执行结果的验证划分为以下四层

  • 验区块连续:在验证开始时,需确认数据来源,基于区块链的连续性,验证区块是否归属于指定区块链,防止攻击者用任意区块链的区块进行伪造。
  • 验区块共识:在确认来源后,需验证区块是否代表对方链的整体意愿。此步骤验证区块的共识信息是否符合要求,防止攻击者用未经过共识的区块进行伪造。
  • 验交易存在:区块被验证合法后,需验证指定交易是否属于此区块。不同链有不同验证方法,下一节会展开描述。
  • 验交易正确:交易存在性得到验证后,并不能代表此交易确实是跨链场景下预期的操作,还需结合业务场景,判断交易的具体内容是否符合预期。

2.1 验区块连续

不同区块链只在哈希算法和计算区块哈希的字段上存在差异。验证区块链连续性,只需按照相应链的实现,验证区块依次相连成链即可。

2.2 验区块共识

验区块共识,即验证区块的共识信息是否符合对应的算法条件。不同算法有不同的实现。此处给出最具代表性的两种共识算法:POW(工作量证明)和PBFT(实用拜占庭容错)。

2.2.1 POW

定义:POW 属于最终一致性共识算法,通过最长链和延迟确认的方式逐渐让共识结果收敛一致。

WeCross实现:

  • 验难度:验证区块的nonce是否满足工作量证明条件
  • 验延迟:验证当前块是否低于已知最高块N个块(N可取为10,表示1个小时前的区块)
  • 验最长链:引入多方,验证当前区块处于最长链上,防止单方面谎造最高块高和伪造分叉链进行作恶

2.2.2 PBFT算法

定义:PBFT算法在多方共识后立即达成一致,区块链不存在分叉和回滚的可能。在算法中,节点通过多次相互广播签名以达到共识。在区块中,足够数量的签名代表了区块的合法性。

WeCross实现:

  • 配置公钥:事先配置对方链共识节点的公钥
  • 验签名:用事先配置的公钥验证区块中签名的有效性,并判断有效签名数量是否达到PBFT共识条件

2.3 验交易存在

验交易存在同样需要根据不同实现判断,比较有代表性的是SPV(简单支付验证)和背书策略。

2.3.1SPV

定义: SPV初衷是为了实现轻客户端,目前已在大多数区块链上实现。随着跨链技术兴起,此技术也被用作验证区块中某数据的存在性。以交易为例,区块头中记录了当前区块内所有交易哈希组成Merkle树的树根,即“交易根”。任何一笔交易,都唯一对应了一条通向交易根的Merkle path。区块内不存在的交易,无法伪造出通向交易根的Merkle Path。

WeCross实现:需验证某交易的Merkle Path,即可判断某交易是否属于某区块。

2.3.2 背书策略

定义:背书策略为Hyperledger Fabric所采用。在Fabric中,每笔交易都需满足某个事先定义好的背书策略。交易在执行时会被多个背书节点签名,当各方签名满足背书策略时,此交易才被认为有效。Fabric将背书节点签名信息作为交易的一部分保存于区块中。多笔交易组成区块内的交易列表。交易列表以二进制形式计算哈希值,此哈希值被记录于区块头中。

WeCross实现:需判断交易是否在交易列表中(且对应flag有效),并校验交易列表哈希值,即可初步判断交易的存在性。后续将结合背书策略,验证交易的背书节点签名,进一步增强交易存在验证的有效性。

2.4 验交易正确

验交易正确,是根据业务的预期参数判断前三步验证的交易哈希(或二进制)是否是业务预期的那个操作。eg,预期操作为transfer(a, b, 100),则相应的交易内容不能是get(a)。验证时,需根据交易的编码方式和哈希算法,校验业务预期参数与交易哈希(或二进制)是否对应。不同区块链实现的差别只体现在交易编码和哈希算法上,根据链实现采用相应方法进行校验即可。

WeCross实现:在不同链的插件实现了不同的校验逻辑。

  • FISCO BCOS插件采用的是RLP编码和SHA-256哈希算法,验证的是交易哈希是否正确;
  • Fabric插件则采用ProtoBuf编码,验证的是交易二进制是否正确。

3. 解决方案

  • 验区块连续:FISCO BCOS通过比对区块头中父区块哈希与真实的父区块哈希,验证此区块是对方链的区块。
  • 验区块共识:通过校验当前区块的签名列表,判断合法签名数量是否满足PBFT共识条件,确认当前区块代表了对方链的整体意愿。
  • 验交易存在:通过验证交易哈希通向交易根的Merkle Path的正确性,可判断交易已存在于区块链上。- 验交易正确:通过验证业务预期、交易二进制、交易哈希的对应关系,可判断交易是业务预期的那个操作。

四个层次验证通过后,说明业务所预期的操作已在对方链上上链,验证完成。

跨链(1) 设计链间的信任相关推荐

  1. Blockchain区块链架构设计之四:Fabric多通道和下一代账本设计

    Hyperledger Fabric架构使用具有保证的发布-订阅模式消息传递通道(如Kafka中的主题分区)将共识服务与交易日志(账本)分离. 共识服务由称为Orderers的网络节点提供,并且账本由 ...

  2. 面向征信的区块链模式设计与应用研究

    作者:郭树行,宋子琦 (中央财经大学信息学院,北京 102206) 摘 要:根据目前我国征信体系现状,结合传统征信体系结构所产生的问题,从监管层面提出基于区块链技 术的征信行业体系结构和 2 种数据交 ...

  3. 【问链财经-区块链基础知识系列】 第三十五课 区块链跨境贸易完全简析

    一.跨境贸易存在的问题 在国际跨境贸易中,数据和信息无疑是贯穿整个业务流程的重要要素,数据流的打通对于国际跨境贸易至关重要.然而,恰恰是因为数据在业务中所扮演的重要角色,其对各参与方而言都是私密且重要 ...

  4. 【问链财经-区块链基础知识系列】 第四十课 港版支付宝的区块链跨境汇款与Ripple、Circle大不同

    蚂蚁金服的区块链应用终于落地了!作为国内金融科技先锋,怎么会缺席现在红得发紫的区块链技术热潮呢?6月25日,蚂蚁金服宣布,基于区块链的电子钱包跨境汇款服务在香港上线.港版支付宝AlipayHK的用户可 ...

  5. 和数集团首款自研虚拟数字人上线,“始祖龙”带你跨山海,链未来

    我们究竟离元宇宙有多远? 和数集团给出了答案. 2022年9月28日,和数集团自主设计和研发的首款虚拟数字人烛九阴亮相直播间,进行了首次直播测试. 烛九阴,以<山海经>中的"始祖 ...

  6. 区块链性能提升:链上设计之道

    补天遗石 本文目录: 1 区块链的功能组件(Functional Components of a Blockchain) 1.1 交易验证(Transaction Validation) 1.2 区块 ...

  7. 区块链原理设计与应用_我如何设计一个可以在6个月内吸引200K用户的区块链应用...

    区块链原理设计与应用 by Rolando Mathias 由Rolando Mathias 我如何设计一个可以在6个月内吸引200K用户的区块链应用 (How I Designed a Blockc ...

  8. 计算机领域怎么研究区块链,计算机行业深度研究:跨链技术,区块链大航海时代的基石...

    跨链概述 区块链技术发展至今,公链野蛮生长的同时,联盟链和私有链也疯狂涌现.然而,链与链之间高度异构化,作为一个孤立的价值体系存在,链与链之间互联操作的重要性日益凸显.跨链就是将同构或异构的区块链系统 ...

  9. 长安链ChainMaker的多链隔离设计

    在联盟链场景,一般一个节点对应一个参与方,一条链对应一类业务.当一个参与方有多个业务要上链,就需要采用多链方式去部署,一方面可以复用节点,另一方面可以做到业务的隔离. 长安链支持多链方式部署.如果同一 ...

最新文章

  1. 【Ubuntu】Ubuntu下的录频软件SimpleScreenRecorder
  2. acwing单源最短路的建图模式总结
  3. 计算机主板用塑料做的好吗,太震惊!你的键盘是否用了黑心塑料?
  4. FLEX PHP 交互 简单登录界面(1)源代码
  5. destoon 多表联合查询时出现解析错误,parse_str函数解析错误
  6. 【c#】Form调用百度地图api攻略及常见问题
  7. Entity Framework Core延期及弃用的特性
  8. leetcode 406. 根据身高重建队列(贪心算法)
  9. 4.5.2 循环语句
  10. OceanBase数据库开发和运维漫谈
  11. css编写加载页面动画效果
  12. 牛客国庆集训派对Day3: G. Stones(博弈+SG)
  13. Delphi / Pascal 语法知识干货
  14. 无线传感器网络定位概念
  15. 服务器防御DDoS的方法,一文解决DDoS攻击
  16. 开箱-艳云脚本云控系统
  17. 那一份无怨亦无悔的真情实意
  18. 终端节点、叶子节点和分支结点和非终端结点区别,数据结构常见误区答疑
  19. 7-1 计算平均成绩 (15分)
  20. poj 1729 Jack and Jill 1376 Robot 1324 Holedox Moving 1475 Pushing Boxes bfs + a*

热门文章

  1. 【Scratch】青少年蓝桥杯_每日一题_6.09_密码
  2. 软件测试-PR录制脚本程序的时候出现license invalid,error code=-13或者-24的错误
  3. java 验证码 源码_java 验证码生成源码
  4. openlayers 可以实现3d地图效果吗_OpenLayers教程:图形绘制之设置图形的样式
  5. matlab复数方程组,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
  6. silverlight 打开html_在Silverlight中嵌入HTML或aspx页面-阿里云开发者社区
  7. 蓄电池维护中的几大误区
  8. java des加密解密_JAVA和c# 之间数据通讯时通过DES进行加密解密
  9. java log4j logback jcl_知识总结-Java日志框架Log4j、Log4j2、logback、slf4j、简介
  10. zabbix 监控mysql5.7_使用zabbix对mysql5.7主从进行监控