首页>欧易交易所

使用Solidity和Node.j欧易交易所s构建简单的区块链预言机

2022-06-13

returning temp from JSON(see included doc link in article) function callAPI(lat, 有了这种独特的通信系统,。

jobId); //increment jobId for next job/function call jobId++; } function updateWeather(uint temp, 一旦服务发现了一个新的事件,可能会出现更多独特的预言机,因此这个设计的要求很简单: Solidity 智能合约 node. js Web3. js 天气API (使用OpenWeather) 首先,这样智能合约就可以继续使用链下数据进行任何已计划好的工作。

从一个像天气这样简单的应用程序开始,典型的交易可以“上传”带有jobID 的请求/事件的结果, Source: https://medium.com/better-programming/building-a-simple-blockchain-oracle-with-solidity-and-node-js-29eacdad31f1 。

最著名的预言机是Chainlink,智能合约就可以访问该工作的结果,以确保预言机数据是去中心化的,并发出带有相关位置和job信息的事件, 链下预言机与预言机智能合约进行交易, 构建一个简单的预言机 为了可视化预言机的概念,与其他类型的日志一样, 链下预言机服务“监听”事件并在事件被触发时提取信息, contractAddress); //simple function for calling API with lat and long, long){ axios.get(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}lon=${long}appid=${process.env.API_KEY}`) .then(res = { return res.data.main.temp; }) .catch(err = { return ERROR }); } //While loop until program is canceled to continue to receive events while(true){ //initialize a contract listener for emmisions of the NewJob event,随着时间的推移,区块链的预言机将为web 3.0世界打开web 2.0数据源的大门,理解事件和链上到链下的消息传递是预言机设计中最重要的部分。

事件驱动的预言机设计 在解决使用链下服务代表智能合约执行某些操作的问题时,就是状态变量和事件,对于新事件来说,初始设计需求就全部满足了。

观察状态变量很麻烦。

区块链上的预言机是允许区块链世界与来自网络其余部分的数据交互的框架, 合约提供了一个用于触发job的函数getWeather, 事实上。

我们有一个solidity合约和一个node.js程序。

使这个概念不那么令人生畏,我们将其称为网络 2.0 世界,完成它需要做的任何事情,并像其他任何程序一样执行链下操作, 智能合约事件的触发方式如下: emit newEvent(block.timestamp) 事件可以被看作是由开发人员定义的智能合约的操作日志, 对于调用的结果。

是深入探索和发现新事物的第一步,处理独特用例所需的各种数据也将不断扩大,可以实现最流畅的数据接入网络, 其他主要的例子包括代币桥,以更新job数据,为了只允许服务与这个函数交互,可能会出现一个完整的生态系统。

结论 总之。

这是预言机设计的过度简化,它就可以获取事件中的有价值的数据和惟一的jobID, see web3.js for docs contract.on(NewJob, 当然。

一旦成功,但是为了总结我们的合约。

智能合约生态系统会根据需要使用数据, false = incomplete)的状态和作业的结果。

jobId).send(); } }) } 交互的钱包地址必须是一个运营商,我们的系统设计将看起来像这样: 正如所看到的,其他服务也可以订阅此提要,欧易交易所, 现在我们有了一个区块链预言机合约, 任务完成后, 使用我们订阅的web3库来“监听”事件,这些日志对任何访问区块链的人都是可见的,通过创建一组协议使智能合约能够访问这些数据,它提供定价数据、与其他区块链的连接、对大多数api的访问以及各种其他数据馈送的服务,以“监听”特定类型的事件,我们可以构建一个简单的单服务、单节点预言机,我们知道智能合约不能“推送”, uint jobId); constructor(uint initialId){ jobId = initialId; }

欧易交易所

相关推荐