精华内容
下载资源
问答
  • WeCross是由微众银行自主研发并完全开源的区块链跨链协作平台,致力于促进跨行业、机构和地域的跨区块链信任传递和商业合作。WeCross支持应用与多链互操作、同/异构链间互操作等多维跨链交互,实现了: 一站式跨链...
  • 微众银行区块链WeCross跨链技术白皮书
  • 图一 链化未来主侧链跨链结构示意图 图二 波卡跨链结构示意图 首先我们从概念性原理图来观察一下这两个跨链的解决方案。乍一看,貌似完全不一样,但是实际上二者没有本质区别。它只是从不同角度阐述了相似的解决...
  • XPollinate 是一个跨链桥梁,允许用户连接他们的 Web3 钱包并在不同网络之间交换资产,例如 xDai Chain、Matic 主网、Fantom 主网和币安智能链主网。 项目结构 默认模板是使用创建的 monorepo。 Workspaces 可以以...
  • 作者 madengji前言:跨链基础需求:资产兑换和资产转移资产兑换:A想用X链的币(Token)兑换Y链的币(token),B想用Y链的币兑换X链的币,经系统撮合,两者互相兑换成功资产转移:A想把X链的资产(币token)转移到...
  • 随着区块链技术的发展,...其次,总结了正在发展的跨链技术,并介绍 了 24 种主流跨链技术的原理与实现思路;然后,综合分析了跨链技术存在的安全性风险,并列举了 12 项主要问题; 最后,总结探讨了跨链技术的未来发展趋势.
  • 不论对于公有链还是私有链来看,跨链技术就是实现价值互联网的关键,它是把区块链从分散的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。目前主流的跨链技术包括:1、公证人机制(Notary schemes)2、侧链/...
  • 微众银行-区块链WeCross跨链技术白皮书-2020.2-45.pdf
  • 原子跨链交易 此仓库包含一些实用程序,可在erc20货币之间手动执行跨链原子交换。 当前支持Qtum,以太坊及其基于erc20的令牌。 什么是原子交换 原子交换或原子跨链交易是一种加密货币与另一种加密货币的交换,而无需...
  • Platdot:跨链项目-源码

    2021-03-05 11:56:24
    Bscdot是基于ChainX团队开发的ChainBridge的跨链项目。 为了实现双向交叉链,链桥需要在Substrate链上部署与EVM中的智能合约等效的托盘,因此不能在polkadot上部署它。 我们的团队对此进行了改进。 通过Bscdot,它...
  • 交互层:不同业务场景有不同的跨链交互模型,基于抽象数据层,WeCross 建设通用 区块链适配与路由中继网络,结合标准默克尔证明机制,实现跨链交互层抽象设计。 事务层:基于数据结构和交互的抽象层,实现跨链事务...
  • 区块链行业经过近10年的发展,从1.0-2.0-3.0,现在区块链3.0:侧链与跨链,以比特币、以太坊为代表的公链项目已经向我们展示了区块链的巨大发展前景。但是由于区块链本身技术特点,单链解决方案受到去中心化,安全性...
  • 区块链跨链调研

    2018-10-16 10:43:18
    跨链技术可以理解为连接各区块链的桥梁,其主要应用是实现各区块链之间的原子交易、资产转换、区块链内部信息互通,或解决Oracle的问题等
  • 区块链技术发展至今,公链野蛮生长的同时,联盟链和私有链也疯狂涌现。 然而,链与链之间高度异构化,作为一个...跨链就是将同构或异构的区块链系统连接起 来,实现资产、数据互操作,是区块链向外拓展和连接的桥梁。
  • 区块链侧链与跨链技术白皮书.pdf
  • 区块链3.0时代,出现的侧链和跨链技术,为区块链产业克服以上缺陷带来了曙光。侧链延展了主链的性能,拓宽了代币的使用场景;跨链打破了价值孤岛,沟通了两条甚至多条独立的区块链。总结核心规律及趋势,将侧链跨链...
  • 一个用于在两种加密货币的网络之间进行跨链原子交换的Python库。 跨链原子交换是最便宜,最安全的加密证明,用于交换加密货币。 这是一个基于哈希时间锁定合同(HTLC)协议的全新的分散式支付环境。 可用的加密货币...
  • 关于跨链需要知道的第一件事情是,我们永远没有办法把一条链上的资产真正的转移到另一条链上 关于跨链需要知道的第一件事情是,我们永远没有办法把一条链上的资产真正的转移到另一条链上,以比特币为例,2100 万...

    转载于:https://learnblockchain.cn/article/1553

    关于跨链需要知道的第一件事情是,我们永远没有办法把一条链上的资产真正的转移到另一条链上

     

    关于跨链需要知道的第一件事情是,我们永远没有办法把一条链上的资产真正的转移到另一条链上,以比特币为例,2100 万枚比特币,全部都会且只会呆在某个确定的比特币地址中,而不会去其他任何地方。

    那用跨链实现的资产转移是在做什么?它是在一条链上锁定资产,在另一条链上发行该资产的等值替代品*。**(注:哈希锁定不属于该方式)*

    以比特币和以太坊之间的跨链为例,它需要你把比特币转入某个地址,锁定这部分比特币,然后在以太坊上发行比特币替代品,并转入你在以太坊上的地址;赎回的时候,需要你调用智能合约销毁比特币替代品,然后在比特币网络上把锁定的比特币释放给你。

    不难发现,这其中唯一的难点就在于消息的互通。

    也就是说,当你在比特币网络把比特币锁定后,只要以太坊能知道这件事,就可以在以太坊上铸币给你;当你在以太坊把替代品销毁后,只要比特币网络能知道这件事,就可以在比特币网络上释放币给你。

    那么消息的互通难在哪里?我采访了 Cdot 的创始人刘毅,刘毅认为多链是一种更具生命力的系统,因此他和他的团队致力于链与链之间的联通。Cdot 已经为以太坊和 Flow 建立了跨链桥,也正在进行 Cosmos 与 Polkadot、Cosmos 与以太坊的跨链研发。

    01 完美跨链为何难以实现

    问:先问一个「大」问题,你是如何看待跨链的重要性的?

    刘毅:公链技术发展面临的主要问题是如何突破性能和成本瓶颈,同时不过度牺牲链上应用的可组合性。目前看有三个解决方案:分片、Layer 2、多链(跨链)。Polkadot、Cosmos、Ava,还有包括 Cdot 在内的众多团队,做得就是多链这个方向。

    也就是说,如果可以用 Substrate /Cosmos SDK 为每个加密协议开发出专用的链,又可以通过跨链,让这个加密协议可以跟其他加密协议互操作,那么公链的性能和成本问题就可以得到解决。

    问:回归今天的技术主题,跨链时两条链消息的互通难在哪里?

    刘毅:可以从 Vitalik 在 2016 年写的一篇叫《Chain Interoperability》的文章谈起,他把跨链技术分成了三类,哈希时间锁、见证人、中继,我觉得基本上可以沿用。

    见证人和中继都是链下进程,它们负责把消息转来转去:它看到 A 链上发生了一件事,就告诉 B 链(注:负责两条链消息的互通)

    那它俩的区别是什么?当我在目标链上收到一个消息后,如果是见证人跨链,我验证的是这条消息来自于见证人,如果我相信见证人,我就相信这个消息,就执行该执行的操作。

    如果是中继跨链,我验证的不是这条消息来自于哪个中继,我验证的是这条消息是不是来自于源链,如果是,就执行该执行的操作。

    也就是说,见证人可以看做是需要被信任的中继,中继可以看做是无需被信任的见证人。这就是两者的核心区别,中继显然比见证人更符合 trustless 的原则。

    中继是无法做恶的,如果一个中继提交的信息不是来自于源链,目标链验证之后会把它识别出来。但是见证人是可以做恶的,它可以造出一个消息发给目标链,目标链验证它是来自于自己相信的见证人后,就会执行这个操作。

    这样看来,似乎大家都应该用中继去做跨链产品,但为什么还存在见证人方式?因为中继跨链的要求比较高。

    它的要求到底是什么?假设咱们是两条链,你上面发生了一个事件,由一个中继发给了我,我要验证这个信息来自于你这条链,对吧?

    怎么验证呢?我的链上需要有你的链的轻客户端。可以粗略地理解为类似于比特币 SPV 的机制,但发生在链上,而不是在手机钱包里,即你的所有区块头我这儿都要有

    这个时候,当一条消息过来,中继不但要把消息给我,还要把消息的证明给我,这个证明是一个 Merkle Proof,它告诉我这个事件或这笔交易是发生在你这条链上的哪个区块(高度)。

    我拿到 Merkle Proof 后,因为有你所有的区块头,就可以把对应高度的区块头拿出来,用 Merkle Proof 验证这个交易或者这个事件是否存在。如果存在性得到证明,我就确定了这个消息确实是源自于你这条链的。

    然后,当我这条链生成一个事件或者发生一笔交易后,中继也发给你,你也有我全部的区块头,也可以验证这个消息是否来自于我。这是一个完美的跨链,对吧?

    可为什么大家不去实现完美的中继跨链呢?因为有些链是没有办法实现别的链的轻客户端的。比如比特币,它上面实现不了任何一个链的轻客户端。

    以太坊上能不能实现别的链的轻客户端呢?要看实现的难度。以太坊需要用智能合约实现轻客户端,但智能合约是有 gas 限制的,所以轻客户端验证的计算量是要能够容纳到 Gas Limit 以内的。

    问:可不可以这么认为,如果一个链不具备实现另外一个链的轻客户端的条件,它就永远无法以中继的方式与另一个链跨链?

    刘毅:它就只能用见证人的方式跨链,但可以混合,一个方向上用见证人,另外一个方向上用中继。

    比如我开发一条链,比特币肯定实现不了我的轻客户端,但我可以实现比特币的轻客户端,那么比特币到我这个方向能够用中继,我到比特币这个方向就只能用见证人。

    问:以太坊的情况如何?比如要实现以太坊与 Cosmos 的中继跨链。

    刘毅:以太坊是一个复杂的问题,它有条件实现一些轻客户端,但就像上边说的,最主要的限制是 Gas Limit。

    比如一个 Tendermint(Cosmos 采用的共识协议)的链,中继跨链需要验证它的区块头,它的区块头是所有验证者的签名,这些签名用的是 BLS 签名算法,验证区块头就要验证这些 BLS 签名,但是,以太坊上没有预编译 BLS 签名。

    智能合约可以直接调用预编译加密算法,比如调 ECRecover 方法,用它验证 ECDSA 签名只需要 3000 gas,还是比较低的;但验证没有预编译的 BLS 签名,就得把整个的签名验证算法 Solidity 实现,不是底层支持的,这个太贵了。

    验证一个 BLS 签名,最优好像是二十几万 gas,如果 Tendermint 上有 100 个验证人,那每个区块可能就有 100 个签名,验证 100 个 BLS 签名,gas 肯定会超,不可能做到。

    不过今年 Vitalik 写的路线图上,以太坊 1.x 会增加 BLS 签名预编译合约,相当于在客户端底层实现 BLS 验证,那么一个函数调用就可以验证签名。

    假设和 ECDSA 一样,也是 3000 gas,那验证 100 个 BLS 签名是三十万 gas,这就有可能在智能合约里实现。

    有了 BLS 预编译后,理论上就可以在以太坊上实现 Tendermint 的轻客户端,那么以太坊和 Cosmos 就可以实现双向的中继跨越。所以说和 Cosmos 中继跨链的话,比特币肯定不行,以太坊是现在不行,未来可能行。

    问:即便都是采用 Cosmos 的 IBC 标准开发的链,也不是天然就能跨链?

    刘毅:对,两条链即使都实现了 IBC,要中继跨链的话还要实现对方链的轻客户端。

    02 跨链消息如何在链间传递

    问:轻客户端用于跨链消息的验证,但跨链消息本身是怎样在两条链间传递的?

    刘毅:跨链桥很形象,它有两个桥墩和一个桥梁。两个桥墩就是两套智能合约(有些链可能叫模块),一个运行在 A 链,一个运行在 B 链;中间是桥梁,桥梁是链下进程,负责监控两边这两套智能合约的事件

    问:比如我在以太坊上把一只加密猫锁进了智能合约,链下进程监听到这个事件很容易,但它怎么告诉 Flow 上的智能合约我锁了一只猫?

    刘毅:链下进程就是给 Flow 发一笔交易,说以太坊这边锁了一只猫,你那边要铸造出一只猫。它是一个程序,通过 RPC(远程过程调用)接口,一边连以太坊的节点,另一边连 Flow 的节点。

    问:能完整描述一个具体的跨链过程吗?

    刘毅:假设现在有一个 ERC20 的代币,比如说是 UNI,它发行在以太坊上,我们想把它跨到 PlatON 上面去。

    那么以太坊这边要有一个智能合约,比如叫 Vault 合约,它是跨链桥的一个桥墩;跨链的用户要做两笔交易,第一笔交易是调用 UNI 合约的 Approve 方法,允许 Vault 合约转走多少用户的 UNI。

    第二笔交易是发给 Vault 合约的 Lock 方法,把要锁定的币种(本例是 UNI)和数量(比如 500 个) 作为参数传进去,然后还要提供一个 PlatON 的地址,说我锁 500 个是为了在这个地址上铸造出 500 个 UNI 的替代品。

    这个时候,Vault 合约就会去调用 UNI 合约做 UNI 的转移,因为 Vault 合约已经被 Approve 了,就可以把 UNI 从用户地址转到 Vault 合约的地址上,也就是把 UNI 锁住。

    锁完之后,Vault 合约就会发一个事件,比如叫 AssetLock 事件;链下进程是通过 RPC 接口连在以太坊节点上的,它会订阅 Vault 合约的 AssetLock 事件,这个事件只要一出现在日志里,链下进程就得到这个事件了

    这个事件里包含相关参数,比如锁定的是哪个币,锁了多少,另一条链上的受益人是谁;链下进程会等待比如说 100 个块的确认,不可逆转;然后,链下进程也有一个连接 PlatON 的 RPC 接口,它会提交一笔交易到 PlatON,假设这笔交易叫 Mint。

    PlatON 上也会有一个合约,比如叫 Control 合约,它是跨链桥的另一个桥墩;Control 合约事先会创建一个类似 ERC20 的合约,比如叫 EUNI,Control 合约是这个合约的 owner,也就是说它有权力控制 EUNI 合约的代币供应。

    Control 合约收到 Mint 请求后,验证这个请求确实来自于见证人,就会调用 EUNI 合约的 Mint 方法,告诉它给某个地址铸造 500 个 EUNI 代币;EUNI 铸造出来后,就会放在用户之前提供的地址上,用户就可以用了。

    这个时候,假设用户把 EUNI 转给了另外一个用户,新用户想要以太坊上的 UNI,那他要做的操作是先 Approve,然后调用 Control 合约的 Redeem 方法,烧掉比如说 100 个 EUNI,并释放一个事件叫 AssetBurn。

    链下进程监控到 Control 合约的 AssetBurn 事件,就会给以太坊 Vault 合约发一个交易请求,调用 Release 接口,以太坊验证这个交易是来自于见证人后,就会把 UNI 从 Vault 合约的地址上转移到指定的用户地址上,用户就得到了原始的 UNI。这就是一个完整的跨链过程。

    问:可以抛开「链下进程」这个角色实现跨链吗?比如一条链直接去监听另一条链,然后完成相关的跨链操作?

    刘毅:这是做不到的,因为链都不能主动发起操作,链的逻辑都是被动的

    唯一的例外是 Substrate(Polkadot 开发框架),它上边有 off-chain worker 这个机制,可以用一个链下工作机发起请求。其他的,比如以太坊智能合约,是不能自己主动发起干什么事的,它只有被调用。

    问:可不可以这么理解,不管是中继跨链还是见证人跨链,都需要链下进程来传递消息,所不同的是,中继跨链通过轻客户端验证消息,见证人跨链信任见证人提供的消息?

    刘毅:这样理解基本上没有问题。中继跨链依赖链下进程的可用性,但不依赖它的忠诚。

    03 见证人如何更值得信任

    问:似乎通过链下进程传递消息不难,难的是验证消息或者信任消息?

    刘毅:对,因为两条链都有 RPC 接口,而且都有 SDK(软件开发工具包),是能够访问的,所以不难。

    而且特定目的的跨链,不需要定义一个可扩展的协议,只要自己够用就好:定义是什么事件,抽取什么参数,提交什么参数给谁,就行了。

    问:验证消息是技术问题,要么能验证要么不能验证,但信任消息的话,似乎就有不同的模型,反映在见证人跨链上就是它可以有不同的实现方式 ,需要信任的消息可以来自中心化的见证人,也可以来自去中心化的见证人?

    刘毅:其实就是一个安全性问题。而安全是一个没有极限的东西,也没有绝对,安全通常是一个渐进的过程。

    比如一开始,没什么资产时,可以用单见证人,连 KMS(密钥管理服务)都不用;有了资产后就要用 KMS;资产多了,需要多个见证人,为了省 gas,就要做链下签名聚合;资产更多了,就要用到 MPC(安全多方计算)。

    然后再多资产,就要对参与 MPC 的多方进行随机分组调度,例如 RenVM。这样就跟做一条公链的难度和实践都差不多,但它也就实现了去中心化的见证人。

    问:可以更具体地描述一下吗?

    刘毅:比如一边是以太坊,一边是 Flow,我们可以开发一个见证人的节点,把两边连起来。

    但这一个见证人的安全性和可用性是比较低的,如果黑客攻破了见证人的服务器,拿到见证人的私钥,就能够把所有锁在以太坊上面的 ETH 或者 ERC20 偷走。

    还有一个风险就是可用性,如果见证人服务器宕机了,那在一条链上锁定资产后,另一条链上是铸造不出来的,因为消息传不过去。

    如果承载的跨链资产不多,一个见证人是可以接受的,也有一些方法解决单见证人的安全问题和宕机问题。但如果想进一步提高,怎么做?可以包含 3 个见证人。

    假设一边是比特币,一边是以太坊,比特币网络上有一个 2/3 的多签钱包,用户发交易把比特币锁进去,3 个见证人看到后,就给以太坊发消息,以太坊确认消息来自于见证人后,就在以太坊上铸造代币。

    兑回的时候,用户在以太坊发交易要求赎回比特币,3 个见证人看到后,就去比特币网络发多签:一个见证人发一笔交易,说要释放,另一个见证人也发一笔交易,说要释放,2/3 钱包看到够两个签名了,就释放比特币给用户。

    2/3 比一个见证人要好一点,但 3 个私钥持有人中只要有 2 人串通,就能把比特币全部拿走,所以其去中心化程度是不够的。

    那么更好的方案是 MPC/TSS(安全多方计算/门限签名)支持下的见证人链。刚才说见证人需要被信任,但如果把见证人做成一条链,它是不是也可以实现 trustless ?

    信任集合扩大了,除了要信任源链、目标链,中间还有一个见证人,但这个见证人不是中心化的,它是一条链,有自己的经济安全性,只要相信见证人链的验证者(validator)集合整体不会作恶,那整个过程还是 trustless 的。

    见证人链可以把众多的见证人节点随机分组,每个组都会比如说有一个比特币地址,一段时间之后再把这些节点重新分组,这样的话,节点如果想串通起来偷走比特币是不太容易的。

    这其中门限签名的作用是,比如一个分组里有 21 个节点,每个节点拿一片私钥,如果设置为 15/21,那这 21 个节点里需要有 15 个节点签名,然后形成一个 ECDSA 的签名,再通过一笔交易把钱包解锁。

    显然这种方式的安全性更高,也更可靠(可以容忍 6 个节点不在线,或者故意不参与签名),而且更经济,因为解锁比特币只需要发一次交易。

    在聚合门限签名的过程中,需要用到 MPC,因为不能把节点的私钥放到一起去签名,需要大家分别做计算。所以是门限签名加 MPC 的一个机制,这样能够形成一个见证人链。

    问:MPC/TSS 通常被用于比特币与以太坊之间的跨链,可不可以把它方便地移植到另外两条链之间做跨链?

    刘毅:可以,但不一定很容易。它的门限签名和 MPC 是针对 ECDSA 签名的,这套机制在 ECDSA 的链之间做资产跨链是容易的。如果它的门限签名和 MPC 支持其他签名算法,这套机制则是可以扩展到其他链的。

     

    问:我们对中继跨链和见证人跨链有了一定的了解,那么哈希时间锁是怎样的一种跨链机制?

    刘毅:我给哈希时间锁这种方式起了一个新的名字,叫外部协调。

    外部协调是指在跨链的全过程中,两条链是互不知道对方的,A 链不知道 B 链上发生了什么,B 链不知道 A 链上发生了什么(注:在中继跨链和见证人跨链中,两条链是互相知道的)

    比如哈希时间锁,我们是先在 A 上面做一个交易,拿到哈希之后,再把这个哈希提交给 B,这是两个用户钱包在做协调的跨链,两条链本身是不知道对方链的。

    为什么要把哈希时间锁扩展成叫外部协调呢?因为除了哈希时间锁外,还有大量的非哈希时间锁的外部协调式跨链。

    这其中最大的一个应用就是中心化的交易所,我把比特币存进去,换成以太坊提出来,这就是一个 Web 应用做协调的跨链。

    外部协调的跨链在联盟链领域用得也非常多,联盟链厂商,例如 Hyperledger Cactus,就是专门做外部协调的中间件,它能够跨两个链。用户把一个交易提交到中间件上,中间件就知道先在 A 链上边做一个操作,再在 B 链上做一个操作,A 链和 B 链相互之间是不知情的。

    所以不管是由钱包做协调,还是由应用做协调,还是由中间件做协调,这一类跨链的特点就是两个链实际上是互不知情的,是有外部实体在做协调。

    为什么我们在公链或者加密协议领域很少提外部协调?因为 Web 应用或者中间件一定是由中心化实体运行的,不可能做到去中心化。

    但钱包做外部实体协调的跨链可以认为是 trustless 的,因为用户和钱包是合体的,我们做任何操作都必须信任钱包,也就是说它没有扩大信任集合。这就是为什么把哈希时间锁当成一种 trustless 的跨链。

    但哈希时间锁一个是功能受限,它能做的就是资产的互换,另外它也有业务上的问题。跨链的 atomic swap 在 2015 年就实现了,到现在 5 年时间过去了,没有形成什么业务。

    结束语:

    让我们以一个小小的总结结束这篇文章吧。似乎可以把现今流行的跨链方法分为三大类:

    第一类:中心化的跨链(类外部协调)。它是由一个中心化的第三方在一条链上抵押资产,在另一条链上发行资产,资产的跨链实际上是在该第三方抵押和发行资产时发生,在此过程中,两条链之间并未互通消息。

    用户在进行跨链操作时,并不是一个锁币、铸币的过程,而是更接近于把 A 链上的资产兑换为 B 链上的、由第三方发行的另一种资产。

    中心化的跨链实现起来最为简单,但它依赖于一个较强的中心化的信任;此类跨链项目包括交易所提供的跨链资产等等。

    第二类:见证人跨链。通过链下进程传递消息,在一条链上锁定或解锁资产,在另一条链上铸造或销毁资产;两条链都需要相信见证人传递的消息为真。

    见证人可以是一个或多个见证人节点,也可以是一条见证人节点组成的链,后者虽然需要相信见证人,但可以认为它是去中心化的,因为它不需要信任某个或某些中心化的第三方。

    见证人跨链实现起来可以简单,也可以复杂,取决于见证人的构成;此类跨链项目包括 RenVM、tBTC 等等。

    第三类:中继跨链。通过链下进程传递消息,在一条链上锁定或解锁资产,在另一条链上铸造或销毁资产;两条链上有对方链的轻客户端,通过轻客户端验证链下进程传递的消息是否为真。

    中继跨链是无需信任的理想跨链方式,但由于其实现难度,目前还难以见到;在 Cosmos 的 IBC 跨链 1.0 上线之后,可以在两条 Cosmos 链之间实现中继跨链。

    Cdot 也正在 ICF 基金会(Cosmos 生态基金)的资助下开发 Substrate IBC,通过它能够使 Substrate 开发的应用链和支持 IBC 的链实现中继跨链,Substrate IBC 希望成为多链世界的重要基础组件。

    展开全文
  • #资源达人分享计划#
  • 区块链跨链技术是什么?这个词一看就知道是区块链的专业术语,在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。不论对于公有链还是私有链来看,跨链技术就是实现价值互联网的关键,...

    区块链跨链技术是什么?这个词一看就知道是区块链的专业术语,在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。不论对于公有链还是私有链来看,跨链技术就是实现价值互联网的关键,它是把区块链从分散的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。

    目前主流的跨链技术包括:

    1、公证人机制(Notary schemes)2、侧链/中继(Sidechains/relays)3、哈希锁定(Hash-locking)4、分布式私钥控制(Distributed private key control)

    列表进行了比较:

    区块链跨链技术是什么?深度解析区块链跨链技术

    上表列出了各种跨链技术的基本区别,早期跨链技术包括以瑞波和BTC Relay为代表,它们更多关注的是资产转移;现有跨链技术以Polkadot和Cosmos为代表更多关注的是跨链基础设施;新出现的FUSION实现了多币种智能合约,是一种很有应用价值的公有链,在其上可以产生丰富的的跨链金融应用。

    1.公证技术:瑞波InterLedger协议

    早在2012年,瑞波实验室提出 Interledger协议旨在连接不同账本并实现它们之间的协同。Interledger协议适用于所有记账系统、能够包容所有记账系统的差异性,该协议的目标是要打造全球统一支付标准,创建统一的网络金融传输的协议。

    区块链跨链技术是什么?深度解析区块链跨链技术

    Interledger协议使两个不同的记账系统可以通过第三方“连接器”或“验证器”互相自由地传输货币。记账系统无需信任“连接器”,因为该协议采用密码算法用连接器为这两个记账系统创建资金托管,当所有参与方对交易达成共识时,便可相互交易。该协议移除了交易参与者所需的信任,连接器不会丢失或窃取资金,这意味着,这种交易无需得到法律合同的保护和过多的审核,大大降低了门槛。同时,只有参与其中的记账系统才可以跟踪交易,交易的详情可隐藏起来,“验证器”是通过加密算法来运行,因此不会直接看到交易的详情。理论上,该协议可以兼容任何在线记账系统,而银行现有的记账系统只需小小的改变就能使用该协议。从而使银行之间可以无需中央对手方或代理银行就可直接交易。

    2.侧链技术:BTC Relay

    侧链是以锚定某种原链上的代币为基础的新型区块链,正如美金锚定到黄金。侧链是连接各种链,其它区块链则可以独立存在。但是,现在侧链很难做到在其上建立跨链智能合约,所以很难实现各种金融功能,这正是现有区块链在股票、债券、衍生品等领域尚未取得进展的原因。BTC Relay是在以太坊基金会支持之下诞生并成长起来的,它被认为是区块链上的第一个侧链。BTC Relay把以太坊网络与比特币网络通过使用以太坊的智能合约连接起来,可以使用户在以太坊上验证比特币交易。它通过以太坊智能合约创建一种小型版本的比特币区块链,但智能合约需要获取比特币网络数据,这还比较难实现去中心化。BTC Relay进行了跨区块链通信的有意义的尝试,打开了不同区块链交流的通道。

    区块链跨链技术是什么?深度解析区块链跨链技术

    3.中继技术:Polkadot和COSMOS

    Polkadot

    Polkadot是由原以太坊主要核心开发者推出的公有链。它旨在解决当今两大阻止区块链技术传播和接受的难题:即时拓展性和延伸性。Polkadot计划将私有链/联盟链融入到公有链的共识网络中,同时又能保有私有链/联盟链的原有的数据隐私和许可使用的特性。它可以将多个区块链互相连接。在Polkadot看来,其它区块链都是平行链,Polkadot为通过中继链(relay-chain)技术能够将原有链上的代币转入类似多重签名控制的原链地址中,对其进行暂时锁定,在中继链上的交易结果将由这些签名人投票决定其是否生效。它还引入了钓鱼人角色对交易进行举报监督。通过Polkadot可以将比特币、以太币等都链接到Polkadot上,从而实现跨链通信。

    区块链跨链技术是什么?深度解析区块链跨链技术

    Polkadot目前还是以以太坊为主,实现其与私链的互连,并以其他公有链网络为升级目标,最终让以太坊直接与任何链进行通讯。

    COSMOS

    Cosmos是tendermint团队推出的一个支持跨链交互的异构网络。Cosmos采用的Tendermint共识算法,是一个类似实用拜占庭容错共识引擎,具有高性能、一致性等特点,而且在其严格的分叉责任制保证下,能够防止怀有恶意的参与者做出不当操作。Cosmos上的第一个空间叫做"Cosmos Hub"。Cosmos Hub中心是一种多资产权益证明加密货币网络,它通过简单的管理机制来实现网络的改动与更新,还可以通过连接其他空间来实现扩展。Cosmos 网络的中心及各个空间可以通过区块链间通信(IBC)协议进行沟通,这种协议是针对区块链网络的,类似UDP或TCP网络协议。 代币可以安全快速地从一个空间传递到另一个空间,两者之间无需体现汇兑流动性。相反,空间内部所有代币的转移都会通过Cosmos 中心,它会记录每个空间所持有的代币总量。这个中心会将每个空间与其他故障空间隔离开。因为每个人都可以将新空间连接到Cosmos中心,所以Cosmos也可以兼容未来新的区块链。

    区块链跨链技术是什么?深度解析区块链跨链技术

    这一架构解决了当今区块链领域面临的许多问题,包括应用程序互操作性、可扩展性、以及无缝更新性。比如,从 Bitcoind、Go-Ethereum、ZCash或其他区块链系统中衍生出来的空间,都可以接入Cosmos中心。这些空间允许Cosmos实现无限扩展,从而满足全球交易的需求。

    4.哈希锁定技术:Lighting network

    Lightning network闪电网络提供了一个可扩展的bitcoin微支付通道网络,它极大提升了比特币网络链外的交易处理能力。交易双方若在区块链上预先设有支付通道,就可以多次、高频、双向地实现快速确认的微支付;双方若无直接的点对点支付通道,只要网络中存在一条连通双方的、由多个支付通道构成的支付路径,闪电网络也可以利用这条支付路径实现资金在双方之间的可靠转移。 闪电网络的关键技术是HTLC哈希锁定技术,基本原理如下:Alice和Bob可以达成这样一个协议:协议将锁定Alice的0.1 BTC,在时刻T到来之前(T以未来的某个区块链高度表述),如果Bob能够向Alice出示一个适当的R(称为秘密),使得R的哈希值等于事先约定的值H(R),Bob就能获得这0.1 BTC;如果直到时刻T过去Bob仍然未能提供一个正确的R,这0.1 BTC将自动解冻并归还Alice。

    区块链跨链技术是什么?深度解析区块链跨链技术

    闪电网络并不试图解决单次支付的问题,其假设是单次支付的金额足够小,即使一方违约另一方的损失也非常小,风险可以承受。因此使用时必须注意“微支付”这个前提。

    5.分布式私钥控制技术WanChain

    WanChain万维链也支持主流公有链间的跨链交易,但首先需要完成在万维链上的注册,确保万维链能够对该链进行唯一识别。对于跨链交易,万维链利用多方计算和门限密钥共享方案。当一种未注册资产由原有链转移到万维链上时,万维链节点会使用一个基于协议的内置资产模板,根据跨链交易信息部署新的智能合约创建新的资产。当一种已注册资产由原有链转移到万维链上时,万维链节点会为用户在已有合约中发放相应等值代币,确保了原有链资产在万维链上仍然可以相互交易流通。

    区块链跨链技术是什么?深度解析区块链跨链技术

    万维链通过分布式的方式完成不同区块链账本的连接及价值交换。它采用通用的跨链协议以及记录跨链交易、链内交易的分布式账本,公有链、私有链还是联盟链,均能接入万维链,实现不同区块链账本的连接及资产的跨账本转移。但是,实现各种链映射到一条链上只是完成了第一步,如果上面的智能合约还是像现在的仅为交易触发,智能合约没办法实现分布式运算和多触发机制,那多币种智能合约能实现仍然是相当有限的功能。

    FUSION

    各种加密资产可以通过分布式私钥生成与控制技术被映射到FUSION公有链上。多种被映射的加密资产可以在其公有链上进行自由交互。实现和解除分布式控制权管理的操作称为:锁入(Lock-in)和解锁(Lock-out)。锁入是对所有通过密钥控制的数字资产实现分布式控制权管理和资产映射的过程。解锁是锁入的逆向操作,将数字资产的控制权交还给所有者。

    区块链跨链技术是什么?深度解析区块链跨链技术

    由于各种资产映射到FUISON上,其原链上的功能丧失了,其主要属性是金融价值。所以FUSION要做的是价值互联网时代的金融,即加密金融。之所以叫加密金融是因为,各种加密金融的资产都是由私钥控制的。FUSION (fusion.org)协议支持各种代币之间的价值转移的同时,在并行运算和多触发机制方面进行了极大的革新,从而实现了高效率的、面向多币种和多种触发机制的增强型智能合约。

    FUSION通过多层共识机制和记账节点分组,实现了一定的并行计算。多层机制使合约计算与计算结果的记账分步完成,记账节点分组使不同的智能合约由不同的记账节点分组完成。FUSION想要做的加密金融合约还必须有多种触发机制才能完成完整的金融功能。针对这一问题,FUSION引入了“先知”的功能。虽然这一功能已经被多次提出,但一直没有很好的实现手段,这是由于智能合约每次加载相当浪费资源,也不现实。

    FUSION创造性的使用了“Calling list”机制将各种触发条件与智能合约分开储备,记账节点只要加载触发条件的列表即可,被触发时才加载智能合约,这使各种交易触发、时间触发和事件触发(包括链外数据触发)可以写到触发列表里。价值互联网如何能够称为“网”,而不是一组平行线,就需要各种跨链技术。但跨链交易只是对跨链最粗浅的要求,多币种合约才是跨链的本质。另外,跨链使各种原链上的代币被转化为金融资产,而产生加密金融应用。但是要实现完事的金融功能,还需要对智能合约进行增强,并使用并行计算提高智能合约的效率,链切网从而使加密金融能够完成完整的金融功能,这是跨链技术的未来方向。

    展开全文
  • 跨链资料调研

    2020-07-05 18:39:28
    跨链,顾名思义,就是通过某些技术让价值跨过链与链之间的障碍,使得原本存储在特定区块链上的价值转换为另一条链上的价值,从而实现价值的流通;只有将同构或者异构的区块链网络连接起来,使资产和价值自由顺畅地在...

    跨链,顾名思义,就是通过某些技术让价值跨过链与链之间的障碍,使得原本存储在特定区块链上的价值转换为另一条链上的价值,从而实现价值的流通;只有将同构或者异构的区块链网络连接起来,使资产和价值自由顺畅地在链间流通,才能实现真正的价值区块链网络。

     

    1. 区块链之跨链技术介绍

    跨链技术是实现价值网络的关键,是区块链向外拓展和连接的桥梁。

    跨链技术的研究案例,包括侧链、M2、Poladot、Interledger等。

    侧链:BTC Relay是一种基于以太坊与比特币的一种跨区块链通信的技术,其通过使用以太坊智能合约允许用户在以太坊区块链上验证比特币的交易。

    M2:同时锚定比特币和以太坊两种区块链的技术。将网络中的所有数据整合成条目或者链,用户数据存储在条目中,而链与条目之间形成互动协作。

    Polkadot:计划将私有链和联盟链融入到公有链的共识网络中去,同时又能保有私有链和联盟链的隐私和许可的防护措施。目前以以太坊为核心,实现与私链的互连,以其他的公有链为升级目标,使得以太坊最终能直接去任何链通信。

       Interledger:实现不同账本之间的连接从而创造账本之间的写作,其适用于所有的记账系统,能够包容不同记账系统之间的差异性。

     

    2. 区块链跨链技术研究

    目前的区块链项目都是由不同团队基于不同的场景需求和设计理念,采用不同的技术架构开发出的异构区块链。如何实现区块链之间的互联互通和价值转移成为当前区块链技术的研究重点。目前实现区块链网络之间价值转移的最常用方式是中心化的交易所,基于跨链技术搭建的去中心化交易所能够降低链间交易摩擦,提高价值流动性,成为中心化交易所的有效补充手段。

    跨链不只是信息的传输,其本质是在价值守恒的前提下,价值在不同区块链之间流动的过程。无论是资产兑换还是资产转移,重要的是保证跨链交易的原子性,即交易要么完全发生,要么完全失败,不存在第三种中间状态。

    跨链技术难点及其参考解决方案:

    (1)跨链交易验证问题

    交易的确认和验证包含了两方面的问题,一是确认交易已经发生并且写入区块链账本,二是验证交易已经获得了系统中足够多区块的确认。(公证人机制:通过外部公证人(联盟)验证跨链消息的可靠性,公证人验证通过后需对跨链消息签名;“区块头+SPV”: 将公证人(联盟)提供的外部区块链系统的区块头数据保存在自己的网络中,根据SPV机制验证交易。)

    (2)跨链事务管理问题

    交易的最终确定性问题和交易的原子性问题。

    (3)锁定资产管理问题

    锁定资产的管理,目前有单一托管人模式、联盟托管模式和智能合约模式。

    (4)多链协议适配问题

    多链跨链方案可分为主动兼容型方案和被动兼容型方案。主动兼容型方案自上而下进行,主要针对已有的区块链系统,先有了上层不同的区块链应用系统,再进行底层的跨链机制研发。通常已有的区块链系统都是异构链,需要进行一一对接。被动兼容型方案自下而上进行设计,主要针对尚未开发的区块链系统,首先搭建好底层的跨链平台,然后基于跨链平台开发新的区块链系统。

    (5)跨链安全保障问题

    若是链间安全无法隔离,那么如果一条链遭受攻击,将影响整个跨链网络。

    3个方面考虑:适度隔离、检测安全事件和保障跨链交易正确性。

    链之间应该保持各自的独立性,尽量通过第三方节点或者独立模块处理跨链事务,这样当跨链交易发生问题时,不会影响链本身交易的处理;如果第三方节点或者独立模块具备检测安全事件的能力和响应能力,则在系统架构隔离的基础上更进一步,使跨链协议或系统具备类似防火墙的功能。

    主流跨链技术:

    公证人机制(中心化公证人机制运行处理效率相对较高,但是存在严重的单点故障风险,一旦公证人遭受攻击变得不可信,整个公证系统将停滞或处于较大的安全风险中。)

    侧链/中继:侧链技术就是另外启动一条区块链(侧链),将主链上的比特币资产转移到侧链上,反之也可以将侧链上的资产转回到主链上;比特币在主链和侧链上的资产双向转移称为资产的双向锚定。中继模式适用于链接两个异构或同构区块链,是实现区块链互操作性的更为直接的方式。

    哈希锁定:哈希锁定是系统之间进行原子交易的基本框架,能保障跨链交易的原子性,可拓展应用于中心化账本或去中心化账本的系统之间。

    分布式私钥控制:通过分布式节点控制各种资产的私钥,并将原链资产映射至跨链中,确保各种资产在区块链系统中实现互联互通。

    跨链技术不仅要充当连接者的角色,还需要具备适度隔离各链的功能。

    跨链网络之间的连接健壮性及安全性问题、跨链网络之间恶意行为的预警和制止问题、跨链交易中目的链的死循环问题、母链分叉问题、跨链网络激励制度的优化问题等,都是跨链技术的发展所面临的挑战。

     

    3. 一种改进的区块链跨链技术

    跨链技术的难点:一是保障跨链交易的原子性;二是技术实现难度较大;三是交易速度有待提升。

    保证跨链交易的原子性,创建无信任的环境,基于哈希锁定的哈希时间契约锁定协议(HTDLC),以加密方式进行哈希处理并具有相关时间与保障金限制的合同, 是一种能够在加密货币渠道中进行使用的智能合约。

    哈希锁:由事务的发起者生成的加密密钥的加扰版本, 其是一种阻碍, 它限制输出的开销, 直到公开显示指定的某个数据( 作为加密证据) 。

    时间锁:一种限制资金支出的功能, 使用时基来锁定和释放交易货币, 仅在特定时间和日期或块大小的特定高度完成事务。

       违约锁:一种在跨链交易过程中作为保障交易强制执行的方法,通过将10%的交易金额放入违约锁进行锁定, 一旦出现单方面发生了违约操作, 例如在交易过程中, 超出时间锁限制的情况, 则将对违约方进行资金处罚, 扣除违约锁内的金额给应约方。

     

    4. 区块链跨链技术分析

    跨链的意义主要总结为以下两点:

    (1)突破底层公链性能和功能瓶颈

    (2)实现跨链互操作

    跨链交互一般按照参与双方的底层平台技术是否为同构链进行讨论,对于同构链,双方的共识算法、区块生成与验证规则、交易广播、安全机制等逻辑都一致,所以跨链交互也相对简单;对于异构链,情况相对复杂,如比特币采用UTXO机制处理交易,而以太坊采用账户机制处理交易,使得一笔交易很难同时被比特币和以太坊处理。异构链的跨链一般需要第三方辅助实现,涉及的具体使用场景不同,也存在去中心化的跨链机制,一般讨论的跨链都是异构链的跨链。

    已有的跨链项目中,基于侧链/中继模式的项目占比最高,现有的跨链技术存在一定的缺陷:

    (1)公证人机制:优点在于能够通过简单的方式实现跨链,并支持不同结构的区块链跨链,仅要求公证人能访问双方链上的信息;缺点较明显,首先该跨链方式在一定程度上违反了区块链去中心化的特性,公证人存在修改跨链信息的可能,即存在中心化的风险。

    (2)哈希锁定:优点是通过对交换信息进行哈希运算并锁定,可以保证交换信息的真实性;缺点在于哈希锁定只能做到交换,而不能做到信息或资产的跨链转移,使用场景受到很大限制。通过在两条链上运行特定的智能合约,实现跨链交易与信息交互。

    (3)侧链:优点是这种跨链实现方式简单,侧链相对于哈希锁定技术能提供更多的实现场景;缺点是侧链的实现通常需要利用智能合约,随着交易量的增多,智能合约内部的数据存储存在膨胀问题,可能会造成交易处理速度慢,甚至出现交易堵塞的情况。

       (4)中继链:中继链本质上是公证人和侧链机制的融合和扩展。优点是提供了一个跨链交互的平台或中继区块链,各种不同的链都可以接上中继链,实现跨链交互,极大地提高了实用性;缺点是该跨链实现方式复杂,开发难度大,并且在一定程度上依赖于自身的一套跨链协议,对异构链的接入存在一定困难。

     

    5. 区块链跨链技术进展研究

    跨链的目的以及要解决的主要问题:

    (1)不同区块链之间的资产转移,确保实现非中心化的链上资产转移;

    (2)区块链上的资产留置,能够实现区块链上资产的锁定冻结,并设定某个区块链上的资产锁定条件、解锁条件,还可以与其他链的特定事件/行为进行关联;

    (3)读取和验证其他链的状态或事件,在某个区块链上部署的智能合约,触发其执行的条件可能需要依赖于其他链的信息和数据,跨链数据访问在该应用场景中具有关键作用;

    (4)提升区块链交易处理能力,跨链通信是提供更高扩展性的技术路线之一。

    跨链技术安全性可以包括以下两个类别:

    (1)跨链的技术原理与实现机制本身存在的安全性缺陷,在设计与实现上还存在信任依赖、恶意交易等安全性问题;

    (2)区块链系统的结构及特点对跨链安全性造成的影响。

    跨链的主要安全性问题:

    (1)公证人信任问题。公证人机制由于引入了第三方机构或组织,尽管有成熟的选举策略,但价值转移或信息交换主要依赖于公证人的诚实性,因此中心化程度较高。公证人多重签名通过随机选择在一定程度上增强了安全性,但并未完全消除相关依赖,仍然存在共谋风险。基于公证人机制的一些跨链项目也在寻求与其他技术的结合,如公证人机制的代表——Interledger 项目,在其最新协议中融合了哈希锁定机制,以提供更完备的安全保障;

    (2)侧链/中继的安全性问题。由于侧链/中继机制主要通过读取区块头来实现对事件或支付的验证,无法像主链全节点获知网络上所有交易的信息,因此难以实现交易的全面验证,如追溯所有历史交易的UTXO(unspent transaction output)数据、判断是否存在双重支付等。侧链/中继机制依赖于矿工的诚实性,在链失效(chain fail)或51%攻击情况下,将导致跨链系统无法正常工作;

    (3)哈希锁定的安全性问题。根据哈希锁定的设计原理,其技术安全性主要与资金锁定机制以及锁定时间超时相关。例如,基于哈希锁定的闪电网络在系统设计时就预见到如下安全风险:恶意参与者创建大量交易通道并让所有通道同时超时,导致垃圾交易信息在网络中广播并造成阻塞,从而影响正常交易;交易通道开启阶段必须保证定量的资金处于锁定状态,即用户需要采用“热钱包”保持较长时间连接到区块链网络以便能签名交易,而非“冷钱包”或离线存储等更安全的方式,因而将增加黑客盗取用户私钥的风险;交易一方如果发生数据丢失或者没有在正确的时间内广播交易,将可能存在被另一方盗取资金的风险。

    (4)孤块问题。在采用工作量证明(PoW)为共识算法的区块链网络中,不同矿工可能在相近时间内挖出了两个或多个区块,它们均符合区块链基础协议且工作量足够,因此都属于合法区块。但由于网络传输等问题,网络中的各个节点可能会以不同的顺序接受这些区块,并在最早接收的区块基础上继续计算下一个区块。最终,这些区块中只有一个存在于最长链中,其他区块则被丢弃成为孤块。因此,当跨链网络读取所接入区块链的最新区块信息后,会出现包含相关交易数据的区块先被确认有效,随后又成为孤块的情况,从而导致跨链网络实际传递了错误的区块信息(该区块内的交易和相关数据均已被原始区块链丢弃);

    (5)长距离攻击。在采用权益证明(PoS)共识算法的区块链网络中,恶意的节点可能会预先计算出大量区块再一次性放出,导致对应的原始区块链出现重组(block reorganization)。基于替换前的区块完成的跨链交易将均被撤销,跨链网络中的交易因此会被双花(double-spend),智能合约则可能出现满足触发条件并执行结束,但随后触发条件被回滚的情况。应对此类攻击较好的方法之一是设立确定性检查点;

    (6)阻塞超时问题。某些跨链技术通过设置延迟时间以确保跨链交易或交互数据得到区块链的确认,这在一定程度上可以避免孤块和长距离攻击问题。鉴于区块链目前有限的交易处理速度,垃圾交易或短期内过多的交易数量会导致区块链网络阻塞。在当前影响力最大的公有链系统比特币和以太坊中,均出现过多次交易阻塞超过数小时甚至几天未被确认的情况。跨链形成的链联网,可能会因为跨链网络一侧的区块链阻塞而导致跨链交易超时且无法及时取消,甚至存在大面积跨链交互阻塞的风险;

    (7)竞争条件攻击。在原子交换类的跨链系统中,尤其容易遭受此类攻击。举例来说,A,B双方通过跨链系统提供的智能合约,尝试交换A的1个BTC和B的10个ETH 资产。A发送1个BTC给合约规定的地址,B此时也发送同样数量的BTC到相同地址,并且试图取回自己的10个ETH。这两笔交易均有一定概率被先确认,从而导致B同时得到A的BTC并取回自己的ETH而A一无所获的情况;

    (8)日蚀攻击。区块链以及跨链网络均是以P2P网络为基础,由于P2P网络单个节点连接至其他节点数量受TCP连接限制,攻击者通过控制足够多的地址,可以屏蔽受害节点的所有输入和输出节点,从而使受害节点无法获得真实的网络信息。相较于节点全球分散、数量庞大的大型公有链区块链网络,组成跨链网络的节点数相对更少,更易遭受类似的日蚀攻击;

    (9)区块肿胀问题。通过存储跨链交易相关区块链的区块头实现数据访问是跨链技术的一种主流做法,由于区块链交易记录的不断累积,截至本文撰写时(2018年10月),比特币区块链大小已达220GB,以太坊区块链为108GB,并在继续快速增长中。尽管区块头的容量占比较低,但跨链接入的区块链越多,需要存储的容量也会相应增多,使得跨链也会面临相同的区块膨胀问题;

    (10)失效蔓延问题。跨链形成的链联网结构中,如果其中一部分区块链因共识失败或51%攻击成功等,使这些区块链被恶意势力掌控或完全无法正常运转,链联网中错综复杂的跨链通信则会因为部分死链导致连锁式的交互失败,从而使跨链失效在链联网中大面积蔓延。2018 年以来,有BTG,Verge 等多种区块链遭受了51%攻击,造成重大的区块链资产双花问题,如跨链系统连接了这类区块链网络且未采取相应的安全防护措施,可能导致与它们相联的其他区块链网络受到影响,并造成经济损失等后果;

    (11)跨链重放攻击。区块链网络发生硬分叉后,由于原始链和分叉链的交易地址、交易格式、密钥算法等均可能完全相同,其中一条链上的交易被恶意传送到另外一条或多条链重新广播,该交易也可能得到确认,即重放攻击。硬分叉是区块链中并不少见,一般出现在区块链系统升级、共识失败,或开发人员将代码进行一定程度修改后另行启动新的区块链系统。跨链重放攻击会导致跨链交易在分叉的区块链同时成立,造成用户区块链资产的损失;

       (12)升级兼容性问题。大多数区块链项目在上线后均会通过持续升级更新特性,特别是大版本升级时会影响一些关键特性,如区块大小、共识算法切换、新增功能等。当跨链接入众多区块链时,各链版本升级后对跨链协议、跨链机制的兼容,以及跨链如何应对与自适应,都是需要关注的问题。

     

    参考文献:

    高志豪.区块链之跨链技术介绍[J].金卡工程,2016(11):46-51.

    路爱同,赵阔,杨晶莹,王峰.区块链跨链技术研究[J].信息网络安全,2019(08):83-90.

    魏昂.一种改进的区块链跨链技术[J].网络空间安全,2019,10(06):40-45.

    郭朝,郭帅印,张胜利,宋令阳,王晖.区块链跨链技术分析[J].物联网学报,2020,4(02):35-48.

    李芳,李卓然,赵赫.区块链跨链技术进展研究[J].软件学报,2019,30(06):1649-1660.

    展开全文
  • 趣链科技的BitXHub跨链平台是业界较为完善的跨链开源解决方案,主要通过中继链、网关和插件机制对跨链流程中的功能、安全性和灵活性等进行了优化。本文对BitXHub的meshplus/pier-client-fabric插件源码作深入解读,...

    前言

    趣链科技的BitXHub跨链平台是业界较为完善的跨链开源解决方案,主要通过中继链、网关和插件机制对跨链流程中的功能、安全性和灵活性等进行了优化。本文对BitXHub的meshplus/pier-client-fabric插件源码作深入解读,学习其优秀的功能设计与代码结构。

    跨链交易流程
    在这里插入图片描述

    典型的跨链调用流程
    (各应用链申请/注册跨链功能、权限验证及中继链处理等细节此处省略。)

    本文所描述的跨链流程中,插件是作为一个独立的服务运行在应用链上的,所以更准确来说应该叫应用链适配器,而趣链BitXHub跨链平台的这一部分是作为一个插件,由网关启动的,但两者逻辑角色和核心功能较一致(下文统称为插件)。

    所有需要进行跨链交易/接收跨链请求的应用链需要安装插件(适配器)并部署提供的跨链合约和业务合约。具体交易流程如下:

    用户通过客户端/ SDK 调用涉及跨链交易的业务合约时,应用链将调用跨链合约并抛出跨链事件;

    应用链插件将轮询/订阅跨链合约抛出的跨链事件并发送至跨链网关;

    跨链网关将从监听到的跨链事件中提取相应方法和参数转换为目标应用链可识别的交易形式(BitXHub自主构建了统一的跨链通用传输协议IBTP)并提交到中继链,作一些处理后再发送到目标应用链的跨链网关;

    目标链的跨链网关提取跨链交易请求信息中的合约方法和参数部分,调用插件提供的构建交易接口(一般通过各应用链架构对应的SDK实现)调用相应业务合约;

    接收到插件接口提交的调用合约请求后,业务合约执行跨链交易并返回交易状态;

    插件接收交易执行状态结果,并结合自己对于超时控制、接口调用问题等错误处理,返回执行状态结果;

    跨链网关接收到插件返回的执行结果后,选择相应回调函数并传递给中继链,如成功则回调函数为commit提交,失败则为rollback回滚;

    中继链将回调函数信息传递给交易发起方跨链网关;

    交易发起方跨链网关通过插件提供的相应接口调用相应回调函数;

    插件接收到跨链网关请求后,调用跨链合约中的回调方法(一般通过个应用链架构对应的SDK实现);

    跨链合约调用业务合约,执行回调方法相应交易(如状态锁定等)。

    插件机制

    ▲ 接口设计

    插件主要负责与应用之间的交互,并以主动监听/被动接口调用的方式参与跨链交易过程。其主要提供以下接口:

    1)调用链码

    插件接收跨链网关发送的交易参数,封装为已适配应用链接受的参数格式并调用链码,如执行rollback、commit等相应回调方法。

    2)查询跨链交易

    应用链将跨链交易调用信息存在payload字段中,如合约、用户等,插件对这些信息进行解析与封装,提供相应接口供跨链网关查询。

    3)查询历史交易信息

    插件需要提供历史交易查询接口,以便于当跨链事件因网络传输等原因未收到时供跨链网关主动进行查询。

    4)查询应用链基本信息

    插件需要提供其所适配应用链相关信息的查询接口以便于跨链网关进行查询,如应用链名称、类型等。

    源码解读

    接下来将对BitXHub跨链插件(Fabric)的核心功能模块源码进行解读。

    ▲ 设计模式

    插件项目采用的是典型的“生产者-消费者”模型,很适合这样需要轮询/订阅接收数据的并发场景。这种模型用到了任意时刻只有一个goroutine对channel中的某一个数据进行访问的特性。

    1)订阅/轮询跨链事件

    插件需要构建一个生产者对象并订阅自己相应子链的跨链事件。
    在这里插入图片描述
    在这里插入图片描述

    订阅合约事件的方法是调用fabric-sdk-go的RegisterChaincodeEvent()方法,需注意的是,当不需要监听事件时,需要调用Unregister()方法来取消订阅。

    方法中的ccID是需要监听的链码ID,eventFilter是需要监听的链码时间,而这个方法会返回一个channel接收数据(当取消订阅时,channel会关闭)。

    将订阅了跨链合约的对象(即生产者)与消费者都置于无限循环中,当有跨链事件抛出时,生产者将会不断地向 channel 中放入数据,而消费者也不断地从通道中取出数据。
    在这里插入图片描述

    因为生产者和消费者都在无限循环中,生产者的goroutine不会退出,channel 持续写入数据,而当没有新事件时,消费者将会阻塞,等待生产者接收新的数据并写入channel。

    ▲ 插件初始化、运行与关闭

    看了整体的设计模式,我们从程序的主入口看看整个插件项目运行的机制。

    1)初始化

    在client程序初始化中,首先根据自定义的结构构造了消费者对象。
    在这里插入图片描述

    2)运行

    程序运行的入口,就是对跨链合约进行轮询,并启动消费者对象。
    在这里插入图片描述

    3)关闭

    关闭插件,即停止程序运行并取消订阅事件。
    在这里插入图片描述

    在consumer包中取消订阅事件。
    在这里插入图片描述

    再深一层看,取消订阅事件是调用了fabric-sdk-go的Unregister()方法,会取消该事件的订阅并关闭相应通道。
    在这里插入图片描述

    ▲ 交易验证

    在跨链交易流程中,交易的存在性和有效性验证是必不可少的一部分。BitXHub采用了验证引擎作为其跨链体系的一部分。验证流程如下:

    用户通过客户端/SDK提交验证规则;

    跨链网关调用内置合约将响应应用链验证规则注册到中继链;

    跨链交易传到中继链后,验证引擎查找响应验证规则并进行验证;

    中继链验证引擎主要通过应用链传入的验证者信息、proof字段(通过getProof() 接口获取)和payload字段进行验证:

    如没有部署验证规则,直接返回验证失败;

    先对proof字段的背书信息进行签名校验,验证是否与注册在中继链的应用链验证者信息匹配;

    对比payload字段和proof字段中的内容是否一致;

    通过验证的跨链交易将会被传入执行引擎中继续执行;

    ▲ 接口实现

    除了对事件进行订阅监听外,插件还提供了一系列查询接口供网关调用,以完成相应跨链操作。

    1)getProof()

    获取验证引擎所需要的proof信息以进行交易验证。
    在这里插入图片描述

    2)getChainID()

    获取链的ID。
    在这里插入图片描述

    3)其他接口

    其他更多接口实现细节详见meshplus/pier-client-fabric/client.go。

    ▲ 跨链合约

    跨链合约是实现插件监听的重要部分,当业务需要跨链时,将会统一调用跨链合约,并与应用链对应的跨链网关进行交互。

    跨链合约提供了一系列接口供业务合约进行实现,因此按照一定的规范撰写业务合约则能简化跨链业务的开发和维护。(跨链合约编写的规范详见:跨链网关编写文档)

    1)事件实现

    “跨链合约是怎样将跨链事件抛出给插件的呢?”

    在跨链合约Invoke()方法中,跨链合约首先通过GetFunctionAndParameters()方法获取了合约调用者(也就是业务合约)的调用方法和相应参数,然后通过对方法名进行判断,从而调用不同的合约。
    在这里插入图片描述

    我们着重来分析一下当调用了EmitInterchainEvent()时,跨链合约做了什么。(相应说明见注释)
    在这里插入图片描述
    在这里插入图片描述

    以上就是调用跨链合约时所做的,本质上其实只是在跨链合约中通过SetEvent()设置了一个触发一个事件,再在插件中通过RegisterChaincodeEvent()进行订阅监听。
    在这里插入图片描述

    SetEvent()是shim包下的一个接口,主要传入事件名称与payload参数。

    2)业务合约

    分析完了跨链合约,我们来看看业务合约是如何调用跨链合约的呢?

    以data_swapper.go数据交换合约为例。
    在这里插入图片描述

    如想在Data Swapper业务合约中发起跨链交易,传入相应参数,data_swapper.go合约程序通过switch…case…在调用get方法时首先对输入参数数组args []string的长度进行判断,当长度为1时,正常调用自身合约进行查询,而当长度为2时,首先通过fabric提供的ToChaincodeArgs()方法将参数从string转为链码参数数组格式。
    在这里插入图片描述

    然后直接在业务链码中通过InvokeChaincode()方法调用跨链合约,并传入参数和通道ID,至此就完成了一次跨链Data Swapper链码调用。

    总结
    以上是对跨链交易流程与 BitXHub 跨链插件(Fabric)源码解读,也希望在此过程中加深对跨链机制和相关平台的理解,未来能更好地参与到其开源建设中。

    免费!趣链开源平台BitXHub开放跨链测试网服务 (点击链接,即刻体验)

    作者简介
    张宇
    香港大学 计算机学院
    研究方向:区块链、跨链

    参考文献

    [1] BitXHub Document
    [2] meshplus/pier-client-fabric

    [3] 十问 BitXHub:谈谈跨链平台的架构设计

    [4] 跨链合约编写文档

    [5] Hyperledger Fabric Go SDK 事件分析

    [6] 一文读懂验证引擎的设计理念 | BitXHub

    展开全文
  • #资源达人分享计划#
  • 平等互换 非信任掉期申请 怎么跑 要求 吉特 节点 脚步: ...cd liquality-swap npm install 使用您首选的网络和节点更新config.js ( )上的配置文件。 在此处可获得示例性的mainnet配置。 为了获得最大的安全性,请...
  • 深入理解跨链技术

    2018-03-02 11:02:26
    深入理解跨链技术 是谈国鹏老师在2017 中国云计算技术大会上的ppt,与大家一起分享一下。
  • 跨链协议IBC概述

    千次阅读 2021-02-18 16:55:18
    跨链协议IBC概述 一.什么是IBC? IBC是链间通信协议的缩写(Inter-Blockchain Communication Protocol)。通过数据包交换在多个不同的区块链网络之间转移数据和状态信息。最初的用途更多是通过IBC协议实现跨链通证...
  • 不论是公有链还是联盟链,跨链技术就是实现价值互联网的关键,是区块链向外拓展和连接的桥梁。目前主流的跨链技术包括: 公证人机制(Notary schemes) 侧链/中继链(Sidechains/relays) 哈希锁定(Hash-locking)...
  • 如果世界上只有一条区块链,也许不需要跨链;然而我们拥有的,却不仅仅是一条区块链。 一、跨链的由来 2008年,第一条区块链——“比特币”悄然诞生。自从区块链这个行业兴起之后,不同时期,不同的组织机构针对...
  • 区块链跨链技术整理

    千次阅读 2019-08-06 13:54:12
    跨链技术背景 区块链属于分布式账本技术的一种,每一条链都相当于一个独立的账本,通常情况下不同账本之间是无法实现价值转移的。随着技术以及市场的发展,加密货币的种类越来越多,与此同时也涌现出来大量不同的...
  • 区块链3.0:侧链与跨链行业趋势报告(45页),资源名称:区块链3.0:侧链与跨链行业趋势报告(45页)区块链3.0:侧链与跨链行业趋势报告-OK区块链-2018.07-45页.pdf.zip...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,915
精华内容 3,566
关键字:

跨链