教程网

您现在的位置是: 首页 > 聚焦

本体链跨链交易合法性验证步骤教程

本体链跨链交易合法性验证步骤教程
区块链作为一种分布式账本技术,可以被应用在金融、健康医疗、供应链、资产管理等诸多领域,但是受吞吐量、网络孤立性、伸缩性等因素的制约,目前的区块链项目并不能很好的服务于

区块链作为一种分布式账本技术,可以被应用在金融、健康医疗、供应链、资产管理等诸多领域,但是受吞吐量、网络孤立性、伸缩性等因素的制约,目前的区块链项目并不能很好的服务于商业应用。在区块链所面临的诸多问题中,网络孤立性阻碍了不同区块链之间的协同操作,极大程度的限制了区块链的发挥空间。

一、引言

在前面的技术视点文章中,我们详细介绍了本体跨链协议中多链管理合约的功能和实现,通过多链管理合约可以完成侧链和侧链资产的管理。跨链交易的核心之一在于如何验证跨链状态的合法性,当源链发起一笔跨链交易时,目标链需要验证源链跨链数据的合法性。本次技术视点将介绍在本体跨链协议中两条链是如何验证对方链上发生的交易的合法性。

二、跨链交易合法性验证

跨链交易的验证主要由区块头同步合约和跨链管理合约完成,其具体实现如下:

2.1 区块头同步合约

本体跨链方案采用了较为精巧的区块头同步设计。同步的区块头存储于区块头同步合约中,当前链的其它任何合约都可以从该合约中读取同步的区块头。区块头同步合约主要有以下两个接口:

a. 主链和侧链之间的区块头同步

图:关键区块头同步

在本体主链的共识治理模型中,本体网络每隔一定数量的区块更换一次共识节点,在一个共识周期内,验证者集合保持不变。因此,如果侧链是同构链,那么链区块头同步过程不需要同步所有区块,只需要同步关键区块(即切换验证者集合的周期切换区块)和跨链交易发生的区块即可,这样的设计大大减少了区块头的同步数量。

为了防止侧链关键区块头同步在一个共识切换周期结束后没有更新,而产生前一个侧链共识周期验证人构造恶意区块头的情况,本体在主链的多链管理合约中包含了侧链共识周期管理。当前侧链的验证人可修改该属性,若侧链共识周期结束后,没有新的关键区块头被提交,侧链与主链间的跨链交互将会被终止。若新的侧链验证人发现在主链中的共识周期与侧链实际的共识切换周期不符,可在主链上修改该属性。同时,侧链也会受到相应的惩罚。

b. 侧链和侧链之间的区块头同步

侧链与侧链之间和主链与侧链之间的区块头同步过程有所不同,即关键区块头信息取得方式的不同。但是,这两者包含跨链交易的区块头同步过程相同。主链上记录了所有侧链的信息,假定 A 链和 B 链两条侧链希望直接建立连接。可以看到, A 链和 B 链都可以从主链拿到对方关键的区块头信息,并且这些信息经过了主链的共识。因此, A 链和 B 链不需要互相注册,也不需要从创世区块开始同步对方的关键区块头信息,只需要取得对方链需要跨链的前一个关键区块头信息即可。

2.2 跨链管理合约

当 dApp 处理跨链交互时,dApp 合约先处理其在源链上的逻辑,需要跨链时调用跨链管理合约的跨链接口。状态信息同步者Relayer 将状态信息的证明同步给目标链(的跨链管理合约)后,dApp 将继续处理其在目标链上的逻辑。具体流程如下:

图:链间交互流程

✔源链的跨链管理合约会为每一笔跨链交易分配一个自增 ID,并将跨链交易放入 Merkle Tree,而 Merkle Root 会被放入当前区块的区块头中,完成后会将该自增 ID 和区块高度通过事件推送出去。同时,在发起跨链交易时,用户需要将一部分的 ONG 作为矿工费用在源链上销毁或冻结。

✔Relayer 负责监听这些跨链事件,当监听到一笔跨链交易时,Relayer 根据 ID 和区块高度去源链上获取 Merkle 证明。然后,Relayer将 Merkle 证明提交到目标链,提交过程需要支付一笔目标链的矿工费。

✔目标链(的跨链管理合约)接收到该 Merkle 证明,向区块头同步合约获取对应的区块头,得到 Merkle root 并验证在源链上已完成的跨链交易的合法性,标记该交易 ID 为已花费,然后根据跨链交易的参数,跨合约调用目标链上的 dApp 合约,完成目标链上 dApp 合约的逻辑。

✔该跨链交易在目标链上被执行成功后,Relayer 会取得相应的矿工激励。根据交易的不同,这可能是侧链 ONGx 合约增发的 ONGx,也可能是主链多链管理合约中释放的 ONG。

三、后记

通过区块头同步合约和跨链管理合约这两个模块,本体可以实现链与链之间相互验证对方交易的合法性,为跨链奠定基础。

在以后的本体技术视点文章中,我们将给大家带来更多关于本体跨链设计的具体细节。目前,本体跨链测试网已经上线,也提供了详细的跨链使用教程和多链开发手册,希望广大技术爱好者来体验本体跨链测试网络。

多链开发手册

https://github.com/siovanus/documentation/blob/master/multichain/Testnet_Dev_Manual.md

跨链使用教程:

https://github.com/siovanus/documentation/blob/master/multichain/Tutorial_Case.md

本体网络跨链解决方案有哪些优势?随着区块链技术的不断发展,出现了公有链、联盟链以及私有链等多种形式。但链与链之间自成体系,形成价值孤岛,不同链之间缺乏快捷的互操作性和方便的价值流通手段。因此,各 dApp 开发者很难利用不同链的优势开发基于不同区块链平台的跨链应用,使得区块链的应用场景大大受限,阻碍实体化进程。

为什么需要跨链解决方案?

在区块链应用于实体经济的过程中,可能出现多种多样的业务场景,如:金融科技、版权保护、医疗健康、数字内容和音乐视频等。

由于业务场景的多样性,仅仅一两条链很难服务于所有业务场景。因此需要具有不同架构和功能的区块链来为不同的场景赋能。

在这样的多链体系下,不同区块链间的价值流动和互操作性变得〸分重要和有意义。

本体跨链解决方案有哪些优势?

本体推出全新的轻量级、低耦合、安全可靠的多链体系和跨链解决方案,以本体链为主链,同时支持同构侧链(与本体主链架构相同的侧链)和异构侧链(与本体主链架构不同的侧链),并允许主链与侧链、侧链与侧链之间的交互。

本体跨链设计包括哪几个模块?

1)多链管理合约

2)区块头同步合约

3)跨链管理合约

4)ONG(x) 合约

5)信息状态同步者 Relayer

主链通过多链管理合约进行侧链管理,源链和目标链之间的跨链交互通过跨链管理合约来完成, 而跨链交互的合法性证明通过同步关键区块头等状态信息来实现。

跨链交互中需要考虑的安全问题

在调研了现有的大多数跨链方案后,我们发现现有的跨链交互中涉及到的一个重要安全问题就是如何防止侧链验证人集体作恶,即侧链作恶问题未被很好解决。

在其它区块链系统中,存在着侧链验证人的选举由侧链自己决定自治和侧链验证人的管理由主链决定等多种形式。无论是自治的验证人选举还是统一的验证人选举,都会面临一个根本性的问题——这些侧链验证人都不一定可靠。

若跨链交互的中任意一种或多种资产实际价值大于验证人抵押的实际价值,验证人会有足够的动力去作恶。

举例

游戏 dApp 开发者小明同时在主链和侧链上部署了智能合约,希望进行跨链的游戏资产交互。当游戏玩家将一部分链上道具转移到侧链后,侧链验证人可能发现这些道具在侧链上的价值大于抵押在主链上资产的价值。此时侧链验证人便可以直接将这部分的资产转移到自己的名下,然后再转移到主链上去,并卖掉这部分资产。

如上便是作恶的一种形式。当然,侧链验证人在主链抵押的保证金会赔付用户的部分损失。但是当侧链验证人在主链上抵押资产的实际价值小于这部分用户资产的实际价值时,侧链验证人很大程度会采取集体作恶的方式来获得这部分的额外收益。

针对以上问题,本体研究团队在大量的调研思考后,尝试提出了一种有效解决侧链验证人集体作恶问题的解决方案。

本体网络如何实现跨链功能的?还在比较区块链项目可以实现的 TPS指标?还在讨论单条公链如何突破「性能低下」的瓶颈?进入 2019 年的年中,现在行业更关注的问题是,面对越来越多语言架构各异的公有链、联盟链、私有链,如何真正实现「互操作性」?

换句话说,现在大家正在积极思考并探索,如何终结各个区块链自成体系、分裂割据的局面,在一座座价值孤岛之间如何搭建桥梁,使链与链之间可以互联互通、实现价值流通,从而形成整个区块链的价值互联网。

从以太坊社区最早提出的链下扩容方案 Plasma,到 Cosmos 和 Polkadot 这样的以「跨链」为核心目标的公链项目,可以实现「跨链」或「互操作性」功能的技术方案一一崭露头角,引发业界关注。

像本体这样的公链项目,在建设生态发展的同时,也在积极探索适合的跨链解决方案,从而可以让不同链间的 dApp 开发者可以通过调用跨链管理合约来完成跨链操作,实现链接不同区块链,为整个生态赋能。

在区块链的世界,封闭的孤岛没有价值。本体这样的公链项目在跨链方向进行的尝试值得其他深入研究。那么,本体在跨链设计和架构方面,与其他跨链项目有何不同?其设计思路是什么?如何实现?这对众多公链项目具有借鉴意义。

从 Plasma、Cosmos、Polkadot,到本体

不妨先比较一下几个热门的跨链解决方案的特色,以及它们是如何实现跨链功能的。

Plasma:如今坊间热议的跨链技术始自 2017 年 8 月由 Joseph Poon 和 Vitalik Buterin 首次提出的链下扩容方案 Plasma,其本质上是一系列运行在以太坊主链上的智能合约,通过将大量交易和计算“下放”到侧链来实现,以提高以太坊主链可扩展性。不同于以太坊主链目前使用的PoW共识算法,侧链将使用 PoS 等 TPS 更高的共识机制,因此侧链提供了可扩展性,而主链保证了安全性和去中心化。

形象地说,以太坊主链就像最高法院,不需要处理过多事务,而侧链就是下级法院,从最高法院获得权力。主链将使用数学可验证的方法来处理争端,并用自己的资金奖励正确的一方。

Cosmos:今年 3 月 14 日主网上线、引发跨链技术热潮的 Cosmos 则是 Tendermint 团队开发的一个支持跨链交互的异构网络 (Internet of Blockchains)。Cosmos 由不同的独立、平行区块链组成,其中的每条区块链都通过如 Tendermint 这样的 PBFT (经典拜占庭容错)共识运行。Cosmos 上的区块链称为“分区(zone)”,其中的一些分区又称为"枢纽 (Hub)",不同的分区可以通过共享的枢纽来互相通信与互操作。

Cosmos 网络上的第一个分区就是 Cosmos Hub。因为所有跨分区的代币转移都需要通过 Cosmos Hub 进行,所以代币可以安全、迅速地在分区之间转移。分区之间无需具有直接的汇兑流动性,而只需通过 Cosmos Hub 来追踪记录每个分区持有的代币总量,并确保所有分区的代币总量不变。Cosmos Hub 在此起到了一种类似中央银行结算功能的作用。

Polkadot:另外一个令人瞩目、但尚未正式发布的跨链项目 Polkadot 是由前以太坊联合创始人、CTO Gavin Wood 设计的可伸缩性的异构多链系统。Polkadot 设计了一种新的区块链形态,由单独的中继链去统一管理共识安全和数据交互,用百花齐放的平行链技术去满足各种应用需求,进一步分离共识和状态转换,使开发者和企业能够利用其协议建立区块链,即平行链(parachain)。

只要这些平行链建立在 Polkadot 的基础之上,将共享同样的权威证明(PoA)共识。由于该类型共识嵌于 Polkadot 中,平行链开发者可以专注于各自区块链的特异性。所有平行链都和被称为中继链(relay chain)的通用区块链无缝连接,后者扮演连接所有平行链的角色。

本体:定位于新一代公有基础链暨分布式信任协作平台,于去年 6 月 30 日实现主网上线,之后又在 12 月 28 日发布本体分片设计,连通区块链与互联网,为实体经济服务。

2019 年,本体按路线图计划将着力于同构多链、异构链网的打造,帮助去中心化应用(dApps)能够基于不同的链进行更好的开发,为此推出了全新的轻量级、低耦合、安全可靠的跨链解决方案。

该方案可同时支持同构链(与当前的本体主链具有相同架构的侧链)和异构链(与当前本体架构不同的侧链),当需要连接不同结构的链时,在源链和目标链中部署用于管理跨链操作的合约之后,不同链间的 DApp 开发者可以通过调用跨链管理合约来完成跨链操作。

值得注意的是,本体链网的主链区块信息受侧链信任,侧链的区块信息无法一开始就获得受主链及其他侧链的原生信任。因此,为了验证跨链状态的合法性,侧链需要在注册时向主链的多链管理合约提交该侧链的创世区块头、抵押 ONG 量等基本信息,同时需要将主链的当前关键区块头信息初始化在自己的区块头同步合约中。

源链和目标链的跨链交互所需相关合法性证明须在跨链交易发生时在链间进行传递。与此同时,合法性证明也需要源链或目标链的某些关键区块头信息,主链与侧链的交互需要从对方同步关键区块头信息;而侧链与侧链的交互,由于双方都可以从主链上拿到对方关键的区块头信息,因此只需直接从主链上获取即可。

五个模块,了解本体跨链设计

在本体的跨链设计中,由 Ontology 主链、各条同构侧链以及异构侧链构成整个链网体系。在这个体系中,使用 ONG(Ontology Gas)作为统一的燃料手续费和矿工费。

 1/4    1 2 3 4 下一页 尾页