1. 什么是 Chainlink?
长久以来,区块链上运行的智能合约无法直接的与外部系统进行交流,这一瓶颈限制了智能合约应用场景。
如今,我们可以通过引入预言机(Oracle)的功能来解决这一问题,预言机可以为智能合约提供与外部世界的连接性。但是目前的预言机都是中心化的服务,这会给使用中心化预言机服务的智能合约带来单点故障的风险,使得智能合约的去中心化特性变得毫无意义。
为了解决这个问题,Chainlink开发了首个去中心化预言机项目,来向智能合约提供外部数据。有了这个武器,智能合约的安全性和确定性,与真实世界中发生的各类事件联系了起来。Chainlink将为您的智能合约提供获取任意外部API数据的能力。本文档列出了所有与之相关的信息。
- 关键字:
- 预言机
- 去中心化
Chainlink 文档:https://docs.chain.link/docs/getting-started
1.1. 开发工具
1.1.1. Remix Solidity IDE
Remix
是一个网页端的集成开发环境,可以用它在浏览器里创建、运行、调试智能合约。它由以太坊基金会开发维护。通过Solidity
开发智能合约所需的一切都在Remix
的 WEB 界面上提供了,所以开发者无需自行搭建开发环境了。Remix
可以大大简化合约的部署方法,无需使用命令行界面即可方便的部署合约。
Remix 主要是编写 solidity 合约,编译,部署和调用。
IDE 地址:https://remix.ethereum.org/
1.1.2. MetaMask
MetaMask是一款浏览器插件钱包,不需下载安装客户端,只需添加至浏览器扩展程序即可使用。
使用 Remix Solidity IDE 的 Injected Web3
环境,配合 MetaMask 插件可方便部署智能合约到以太坊测试网或者主网。
MetaMask 主要部署合约到测试网,进行合约的调试。
1.1.2.1. 安装 MetaMask
MetaMask 下载地址:https://metamask.io/download.html
- 安装好
MetaMask
的Chrome
插件后,点击MetaMask
的小狐狸图标打开扩展程序。 - 创建一个新的账户。
- 您将会看到由12个单词组成的助记词,拷贝这12个助记词到一个只有你自己知道的安全的地方。
- 点击头像,进入设置,将网络从以太坊主网络(
Main Ethereum Network
)切换到Kovan
测试网络(Ropsten Test Network
)。
1.1.3. 测试网络
当前可用的以太坊测试网有如下:
Rinkeby
- 一个
POW
的区块链,非常类似于以太坊主网。 - 获取
Rinkeby
的以太币:https://faucet.rinkeby.io/ - 交易查看地址:https://rinkeby.etherscan.io/
- 一个
Kovan(推荐使用)
- 一个
POA
的区块链,不能挖矿,只能申请。 - 获取
Kovan
的以太币:https://faucet.kovan.network/ - 加入
gitter
中的faucet
组织:https://gitter.im/kovan-testnet/。在gitter
的社区中,发送自己的钱包地址(@管理员 epheph ),就可以获得4
个测试代币 - 交易查看地址:https://kovan.etherscan.io/
- 一个
1.2. 调试 Chainlink 合约
1.2.1. 获取 LINK 代币
- 打开
LINK
代币的获取地址:https://kovan.chain.link/ - 从
MetaMask
中获取帐号地址,复制输入框中,点击Send me 100 Test LINK
按钮 - 点击
MetaMask
插件,点击添加代币,选择自定义代币,填写LINK
代币的地址后自动填充代币信息,点击下一步,完成添加。- Rinkeby:
0x01BE23585060835E02B77ef475b0Cc51aA1e0709
- Kovan :
0xa36085F69e2889c224210F603D836748e7dC0088
- Rinkeby:
1.2.2. PriceConsumerV3 获取 ETH/USD 汇率价格
- 打开
Remix Solidity IDE
编辑器,在Featured Plugins
选择SOLIDITY
- 复制合约代码
1 | pragma solidity ^0.6.7; |
部署,调用合约
- 点击
Deploy
按钮时,会弹出 MetaMask 页面,点击确认继续 - 点击
getLatestPrice
按钮,调用合约,即显示当前ETH/USD
的价格
- 点击
查看
Price Feed Contracts
合约内容:https://kovan.etherscan.io/address/0x9326BFA02ADD2366b30bacB125260Af641031331#code
1.2.3. 调用 VFR 合约获取随机数
- 打开
Remix Solidity IDE
编辑器,在Featured Plugins
选择SOLIDITY
- 复制合约代码
1 | pragma solidity 0.6.6; |
部署合约,获取部署的合约地址
- 点击
Deploy
按钮时,会弹出 MetaMask 页面,点击确认继续
- 点击
重要:转入 LINK 代币到合约
- 获取部署后合约的地址
- 在
MetaMask
向合约地址转入LINK
代币
- 调用合约,获取随机数
- 先发送获取随机数请求
- 发送请求获取生成的随机数
提示:
- 如果没有向部署的合约转入
LINK
代币,会提示错误:Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
The execution failed due to an exception. Reverted
。