基于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节点相关推荐

  1. local-network 2k 本地2k测试网搭建

    local-network 2k 本地2k测试网搭建 一. 2k测试网 1. 下载源代码 2. 选择分支 3. 设置环境变量 4. 清理环境 5. 编译2k 6. 下载证明参数 7. 预密封两个 2K ...

  2. 基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算

    IEEE15节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE15节点仿真模型,对电力系统进行潮流计算 2.拓展功能: 可在该IEEE15节系统仿真模型上进 ...

  3. eos 测试网搭建,单节点,并使用命令行完成系统合约部署、账户创建、资产转账

    学习任何的区块链,首先就需要了解其中的基本功能,而要了解基本功能当然是动手尝试一遍,但是在正式网中,很多功能是没办法测试的,或者测试成本比较高,所以就需要搭建一个测试网,可以对该测试网任意操作,并了解 ...

  4. 使用ETH测试网发布NFT流程

    利用openzeppelin发布ERC-721 NFT 本文主要分享如何使用openzeppelin上面现成的erc721合约自动生成自己的NFT,本文使用rinkeby测试网进行发布,你只需要准备一 ...

  5. 基于BSC测试网收益聚合器Beefy协议的编译、测试、部署

    前言 文章主要介绍了收益聚合器Beefy协议在币安智能链测试网网上的编译测试部署流程,以Pancake上的USDC-BUSD最新Curve版流动池的农场质押为例,详细介绍了完整的操作流程. 准备工作 ...

  6. 如何搭建Filecoin测试网挖矿节点 | 开发者专区系列01

    此前,Filecoin开发团队公布了Filecoin开发者测试网源码,意味着专业开发者可以基于源码,参与测试网挖矿. 星际鑫航开发团队经过亲自编译.测试,将整个测试网挖矿节点搭建过程跑通.已经在测试网 ...

  7. 使用metamask获得测试网ETH

    1.选择Ropsten测试网 2.选择购买 3.选择从测试水管中获得eth 然后点击request 1 eth from faucet ,然后我报了一个超时的错误 出现这种情况也不知道为什么,可能是因 ...

  8. Crust “方舟计划”激励测试网一触即发,我们准备好了!

    Crust 提供了 Web3 生态系统的去中心化存储网络,支持包括 IPFS 在内的多种存储层协议,并对应用层提供接口.Crust 的技术栈还能够支持去中心化计算层.Crust 旨在构建一个重视数据隐 ...

  9. CESS 测试网上线!首个提供多元应用场景的去中心化存储网络

    频繁的骚扰电话,不明所以的诈骗短信-日常生活中隐私泄露问题无处不在,谁泄露了个人隐私? 随着互联网的发展,网络安全和隐私保护越来越受到人们的重视.网络上个人信息遭到泄露的主要原因在于中心化的数据存储方 ...

最新文章

  1. linux下c md5函数
  2. linux内核经典书籍--Linux内核设计与实现
  3. Linux+CLion+cmake 动态链接库的使用
  4. 安装卡主_智能温室四周玻璃的安装学问还这么多
  5. 关于Cocos2d-x随机数的生成
  6. 发布Drools Workbench到Tomcat on Linux
  7. CSDN使用富文本编辑器为所发布的文章生成右侧目录
  8. 云络科技服务器管理基础架构
  9. live2d内嵌html,博客(网页)添加 Live2D 看板娘
  10. 伍德里奇 第6版 计量经济学导论_伍德里奇《计量经济学导论》(第6版)笔记和课后习题详解...
  11. 水声通信中适用的调制技术及分析(FSK、PSK、DPSK)
  12. Java-Aspose实现Word文字替换(本地储存或浏览器下载)
  13. java高级软件工程师 考试_Java高级软件工程师人才缺口巨大
  14. FTPserver 配置
  15. qiankun 2.x 运行时沙箱 源码分析
  16. Mtk WIFI常用调试命令
  17. android自动切换暗色,Android 适配深色模式的总结
  18. linux自带视频播放VLC,如何将VLC媒体播放器设置为默认视频播放器?
  19. YUV数据格式的转换(NV12ToI420)和旋转(旋转90度)
  20. cyk的小学数学题 小学数学

热门文章

  1. 2021Java面试心得,Java校招面试指南
  2. 企微SCRM软件群积分功能,助力企业精细化运营私域
  3. 盲盒app制作流程方案
  4. 利用python中pdfplumber库提取PDF文件中文字
  5. SOLIDWORKS如何利用已有的图片做草图生成实体?
  6. PyQt写的简单图像标注工具
  7. Axure中继器的使用
  8. 纯HTML实现关闭按钮
  9. NAT(网络地址转换)小实验
  10. android usb调试工具,USB调试怎么打开 各版本安卓手机打开USB调试模式方法