问:可不可以这么理解,不管是中继跨链还是见证人跨链,都需要链下进程来传递消息,所不同的是,中继跨链通过轻客户端验证消息,见证人跨链信任见证人提供的消息? 刘毅:这样理解基本上没有问题。中继跨链依赖链下进程的可用性,但不依赖它的忠诚。 见证人如何更值得信任问:似乎通过链下进程传递消息不难,难的是验证消息或者信任消息? 刘毅:对,因为两条链都有 RPC 接口,而且都有 SDK (软件开发工具包),是能够访问的,所以不难。 而且特定目的的跨链,不需要定义一个可扩展的协议,只要自己够用就好:定义是什么事件,抽取什么参数,提交什么参数给谁,就行了。 问:验证消息是技术问题,要么能验证要么不能验证,但信任消息的话,似乎就有不同的模型,反映在见证人跨链上就是它可以有不同的实现方式 ,需要信任的消息可以来自中心化的见证人,也可以来自去中心化的见证人? 刘毅:其实就是一个安全性问题。而安全是一个没有极限的东西,也没有绝对,安全通常是一个渐进的过程。 比如一开始,没什么资产时,可以用单见证人,连 KMS (密钥管理服务)都不用;有了资产后就要用 KMS;资产多了,需要多个见证人,为了省 gas,就要做链下签名聚合;资产更多了,就要用到 MPC (安全多方计算)。 然后再多资产,就要对参与 MPC 的多方进行随机分组调度,例如 RenVM。这样就跟做一条公链的难度和实践都差不多,但它也就实现了去中心化的见证人。 问:可以更具体地描述一下吗? 刘毅:比如一边是以太坊,一边是 Flow,我们可以开发一个见证人的节点,把两边连起来。 但这一个见证人的安全性和可用性是比较低的,如果黑客攻破了见证人的服务器,拿到见证人的私钥,就能够把所有锁在以太坊上面的 ETH 或者 ERC20 偷走。 还有一个风险就是可用性,如果见证人服务器宕机了,那在一条链上锁定资产后,另一条链上是铸造不出来的,因为消息传不过去。 如果承载的跨链资产不多,一个见证人是可以接受的,也有一些方法解决单见证人的安全问题和宕机问题。但如果想进一步提高,怎么做?可以包含 3 个见证人。 假设一边是比特币,一边是以太坊,比特币网络上有一个 2/3 的多签钱包,用户发交易把比特币锁进去,3 个见证人看到后,就给以太坊发消息,以太坊确认消息来自于见证人后,就在以太坊上铸造代币。 兑回的时候,用户在以太坊发交易要求赎回比特币,3 个见证人看到后,就去比特币网络发多签:一个见证人发一笔交易,说要释放,另一个见证人也发一笔交易,说要释放,2/3 钱包看到够两个签名了,就释放比特币给用户。 (责任编辑:admin1) |