查看原文
其他

一个被极其低估的潜力股公链|DFINITY如何实现与Web2无缝集成

DfinitySZ DfinitySZ 2022-06-09

文章来自于|DfinitySZ

投稿、转载请联系|DfinitySZ小助手


在我们身处的Web2.0世界,我们的所产生数据足迹大到与我们的生活息息相关,反观我们能够在区块链产生的数据足迹却少之又少,但如果能够实现L1区块链与Web2.0中的价值数据的交互将能够赋予L1区块链的无限的想象空间,这也是所有L1区块链都在思考的一个问题。而作为互联网计算机的最大贡献者之一的DFINITY基金会提出了一种无需依赖外部组件(预言机等)即可实现与Web2.0无缝交互的解决方案。


 

在Web2.0中的大多数价值数据都在传统数据中心和云计算基础设施中生成,并都遵循一个应用层协议/HTTP协议实现交互通信。这意味着如果要实现L1区块链与链下数据的交互,需要使智能合约能够向外输出HTTP(s)请求,这对于任何区块链都是一个挑战,如果一个智能合约发送的HTTP(s)请求,通过不同节点发出后,可能会接收到不同的响应,(例如响应中包含的时间或编号)。

 

不同节点接收到的不同响应后,再基于不同的响应的进一步处理,将导致节点间的状态出现不一致,从而破坏计算的确定性,无法达成共识。

 

因此,智能合约不能通过节点直接向外部服务发出 HTTP(S) 请求,这会给共识造成重大问题。

 

目前大部分L1区块链对此问题的解决方案是通过引入一个称为预言机的外部组件实现与链下数据(基于HTTP的服务)的交互。虽然预言机起到了使链上与链下数据的交互关键作用,但也拥有一些痛点,一是作为第三方数据代理商存在外部信任风险;二是预言机作为第三方需要支付一定的费用,增加了开发成本;三是预言机的编程模型增加了复杂性和间接性。



IC的“直接集成”开发策略

 

以下概述将官方提供的集成HTTP原文的底层逻辑出发,探讨IC是如何实现与基于HTTP的服务进行交互,可能会有一些关于IC技术的术语,我们将会在下方对这些术语进行注解,如果您在阅读本文还遇到了其他问题可通过下方二维码或关注DfinitySZ公众号联系我们,我们将全程为您提供帮助和支持。

 

互联网计算机(简称IC)由一个ICP协议将分布在全球各地数据中心中所托管的节点分成多个节点组,这些节点组被称为子网,每个子网之间相互通信,组成一个开放且通用的超级计算机。而在这些子网上托管着被称为Canister的软件智能合约,它是它是由WebAssembly字节码和运行此代码的内存页面的结合,每个Canister对应的代码和状态都被复制到托管其子网上的所有节点中。


 

如上所述,如果允许Canister可以直接输出HTTP请求,这可能会导致子网的共识奔溃。


DFINITY并没有选择与多数L1区块链的策略,而是始终坚持“直接集成的”开发战略(如IC直接集成BTC一样),构建了一个异步的系统API供于Canister可以向外输出HTTP请求。

 

该异步API由管理Canister/management canister提供,使每个节点发出相同的HTTP请求,当每个节点收到响应时,它们会对响应进行签名并广播给其他节点,一旦某个响应在共识层聚合了足够多的节点签名的阈值时,包含该响应的区块被敲定后,响应传回到执行层更新Canister的最新状态。

 

当所有节点几乎在同一时间收到相同的响应时,这种方法就可以完美运行。即使存在恶意节点的情况下,只要有足够多的节点返回相同的响应,运行也会继续有效。

 

正如DFINITY基金会的技术项目经理Dieter Sommer 所说,“子网中的所有节点都提出HTTP请求,并且只有在共识成功时,这意味着至少三分之二的节点同意响应结果,响应结果才会返回容器。这允许在外部进行安全调用,而无需依赖任何外部第三方,我们的共识协议足够灵活,可以进行这种扩展。”

 

更复杂的情况是请求在语义上相同,但可能会存在与计算结果无关的微小差异。不过可以使用一个函数来围绕这些不一致进行编码,该函数通过仅显示计算所需的响应部分来转换响应。举个例子,比如需要返回一个文本字符串,其中文本打包在带有时间戳的响应中。如果文本字符串在所有情况下都相同,则时间戳不同并不重要,可以使用该函数将其丢弃。

 

对于集成的初始版本,可支持 GET 请求,但DFINITY的长期计划是支持 POST 请求。DFINITY的软件工程师Ivan Malison社区对话活动的视频回顾中详细介绍了这一功能,展示了一个信用卡支付的例子,该视频还展示了Stripe的安全 API重试的幂等性和作为未来如何正确实现此功能的示例。


总结


不管是从集成HTTP和集成BTC,还是未来将要集成的ETH,DFINITY一直秉承“直接集成“的策略,这套策略皆在实现IC底层协议栈对集成功能的原生兼容,这减少了额外信用成本与假设,降低第三方风险,以打造完全可信环境。这将打破了迄今为止区块链的固有边界,打造成更开放、综合和广泛应用的区块链世界。

 

本文仅对整合原文中的部分内容引用,原文中更加详细的描述了集成HTTP的细节,对于那些想要更全面了解集成HTTP技术开发者来说,可通过下方链接阅读原文。

 

https://dashboard.internetcomputer.org/proposal/46519



必看周刊


生态精选


寻宝回顾


精彩活动


联系我们

 电报 

        t.me/DfinitySZ

 官方网站

        dfisz.com

 英文推特 

        twitter.com/DfinitySZ

 中文推特 

        twitter.com/DfinitySZCN

 英文论坛 

        reddit.com/user/DfinityShenZhen


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存