假设我有一个智能合约,它使用Chainlink的"调用任何外部API";从外部URL获取某些数据的能力。我的理解是,每个以太坊完整节点都运行每个智能合约来验证状态;它这样做是为了验证最新的块。但是,如果在一个完整的节点运行契约和另一个完整节点运行契约之间,通过调用外部API返回的数据发生了变化,该怎么办。然后,不同的完整节点似乎会为该智能合约获得不同的结果,从而导致状态不一致。为什么没有发生这种情况?
因为oracle响应存储在链上。
你是对的,如果获取外部数据是验证过程的一部分,那么没有任何节点能够达成共识。因此,Chainlink oracle网络将数据放在事务中的链上,然后它与其他事务一样经过相同的验证过程。
你可以阅读更多关于Chainlink的基本请求模型的内容,但这基本上就是为什么不可能在区块链中构建oracle系统的原因。