http://www.7klian.com

Chainlink预言机根基道理(二)

   function requestTemperature (string memory _city) public {
而基于LINK ERC677 token完成的预言机成果,就属于个中的请求/响应模式。这是一种较为巨大的模式,上图中展示的是一个不含有聚合进程的简朴请求/相应流程。

· 当即读取(immediate-read)
   event RequestTemperature (bytes city);
· 请求/响应(request–response)
· 宣布/订阅(publish–subscribe)

Chainlink 
LINK是以太坊网络上的ERC677合约,关于种种ERC token的区别,请参考这篇文章。
   // 界说事件
   // 用户存储预言机提交的天气数值
在《能干以太坊(Matering Ethereum)》一书中,提出了三种预言机的设计模式,别离是
Chainlink是一个去中心化的预言机项目,它的浸染就是以最安详的方法向提供现实世界中发生的数据。Chainlink在根基的预言机道理的实现方法之上,环绕LINK token通过经济鼓励成立了一个良性轮回的生态系统。Chainlink预言机需要通过LINK token的转账来实现触发。

链下,我们启动一个历程,以订阅topic的方法获取日志信息,之后通过构建一个transaction,提交一个功效到合约中。

contract WeatherOracle { 
   // 发出获取请求,即发出一个事件日志
   uint256 public temperature;
上面的代码很是简朴,界说了一个变量用来存储功效,一个要领用于发出请求,一个要领用于吸收功效。

消费者合约:

下面我们通过一个例子,来先容一下预言机的根基道理。我们在链上成立一个用户合约,它需要获取到某个都市的气温数据。虽然,智能合约本身是无法获取到这个产生于链下真实世界中的数据信息的,需要借助预言机来实现。智能合约将需要获取天气温度的的都市写入到EventLog中,链下我们会启动一个历程,监听并订阅这个事件日志,获取到智能合约的请求之后,将指定都市的温度,通过提交transaction的方法,挪用合约中的回填要领,提交到智能合约中。
        }    // 预言机回调要领,预言机获取到数据后通过这个要领将数据提交到链上    function updateWeather (uint256 _temperature) public {        temperature = _temperature;    } }
        emit RequestTemperature(bytes(_city));
声明:以下代码仅供演示预言机道理,,没有做参数检测和错误处理惩罚,请不要在出产情况中利用。

用一个图来展示这个进程:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读