当前位置:首页区块链专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现

专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现

cdot创始人刘毅分享了跨链技术的原理和实现难点。

原文题目:《交叉链技术要点与难点详解:从完美的交叉链做起》a 6032访谈对象:刘毅,cdot创始人,访谈与写作:李华

关于跨链,我们首先需要知道的是,我们永远无法真正将资产从一个链转移到另一个链。以比特币为例,所有2100万比特币都将而且将只停留在某个比特币地址,不会流向其他任何地方。

专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现

什么是跨链资产转移?它是锁定一个链中的资产,并为另一个链中的资产发行等价的替代品。(注意:哈希锁不属于此模式)

比特币和以太坊之间的交叉链为例。它要求你将比特币转移到一个地址,锁定比特币的这一部分,然后在以太坊上发布比特币替代品并将其转移到以太坊上的您的地址。兑换时,您需要致电智能合约销毁替代比特币,然后在比特币网络上向您释放锁定的比特币。

不难发现,唯一的困难是信息交流。

也就是说,当你在比特币网络上锁定比特币时,只要以太坊能知道,你就可以在以太坊上铸造;当你在以太坊销毁替代品时,只要比特币网络知道,你就可以在比特币网络上向你发布硬币。

那么,信息交流的困难在哪里呢?我采访了cdot的创始人刘毅。刘毅认为,多链是一个比较重要的系统,所以他和他的团队都致力于链条之间的联系。Cdot已经为以太坊和flow建立了一个交叉连接的桥梁,还在coos和Polkadot、coos和以太坊之间进行跨链研发。

为什么很难实现完美的交叉链

Q: 先问一个大问题。你如何看待交叉链的重要性?

刘毅:公链技术发展的主要问题是如何突破性能和成本的瓶颈,同时又不牺牲链上应用的可组合性。目前有三种解决方案:碎片化、二层和多链(交叉链)。Polkadot、coos、AVA和许多其他团队,包括cdot,都已经完成了多链方向。

也就是说,如果您可以使用substract/coos-SDK为每个加密协议开发一个专用链,并通过跨链,使该加密协议与其他加密协议互操作,就可以解决公链的性能和成本问题。

Q: 回到今天的技术主题,在跨越链时,两个链之间的消息交换有哪些困难?

刘毅:我们可以从vitalik在2016年写的一篇叫做“链互操作性”的文章开始。他将跨链技术分为三类:散列时间锁、见证和中继。我想基本上可以用。

见证和接力都是链外过程。当他们看到一条链上的消息时,就会告诉它。

他们之间有什么区别?当我在目标链上收到消息时,如果是一个正在跨越链的见证人,我会验证消息是否来自该证人。如果我相信证人的话,我就相信这个消息,并执行要执行的操作。

如果是中继交叉链,我不会验证消息来自哪个中继,而是验证消息是否来自源链。如果是这样,我将执行要执行的操作。

换言之,证人可以被视为需要信任的接力,接力可以被视为不需要信任的证人。这就是两者的核心区别。接力显然比证人更符合不信任原则。

接力不能作恶。如果中继提交的信息不是来自源链,则目标链会在验证后进行识别。但证人可以作恶。它可以创建消息并将其发送到目标链。在目标链验证它来自它所相信的证人之后,它将执行此操作。

如此看来,似乎每个人都应该用接力来制造跨链产品,但为什么会有见证的方法呢?因为对继电器交叉链路的要求比较高。

它的要求是什么?假设我们是两条锁链。你身上发生了一件事,这件事是由一个接力传送给我的。我想确认信息来自你的公链,对吗?

如何验证?我的锁链需要你链条的轻客户。大致可以理解为一种类似比特币SPV的机制,但它发生在链条上,而不是手机钱包里,也就是说,你这里所有的积木我都有。

这时,当有消息传来时,中继不仅要给我消息,还要给我消息的证明。这个证明是一个Merkle证明,它告诉我这个事件或事务发生在你的链中的哪个块(高度)。

在我得到Merkle证明之后,因为我有您拥有的所有块头,所以我可以取出具有相应高度的块,并使用Merkle proof来验证事务或事件是否存在。如果真的存在被证明,我确信这个信息确实是从你的锁链发出的。

然后,当在我的链中生成一个事件或事务时,中继也会将其发送给您。你也有我所有的块头,你可以验证消息是否来自我。这是一个完美的交叉链,对吧?

但你为什么不认识到完美的接力交叉链?因为有些公链不能实现其他公链的轻客户。例如,比特币不能实现任何一个链的轻客户端。

以太坊能否实现其他连锁的轻客户端?这取决于实施的难度。以太坊需要使用智能合约来实现轻客户端,但智能合约受到气体的限制,因此轻客户端验证的计算量应该能够适应气体限制。

Q: 你能想到,如果一条链不具备实现另一条链的轻客户端的条件,它就永远无法通过中继的方式与另一条链交叉?

刘毅:它只能作为一个证人来跨越链条,但它可以是混合的。在一个方向上,使用见证,在另一个方向上,使用继电器。

例如,如果我开发一个链,比特币不能实现我的轻客户端,但我可以实现它。然后比特币可以在我的方向使用中继,我只能在我去比特币方向时使用见证。

专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现1

Q: 以太坊怎么样?例如,需要实现以太坊与宇宙的中继交叉链。

刘毅:以太坊是一个复杂的问题。它有条件实施一些轻客户,但如上所述,主要限制是气体限制。

例如,对于tendermint(Coos采用的共识协议)链,跨链中继需要验证其块头。它的块头是所有验证器的签名。这些签名使用BLS签名算法。要验证块头,需要验证这些BLS签名。但是,以太坊上没有预编译的BLS签名。

智能合约可以直接调用预编译的加密算法,例如调用ecrecover方法。只需要3000个气体就可以验证ECDSA的特征,这仍然相对较低。然而,为了在不进行预编译的情况下验证BLS签名,必须实现整个签名验证算法的完整性,这是底层不支持的。这太贵了。

为了验证BLS的签名,**的似乎是20万以上的汽油。如果tendermint上有100个验证者,则每个区块中可能有100个签名。如果100个BLS签名被验证,气体肯定会超过,这是不可能实现的。

然而,在vitalik今年编写的路线图中,以太坊1号。X将添加一个BLS签名预编译契约,这相当于在客户端的底部实现BLS验证。然后,函数调用可以验证签名。

假设ECDSA为3000个gas,则100个BLS签名的验证为300000个gas,可以在智能合约中实现。

通过BLS预编译,理论上可以在以太坊上实现tendermint的lightclient,从而实现以太坊和coos的双向中继跨越。因此,如果比特币与宇宙中继(coos relay)交叉,比特币肯定行不通。以太坊现在不起作用,将来可能有用。

Q: 即使链条是按照coos IBC标准开发的,交叉链条是不是很自然?

刘毅:是的,即使IBC在两个链中都实现了,也应该实现另一个链的轻客户端来中继交叉链。

如何在链之间传输跨链消息

Q: 轻客户机用于验证跨链消息,但跨链消息本身如何在两个链之间传递?

刘毅:跨链桥很生动。它有两个桥墩和一座桥。两个码头是两套智能合约(有些链可以称为模块),一套运行在A链,另一套运行在B链上,中间是一个桥,它是链下的一个流程,负责监控双方两套智能合约的事件。

Q: 例如,我在以太坊的智能合约中锁定了一个加密的cat。脱机进程很容易监视此事件。但它如何告诉流上的智能合约我锁了一只猫?

刘毅:链下流程就是把一个交易发送到flow,说以太坊里有一只猫被锁着,一只猫就会投到你这边。它是一个程序,通过RPC(远程过程调用)接口,一端连接到以太网节点,另一端连接到流节点。

Q: 你能完整地描述一个特定的跨链过程吗?

刘毅:假设有一个ERC20代币,比如uni,在以太坊上发行。我们要穿过它到月台。

例如,用户需要在uni合同链上进行的交易数量称为“保险库”,这意味着用户需要将一个合同转移到另一个合同。

第二个事务是将lock方法发送到vault契约。要锁定的货币(在本例中为UNI)和数量(例如500)作为参数传入,然后提供平台地址。据说锁定500uni的目的是在这个地址上铸造一个500uni的替代品。

此时,保险库契约将调用uni契约来转移uni。由于保管库合同已被批准,因此可以将uni从用户地址转移到保管库合同地址,即锁定uni。

锁定后,保险存储契约将发送一个事件,例如assetlock事件。脱机进程通过RPC接口连接到以太坊节点,它将订阅保险存储契约的assetlock事件。一旦此事件出现在日志中,脱机进程将获取该事件。

此事件包含相关参数,如锁定哪个币种,锁定多少,谁是另一条链的受益人;离线流程等待100个区块的确认,这是不可逆的;然后,离线流程还有一个RPC接口连接到平台,平台向平台提交一笔交易,假设交易名为mint。

平台上也会有一个合同,比如控制合同,这是跨链桥的另一个桥墩;控制合同将提前创建一个类似于ERC20的合同,如euni。象征着合同的供应权是合同的控制权。

控制合约收到mint请求并验证请求确实来自证人后,会调用euni契约的mint方法,告诉它为某个地址铸造500个euni代币;euni被铸造后,将被放置在用户之前提供的地址上,用户可以使用。

此时,假设用户将EUNI传输给另一个用户,新用户希望UNI位于以太网站点上。尤尼先要做一件事,就是先把控权解除,然后再叫他把控权取消。

当脱机进程监视控制契约的assetburn事件时,它将向以太坊保险库契约发送一个事务请求,并调用发布接口。以太坊验证交易来自见证人之后,它将把uni从保险库合同地址转移到指定的用户地址,用户将获得原始uni。这是一个完整的跨链过程。

Q: 能否放弃“链外过程”的作用,实现跨链?例如,一条链直接监视另一条链,然后完成相关的跨链操作?

刘毅:做不到,因为链条不能主动启动操作,链条的逻辑是被动的。

唯一的例外是substrate(Polkadot development framework),它有一个链外worker机制,可以用来用一个off-chain worker启动请求。其他的,比如以太坊智能合约,不能主动发起任何事情。只能叫它。

Q: 你能理解吗,无论是中继交叉链还是证人交叉链,传递信息都需要链下的过程。不同的是,中继交叉链通过轻客户端验证消息,而证人跨链信任证人提供的消息?

刘毅:基本上,这种理解是没有问题的。中继跨链依赖于链中进程的可用性,而不是其忠诚度。

怎么能相信证人

Q: 似乎通过脱机过程传递消息并不困难。困难的是验证或信任消息?

刘毅:是的,因为这两个链都有RPC接口,都有sdk(软件开发包)。它们是可以访问的,所以并不困难。

此外,无需为特定目的的跨链定义可扩展协议,只要它足够:定义事件是什么、提取什么参数以及向谁提交什么参数。

Q: 验证消息是一个技术问题,可以验证也可以不验证。但如果你相信信息,似乎有不同的模式。体现在证人交叉链上,可以有不同的实现方法。需要信任的消息可以来自中心化的证人还是去中心化的证人?

刘毅:其实,这是一个安全问题。安全是一个没有限制的东西,没有**的。安全通常是一个渐进的过程。

例如,在开始时,如果没有资产,您可以使用单个见证,甚至是kms(密钥管理服务);当您有资产时,您需要kms;如果您有更多的资产,则需要多个见证人。为了省油,您需要进行离线签名聚合;如果您有更多资产,则需要使用MPC(安全多方计算)。

然后,对于多个资产,需要随机调度参与MPC的多方,如renvm。这与制作公链条的难度和实践相似,但也实现了去中心化见证。

Q: 你能更具体地描述一下吗?

刘毅:比如我们可以开发一个见证节点来连接双方。

然而,这个证人的安全性和可用性相对较低。如果黑客突破证人的服务器并获得证人的私钥,他就可以窃取所有锁定在以太坊中的ETH或ERC20。

另一个风险是可用性。如果见证服务器宕机,一个链中的资产将无法在另一个链中强制转换,因为消息无法传输。

如果跨链资产不多,可接受一名证人。也有一些方法可以解决单证人的安全和停机问题。但如果你想进一步提高,该怎么办?里面可以有三个证人。

假设一边是比特币,另一边是以太坊。比特币网络上有2/3的多重签名钱包。用户发送交易锁定比特币。在三个目击者看到后,他们向以太坊发送消息。以太坊确认消息来自目击者后,将在以太坊上铸造一个代币。

当兑换时,用户在以太坊发送交易来兑换比特币。三个证人看到后,他们到比特币网络发送多个签名:一个证人发送一个交易并说要释放,另一个证人也发送一个交易来释放。当三分之二的钱包看到足够的签名时,他们就会向用户发布比特币。

三分之二的人比一个证人要好,但只要三分之二的私钥持有者串通,他们就可以拿走所有比特币,因此去中心化的程度是不够的。

更好的方案是MPC/TSS(securemultiparty computing/threshold signature)支持的见证链。刚才,证人需要被信任。但是,如果我们把证人变成一个链条,他们也能做到值得信赖吗?

信任集已展开。除了信任源链和目标链外,中间还有一个见证人。但是,这个证人不是中心化的。它是一个链条,有自己的经济安全。只要验证人设置的证人链不能作恶,整个过程仍然是不可信的。

见证链可以随机分组多个见证节点。例如,每个组都有一个比特币地址。一段时间后,这些节点将被重新分组。如此一来,节点串通窃取比特币并不容易。

门限签名的作用是:例如,一个组中有21个节点,每个节点都有一个私钥。如果设置为15/21,则21个节点中的15个节点需要签名,然后形成ECDSA签名,然后通过交易解锁钱包。

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

MPC的阈值不能用于聚合过程。因此它是一种门限签名加MPC机制,可以形成一个见证链。

Q: MPC/TSS通常用于比特币和以太坊之间的交叉链。它能很容易地移植到另外两条链上进行交叉链吗?

刘毅:是的,但不一定容易。其门限签名和MPC用于ECDSA签名。很容易使资产在ECDSA链之间交叉。如果其门限签名和MPC支持其他签名算法,则该机制可以扩展到其他链。

专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现2

Q: 我们对接力交叉链和证人交叉链有一定的了解。哈希时间锁是一种什么样的交叉链机制?

刘毅:我给散列时间锁起了一个新名字,叫做外部协调。

外部协调是指在交叉链的整个过程中,两条链彼此不知道,a链不知道B链上发生了什么,B链也不知道a链上发生了什么(注:在中继交叉链和见证交叉链中,两条链相互了解)。

比如哈希时间锁,我们先在a上做一个交易,得到哈希值,然后将哈希值提交给B,这是两个用户钱包之间的跨链协调。这两条链条本身并不知道彼此的链条。

为什么要将哈希时间锁扩展到外部协调?因为除了哈希时间锁之外,还有大量的外部协同跨链非哈希时间锁。

**的应用之一是中心化交换。我把比特币放进去,由以太坊提出。这是一个用于协调交叉链的web应用程序。

跨链外部协调在联盟链领域也得到了广泛的应用。联盟链Maker,如hyperledger cactus,是专门从事外部协调的中间件,可以跨越两个链。当用户向中间件提交事务时,中间件知道先在a链上做操作,然后在B链上做操作,a链和B链互不认识。

因此,无论是钱包、应用还是中间件进行协调,这种跨链的特点是两条链实际上互不知情,存在外部实体的协调。

为什么我们很少提及公链或加密协议领域的外部协调?因为web应用程序或中间件必须由中心化的实体运行,所以不可能实现去中心化。

但是,外部实体的跨链协调可以看作是不可信的,因为用户和钱包是一体的,所以在任何操作中都必须信任钱包,也就是说,它不扩展信任集。这就是为什么哈希时间锁被视为一种信任交叉链。

但是,哈希时间锁的功能有限。它能做的就是交换资产。此外,它也有业务问题。2015年实施原子链互换。五年后,还没有形成任何业务。

结论

让我们总结一下。目前流行的跨链方法可以分为三类:

第一类:中心化跨链(外部协调)。这是一个中心化的第三方抵押一个链上的资产,并在另一个链上发行资产。资产的交叉链实际上是在第三方抵押和发行资产时发生的。在这个过程中,两个链之间没有通信。

当用户进行跨链操作时,它不是一个锁定和铸币的过程,而是更接近于将a链上的资产转换为B链上第三方发行的另一种资产。

中心化式跨链项目最容易实现,但依赖于强大的中心化信任;此类跨链项目包括交易所提供的跨链资产等。

第二类:证人交叉链。通过链外过程,资产在一个链中被锁定或解锁,而在另一个链中资产被铸造或销毁;两个链都需要相信证人所传递的信息是真实的。

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

证人跨链实施可以是简单的,也可以是复杂的,这取决于证人的组成;这种跨链项目包括renvm、TBTC等。

第三类:接力交叉链。通过链外流程传递消息,在一条链上锁定或解锁资产,在另一条链上投放或销毁资产;对于两条链上链相反的两个轻客户端,通过轻客户端验证链下流程传递的消息是否真实。

中继交叉链是一种理想的无信任交叉链方法,但目前很难实现。coos-IBC-cross-chain 1.0上线后,可以在两个coos链之间实现中继交叉链。

Cdot还在ICF基金会(宇宙生态基金)的支持下开发基质IBC。通过它,可以实现基板开发的应用链和支持IBC的链之间的中继和交叉。基板IBC有望成为多链世界的重要基础组成部分。

温馨提示:

文章标题:专访cdot刘毅:接力跨链是一种没有信任的理想的跨链方式,但很难实现

文章链接:https://www.btchangqing.cn/117060.html

更新时间:2020年10月09日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链行情

资料图:德孚资产市值昨日暴跌25%,代币日交易量下降30%

2020-10-9 15:43:42

区块链行情

政府会停止IPFs的储存吗?内容风险或由矿工承担

2020-10-9 15:51:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索