使用Web3.js 1.0构建以太坊Oracle

本文介绍了如何使用Web3.js 1.0库构建一个以太坊Oracle,通过监听合约事件并与Dark Sky天气预报API交互获取数据。详细讲述了Chatty合约的原理和实现步骤,包括事件触发、数据请求处理和调用合约方法。教程旨在简化以太坊Oracle的构建过程,提供了一个简单的示例,展示了如何在Node.js环境中部署和测试Oracle。
摘要由CSDN通过智能技术生成

以太坊oracle:一个人们可能会在Meetups听到或其他技术活动中被抛出的非常模糊的术语。如果你不了解,你可能没有意识到区块链oracle只是一个离线数据源的专门案例,它通过响应合约中的链上事件与以太坊EVM进行交互。这可能听起来似乎挺复杂,但实际上并非如此——只需坚持几分钟。

oracle的主要关注点是在合约要求时将外部数据返回合约。这些数据可以是合约开展业务所需的任何数据:存储在数据库中的客户数量,由40年历史的大型机计算的精算风险评估。在本文中,我们将关注通过易于使用的Dark Sky weather forecast API获得的请求洛杉矶温度时的数据。

Chatty合约

人们需要开始与外界联系,以太坊虚拟机也不例外。否则,它只会是另一个孤立的书呆子,坐在周围,害羞只与自己说话。EVM是一种社交动物,它让你知道它想要聊天的方式是发射一个事件(希望有人在听)。在oracle的情况下,该事件会告诉你合约想要谈论的内容,你要提供的信息以及有时你如何加入对话。如果正在运行的合约是礼貌的话,如果你想知道,它甚至可以通过让你知道你做了什么来完成对话。然而,就像脱衣舞娘和律师一样,对EVM的讨厌会花钱,所以我们将不必要的调情保持在最低限度。

无论如何,让我们开始构建我们的Weather oracle。我们使用的是Web3.js 1.0,它的工作方式与0.2.x版本略有不同。我们还使用Ganache作为testnet,它可以很好地处理Websockets连接和事件。除了Node和Javascript之外,你不需要Truffle或Embark或其他工具——oracle将为你编译和部署合约。

确保安装了最新的Solidity编译器以及solc npm软件包。并且不要忘记安装针对Dark Sky的出站HTTP调用的请求包。

如果你想在家里玩,oracle和测试客户端的完整代码位于https://github.com/robinagist/EthereumWeatherOracle。为了清楚起见,有一些冗余。(注意:我在Javascript和Node上有一点菜鸟,但不是软件,所以请原谅我可能已经Python化了你心爱的Javascript,Python和Go是我的主要语言。)

你还需要在https://darksky.net上获得一个Dark Sky API帐户。

细节

过程很简单:

  • 一个帐户(EOA或合约)调用主合约上的方法,询问一些离线数据,然后回归其业务。
  • 合约方法与在执行期间发出的事件相关联。
  • 将通知oracle(已在合约地址处在线监听此特定事件),并开始处理数据请求。
  • 处理完毕后,oracle在合约地址上运行另一种方法,完成调用帐户/合约的数据请求。有时,会从此方法发出一个事件,以便通知调用者。

合约

我们的合约很简单。除了通常的潜在交互者(与构造函数的合约)之外,我们有两种方法和两种事件。第一个被调用的方法是request。请求没有参数,并且它的唯一目的是在被调用时发出一个TempRequest事件,希

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值