让我们考虑一个事务生命周期的例子,其中智能契约使用Oracle获取外部数据,ETH/美元价格提要实时更改。
事务是在挖掘期间执行的,因此它会创建对返回Price1的Chainlink预言的请求。Price1是否存储/缓存在块链的某个位置?
一旦挖掘了块,挖掘节点就会将其发送到其他Ethereum节点进行验证。
验证节点也执行该智能契约。随后调用Oracle以获取ETH/美元价格会发生什么情况?在块验证期间,甲骨文会返回“缓存”响应Price1,还是会得到Price2。这是否意味着如果我们得到Price2,那么块验证就失败了?
发布于 2020-10-17 18:21:18
对你的问题的简短回答:是的,甲骨文的反应被储存在链上.
很长的答案:您可以阅读更多关于请求模型如何为链链接工作,以及它是如何在链上获取数据的,但是这里有一个要点,它将帮助回答这个问题。理解体系结构的最简单方法是了解runlog发起者是如何工作的。
您可以查看链式价格馈送页面并查看链上数据。他们甚至有一个指向以太扫描的链接,显示合同和数据存储在哪里。
您的问题很好,因为这就是为什么不可能将oracle系统内置到块链中,如果获取外部数据是验证过程的一部分,则没有节点能够达成共识。因此,Chainlink oracle将数据放在事务中的链上,然后通过与其他事务相同的验证过程。
https://ethereum.stackexchange.com/questions/89424
复制相似问题