IST:DFINITY核心工程师谈IC与BTC的集成_A-List Royale

编者按:本文由Dfinity社区“聊聊IC与BTC集成的那些事”主题圆桌内容整理,由HashKeyCapital投资总监肖晓对话DFINITY核心工程师Paul,从IC集成比特币的条件、技术实现路径、面临的挑战、未来可集成的其它协议、应用的发展等方面做出深入探讨,值得一看。星球日报经授权发布。\n点击观看视频肖晓:大家好,我是HashKeyCapital投资总监肖晓,也是今天AMA的主持人,我们接下来正式进入正题。相信大家都知道比特币是Crypto领域共识最强的一个资产,但是到今天为止它的主要的用途还是在价值的存储和交换。而DFINITY社区在去年9月份就通过ICP和比特币网络直接集成的提案,也是计划通过智能合约给比特币带来更多的应用场景,为它赋能,同时也为IC生态带来一些优质资产。这个提案当时也是超过了96%的人支持它通过,也足以见得社区对这个技术的期待。在这个提案通过之后近期又出现了一个非常重要的里程碑,就是今年6月10日,当天DFINITY基金会宣布完成了比特币和直接集成第一阶段,也就是我们之前聊的比较多的阈值ECDSA签名,可以说是一个比较重大的进展,它也是解决IC集成比特币一个重要的先决条件。相信大家对技术如何实现?如何运用?包括未来如何去发展都充满了好奇。我们今天非常荣幸请到了DFINITY核心技术工程师Paul刘老师为大家答疑解惑,接下来的时间先交给Paul。PaulLiu:谢谢肖总,很高兴有机会能够和大家来一起分享,我是DFINITY的工程师,我叫Paul,大概四年前加入DFINITY,算是比较早期的员工了。我们主网也在去年上线,上线以来也经过了很多新的发展,最重要一个新发展就是跟比特币集成的计划。今天大概跟大家介绍一下我们关于InternetComputer集成比特币的技术的一些概述,不会讲到特别深入的技术细节,但是前前后后的具体情况希望能给大家讲清楚一点。我们先来回顾一下在比特币链上交易的过程,假如有两个同学,一个Alice,一个Bob,Alice要给Bob发送一些Satoshi,她要发送40万个。这边图示我们用钥匙来代表公钥,带虚线是私钥。Alice跟Bob都有各自的公钥和私钥,她创建比特币的交易需要用私钥来签名才能够发起一个交易到比特币的链上。这个具体的过程我们来看一下,她要创建一个交易,她需要有一定的比特币在手上,她的比特币是之前的交易产生的输出,我们通常叫做UTXO。每一笔交易它的来源、它的输入都必须是前面的某一笔或者多笔交易的输出。比如这里Alice从之前的两笔交易里面,一个拿到10万,一个拿到30万,然后组成40万的输出传给Bob,她前面交易必须是没有被使用过的她才能使用,这是比特币特有的UTXO的模型。之前的两笔交易用于创建新交易,指定这个新交易给Bob,可以看到是绿色,这个绿色是指发送给Bob的公钥所对应的地址。在这之后她要发起这个交易交给了比特币网络,比特币网络里面矿工也好,叫节点也好,他们就会把收到用户的交易放在一个区块里面,每个区块大概有1500来个交易,这样的区块就组成了比特币的区块链,当然这当中还有很多的细节这里忽略掉。我们所关注的就是整个创建交易的过程,我们可以看到它必须有自己的私钥才能为自己的交易进行签名。而且必须知道她之前的UTXO才能够引用,并签发一个新的交易。我们看完比特币的过程我们来简单介绍一下InternetComputer,可能有的听众不是特别熟悉。我们把它叫做互联网计算机。它是运行在一个协议上面,我们叫做InternetComputerProtocol,它提供的一个公共区块链的服务平台,最底层是数据中心,数据中心里面的节点是由社区节点运营商独立运营的,比如你是一个节点运营商你可能会跟某一个数据中心有协议,在他那边跑一个节点。节点可以加入ICP网络,加入之后的所有的节点组成了这个底层的网络,之上我们是跑Internet协议,就是IP,在IP之上我们跑ICP协议。节点分成了多个子网,在每个子网内部跑共识协议,但是所有的子网共同组成了合在一起的网络。在这个网络上面我们把它抽象看做是这个网络提供了的计算平台,或者是一个虚拟机,虚拟机上可以跑智能合约这样的程序。它主要的特点就是智能合约可以直提供网络HTTP服务,查询的响应是毫秒级别的,如果是发起一个可以改变状态的交易的话,那可能需要2-3秒的时间,但是2-3秒的时间在当前的区块链的时间里面也是最靠前的。因为主要目的是为了让智能合约可以跑网站,所以我们是不能够向用户收费,用户无须付费就能访问到智能合约,比如直接用浏览器访问一个网站,是不需要为这个付费的,这叫反向gas模型。子网之间的通信,和子网与外部用户的通信,用的是一个类似于RTC或者是远程调用这样一个模型。可以把HTTP也看作是调用。我们为什么说它计算成本是比较低廉而且是稳定的,不是说刚发布用的人少,所以计算成本低廉。其实是因为里面用到最先进分片技术,我们可以通过增加新的子网来分担整个网络的负载,所以它实际上是没有理论上限的,是可以无限扩容的,只要硬件允许。之所以能做到这点是因为它的每个子网相互之间验证对方的计算结果是有非常先进密码学的知识在里面,我们不需要子网历史交易记录就可以验证子网当前的计算是否是可信的。这也是我们为什么可以直接把网站的服务写在智能合约里面,因为我们直接可以在手机或者浏览器里面验证智能合约运行结果是正确的,因为它只需要通过一个公钥就可以。IC在应用层可能最突出的一个特点就是其中有一个自主投票的治理系统,可以通过智能合约来投票,并且可以自动实施投票的决策。DAO这个模式发展到今天,我相信通过手动投票,通过一个一个人找他多签这个模式是要被淘汰了,需要用智能合约的方式实现自动化。IC的开发环境刚才提到上面跑的可以看做是一个虚拟机,所以是开发者直接上传智能合约代码就可以部署到IC上,就跟在云服务上部署代码是相似的。每一个部署之后的代码是成为一个独立的容器,我们叫它Canister,在IC上面我们每个容器不光有智能合约的代码,还包括它的状态,所有它能修改到的状态都是存在容器内部。如果你要访问其他容器的状态你必须通过其他容器的接口才能访问到它,访问这样这个接口就相当于是一个远程的调用。但是如果对方不开放这个接口或者说开放的接口不提供你所需要的数据的话,那你是访问不到的。所以这是一个比较主要的区别,可能跟现在其他的区块链区别比较大的一点,尤其是开发者需要注意一下。但是跟传统的互联网的Docker或者MicroService开发模型是比较接近的,可能传统的开发者在IC上面开发会相对而言比较熟悉一点。所谓智能合约跟比特币的集成到底是怎么回事呢?我们之前也看到比特币的交易,比特币发起一个交易要签名,这边我们可以看到假如说是用Alice跟Bob,他如果直接给容器发比特币,如果这个容器也可以直接接收比特币的话,容器之间也可以像用户一样来回签发交易,实际上就可以实现一个智能合约对比特币资产的一个管理,换句话说我们可以为比特币提供一个智能合约的平台。所以它里面比较重要的一个假设就是说假如每一个IC上面的Canister,IC上面的智能合约,如果每一个IC上面的Canister都能得到一个比特币地址,也就意味着它可以通过程序逻辑来管理比特币的资产。这是一个设计的初衷,我们必须要让每一个Canister它都能够有自己的比特币地址,它有自己的地址意味着它需要能够签发自己的交易。我们来看一下具体实现的过程,集成首先是在底层的协议层,协议层做了一个跟比特币网络的接入,就是跑的比特币的轻节点,可以得知比特币网络上交易的状况和它最新的区块,但是它并不参与比特币挖矿的行为,它只是用来收发用户交易。但是这些区块的信息可以被IC上面的每一个节点得到,它这个节点就可以把这个信息向上传递给虚拟机里面就是用户跑的Canister。所以Canister可以得到他所拥有的这个BTC地址所有的UTXO。假如用户要转移资产到你Canister里面来,也就是我给你的Canister发比特币,那这样通过监听比特币的网络Canister可以收到这个信息,因为最新的区块可以知道,可以得知到是有人往它这个地址已经发了比特币了,它可以得知这个信息。它怎么发呢?他签发需要把自己的交易能做一个签名,他做的签名还要能发送到比特币网络上,所以不光有一个输入到Canister的过程,还有一个从Canister输出,这个输出可以流通到比特币的网络上。所以这是由底层节点提供的服务。相对于一个IC本来的节点而言,它多提供了一点服务就是跟比特币网络直接交换信息的一个过程。刚才讲了其中最主要因为我们可以做到让每一个Canister合约都有自己的比特币地址来掌控比特币的资产,它的前提就是我们需要实现一个叫ThresholdECDSA门限签名的技术,这个技术也正在开发中,我们已经取得了比较好的进展。它这个技术让我们可以给每一个Canister分配一个它自己的BTC地址,所谓自己一个地址就是它有一个自己的公钥。它可以进行签名,但是这个签名并不是他自己保存自己的私钥,而是说他这个签名是通过IC网络上面子网来进行签名的,子网可以代替Canister去给Canister所要签署的合约来做签名。这个稍后会详细一点讲。如果每个Canister有自己的比特币地址了,它又可以获取链上相关的UTXO的交易,那它就可以自己通过程序来做决定了,它是否需要发起新的交易还是说我希望得到用户更多的信息,这样它不但可以跟比特币网络交互,而且还可以同时跟用户直接通过浏览器进行交互。它还可以发送新的交易发送到网络进行交易,这整个循环如果能跑下来,就相当于在IC上面跑的用户代码已经可以为比特币的网络提供一个智能合约的服务。所以这三点是最主要的我们所说的IC跟BTC的集成,我们能做到这三点就可以。开发者来使用这个功能,肯定还是要通过一些系统接口,这个接口比较简单,直接可以拿到自己的balance或者发送比特币,还有一个提供签名的接口。最主要的是提供签名,这个技术是怎么实现的呢?首先IC主要的核心技术就是DKG,也就是分布式的密钥生成协议。DKG它主要的过程是我们在子网节点里面每一个节点它自己可以先各自生成一个私钥的份额,理论上不算一个完整的私钥,虽然可以用于签名。每个节点它都保留自己的秘密,这个私钥份额只是属于这个节点,它不会告诉任何其他人知道。经过DKG协议之后,每个参与的节点他都能够生成自己的私钥份额,互相不知道对方的,但是自己知道自己的。这个协议生成另外一个结果这个子网会有一个公钥,这个公钥是一个唯一的,每个节点拥有自己的私钥份额之后可以通过私钥份额来进行独立的签名,如果这些节点对同样消息进行签名,并且把这个签名广播出去,知道了其他节点的签名之后可以把这些签名合在一起成为一个最终的签名,这个最终的签名是可以用子网的公钥来验证。这也就是最后完成的签名可以用固定的一个公钥来验证,但是没有任何一个单独的一方它知道与这个公钥所对应的私钥。形象来说就是分配给大家所有的节点每个人有一份,然后大家都签,签完了之后最后能合成一个最终签名的话,那么公钥可以验证,但是相对应的私钥的秘密没有任何一方他有,必须要多数节点参与进来才能合成所有的签名。通常需要三分之二以上的节点能够完成这个签名,那么最终获得了对某个交易的签名是可以用公钥来验证。IC最主要的技术是这个,但是我们之前做的签名是基于BLS密码学签名的技术来做的,现在我们需要完成对ECDSA做一个类似的技术,它也支持ECDSA的签名,相对BLS来说要复杂很多,而且在之前也有不少论文对密码学前沿的研究也是讨论比较多,但是一直没有找到一个特别符合安全性的办法,它总是有这样或那样的一些妥协。所以我们在这方面是取得了最新的突破,设计了整套系统现在还算是比较满意。当然也需要经过密码学的专家来审核,经过多方面的验证才能够最终确定它的安全性。但它具体的做法跟整个的DKG整个流程在抽象的理解层面上是一致的,它一开始通过跑一个DKG的协议,子网的节点得到自己的私钥,通过自己的私钥签名,签名之后把它合在一起,大概就是这样。合在一起的签名它这个签名跟普通的ECDSA签名是没有办法区分,因为它的公钥是普通的ECDSA公钥,所以比特币的网络用的是ECDSA的签名,它后来引入了Schnorr签名,Schnorr签名要做DKG的话会比普通的ECDSA简单一些。我们之所以选择支持普通的ECDSA,也是应用范围不只局限于比特币,可以有一些其它的方向。刚刚讲子网是有公钥。在比特币ECDSA签名里面,有一个BIP32的标准,通过这个标准可以从一对密钥生成更多的密钥对。用这些子钥来签名,签名它有自己的地址,收到的交易对方也不知道你的母钥是什么。用的这套系统是通过BIP32这个标准,这个标准同样在我们门限签名里面也适用。所以每一个Canister它的公钥就是通过它的CanisterID,这个是被创建的时候就被分配的独一无二的ID,这个ID它在IC网络上也是经过共识是做不了假的。所以通过这个ID来用BIP32这个标准来配合子网的公钥生成每个Canister的公钥,这个是完全可行的。甚至一个Canister假如你在里面想要签发交易,使用更多的不同的公钥来做不同的事情,这也是可以的,因为每个公钥对应一个地址,所以基本上有任意多的公钥可以提供给一个Canister使用。这样每个Canister进行签名的时候它是把自己的签名需求发送到了子网,然后子网通过BIP32每个节点用自己的私钥签名最终合成最终签名。所以IC集成BTC不是一个桥接。桥接是为了方便资产跨链,通常说在其中一个链上通过一个智能合约把它锁住,也就是把资产发到这个智能合约,然后在对应的另外一个链上也是同一个开发者开发另外一套智能合约,在那边给你签发新的资产,这样可以实现一个资产的互换。这样做主要的问题是大家需要信任提供桥的开发者,但是在IC上面因为这个签名是不需要信任单独的一方,也不需要信任单独的开发者,它是可以直接通过发布我的智能合约源代码在这里,我的智能合约跑到IC这个平台上来,如果你信任IC子网里面是一个去中心化的平台,信任它的运行的结果是正确的话,如果有这样一层信任在里面的话,实际上是一个去中心化的一个信任,这样能做的事情会更多一些。尤其通过桥接你需要质押你的资产,不是所有的应用都需要桥接的,比如你就是想定期给某个账号发一些比特币,那完全用不到桥接或者质押,直接能够签名就可以发送了。大概总结一下我们技术特点也就是每个智能合约都有自己的独立的BTC的地址,核心技术就是ThresholdECDSA的门限签名。需要重点指出比特币的交易还是走的比特币的网络,我们所有关于比特币的交易最终都是发送到比特币网络上面经过比特币网络确认,这样才能够确认UTXO交易是被正确记录在比特币链上的。合约它是可以通过API查询UTXO、签发和发送交易,它的安全性来自于IC子网的安全性,通过IC区块链跟比特币区块链的结合,两者安全性一起来保障智能合约的安全性。大概我简单的介绍就先到这里,看大家有什么问题。肖晓:好的,非常感谢Paul哥的分享,我们接下来进入今天的Q&A环节,我们在过去一周里面也从开发者社区和普通用户社区也收集了很多问题,包括我自己在研究的时候也是遗留下一些问题。今天我们挑了其中一些比较重点,比较普遍性的问题来请教一下。另外在观看AMA的朋友大家有其他朋友也可以打在直播间的交流讨论区里面,如果时间允许的话我们后续也可以从现场再抽取几个问题来提问。首先第一个问题大家最关心也是对用户和开发者来说最重要一个问题具体的上线时间表包括开发者端和用户端什么时候可以正式使用这个功能?PaulLiu:大概时间表我也不好说太死,我们目前已知做好的技术一个是ECDSA的签名,不能说完全做好,因为还有很多的测试工作没完成,但是目前签名的demo可以通过。用户可以发一个消息,请求Canister对它进行一个签名,Canister收到这个消息,对系统API进行一个调用,然后系统API传到每一个节点,每个节点可以进行一个签名,签名之后把所有签名合在一起,最后得到一个最终签名,最终签名反馈给Canister,然后Canister再反馈给用户。这样一个流程是已经在内部已经跑通了,接下来整个开发过程会加速。所以我们初步的计划是在第一个季度能够推出一个ECDSA测试的版本,可以让开发者使用到真正的ECDSA签名。比特币这方面跟比特币的集成收听比特币网络、发送交易这些也是有一个初步的版本,可能是这个月底就会推出一个专门对开发者能够使用API,在本地做一些调试工作,这个用到的是测试网络而不是比特币的主网。这个我相信在这个月底会推出一个developerpreview版本,具体上线日期也是在第一季度3月份会集中推出一个测试版,希望不要把真正大额资产放在里面,测试还是需要一定的时间才能够确信它的安全可信和使用起来各方面没有更大的问题,大概是这样。肖晓:从理论上来说真正直接实现直接集成之后,大概比特币转账速度会加快到什么程度?PaulLiu:所有关于比特币的交易还是在比特币网络上,所以我们并不是要加快比特币的交易速度,简单理解我们做的这一套东西是给开发者使用的,我们是属于做的是底层的基础设施。开发者利用这个技术做他想做的应用。我可以举几个简单的例子,一个是我就做一个桥,假设我是开发者我就做一个桥接,我就可以用一个智能合约既面向比特币用户,它也面向IC的用户,它可以接收比特币。这是可以直接做的事情。现在市场上是这种桥需要一个中心化的公司运营,你需要相信他们。如果这个可以到合约里,你直接用这个合约发的WBTC在IC网络上进行交易,最终需要settlement你再把它转换为BTC,还是在BTC网络上。这个有点像闪电网络的意思,你真正的交易是发生在其它地方,它速度比较快。比特币的交易还是放在比特币网络上,并不会有任何加速。肖晓:但是在这个过程会不会出现转账的延时,在本身比特币所需的时间之外还需要多长时间?PaulLiu:这个是不需要太多时间。我们额外增加的时间都是几秒钟之内完成的。比如签发签名也就是几秒钟的时间,获取UTXO基本上就是直接调用的事情,所以我觉得我们这个集成额外增加的时间是可以忽略不计的,相对于比特币这种需要确认10到20次才比较安全的方式,可能额外增加的时间可以忽略。肖晓:明白,刚刚也有提到比特币的集成也是受制于子网的节点,想请问一下官方有没有专门打算为比特币开一个专用的子网?PaulLiu:我觉得这是一个比较好的主意,我们有几个不一样的方案,目前还没有特别决定用哪一种,我个人认为有必要专门为它开一个子网。专门开一个子网里面更加有效率一些,因为它不需要跑其他种类的智能合约。它可能在计算上面专注于为比特币做签名会更有效一些。肖晓:了解,刚刚也提到密钥派生BIP32标准,麻烦Paul哥进一步介绍一下这个标准的优势在哪里?为什么选择BIP32这个标准来做密钥开展,而不是用传统的独立的密钥这种方式?PaulLiu:比特币采取ECDSA曲线就有这方面的考虑,就它希望大家能够通过不同的公钥来使用不同的地址,更加灵活一些,你的资产并不一定只需要一个地址,你可以通过不同的地址,因为不同的地址是你自己生成的,你可以进行管理。至于为什么这种BIP32派生方式会比较有优势,因为它不依赖于你保存每个每个单独的密钥,它是通过一个密钥根据一个派生法则,你可以自己决定它的前缀、后缀达成一个阶梯型的结构,这种方式会更灵活一些。但是在安全性方面或者在其他的方面可能有人有不同的需求,也需要用不同的公钥、私钥对。比如我可以用硬件的设备我生成一对公钥私钥,这样我可以把硬件设备交给其他人,对方可能也比较放心如果是直接通过硬件来生成的公钥私钥。换成用这种派生的方式就不现实了,因为你不可能把你主要的私钥交给第三方。所以各有各的优势吧,在我们集成里面我刚刚提到一个子网有自己子网的公钥,这个公钥是唯一的。但是我们可以有不同的子网,不同的子网都可以提供不同比特币签发的服务,不同的子网可以是跑同样的公钥私钥,也可以跑不同的公钥私钥。因为不同的子网之间它是可以通信的,不管你的智能合约在哪个子网上,你都可以使用到另外子网提供的比特币的服务。你就把你的签名的需求发给那个子网,那个子网通过他的子网里面的节点进行签名,签名的结果相对应的就是那个子网的公钥。所以我们也可以实现更多对的公钥私钥对,可能重点不是放在这方面,重点还是在能够派生出更多不同的地址。直接通过派生关系,这个派生关系在我们这边的应用主要是为了支持所有的Canister,而不是说每一个Canister给你单独生成一个公钥、私钥。单独生成主要的麻烦就是因为这里面背后用到的技术它是有比较大的overhead,不像我刚刚讲的那么简单保存一个私钥份额就可以给你签名了,这个过程是比较复杂的。这里面简单讲就是它不只是一次DKG,是有多次DKG在里面,而且很多是临时的,他做一次里面结果用完就要丢掉。所以一个子网只使用一个公钥对,对我们节点更好接受一些。在安全性方面如果一对不安全,多对更不安全。所以我们至少要保证一对是安全的。每个Canister它的ID是唯一,那么每个Canister它被分配到的地址以及被分配到的公钥也是安全的,大概是这样的。肖晓:了解,想问一下实现集成之后可不可以通过Canister去查询比特币资金的来源和去向,或者是它的交易历史?这个查询过程是需要消耗IC网络的资源还是可能在APP研发的过程中我直接把比特币的浏览器集成起来去做这个查询?PaulLiu:这个查询我们直接提供系统的API进行查询,因为每个IC节点会跑一个比特币的轻节点,能够验证比特币网络上面所有新的交易。所谓轻节点也不是特别轻,要从创世记的区块开始。保持的账号也都是UTXO,而且我们也不需要信任其中每一个节点,因为节点都是独立的跑一个BTC的一个轻节点,每个子网的节点他跑的计算必须是一样的,才能对计算结果进行一个验证。因为它要经过一轮共识,所以它得到的结果需要共识,经过多个子网节点进行共识之后证明你UTXO查询是准确的,是没有经过串改的才能返回到我们的智能合约。还有一个是它消耗的资源,这个是跑在IC网络上,你对API的调用是需要为这个付费的,我之前提到是终端用户不需要为这个付费,但开发者需要在自己的合约里调用或者签名都需要为单独的每一次调用进行付费。肖晓:说到开发者付费这个问题,刚刚提到比特币转账本身还是在比特币网络上,所以可能还是会消耗一些比特币网络的gas,这个gas可不可以在用户端做到无感,反向gas模型可以cover这种类型的gas吗?PaulLiu:这种类型的Gas是可以cover,因为每个智能合约有一个BTC地址,应该是合约付费,所以这个还是转嫁到了开发者头上去。如果开发者决定我的用户的交易我也愿意付费的话,那他当然可以为此在BTC网络上付费。肖晓:另外一个问题是刚刚有提到WBTC,想请问一下通过IC方式去集成之后的BTC是以一个什么样的标准或者以什么样的格式存在,还是原始的UTXO还是有针对比特币新的标准出来?PaulLiu:我觉得基金会不太会做这个标准,还是把这个留给开发者来做,我们做的是每一个Canister有一个BTC的地址,你决定怎么来用里面的BTC,这个都是存在于比特币网络上,不存在IC网络。所以你可以选择做一个WBTC,但是也有其他的开发者做类似的,这个公平竞争交给市场决定。当然也不一定非要做WBTC,有很多应用不需要这种方式。肖晓:如果社区建立的资产标准,官方会去选择站队或者选择去支持某一种标准吗?PaulLiu:这个我觉得我们最重要的考虑是不要出现太多子,还是对安全性方面的担忧多一些,至于哪个标准最后会胜出是不一定,基金会也不会去站队。肖晓:我们同时也在关注一些其他的生态,比如从我们的视角来看比特币从古早时期到现在很多项目都想在比特币上面衍生智能合约,比如像RSK或者是Blockstack,想请教一下IC直接集成和现在市面上能够看到的智能合约层协议层的项目从技术上来说大概有一些什么样的优势?或者最重要的区别在哪里?PaulLiu:我觉得比较主要的区别是私钥的保存方式,我刚刚说门限签名没有人知道它的私钥是什么,每个节点只是知道自己的份额,所以这个相对是一个去中心化的保存私钥的方式,现在可以负责任说没有人真正做到这个。之前有提出为比特币提供智能合约,他们都是通过一些方式把这个绕过去,有通过硬件,可信的硬件存放私钥,可以信任硬件签名。但是信任硬件签名到底信任在什么地方,你可以信任签名不被盗出来,但是你是否可以信任这个签名是被正确使用的。所以他们如果要设计一个复杂的过程来取信用户,这样一个方式是比较困难,也可能里面有一些技术难点或者需要妥协的地方。我觉得在IC上面它主要的方式是把签名以去中心化的方式做出来,我们想象一下DeFi,我们强调DeFi而不是CeFi。CeFi比如一个交易所,交易所签名正确的方式就是钱包要小心的管理,一不小心泄露造成大麻烦。钱包它的使用次数跟它的使用方式都是要非常多的程序和规则,也带来了不方便。但现在有了一个去中心化方式来做签名或者来做计算。现有的去中心化方式可以让大家相信智能合约的计算结果,但它不能持有秘密,现在DKG这个技术是可以去中心化的方式可以相信这个签名,我觉得这是一个突破。不光是从密码学的角度来讲,如果能够大规模应用的话肯定是一个新的突破。肖晓:这个ECDSA看起来是非常底层的技术,是不是说明这个技术真的实现了之后后期去集成其他的网络,比如集成以太坊或者集成现有比较成熟的协议也是相对容易的?PaulLiu:是的,我们也是对这样的前景抱有希望。之所以首先选择比特币是比特币目前而言还是集中在一个资产的网络,它缺乏一个可信的智能合约的架构。所以我们首先选择比特币作为我们结合的试点,下一步马上就有以太坊的计划,以太坊本身也有2.0的改变,所以处在这样一个阶段,所以它的改动我们目前还在观望。但是对以太坊的集成也是发起了提案,正在研发当中。所以同样的技术可以用在以太坊,我们可以对以太坊的交易进行签名,这个没有太多问题。因为以太坊是一个智能合约的平台,我们对BTC的集成还是集中在资产上,可以有BTC的地址,可以做签名。但是以太坊不是光做签名而言,它有一个智能合约的事情,我们需要能够调用以太坊的智能合约。调用以太坊的智能合约可能也就是发个消息做一个签名,但是以太坊调用我们IC上的合约,这当中就还有些事情需要做,所以跟BTC的集成还略有差别。如果能实现双向调用,那跟桥接的区别就更大了,因为桥接只能是一个资产的抵押,那边换出来一个等值的资产,不同的资产。如果能够实现智能合约双向调用,我相信对跨链来说也是一个很大的突破。肖晓:明白,除了智能合约这个难点之外,您觉得像资产端会是另外一个难点吗?因为其实以太坊账户模型和比特币UTXO也有一些不太一样,这整套逻辑需要从头开始重新写吗还是说其实这块不是特别难?PaulLiu:这块应该没有什么问题,因为账户模型不一样,实际上就取决于你的应用是怎么利用这些账户模型的,我们只是提供一个接口你可以查询到,所有在比特币的UTXO你都可以查得到。所有在以太坊的状态也能查得到,我们保证查询是分布式进行的,它查到的结果是可信,做到这一点不难。我们既然每个IC子网节点可以跑比特币的客户端,也可以跑其他链的客户端。肖晓:在很长远的未来,再结合很多条主链之后,从同一个Canister可以实现同时调用各个链上的智能合约和资产吗,到时候可能就不会有一个多链的概念了,其实一个Canister就可以去控制你所有的链或者所有的钱包资产?PaulLiu:这是一个非常好的前景,我们也希望能够做到这一点。肖晓:从应用的角度,刚才也提到闪电网络,发展速度非常快,我想问一下未来集成比特币之后会不会跟闪电网络有一些协同或者有结合的点?PaulLiu:闪电网络主要的技术就是可以把交易合并了,它在闪电网络之间转账可以不通过BTC,它是通过密码学的一些知识,把最后合并的交易通过单独一个交易就可以验证完成,它是这样一个技术。同样的技术在IC上面也可以实现,至于这样有没有什么意义我就不是特别清楚,但是我想指出的是这里应该没有太大的技术难点,跟闪电网络结合的技术完全是可以发生在应用层,不需要我们在IC的底层在基础设施上做新的东西。但是闪电网络它能做的就只是这些,它之所以能够把这些交易合并,也就是因为有这一套密码学的知识能做到这一点,但是你要想做更多的事情,比如更复杂的逻辑,比如我通过一些条件能不能判断这些交易成功,给那个地方发一点给这个地方发一点。凡是要能编程的地方用闪电网络就行不通了。需要智能合约的整套的东西在里面,我相信闪电网络它也是努力在寻找这个突破口。所以IC上面的智能合约说不定也能为闪电网络提供下一个发展空间。肖晓:明白,应用这方面除了支付还会有些其他的方向,比如把比特币带到DeFi里面,或者有自己的生态或者把比特币自己加进去,我不确定现在有没有对未来应用的规划,下一步去发展比特币支付还是去发展比特币加Defi这些应用?PaulLiu:这些我们都留给应用层或者我们开发者,我相信现在也有很多开发者非常关注这个事情,包括集成之后能推动他们自己的应用。我觉得从我们基金会目前所做的事情来说,贯穿所有的一个主题就是我们希望推动IC网络去中心化,我们希望它变得更可信,变得更可信之后我们才能有更大的发展空间。所以一个是IC节点去中心化,另外一个是我们投票机制的去中心化,这也就意味着我们作为基金会不希望在应用层跟其他的应用开发者进行竞争的,除非是底层应用需要用到的技术我们会参与,如果是能够在应用层完成我们尽量交给应用层完成,基金会是不需要在里面有一个特殊的定位。肖晓:明白,按照刚才的时间线这个月底开发者可以做一些基本的测试和基本的尝试了,这是一个非常好的消息。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-6:204ms