買以太坊 買以太坊
Ctrl+D 買以太坊
ads

INK:手把手教你測試Chainlink智能合約 -ODAILY_CHA

Author:

Time:1900/1/1 0:00:00

由于智能合約的不可更改性,在部署之前對其進行徹底的測試是至關重要的。在編寫自動化測試時,開發人員有幾個選擇。

1.Solidity測試

2.Javascript/python/其他語言測試

通常情況下,用JavaScript和Solidity對合約進行兩種方式的測試是很有用的,因為大多數dApp都會以這種方式與合約交互,你可以從這個示例測試倉庫中看到。另一方面,當你測試一個主要使用點來自另一個鏈上合約的合約/庫時,最應該使用Solidity。

很明顯,為了更加測試更加全面,請同時使用這兩種方法。如果你有一個簡單的智能合約,比如:

編寫一些Solidity測試非常簡單,例如:

SHIB巨鯨將4萬億枚SHIB發送至8個新錢包:金色財經報道,據Spot On Chain監測,SHIB巨鯨0x140在休眠157天后醒來,在大約16和2小時前將4萬億枚SHIB(3000萬美元)發送至8個新錢包。值得注意的是,這只鯨魚曾在2020年用37.81枚ETH(約1.25萬美元)購買了103萬億SHIB,峰值時價值高達81.6億美元。[2023/7/13 10:52:01]

對于那些想要了解更多關于一般智能合約測試的人,這里有一些額外的來源,你可以查看。

-Ethereum.org

-Truffle

-HardhatandWaffle

您至少需要熟悉Truffle或HardHat,才能閱讀本文檔的其他內容。你也可以從我們之前的一些文章中學習如何使用Truffle部署和測試Chainlink智能合約。另外你需要明白單元測試和集成測試是不同的,它們各自有非常重要的功能。

NFT忠誠度解決方案提供商Cohort完成320萬歐元種子輪融資:2月1日消息,總部位于法國巴黎的 NFT 忠誠度解決方案提供商 Cohort 宣布完成 320 萬歐元種子輪融資,IRIS、Axeleo Capital、Kima Ventures 和 3founders 領投,Thibaud Elzière、Quentin Nickmans、Amaury Sepulchre、以及 Guillaume Princen (Stripe)、Brian O'Hagan (Sorare) 等天使投資人參投。[2023/2/1 11:41:21]

然而,當使用ChainlinkOracles和鏈上數據時,測試可能會變得有點棘手。一些傳統的方法并不能完全覆蓋每一個結果。在這篇文章中,我們將幾乎只關注JavaScript測試,但如果你也想使用Solidity的方式做測試,這些方法也同樣適用。

測試Chainlink智能合約的最簡單方法

DeFiMoneyMarket(DMM)(是一個使用測試網來運行Chainlink測試的項目的例子。

測試Chainlink智能合約最簡單的方法就是使用測試網!大多數項目會在主網之前部署到測試網上,但他們也可以不斷重新部署來迭代他們的測試,因為測試網ETH是免費的。Kovan或Rinkeby上目前有很多Chainlink節點,pricefeeds,以及任何其他你要找的東西。在你的測試文件中,需要獲得一些測試網的LINK和ETH。另一個簡單的方法就是運行你自己的Chainlink節點,讓它監控你正在運行的本地私有鏈。

密碼管理平臺LastPass建議主密碼未遵循默認值的用戶更改密碼:金色財經報道,LastPass稱自2018年以來,其要求主密碼至少12個字符,可極大地降低暴力猜測密碼的能力。如果用戶的主密碼不遵循上述默認值,LastPass建議用戶考慮通過更改存儲的網站密碼來最大限度地降低風險。[2022/12/25 22:06:38]

與本地私有區塊鏈相比,在測試網上運行測試并不是特別快。你還會面臨觸及faucet極限的可能。讓我們看看如何在本地私有鏈測試你的Chainlink智能合約。

使用分叉

Gelato是一個使用分叉和Chainlink的項目例子。

ChainlinkPriceFeeds是Chainlink提供的最受歡迎的服務之一。PriceFeeds預言機網絡聚合了來自去中心化的獨立來源的數據,并在鏈上創建了一個真實的數據源。問題是,你如何測試你是否正確使用了這些價格數據?

-你是否部署自己的pricefeed?

-你是否直接忽略測試pricefeed?

-你是否完全跳過測試并祈禱你的dApp不會崩潰?

現在,我們非常歡迎你做第三種選擇,但我們不鼓勵你這樣做,尤其是測試它們其實是一件很容易的事情。我們需要做的就是將我們正在使用的鏈進行分叉。如果你之前沒有使用過ChainlinkPriceFeeds,請務必查看我們的文檔。本節的所有代碼都可以在chainlink-hardhat代碼倉庫中找到。Hardhat是一個類似于Truffle的框架,但有很多不錯的質量很好并且有一定的差異化。

Celsius對KeyFi提起反訴,指控后者涉嫌盜竊Celsius資產:金色財經報道,Celsius周二對KeyFi及其首席執行官Jason Stone提起反訴,指控被告從Celsius竊取財產,并要求賠償和補償。Celsius在2020年收購了KeyFi的部分股權。Celsius稱“他們不僅無能,而且還是小偷”。

Celsius指出,Stone和公司利用Tornado Cash來掩蓋他們盜竊資產留下的痕跡。Celsius表示,僅因過失而損失的資金就價值數千萬,而被盜的資金可能價值數千萬以上。

7月初,KeyFi和Stone對Celsius提起訴訟,指責該公司操縱加密貨幣市場,并缺乏任何會計控制來保護消費者的存款。(CoinDesk)[2022/8/24 12:44:12]

假設我們有一個使用ChainlinkPriceFeeds的合同,看起來像這樣:

Animoca Brands子公司的區塊鏈賽車游戲獲Epic Games的資金支持:金色財經報道,Animoca Brands子公司,澳大利亞獨立游戲開發商Grease Monkey Games已獲得游戲巨頭Epic Games的資金支持,以開發新的基于區塊鏈的賽車游戲Torque Drift 2。

根據Animoca Brands 8月18日的公告 ,Grease Monkey Games從Epic MegaGrant項目中獲得資金,這將使該公司能夠制作出迄今為止最身臨其境和逼真的賽車游戲。(Cointelegraph)[2022/8/19 12:35:29]

首先,我們正在使用主網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和區塊鏈工程大師的一切。

Tags:INKChainLINKCHAneuralink幣預售ChainBingLINKS Tokentruelovechaincn

幣安app下載
PRO:“與時共創”2020金色財經年度榜單全球征集-ODAILY_ACK

由金色財經發起“與時共創·2020年度榜單獎項征集”旨在表彰那些2020年度表現卓越、成長快速、勇于創新、突破價值、最具未來潛力的行業先鋒.

1900/1/1 0:00:00
CAR:牛市迎來調整,主流幣操作建議-ODAILY_The Transplant Coin

投資千萬條,風險第一條;策略千百種,哪個適合我;思路沒跟上,踏空兩行淚。關注談喻凱,精選全球最準行情分析,消息面,技術面為你指引解讀,帶你把握行情,瞄準良機,穩健交易.

1900/1/1 0:00:00
區塊鏈:2020年區塊鏈云算力市場,一半是海水一半是火焰-ODAILY_比特幣

序言: 在大多數年輕人的理解中,區塊鏈是一個可以讓人快速致富的地方。特別是通過比特幣、以太坊等造富神話加持后.

1900/1/1 0:00:00
BTC:早間行情分析:比特幣盤整,以太坊猛拉-ODAILY_有個朋友比特幣賺了2個億

昨日開盤時趁著前日大漲的余韻,繼續向上沖擊了一波,可是并沒有突破16000整數關口便開始回調,回調持續到今日凌晨,最低時觸及15180附近,800點左右幅度的回調,隨后反彈.

1900/1/1 0:00:00
SER:Serum簡報:流動性池、Serum Swap更新及MAPS預告-ODAILY_USHI

歡迎回到最新一期的Serum簡報!之前,我們介紹了Serum生態體系中的一些激動人心的發展情況——新項目接連露面,正式宣布他們在Serum上開發的內容.

1900/1/1 0:00:00
BTC:行情研究:比特幣總體指標看漲,但將面臨階段性回調 -ODAILY_BAT

BAT近期形態 BAT最近出現了兩個形態。第一個是下降楔形,第二個是下降三角形形態。從下降楔形來看BAT完成了一個積極突破。突破之后形成了下降三角形,因為BAT盤整期還沒有結束.

1900/1/1 0:00:00
ads