首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能合同所使用的Oracle不再可用

智能合同所使用的Oracle不再可用
EN

Ethereum用户
提问于 2020-02-03 21:45:17
回答 2查看 51关注 0票数 1

Ethereum依赖于Oracles来提供SmartContracts使用的外部世界的信息。此外,当节点同步(在慢速模式下)时,它必须遍历所有事务(包括SmartContract事务)来验证整个事务历史记录。那么,如果到了新节点同步的时候,oracle就不再可用了呢?

EN

回答 2

Ethereum用户

发布于 2020-02-04 04:20:10

我认为,重要的是要理解的是,合同不能咨询先知的确切原因,OP在问题中所描述的。Oracles用合同的输入来签署事务,所以不管Oracle将来的可用性和一致性如何,输入都是链的一部分。

类似回调的模式可以使合同看起来像调用Oracle。

大致如下:

步骤1:客户端(合同)向Oracle合同发送请求。

步骤2: Oracle的离链组件观察请求,例如监视事件。

步骤3: Oracle的离链组件将事务签名到客户端的回调。

步骤4:客户端(合同)有Oracle的输入,可以继续其下一个步骤。

在这样的序列中,启动步骤1的发送方事务和Oracle的响应步骤4都是不可变的事务,其他节点将使用它们来计算客户端契约的状态。Oracle仍然可用并不重要。它所说的,曾经被记录下来,这就是客户所做的。

希望能帮上忙。

票数 2
EN

Ethereum用户

发布于 2020-02-04 04:07:23

块链与任何外部交互都是隔离的,并且您有在任何时候验证块和事务所需的所有数据。

有些事务可能包含来自oracle的语句,但它们处于较高的抽象级别,因此常规网络客户端无法验证它们。

oracle协议必须提供验证此类语句的方法。一个典型的解决办法是,如果获得多数票,则提供投票时间,声明得到确认。所有选票都记录在区块链中,您可以验证它们。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/79585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档