原文链接:https://developer.bandprotocol.com/devs/walkthrough.html
我们总结了一个dapp开发人员指南通过完整的流程,以建立一个简单的智能合约,使用来自Band Protocol的数据。
安装MetaMask
如果已经安装了MetaMask浏览器扩展,请切换到Kovan 网络并跳到下一节。
MetaMask是一个浏览器钱包,允许你通过网络浏览器(Chrome或Firefox)与Ethereum交互。使用MetaMask,您可以在真实网络(mainnet)和测试网络中拥有以太,以太是以太的原生代币。您还可以使用ETH部署智能合约或将事务发送到网络。要安装MetaMask,请访问https://metamask.io并下载浏览器扩展。
创建新的账号,您将面对屏幕,屏幕顶部显示您的地址(可以单击复制)和0 ETH。将网络选择更改为Kovan测试网络。假设您连接到Kovan,我们将继续下一步。
Screen Shot 2019-08-29 at 9.04.43 AM.png申请Kovan测试以太
如果您已经拥有Kovan测试网以太(KETH),请跳到下一节。
现在已经安装了MetaMask并连接到Kovan测试网络,下一步是请求测试以太与Ethereum网络交互。导航到https://faucet.kovan.network进入Kovan水龙头。
Screen Shot 2019-08-29 at 9.08.11 AM.png使用Github登录后,您将能够输入您的Ethereum地址。这个地址将由Kovan测试以太(KETH)提供资金(代币)。
很遗憾:https://faucet.kovan.network 异常发生
怎么办呢?
-
点击Depoist按钮
Screen Shot 2019-08-29 at 9.12.48 AM.png -
点击Get Ether(获取以太)按钮
然后跳转到https://github.com/kovan-testnet/faucet
里边有2个链接:
1- https://faucet.kovan.network/
2- https://gitter.im/kovan-testnet/faucet
第一个链接不可以;所以用第二个链接;具体操作如下:注册账号,并进行登录,然后加入聊天群然后发送你的以太地址(从Metamask中获取);具体如下:
-
剩下的可能你需要耐心的等待了;
Screen Shot 2019-08-29 at 9.17.03 AM.png
写你的第一个智能合约
为了简化本教程,我们不打算设置一个完整的开发环境。相反,我们将使用Remix编写智能合约,这是一种浏览器内的智能合约开发工具。访问https://remix.ethereum.org,您将看到一个空的编辑空间。
将以下代码粘贴到编辑器。这个示例智能合约包含一个函数update,它将从Band Protocol的Kovan financial feeds获取Ethereum和美元之间的汇率,并更新状态变量ethusd中的结果。
pragma solidity ^0.5.0;
interface Oracle {
enum QueryStatus { INVALID, OK, NOT_AVAILABLE, DISAGREEMENT }
function query(bytes calldata input)
external payable returns (bytes32 output, uint256 updatedAt, QueryStatus status);
function queryPrice() external view returns (uint256);
}
contract ExampleContract {
uint256 public ethusd;
function update() public payable {
Oracle oracle = Oracle(0x07416E24085889082d767AF4CA09c37180A3853c);
(bytes32 raw,,) = oracle.query.value(oracle.queryPrice())("ETH/USD”);
ethusd = uint256(raw);
}
}
部署和测试契约
合约实现后,转到“Deploy and Run Transaction”选项卡,单击Deploy部署智能合约。请注意,必须选择Injected Web3才能通过MetaMask部署环境。另一个提醒是必须将MetaMask network设置为Kovan。
remix-deploy.png成功部署合约之后,单击左边按钮上的update按钮发送事务来调用update函数。要成功调用此函数,调用者必须使用0.001 ETH作为查询费。可以在Value选项卡下指定。
确认交易后,单击ethusd按钮查询合同状态变量ethusd的值。你会看到它从零变成了以美元为单位的ETH的当前价格,用乘以10^18的值表示。在这个例子中,当前的以太坊价格大约是200.55美元。
remix-get-ethusd.png
网友评论