查看原文
其他

通过互联网计算机的区块链直接进行 HTTP 请求

DFINITY 2022-07-07



尽管 Web3 对一切都发生在区块链上的未来充满乐观,但我们离实现这一目标还有很长的路要走。


绝大多数有用数据是在传统数据中心或云计算基础设施中生成的,并使用主要利用 HTTP 或 HTTPS 的熟悉工具进行接口。


运行在任何 Layer 1 区块链(如 Ethereum 或 Solana)上的去中心化应用程序使用所谓的预言机与基于 HTTP 的服务交互,这些预言机充当受信任的中间件,允许创建混合智能联系人,其中链上代码可以与链下基础设施和数据进行交互。


Chainlink Network 是一个流行的去中心化预言机网络,它提供了一个简短的解释视频,说明它的样子。


预言机的麻烦


虽然预言机是将 dApp(去中心化应用程序)与链下数据和基础设施连接起来的主要方式,但也存在一些缺点。


这些请求是间接的,这意味着您不会直接对要查询的数据源进行 API 调用 —— 预言机会为您执行此操作,然后您的 dApp 需要信任预言机返回的响应,这种方法还伴随着使用预言机作为第三方中介的费用。


DFINITY 基金会是 Layer 1 区块链互联网计算机的最大贡献者之一,它提出了一种替代方法,其中 dApp 可以使用集成到区块链中的 API 直接发出 HTTP 请求。



DFINITY 基金会技术项目经理 Dieter Sommer 在接受 The New Stack 采访时解释了以这种方式依赖预言机的挑战:“每个想做任何合理事情的人都需要某种形式的与 Web 2 的集成,而所有其他区块链都为此使用预言机。”


他说:“预言机是外部服务,因此如果您依赖预言机连接到 Web 2,那么预言机会完成所有 HTTP 工作,这也意味着您引入了许多新的信任假设。例如,在使用 Chainlink 预言机的标准模型中,你调用了一个预言机提供者,而这个提供者需要得到你的信任,这是一个非常弱的模型。”


直接进行 HTTP 调用的 API


DFINITY 基金会使用一些略有不同的术语来解释互联网计算机区块链基础设施的工作原理,以互联网计算机协议为基础,互联网计算机托管称为容器的智能合约,它是 WebAssembly 字节码和运行此代码的内存页面的组合,部署容器意味着相应的代码和状态被复制到部署它的子网上的所有节点。


这种复制概念是当今大多数区块链使用预言机发出 HTTP 请求的原因之一,在当前互联网计算机的设计中,每个副本都会对外部服务进行相同的 HTTP 调用。


但是返回到每个副本的 HTTP 响应可能不同,因为时间戳或 ID 可能会有所不同,当所有副本都得到稍微不同的响应时,就不可能达成共识 —— 这实际上破坏了子网。


在即将发布的互联网计算机铬(Chromium)版本中,有一种新方法可以解决这个问题,并使用 API 为区块链提供直接集成以进行 HTTP 调用,这消除了使用预言机所需的信任假设,并在理论上简化了访问链下数据的过程。


通过管理容器提供的异步 API,每个节点都会发出相同的 HTTP 请求,当每个节点收到响应时,它们会签署响应并将其发送给其他节点。


一旦共识层聚合了足够多的签名,它将在区块链中包含响应,当区块完成时,响应被传回执行层,执行层又恢复发起 HTTP 请求的计算。



导航不一致的响应


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


正如 Sommer 所说:“子网中的所有节点都提出请求,并且只有在共识成功时,这意味着至少三分之二的副本同意结果,然后才会将结果回复回容器。这允许在外部进行安全呼叫,而无需依赖任何外部第三方。我们的共识协议足够灵活,可以进行这种扩展。”


更复杂的情况是请求在语义上相同,但可能存在与计算结果无关的微小差异,您可以使用一个函数来围绕这些不一致进行编码,而不是未能达成共识,该函数通过仅显示计算所需的响应部分来转换响应。


举个例子,比如需要返回一个文本字符串,其中文本打包在带有时间戳的响应中,如果文本字符串在所有情况下都相同,则时间戳不同并不重要,您可以使用该函数将其丢弃。



对于初始版本,仅支持 GET 请求,长期计划也会支持 POST 请求,DFINITY 的软件工程师 Ivan Malison 在 DFINITY 基金会的一段视频中详细介绍了这一新功能,他解释说 POST 请求更加复杂。


他展示了一个信用卡支付的例子,您不希望尝试多次向同一张卡收费,或者对您的 POST 请求得到不同的响应,例如一次成功消息而下一次拒绝。


该视频提供了 Stripe 的安全 API 重试的幂等性,作为未来如何正确实现此功能的示例,请观看本文开始的视频。



来源:Jake Ludington

(The New Stack)

翻译:Catherine



-        推      -


OpenChat Dapp 通过即时消息实现 ICP 令牌传输

Forbes|去中心化是软件的未来

DFINITY - 世界的精神祖先





你关心的 DFINITY 内容
技术进展 | 项目信息 | 全球活动


长按关注 DFINITY 微信公众号

随时答疑解惑


*添加小助手微信 comiocn 进交流社群


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

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