我认为智能契约不能进行网络调用,因此不能调用外部API来获取数据。
我读过预言是为智能合同提供外部数据的方法。
如果智能合同实际上无法向智能契约提出网络请求,那么我现在很困惑,如果智能契约实际上无法向智能契约提供这些外部数据,那么它们究竟是如何提供这些外部数据的?
那这是怎么回事?智能契约究竟是如何使用来自先知的数据的?
发布于 2022-10-27 08:25:01
让我们以Chainlink oracle网络为例:
Chainlink网络的第一个服务是Data,您可以从该服务获得令牌价格。让我们来看看数据提要是如何工作的。
在这个过程中有3个角色,一个由多个甲骨文节点组成的离链甲骨文网络,多个数据提供者提供数据,以及一个在线智能协议来接收离链甲骨文网络发送的数据。
价格馈送的过程如下所示(实际过程更为复杂):
您可以查看有关数据提要这里的更多细节。
发布于 2022-11-02 01:18:35
先知是中间人,可以从链外获得可信的数据。有不同的oracle提供程序,每个提供程序都有不同的机制来验证数据是否有效。
例如,chainlink是oracle提供程序。链本身是一个块链,有节点来获取数据。每个节点都使用自己的智能契约来获取数据。要运行链接节点,您必须锁定一些资金,以便如果您作弊,您将失去您的资金。
一旦每个节点获得数据,链链接块链就有一个检测数据是否可靠的算法。假设你需要测量一个位置的温度。10个链路节点提供了40F到43F之间的值,其中5个提供了50F到55F之间的值。因此,链环算法将丢弃这5个节点,并在40F到43F之间使用10个节点的平均值。(算法更复杂,基本上是它所做的。)
如果检查连锁甲骨文智能合同,函数名为getRoundData
或latestRoundData
,指示它们不会从单个源获取数据。
https://ethereum.stackexchange.com/questions/138246
复制相似问题