上周五下午的 Neo Live 邀请了 NGD 高级开发工程师黎晨,以及 Onchain 架构师 & Poly Network 技术负责人谈元,向社区介绍此次主网升级的新亮点之一——跨链,与 Poly Network 项目的魅力所在。
Neo 主网升级
Neo 主网升级新亮点
跨链对 Neo 的价值
跨链生态的多个角色
Neo 的跨链流程
如何成为 Neo 的 Relayer
Poly Network
跨链市场全貌 & 当前技术难点
Poly Network 解决方案 & 技术优势
架构设计
跨链安全性
以下是全场活动的文字版内容实录:
Neo 主网升级
最近开发了 Neo 关于跨链的部分组件功能, 今天和大家探讨一下。
前几天, Neo 主网进行了一次升级。此次更新,实现了中继器 Relayer, 和跨链管理合约 CCMC 以在 Neo 上支持跨链。
并且在新版本中将使用 MPT(Merkel Patricia Tree)为每个块生成 State Root。可以在不过度依赖全节点的前提下,提供快速验证交易执行及 Neo 区块链状态的能力。
此外 State Root 的更新将通过 P2P 信息发布,而不会直接将其添加到相应的区块头中。同时, 在RpcSystemAssetTracker 插件新增 getutxotransfers 方法,可以允许查询任意地址的所有 UTXO 交易记录。
Neo 升级跨链组件后, 加入了 PolyNetwork 构成跨链服务之一。Neo 与本体 Ontology、Switcheo 同为 Poly Network 的初始成员,分别运行节点以维护 Poly Network 共识。关于 Poly Network 的更多细节,之后谈元大佬会和大家分享 。
Poly Network 目前已支持以太坊 Ethereum、Neo、本体 Ontology、Cosmos-SDK 在内的 4 种异构区块链跨链协议,可实现异构链间的任意信息跨链(不仅是资产跨链),最终实现跨链信息的事务性一致性。后续将逐步接入 Bitcoin 和更多异构链协议支持。
一条区块链就是一个独立的账本,两条不同的链,就是两个不同的账本。本质上价值没有办法在账本兼转移,但是对于具体的某个用户,用户在一条区块链上储存的价值,能够变成另一条链上的价值,这就是价值流动。
在跨链技术之前,价值流动是通过中心化的交易所来实现的。这种方式流程冗长,还需要绝对信任中心化交易所。
有了跨链技术,一步操作即可以完成不同链上的资产交换。并且, dApp 可以很方便地支持多平台资产,或者不同模块基于不同的账本,模块之间可以相互调用。
目前排名前几的去中心化交易所大都只支持 ERC20 和几个大的币种。有了跨链技术,意味着可以在 Neo 上实现同时支持 ETH、ERC20、NEO、GAS、NEP5、ONT、ONG、OEP4、Atom、Cosmos 子链代币等的去中心化交易所。
跨链生态的多个角色
说完了跨链技术的作用, 再谈谈跨链生态中几个不同的角色。
中继链 PolyNetwork
中继链是整个生态中的重要部分,每个节点由不同的个人或组织运行,有自己独特的治理模式和信任机制,它负责将各个链连接到一起和跨链信息的传递。
Relayer
每条链都有自己的 Relayer,它们负责把交易等跨链信息搬运到中继链或从中继链搬运到源链,并且它们会在这个过程中获取收益。
应用
应用是指开发跨链业务的人或组织,任何人都可以部署跨链合约来构建跨链应用,然后把应用公开出去招揽用户。
用户
对跨链生态来说,最重要的就是用户,通过调用具有跨链功能的应用,实现 Neo 到以太坊等链的跨链业务。
图解中, 从上到下分别是 Neo 链、Neo 链 的Relayer、中继链 Poly、目标链的 Relayer 和目标链。
简单来说,用户在 Neo 链上发出的跨链交易的证明会经由 Relayer 传递到 Poly,再由目标链的 Relayer 传递到目标链。
目标链验证 Neo 链上的交易证明并执行相应的交易, 反之亦然。
Neo 跨链流程
1 用户在 Neo 链上的业务合约中发起跨链交易;
2 业务合约调用跨链管理合约的跨链接口,跨链管理合约处理跨链请求,分配唯一自增 ID,且共识节点会生成该跨链交易所在区块的 merkle root 和该交易的 merkle proof;
3 Neo 的 Relayer 捕获跨链事件后通过 RPC 调用获取上述 merkle root 和 merkle proof 以及区块高度并提交到中继链;
4 中继链验证 merkle proof 的合法性,将跨链交易的信息以事件的形式广播;
5 目标链的 Relayer 会监听这些事件并把发往自己链的交易捕获到,然后转发到对应的目标链;
6 目标链的跨链管理合约验证中继链 merkle proof 的合法性,验证通过则说明原链上的跨链信息合法,目标链的跨链管理合约会调用相应的业务合约,执行目标链上的业务逻辑;
成为 Neo 的 Relayer
Neo 会有自己的 Relayer,它们负责把交易等跨链信息搬运到中继链或从中继链搬运到 Neo。
一方面,neo-relayer 实现了对 Neo 网络的监听,会持续扫描每个 Neo 区块并将切换了下一轮共识地址的关键区块头同步到中继链上。
同时能识别并转发跨链交易,向中继链提交区块的状态根和交易的梅克尔证明。
另一方面,neo-relayer 也实现了对中继链的监听,会持续扫描每个中继链区块并将切换了共识地址的关键区块头同步到 Neo 链上。
中继链收到其他链的跨链信息会构造到 Neo 链的返回交易,neo-relayer 会将这些交易所在的中继链区块头同步到 Neo 链上因为其中包含了状态根,同时转发这些交易的梅克尔证明及跨链信息。
申请一个中继链的钱包,然后向中继链注册自己的地址成为 Relayer。
接下来需要下载 neo-relayer 的可执行文件,解压至特定位置,更改配置信息。
最后执行 Relayer 可执行文件以运行 neo-relayer。
当然, 更加详细的文档, 可以参考我们的 github 仓库。
https://github.com/polynetwork/docs/blob/master/neo/How_to_become_neo_relayer_cn.md
Poly Network
本期主要给大家讲解 Poly Network 相关的技术问题以及实现原理。
跨链技术是在现有的单条区块链架构设计的基础上通过跨链互操作协议打通链与链之间交互的⼀种新的技术⼿段。
Vitalik Buterin 早在 2016 年将跨链互操作协议分为三种模式: 公证人机制 (Notary schemes)、侧链/中继 (Sidechains/relays)、哈希时间锁 (Hash locking)。
现在主流的跨链互操作协议主要基于侧链/中继模式,以 Cosmos 和 Polkadot 为代表,但 Cosmos 主要是基于同构链的跨链协议,并且主要聚焦于资产跨链;Polkadot 架构设计是分片协议,还没有一种跨链协议是主要聚焦于异构链跨链协议,并能让多链间的任意信息可以自由的跨链。
为解决异构链间任意信息跨链(不仅是资产跨链),连接当前已经存在的各条区块链(公有链、联盟 链、私有链)系统,我们推出了全新的跨链体系 Poly Network。
Poly Network 是由Neo、Ontology、Switcheo 基金会共同作为创始成员,分布科技作为技术提供方共同发起的跨链组织。
当前已经支持的异构链协议包含:Bitcoin、Ethereum、Neo、Ontology、Cosmos-SDK 等 5 种异构链跨链协议,未来我们将加入更多的异构链协议支持,为更好的打造下⼀代互联⽹网 (Next Generation Internet, NGI) 基础设施服务。
异构链跨链协议难点
1 异构链架构差异性,若要实现异构链间任意信息跨链,不同于同构链跨链协议,异构链跨链协议在设计时需要考虑不同的区块链包含如下信息的差异性:
– 区块头结构体
– 加密算法
– 消息结构体
– 共识机制
– 消息验证机制
这些因素导致了在跨链协议设计即需要保证协议具有极强的兼容性,但又不能过于的冗余和复杂,并且需要对不同异构链架构具有深刻的洞见和理解,所以本身具有很强的挑战性;
2 跨链信息的安全性,跨链信息的安全信主要包含两个方面:
跨链信息交互的可靠性
不同的异构链包含不同的共识机制和状态存储方式,如果保证在源链生成的状态信息在经过中间传递后,在目标链上接收到的源链的跨链信息是没有经过篡改;
链网系统的安全性
随着越来越多的链加入到跨链系统中,链网规模会不断的扩大,但不同异构链授信程度会不同,有些异构链可能由于在本身足够安全运行时间长且稳定,则授信程度会高,反之有些链可能由于本身运行时间短且有时不稳定(例如:分叉,宕机等), 会出现授信程度低的情况。这时候会出现整链网体系的信任度将会由授信度最低的链决定的情况,甚至极端情况,会出现某条侧链验证人集体作恶,这样整个链网跨链安全性有可能会瓦解,这就涉及到跨链间信息交互的安全性问题。
3 跨链信息的事务性,跨链信息事务性主要包含两个方面:
事务最终一致性
针对简单链交互的跨链交互的场景,一步操作会涉及到同时在两条链间交互的场景,如何保证跨链信息的数据的最终一致性问题;
事务强一致性
随着业务规模的扩大,跨链间信息交互的场景变得更加复杂,需要有事务性操作的支持,也就是一个事务的多个操作在3条甚至更多链间执行的场景,如何确保所有链间操作同时成功或失败,保证事务的强一致性问题。
接⼊简单⽅便,对于不包含智能合约的链只需要实现两个简单的模块,而对于包含智能合约的链仅需要部署两本简单的智能合约;
同时⽀持同构链和异构链 ,对于已经支持的异构间协议,对应的同构链可直接入;
资产跨链的超集,不仅可以支持资产类跨链,⽽且还可以⽀持任意信息跨链;
事务性⽀持,在跨链事务一致性问题上,不仅支持具有事务最终一致性需求的应⽤场景,而且同时还支持具有事务强一致性需求的应⽤用场景,理论上可支持任意事务且可扩展到任意数量的链;
跨链协议安全可靠,本架构以密码学、共识算法、spv 等为基石,各成员链可⾃行验证跨链交易的合法性,从⽽保证跨链交互的安全性;
⽀持异构链协议范围广,现已支持 BTC/ETH/NEO/Ontology/Cosmo-SDK 等异构链及其同构链。
IEEE-P3204 Standard for Blockchain Interoperability – Cross Chain Transaction Consistency 立项标准。
跨链架构设计
跨链架构主要包含如下三种角色:
多链架构协调器-中继链
中继链负责成员链和 Relayer 的注册、治理、跨链消息验证、跨链信息标准统一等事宜。成员链可以是与中继链架构相同的同构链,也可以是与中继链架构不同的异构链。中继链与成员链之间、成员链与成员链之间保证了足够的解耦性,只需部署相应的跨链合约即可能完成跨链交互;
多链架构执行器-成员链
成员链为整个多链架构执行器,主要用于执行具体的跨链逻辑,跨链模块或智能合约主要部署在各个成员链,若成员链希望与中继链产生跨链交互,成员链需要向中继链进行注册,等待中继链治理委员会审核通过后即可激活与中继链或者其它成员链间的跨链交互;
跨链信息搬运工-Relayer
Relayer 为跨链信息的搬运工,主要用于在中继链和成员链间搬运跨链数据,若 Relayer 希望在中继链于成员链间搬运跨链数据,Relayer 链需先向中继链进行注册,等待中继链治理委员会审核通过后即可激活与中继链或者其它成员链间的跨链信息的搬运;
跨链架构主要包含如下三种角色:
多链架构协调器-中继链
中继链负责成员链和 Relayer 的注册、治理、跨链消息验证、跨链信息标准统一等事宜。成员链可以是与中继链架构相同的同构链,也可以是与中继链架构不同的异构链。中继链与成员链之间、成员链与成员链之间保证了足够的解耦性,只需部署相应的跨链合约即可能完成跨链交互;
多链架构执行器-成员链
成员链为整个多链架构执行器,主要用于执行具体的跨链逻辑,跨链模块或智能合约主要部署在各个成员链,若成员链希望与中继链产生跨链交互,成员链需要向中继链进行注册,等待中继链治理委员会审核通过后即可激活与中继链或者其它成员链间的跨链交互;
跨链信息搬运工-Relayer
Relayer 为跨链信息的搬运工,主要用于在中继链和成员链间搬运跨链数据,若 Relayer 希望在中继链于成员链间搬运跨链数据,Relayer 链需先向中继链进行注册,等待中继链治理委员会审核通过后即可激活与中继链或者其它成员链间的跨链信息的搬运;
跨链事务最终一致性交互流程:
1 用户调用源链的跨链智能合约,等待源链跨链交易落账,Relayer 将监听源链的跨链信息并将必要的信息传递到 Poly Chain;
2 Poly Chain 接收到 Relayer 同步过来的跨链信息后,会验证跨链信息的合法性,验证通过后会统一源链的状态信息并生成相应的跨链信息,由 Relayer 传递到目标链;
3 目标链接收到 Poly Chain 传递过来的信息后,会验证该信息的合法性,验证通过后会调研目标链上的跨链合约,至此,跨链交互完成。
跨链事务强一致性交互流程:
1 用户从源链发起一笔跨链交易,并生成相应的跨链消息由 Relayer 传递到 Poly Chain;
2 Poly Chain 在接收到该跨链消息后解析该消息,并由 Relayer 传递到相应的多个目标链上,Prepare 阶段开始;
3 各目标链接收到对应的跨链消息后首先验证该跨链消息的合法性,验证成功后执行该跨链消息并产生一定的执行结果由 Relayer 返回 Poly Chain,Prepare 阶段完成;
4 Ploy Chain 在接收到多个目标链的消息后先验证跨链消息的合法性,并将跨链消息归集后由 Relayer 传递给各个目标链,Commit 阶段开始;
5 各目标链接接收到对应的跨链消息后先验证该跨链消息的合法性,验证成功后执行该跨链消息并落账,Commit 阶段完成,至此,跨链交互完成。
跨链安全性
1 跨链管理合约根据 Relayer 提交的跨链消息中包含的 Merkle Proof 证明该跨链消息的合法性,而该消息的证明需要对应的状态根信息;
2 跨链管理合约会从区块头同步合约中或者对应高度的状态根,由于该状态根是经过成员链共识节点签名的信息,当该状态根信息本同步到区块头同步合约时,合约会验证该签名信息的合约性,若合法则将该状态根和高度存储在持久化存储中;
3 跨链管理合约获取了合法的状态根和该状态的 Merkle Proof 从而证明了跨链消息的合法性。
以上是 Poly Network 技术及架构分享,Poly Network 已于 8 月 18 号上线主网。
当前已产生 3200 多条跨链交易,总价值超过 3000 万美刀。从 Neo 链到 Switcheo 链跨链仅需 24s 到账。