chainlink是领先的区块链项目之一,它构建了第一个为智能合约提供外部数据的去中心化预言机网络。truffle通过提供强大的开发框架,帮助智能合约开发人员创建,测试和部署智能合约。chainlink在其的博文中表示,他们的chainlink truffle box得到了一些重大的升级!如果你有幸参加了trufflecon 2019,那么你已经看到了这些改进,同时也感谢chainlink的thomas hodges所带来的演讲。如果您想开始开发您自己的chainlink智能合约,您可以按照此处的指南获取chainlink的truffle box。
本文将从truffle scripts开始展示这些全新的产品。truffle scripts创建了一种更方便的与合约交互的方法,为合约转入link,从而可以请求数据,并且在读取合同的数据时只用三个命令。为了演示此功能,我们首先需要设置我们的环境变量:mnemonic和rpc_url。
使用(以太坊)区块链需要支持该链的钱包,其中最受欢迎的选择之一是metamask。您可以非常方便的在几分钟之内拥有自己的以太坊钱包,轻松地与各种dapp交互。在帐户生成期间,您将看到您的秘密12字种子短语,称为助记词。(请不要与任何人您的助记词;如果有人知道你的助记词,他们将会获取到你的地址和私钥)。请务必将此助记词存储在安全的地方,因为稍后我们还将要用到它来完成我们的示例。
此外,您还需要为metamask钱包提供测试网络ropsten上的link和eth资金,以便为ropsten ethereum testnet上的交易提供交易费用。
注意:从测试水龙头为您的帐户转入资金时,请确保从默认的以太坊主网络切换到ropsten测试网络,以正确查看您在ropsten测试网络上的资金。您可以通过etherscan跟踪在ropsten testnet上进行的任何交易。
我们的第二个环境变量将需要(以太坊客户端的)rpc url。一些流行的rpc连接服务包括infura,linkpool和fiews。在建立有效的rpc连接和向地址转入资金后,您就可以将智能合约部署到测试网络上了。
上面显示的是将metamask钱包链接到truffle所需的环境变量,可以在truffle-config.js中找到。
获得所需的所有数据后,可以通过终端命令设置环境变量:
export rpc_url=your_url_here export mnemonic=’your 12 words here’
部署
我们现在准备在公共测试网络上部署我们的智能合约。
首先,运行命令:
npm run migrate:live
这将编译所有智能合约,然后开始部署它们。
注意:您可能会遇到chainlink合约的一些编译警告。这只是因为link token最初部署的是较旧版本的solidity。鉴于此合约仅在您运行测试时部署,因此可以忽略这些警告。
我们的一个合约部署的控制台输出。这个交易可以在这里找到。
部署我们的migrations和mycontract花费了我们eth,这就是为什么我们需要提前从水龙头中转入资金。现在我们的合约已经部署,我们可以利用三个帮助脚本为link(我们从chainlink水龙头获得的)提供mycontract,创建请求和读取状态。
这是位于脚本目录中的3个帮助脚本,用来与我们的合约进行交互:
fund-contract.js
request-data.js
read-contract.js
可以通过从npx truffle exec调用它们。首先,我们必须为合约转入link资金,这可以通过运行以下命令来完成:
npx truffle exec scripts/fund-contract.js --network live
部署后,输出显示我们的合约地址以及交易地址。我们也可以在ropsten浏览器上查看。
请注意,完成后,在交易过程中支付了1个link,表明我们的合约已得到资金。接下来,我们现在可以通过运行以下命令来请求合同中的数据:
npx truffle exec scripts/request-data.js --network live
这是您发出请求在chainlink浏览器中的展示(在我们的示例中,我们使用ropsten,但它对rinkeby,kovan和mainnet也同样适用)。正如您所见,chainlink节点接收了我们的请求,并在执行作业之前等待3个块确认。现在我们准备读取chainlink节点给我们回复的合约状态,由履约交易表示(以红色突出显示)。
最后,为了读取数据,我们运行了read-contract脚本。特别需要说明的是,这个操作会运行得很快,因为我们没有创建交易,我们只是阅读智能合约的当前状态。
npx truffle exec scripts/read-contract.js --network live
在阅读数据时注意我们的输出,我们得到一个数字,以usd * 100显示link的当前价格(本文写作时该值为22094)。这是由于我们的智能合约request-data.js中指定的倍数。
_request-data.js。truffle_cl_box_times是一个环境变量,用于覆盖默认值100。此值用于处理数据的精度(在这种这个例子中是,以美元为单位的eth价格),因为solidity无法处理小数。这些值可以根据您的实际情况来更改。
得益于truffle的强大功能,开发智能合约从未如此简单。我们希望您喜欢使用我们的chainlink truffle box,让您可以在网络上进行完整的测试,部署和交互合约。
来源:chainlink资讯
基于线性传感器IC的霍尔效应集成电路系统分析
大模型入局机器人领域 机器人行业将迎新机遇
研究量子力学三种主要方法
485总线单点对多点常见问题分析
解析中国激光电视崛起之路:中国激光电视已经成为了行业领跑者
如何开发一个属于自己的Chainlink智能合约
Tailor Brands利用机器学习实现自动化的设计,获1550万美元B轮融资
“两免三减半”!国务院发文促进集成电路业发展
[图文]自动干手器电路图
小米智能家居-生态链,如何加盟解析!
LGD为什么又重启中国LCD模块工厂
MAX6652监控系统结合电压监测与温度传感-MAX6652
上海先楫半导体发布微控制器HPM6000系列,采用晶心AndesCore® 双D45内核
可3D打印的医用解剖数据,可解决医疗难题
荣耀10青春版评测 内外双修
7月16日:无线充电热/我国首条OGS触控屏产线
2019年第三季度中国市场智能手机销量较上一季度环比下降了7.5%
改装汽车电路有哪些危害?
IC预测:今年半导体资本支出将首超千亿美元
自连嵌入式无线升级方案为医院赋能更舒适就医体验