基于eth测试网搭建Chainlink节点
基于ETH测试网搭建Chainlink节点
本文主要参考 Chainlink 官方文档(https://docs.chain.link/docs/running-a-chainlink-node) ,但是搭建过程中有些问题,文档也没有给出,因此写下此文进行一些记录。
所需环境及组件
操作是基于Mac,如果用其他系统操作也类似。主要依赖组件有Docker环境、PostgresSQL、以太测试网等,后面会将如何搭建Chainlink节点过程进行记录。
Docker 安装
Mac下是直接安装的Docker文件,其他环境可参考官网
安装完成输入docker version 输出信息表示安装成功
Client: Docker Engine - CommunityCloud integration: 1.0.1Version: 19.03.13API version: 1.40Go version: go1.13.15Git commit: 4484c46d9dBuilt: Wed Sep 16 16:58:31 2020OS/Arch: darwin/amd64Experimental: falseServer: Docker Engine - CommunityEngine:Version: 19.03.13API version: 1.40 (minimum version 1.12)Go version: go1.13.15Git commit: 4484c46d9dBuilt: Wed Sep 16 17:07:04 2020OS/Arch: linux/amd64Experimental: falsecontainerd:Version: v1.3.7GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175runc:Version: 1.0.0-rc10GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version: 0.18.0GitCommit: fec3683
PostgresSQL 安装
Chainlink Node 在 0.8 版本之后将 PostgresSQL 作为唯一的存储选项。PostgresSQL 数据库可以是自己搭建的,也可以是云服务商提供的,只要可以提供数据库的访问接口即可。
这里采用的是基于docker 安装.具体可以参考:
docker安装的postgresql的基本使用
docker run --name postgres2 -e POSTGRES_PASSWORD=password -p 5432:5432 -v pgdata:/var/lib/postgresql/data -d postgres
以太坊测试环境
本文直接使用的 https://infura.io/ 进行测试,测试网可以选择Ropsten和kovan
部署Chainlink 节点
创建Chainlink 目录
- Ropsten
创建目录
mkdir ~/.chainlink-ropsten
配置环境变量
ROOT=/chainlinkLOG_LEVEL=debugETH_CHAIN_ID=3ETH_URL=wss://ropsten.infura.io/ws/v3/自己的idMIN_OUTGOING_CONFIRMATIONS=2MIN_INCOMING_CONFIRMATIONS=0LINK_CONTRACT_ADDRESS=0x20fE562d797A42Dcb3399062AE9546cd06f63280CHAINLINK_TLS_PORT=0SECURE_COOKIES=falseGAS_UPDATER_ENABLED=trueDATABASE_URL=postgresql://postgres:password@172.17.0.2:5432/db_chainlink?sslmode=disableALLOW_ORIGINS=*
- Kovan
创建目录
mkdir ~/.chainlink-kovan
配置环境变量
ROOT=/chainlinkLOG_LEVEL=debugETH_CHAIN_ID=42ETH_URL=wss://kovan.infura.io/ws/v3/自己的idMIN_OUTGOING_CONFIRMATIONS=2MIN_INCOMING_CONFIRMATIONS=0LINK_CONTRACT_ADDRESS=0xa36085F69e2889c224210F603D836748e7dC0088CHAINLINK_TLS_PORT=0SECURE_COOKIES=falseGAS_UPDATER_ENABLED=trueDATABASE_URL=postgresql://postgres:password@172.17.0.2:5432/db_chainlink?sslmode=disable ALLOW_ORIGINS=*
启动节点
这里选择的是基于Kovan环境启动Chainlink节点,若想选择Ropsten环境只需改下命令中的对应参数即可。
sudo docker run --name chainlink -p 6688:6688 -v ~/.chainlink-kovan:/chainlink -it --env-file=.env smartcontract/chainlink local n
首次启动会首先要求管理员输入一个密码,这个密码是节点账户的 keystore 密码,这个密码必须牢记,丢失的话没有办法找回,并且私钥所管理的资金也会丢失。每次启动都会要求管理员输入这个密码,以解锁 keystore。节点需要通过 keystore 的私钥来签署交易,提交到区块链上。
接下来还会要求节点管理员输入一对邮箱账户和密码,用于登录节点管理页面。
节点测试
登陆管理界面
浏览器中打开 ip:6688 地址,就能看到 Chainlink 节点管理页面的登录入口。用我们在启动节点时填入的邮箱账户和密码,就可以登录到管理界面中了。
我们先去到 Configuration 标签页,会发现有一个 ACCOUNT_ADDRESS 字段,这个 address 就是我们在首次启动节点时候设置 keystore 密码的私钥所对应的地址,在节点提供服务之前,需要向这个地址转入 ETH,用于提交交易。
由于我们使用的是 Kovan 测试网络,我们可以使用MetaMask 给这个账户地址转入测试ETH。
创建 Oracle 合约
Oracle 合约是 Chainlink 节点在区块链上的桥头堡,它与用户合约直接进行沟通,接收用户的预言机请求,将请求结果通过用户注册的回调函数,写入到用户的合约中。
Oracle 合约无需自己编写,我们直接部署 Chainlink 开源的 Oracle 合约代码即可。如果用 remix 部署,只需新建一个包含下面两行代码的文件即可:
pragma solidity 0.4.24;
import "https://github.com/smartcontractkit/chainlink/evm-contracts/src/v0.4/Oracle.sol";
需要注意的是,Oracle 合约会暂时接受用户发起 Chainlink 请求是所支付的 LINK 费用,所以请务必妥善保存合约 owner 的私钥。
部署好 Oracle 合约之后,需要将开放权限给节点的地址,允许节点可以提交事务。如图所示:
创建 Jobs
按照官网提供例子,在节点中添加 Job(作业)。打开节点管理界面的 Jobs 标签页,点击 New Job 添加新的 Job,将每个类型的 Job 的 JSON 拷贝到文本框中,用刚刚部署好的 Oracle 合约地址,替换 JSON 中的 YOUR_ORACLE_CONTRACT_ADDRESS 字段。每创建成功一个 Job,都会生成一个 Job ID,在 Jobs 标签页可以找到所有的 Jobs。
测试Chainlink节点是否可用
通过remix 对节点进行测试
pragma solidity ^0.6.0;import "https://raw.githubusercontent.com/smartcontractkit/chainlink/develop/evm-contracts/src/v0.6/ChainlinkClient.sol";contract APIConsumer is ChainlinkClient {uint256 public ethereumPrice;address private oracle;bytes32 private jobId;uint256 private fee;constructor() public {setPublicChainlinkToken();// 填入我们刚刚部署好的oracle地址oracle = 0x0f6b361eAe488e7fdbeFF164AcD5Bae04c144574;// 填入我们刚刚创建的地址jobId = "01f4b9afcad747408dd0d58913b79d56";// 支付给Oracle的最小费用,可用在Configuration页面MINIMUM_CONTRACT_PAYMENT字段查看到fee = 1 * 10 ** 18; // 1 LINK}function requestEthereumPrice() public returns (bytes32 requestId) {Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);// 设置所要请求的API地址request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");// API返回结果的解析路径request.add("path", "USD");// 为去除小数点将结果乘以的倍数request.addInt("times", 100);// 发送请求return sendChainlinkRequestTo(oracle, request, fee);}function fulfill(bytes32 _requestId, uint256 _price) public recordChainlinkFulfillment(_requestId){ethereumPrice = _price;}
}
部署好用户合约之后,向用户合约转入 LINK,调用 requestEthereumPrice 方法,就可以测试我们的 Chainlink 预言机节点是否可以正常工作啦。
同时,通过节点平台可以查看到交易列表
基于eth测试网搭建Chainlink节点相关推荐
- local-network 2k 本地2k测试网搭建
local-network 2k 本地2k测试网搭建 一. 2k测试网 1. 下载源代码 2. 选择分支 3. 设置环境变量 4. 清理环境 5. 编译2k 6. 下载证明参数 7. 预密封两个 2K ...
- 基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算
IEEE15节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算 2.拓展功能: 可在该IEEE15节系统仿真模型上进 ...
- eos 测试网搭建,单节点,并使用命令行完成系统合约部署、账户创建、资产转账
学习任何的区块链,首先就需要了解其中的基本功能,而要了解基本功能当然是动手尝试一遍,但是在正式网中,很多功能是没办法测试的,或者测试成本比较高,所以就需要搭建一个测试网,可以对该测试网任意操作,并了解 ...
- 使用ETH测试网发布NFT流程
利用openzeppelin发布ERC-721 NFT 本文主要分享如何使用openzeppelin上面现成的erc721合约自动生成自己的NFT,本文使用rinkeby测试网进行发布,你只需要准备一 ...
- 基于BSC测试网收益聚合器Beefy协议的编译、测试、部署
前言 文章主要介绍了收益聚合器Beefy协议在币安智能链测试网网上的编译测试部署流程,以Pancake上的USDC-BUSD最新Curve版流动池的农场质押为例,详细介绍了完整的操作流程. 准备工作 ...
- 如何搭建Filecoin测试网挖矿节点 | 开发者专区系列01
此前,Filecoin开发团队公布了Filecoin开发者测试网源码,意味着专业开发者可以基于源码,参与测试网挖矿. 星际鑫航开发团队经过亲自编译.测试,将整个测试网挖矿节点搭建过程跑通.已经在测试网 ...
- 使用metamask获得测试网ETH
1.选择Ropsten测试网 2.选择购买 3.选择从测试水管中获得eth 然后点击request 1 eth from faucet ,然后我报了一个超时的错误 出现这种情况也不知道为什么,可能是因 ...
- Crust “方舟计划”激励测试网一触即发,我们准备好了!
Crust 提供了 Web3 生态系统的去中心化存储网络,支持包括 IPFS 在内的多种存储层协议,并对应用层提供接口.Crust 的技术栈还能够支持去中心化计算层.Crust 旨在构建一个重视数据隐 ...
- CESS 测试网上线!首个提供多元应用场景的去中心化存储网络
频繁的骚扰电话,不明所以的诈骗短信-日常生活中隐私泄露问题无处不在,谁泄露了个人隐私? 随着互联网的发展,网络安全和隐私保护越来越受到人们的重视.网络上个人信息遭到泄露的主要原因在于中心化的数据存储方 ...
最新文章
- linux下c md5函数
- linux内核经典书籍--Linux内核设计与实现
- Linux+CLion+cmake 动态链接库的使用
- 安装卡主_智能温室四周玻璃的安装学问还这么多
- 关于Cocos2d-x随机数的生成
- 发布Drools Workbench到Tomcat on Linux
- CSDN使用富文本编辑器为所发布的文章生成右侧目录
- 云络科技服务器管理基础架构
- live2d内嵌html,博客(网页)添加 Live2D 看板娘
- 伍德里奇 第6版 计量经济学导论_伍德里奇《计量经济学导论》(第6版)笔记和课后习题详解...
- 水声通信中适用的调制技术及分析(FSK、PSK、DPSK)
- Java-Aspose实现Word文字替换(本地储存或浏览器下载)
- java高级软件工程师 考试_Java高级软件工程师人才缺口巨大
- FTPserver 配置
- qiankun 2.x 运行时沙箱 源码分析
- Mtk WIFI常用调试命令
- android自动切换暗色,Android 适配深色模式的总结
- linux自带视频播放VLC,如何将VLC媒体播放器设置为默认视频播放器?
- YUV数据格式的转换(NV12ToI420)和旋转(旋转90度)
- cyk的小学数学题 小学数学