月亮链 月亮链
Ctrl+D收藏月亮链

INK:手把手教你测试Chainlink智能合约 -ODAILY_LINKBULL

作者:

时间:1900/1/1 0:00:00

由于智能合约的不可更改性,在部署之前对其进行彻底的测试是至关重要的。在编写自动化测试时,开发人员有几个选择。

1.Solidity测试

2.Javascript/python/其他语言测试

通常情况下,用JavaScript和Solidity对合约进行两种方式的测试是很有用的,因为大多数dApp都会以这种方式与合约交互,你可以从这个示例测试仓库中看到。另一方面,当你测试一个主要使用点来自另一个链上合约的合约/库时,最应该使用Solidity。

很明显,为了更加测试更加全面,请同时使用这两种方法。如果你有一个简单的智能合约,比如:

编写一些Solidity测试非常简单,例如:

国际证监会组织确认在本季度就加密货币的监管展开磋商:金色财经报道,国际证监会组织(IOSCO)确认计划在本季度(第二季度)就加密货币和数字资产的监管展开磋商,并在年底前提交最终报告。另一个工作组专注于 DeFi 监管,其咨询计划于今年第三季度进行,并在年底前提交最终报告。该时间是?IOSCO 2023/24 工作计划的一部分。[2023/4/7 13:49:27]

对于那些想要了解更多关于一般智能合约测试的人,这里有一些额外的来源,你可以查看。

-Ethereum.org

-Truffle

-HardhatandWaffle

您至少需要熟悉Truffle或HardHat,才能阅读本文档的其他内容。你也可以从我们之前的一些文章中学习如何使用Truffle部署和测试Chainlink智能合约。另外你需要明白单元测试和集成测试是不同的,它们各自有非常重要的功能。

Kraken向加拿大安大略省证券委员会提交预注册文件,承诺遵守更严格的规则:金色财经报道,加密交易所 Kraken 已向加拿大安大略省证券委员会提交了预注册承诺,并承诺遵守该国金融监管机构加拿大证券管理局 (CSA) 制定的更严格规定。Kraken 已为加拿大客户服务超过 10 年,并在加拿大拥有超过 250 名团队成员。自 2019 年以来,该交易所已在加拿大金融交易和报告分析中心(FINTRAC)注册为加拿大货币服务企业。[2023/3/30 13:35:55]

然而,当使用ChainlinkOracles和链上数据时,测试可能会变得有点棘手。一些传统的方法并不能完全覆盖每一个结果。在这篇文章中,我们将几乎只关注JavaScript测试,但如果你也想使用Solidity的方式做测试,这些方法也同样适用。

测试Chainlink智能合约的最简单方法

DeFiMoneyMarket(DMM)(是一个使用测试网来运行Chainlink测试的项目的例子。

测试Chainlink智能合约最简单的方法就是使用测试网!大多数项目会在主网之前部署到测试网上,但他们也可以不断重新部署来迭代他们的测试,因为测试网ETH是免费的。Kovan或Rinkeby上目前有很多Chainlink节点,pricefeeds,以及任何其他你要找的东西。在你的测试文件中,需要获得一些测试网的LINK和ETH。另一个简单的方法就是运行你自己的Chainlink节点,让它监控你正在运行的本地私有链。

NFT项目The Plague of Frogs将于3月24日迁移新合约并强制执行版税:金色财经报道,NFT项目The Plague of Frogs在官推宣布将于3月24日迁移新合约并强制执行版税,新的NFT将会被空投到持有旧The Plague of Frogs NFT的钱包中,且同样可以取消质押、转移和重新质押以获得相同的奖励,据悉强制执行的版税比例将不会高于10%。[2023/3/23 13:21:01]

与本地私有区块链相比,在测试网上运行测试并不是特别快。你还会面临触及faucet极限的可能。让我们看看如何在本地私有链测试你的Chainlink智能合约。

使用分叉

Gelato是一个使用分叉和Chainlink的项目例子。

ChainlinkPriceFeeds是Chainlink提供的最受欢迎的服务之一。PriceFeeds预言机网络聚合了来自去中心化的独立来源的数据,并在链上创建了一个真实的数据源。问题是,你如何测试你是否正确使用了这些价格数据?

-你是否部署自己的pricefeed?

-你是否直接忽略测试pricefeed?

-你是否完全跳过测试并祈祷你的dApp不会崩溃?

安全团队:一巨鲸在Curve上将1500万枚USDC兑为USDT:金色财经报道,派盾(PeckShield)监测显示,0x561f开头的某巨鲸地址在Curve上将1500万枚USDC兑换为了USDT。[2022/11/28 21:06:13]

现在,我们非常欢迎你做第三种选择,但我们不鼓励你这样做,尤其是测试它们其实是一件很容易的事情。我们需要做的就是将我们正在使用的链进行分叉。如果你之前没有使用过ChainlinkPriceFeeds,请务必查看我们的文档。本节的所有代码都可以在chainlink-hardhat代码仓库中找到。Hardhat是一个类似于Truffle的框架,但有很多不错的质量很好并且有一定的差异化。

假设我们有一个使用ChainlinkPriceFeeds的合同,看起来像这样:

美国银行调查结果显示,现在可能是投资高风险资产的好时机:金色财经消息,美国银行在7月8日至7月15日之间进行的月度基金经理调查显示,目前投资者极度悲观,对现金的偏好增加。与股票一样,比特币也显示出了复苏的迹象。今天早些时候,BTC突破了2.4万美元,为6月13日以来高点。

然而,对于极端的负面情绪是否意味着熊市触底,包括比特币在内的风险资产将迎来新一轮牛市,加密货币市场专家意见不一。

美国银行的调查有259名参与者参与,调查对象管理着7220亿美元资产。调查显示,基金经理在股票上的配置跌至2008年10月以来的最低水平,而现金持有量从一个月前的5.6%飙升至6.1%的21年高点,使风险敞口低于2008年雷曼兄弟破产后的水平。

此外,做多美元、做多石油和做空股票的交易非常密集,同时对滞胀的持续担忧和对经济衰退的预期增加。更重要的是,美国银行的牛熊指标(Bull and Bear Indicator)仍显示“最大看跌(max bearish)”。

流动性提供商Folkvang Trading的首席投资官Jeff Anderson表示,调查结果显示,像美元这样的避险资产的极端悲观和防御性头寸是一个相反的指标,它告诉你,现在可能是远离羊群、投资高风险资产的好时机。(CoinDesk)[2022/7/21 2:27:37]

首先,我们正在使用主网pricefeed地址,但请不要担心,我们是故意这样做的。通常,要与主网pricefeed互动,我们必须部署在主网上。但是实际上,我们可以在运行测试时分叉链,查看如果将合约部署在主网上的情况会是什么样子,而无需实际在主网上进行部署。使用HardHat的设置,我们只需将分叉的相关配置添加到hardhat.config.js文件中即可。

我们的hardhat.config.js文件如下所示:

您会看到我们的`hardhat`网络有一个`forking`密钥。这意味着,当我们在`hardhat`网络上部署脚本时,我们将首先派生RPC_URL中的内容,然后将其部署到该网络中。这对于测试非常有用,因为我们实际上可以将智能合约部署到主网的分叉版本中,并对其价格进行测试。

来尝试一下吧!

这将通过在分叉主网来测试我们的智能合约。Truffleteams还有一个功能,你可以分叉主网,并基于分叉的网络进行测试。

使用Mocks

Aave是一个使用mocks和Chainlink进行测试的项目的例子。

不幸的是,分叉主网来测试与ChainlinkOracles的交互是行不通的,这是因为我们没有任何ChainlinkOracles监控我们的分叉网络。所以我们经常需要寻找其他方法。测试具有依赖性的对象和服务并不是什么新鲜事,但在编写单元测试时可能会带来困难。一个好的解决方案是模拟所有依赖关系,并将测试仅仅集中在合约本身。

Mocking本质上是用更简单的对象代替复杂的对象,以模拟我们要做的事情的功能。这对于使用ChainlinkAPICall、ChainlinkVRF或任何Chainlink外部适配器的项目来说是非常棒的。通常情况下,工程师会在他们的测试文件夹中创建一个`mocks`文件,其中包含了所有的虚拟mocks。我们可以看到用这样的文件模拟一个ERC20的简单版本,它可以模拟我们在测试时与一个真实的ERC20一起工作。

一个更相关的mock将与模拟Chainlink消费者者一起使用,或者与ChainlinkOracle进行交互的智能合约。看起来像这样:

在这个Mock中,我们有`sendTweet`函数--在一个_真实的_Chainlink消费者合约中,它会向一个Chainlink节点发出ChainlinkAPI请求来"发送一条推特"。然而,在我们的mock中,我们只是发出一个日志,说明发送了一条tweet,这可以是一个简单的方式来虚构得到Chainlink节点的响应。你可以在tweetherrepo中看到所有这些模拟的操作。那个repo也使用了Truffle和Hardhat的组合,所以你可以看到这两者的良好配合。

你可以看到很多生产项目都在使用这种方法。例如,Aave就使用ChainlinkMocks来运行他们的测试。

使用助手来部署

最复杂的测试可以在trufflesmartcontractkitmock中找到,这是Chainlink工程师用来构建智能合约的首选工具之一。一旦你安装了Truffle,你可以通过打开一个新的repo,然后运行下面的命令,让你自己的盒子快速运转起来:

`truffleunboxsmartcontractkit/box`

一旦你安装好这个,你就会看到`MyContract_test.js`,它运行了所有你在调用ChainlinkAPI时想要覆盖的潜在场景。在ChainlinkTrufflerepo中查看它。

总结

测试Chainlink智能合约是确保你的代码在开发时保持高质量的好方法,上面的一系列选项让测试变得比以往任何时候都要简单。不要以为在测试中运行复杂的对象与彼此之间的测试太困难。当涉及到扩展你的dApp并构建一些惊人的东西时,集成测试是至关重要的。

对于那些希望开始使用这些神奇工具进行构建的人来说,一定要点击示例中的链接,或者直接前往Chainlink文档。你会发现你需要开始并成为Solidity和区块链工程大师的一切。

标签:INKLINKCHANLINKlink币未来价格预测LINKBULLsimplechainChainLink

莱特币最新价格热门资讯
EFI:走进DeFi真实世界-ODAILY_区块链卡链是什么意思

说起2020年上半年币圈的热点,那一定是DeFi的大爆发。目前,DeFi总市值为18,198,080,713美元,总锁仓价值为US$14,797,330,432.

1900/1/1 0:00:00
SER:Serum简报:链上质押即将上线-ODAILY_Serve

05Solong—Chrome浏览器的Serum/Solana插件 https://solongwallet.com/有很多用户一直很关心是否会出管理钱包的浏览器插件,好消息是.

1900/1/1 0:00:00
DNS:BitDNS:链接信息互联网与价值互联网-ODAILY_区块链

12月24日,“链客Talk”邀请BitDNS俄罗斯市场负责人Benjiamin来到链客直播间,给大家分享了“BitDNS—链接信息互联网与价值互联网”这一话题.

1900/1/1 0:00:00
BTC:行情分析:比特币毫无刹车迹象,机构疯狂买买买 -ODAILY_USDT

行业要闻1、新加坡央行高管:新加坡央行正专注于开发批发CBDC2、OCC推动美国银行向加密货币企业开放3、美国资产管理公司DAiM推出比特币401(k)计划4、灰度以太坊信托基金(ETHE)获准.

1900/1/1 0:00:00
HBT:HBTC Chain与Ti-Labs达成战略合作,共同推动Cosmos生态发展 -ODAILY_BTC

2020年12月9日,HBTCChain宣布与Ti-Labs达成战略合作并加入Ti-Labs生态共建。此次合作将促进双方资源共享、技术交流、区块链技术应用和产业化发展,推动Cosmos生态发展.

1900/1/1 0:00:00
CON:Conflux中:我这有个好东西,您掌掌眼?-ODAILY_LUX

“捆拆绝品”“金光蓝鹤”“拆刀”“放漏”……是不是被这些“黑话”震慑住了?这些对话不是发生在潘家园古玩市场里,也不是在看《古董局中局》,这像模像样的拍卖会.

1900/1/1 0:00:00