关于智能合约如何从链外调用数据的问题

我们在编写solidity代码的时候经常需要传入参数,但如果某个参数需要从链外某个可信信源(哪怕它是中心化的)去读取,而不允许合约的调用者自己随意传入,应当如何实现呢?

一个比较常见的场景是预言机,其实也包括了从任何传统信源取得信息的情况。举个最简单的例子,我的合约里定义了一个uint a,某个方法function changeA()的功能,就是把a改为中央气象台公布的本日的北京市气温(这个数据是开源的和易见的),该如何实现呢?

请先 登录 后评论

最佳答案 2021-01-22 17:28

一个方式是只有可信的地址,才能提交信息。

一个方式引入经济模型来解决,例如提交信息的时候,需要质押一些币, 来保证数据的正确性,如果被人挑战,就会被罚款。

请先 登录 后评论

其它 1 个回答

BING
请先 登录 后评论
  • 2 关注
  • 0 收藏,2631 浏览
  • jimmy 提出于 2021-01-20 17:05