当前位置:首页 > 物联网 > 区块链
[导读] Chainlink是领先的区块链项目之一,它构建了第一个为智能合约提供外部数据的去中心化预言机网络。Truffle通过提供强大的开发框架,帮助智能合约开发人员创建,测试和部署智能合约。Chain

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资讯

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭