由于智能合約的不可更改性,在部署之前對其進行徹底的測試是至關重要的。在編寫自動化測試時,開發人員有幾個選擇。
1.Solidity測試
2.Javascript/python/其他語言測試
通常情況下,用JavaScript和Solidity對合約進行兩種方式的測試是很有用的,因為大多數dApp都會以這種方式與合約交互,你可以從這個示例測試倉庫中看到。另一方面,當你測試一個主要使用點來自另一個鏈上合約的合約/庫時,最應該使用Solidity。
很明顯,為了更加測試更加全面,請同時使用這兩種方法。如果你有一個簡單的智能合約,比如:
編寫一些Solidity測試非常簡單,例如:
在ARB空投后的幾周內Arbitrum上的獨立用戶和交易數量平均保持在較高水平:金色財經報道,Nansen數據顯示,在ARB空投后的幾周內,與空投前的水平相比,Arbitrum上的獨立用戶和交易數量平均保持在較高水平。Arbitrum于3月23日空投了其ARB代幣,這將其交易量推至歷史新高。一天后,網絡上的新用戶數量創下歷史新高。
數據顯示,Arbitrum上的新用戶數量從歷史最高點開始緩慢下降,但仍高于Optimism。事實上,Abritrum一直在與以太坊競爭,經常在用戶和交易數量方面翻轉第二大區塊鏈。[2023/6/15 21:39:12]
對于那些想要了解更多關于一般智能合約測試的人,這里有一些額外的來源,你可以查看。
-Ethereum.org
-Truffle
-HardhatandWaffle
您至少需要熟悉Truffle或HardHat,才能閱讀本文檔的其他內容。你也可以從我們之前的一些文章中學習如何使用Truffle部署和測試Chainlink智能合約。另外你需要明白單元測試和集成測試是不同的,它們各自有非常重要的功能。
元宇宙房產價格崩盤,林俊杰虛擬地產浮虧91%:4月9日消息,目前全球最大的元宇宙地產銷售平臺Decentraland的成交價中位數已從2022年的45美元跌至5美元,下跌近90%。此前2022年11月,林俊杰花12.3萬美元在Decentraland購買的3塊虛擬地產,目前價值僅為約1萬美元,浮虧91%。[2023/4/9 13:52:14]
然而,當使用ChainlinkOracles和鏈上數據時,測試可能會變得有點棘手。一些傳統的方法并不能完全覆蓋每一個結果。在這篇文章中,我們將幾乎只關注JavaScript測試,但如果你也想使用Solidity的方式做測試,這些方法也同樣適用。
測試Chainlink智能合約的最簡單方法
DeFiMoneyMarket(DMM)(是一個使用測試網來運行Chainlink測試的項目的例子。
測試Chainlink智能合約最簡單的方法就是使用測試網!大多數項目會在主網之前部署到測試網上,但他們也可以不斷重新部署來迭代他們的測試,因為測試網ETH是免費的。Kovan或Rinkeby上目前有很多Chainlink節點,pricefeeds,以及任何其他你要找的東西。在你的測試文件中,需要獲得一些測試網的LINK和ETH。另一個簡單的方法就是運行你自己的Chainlink節點,讓它監控你正在運行的本地私有鏈。
Defrost Finance否認1200萬美元的漏洞利用是內部“Rug Pull”:金色財經報道,基于Avalanche的DeFi協議Defrost Finance否認1200萬美元的漏洞利用是內部“Rug Pull”。區塊鏈安全公司DeFiYieldSec此前分析稱,此次漏洞利用是團隊內部人員所致,因為Defrost Finance多重簽名錢包的創建者與在漏洞利用發生前要求更換oracle的地址相同。Defrost Finance堅決否認這些說法,稱它們是“誹謗和不準確的”,并表示它在向黑客提供賞金后于12月26日收回了所有被盜資金,所有受影響的用戶都將得到補償。[2022/12/31 22:17:27]
與本地私有區塊鏈相比,在測試網上運行測試并不是特別快。你還會面臨觸及faucet極限的可能。讓我們看看如何在本地私有鏈測試你的Chainlink智能合約。
使用分叉
Gelato是一個使用分叉和Chainlink的項目例子。
ChainlinkPriceFeeds是Chainlink提供的最受歡迎的服務之一。PriceFeeds預言機網絡聚合了來自去中心化的獨立來源的數據,并在鏈上創建了一個真實的數據源。問題是,你如何測試你是否正確使用了這些價格數據?
CHZ巨鯨將1400萬枚CHZ轉至九個地址:12月19日消息,Lookonchain監測數據顯示,0x4da2開頭的CHZ巨鯨地址將總計1400萬枚CHZ轉移到九個地址。此前該地址曾向九個地址轉入2000萬枚CHZ,并最終轉入交易所。
據此前報道,12月9日,0xScope發推稱,過去3天Chiliz(CHZ)最大的外部賬戶(EOA)持有者將2000萬枚CHZ轉移到不同的EOA地址,然后存入幣安和OKX。在此期間CHZ代幣價格下跌12%。當時該地址持有6.79億枚CHZ(占總供應量的7.64%),在CHZ EOA持有者中仍排名第一。[2022/12/19 21:54:53]
-你是否部署自己的pricefeed?
-你是否直接忽略測試pricefeed?
-你是否完全跳過測試并祈禱你的dApp不會崩潰?
現在,我們非常歡迎你做第三種選擇,但我們不鼓勵你這樣做,尤其是測試它們其實是一件很容易的事情。我們需要做的就是將我們正在使用的鏈進行分叉。如果你之前沒有使用過ChainlinkPriceFeeds,請務必查看我們的文檔。本節的所有代碼都可以在chainlink-hardhat代碼倉庫中找到。Hardhat是一個類似于Truffle的框架,但有很多不錯的質量很好并且有一定的差異化。
CoinShares:比特幣在2022年剩余時間內缺少上漲的動力:金色財經報道,數字資產管理公司CoinShares表示,至少在今年剩余時間內,比特幣(BTC)不太可能出現上漲的動力。CoinShares在一份報告中表示,美元指數(DXY)在其數月的??反彈中可能還有更多的燃料。一個高的DXY通常意味著像比特幣這樣的大多數風險資產有下行壓力。
CoinShares認為:“很明顯,至少在目前,美國聯邦儲備委員會(FED)并不像許多人在最近的杰克遜霍爾活動中所預期的那樣,即將轉向較寬松的貨幣政策立場。這對美元和對利率敏感的資產,如股票和比特幣產生了直接影響。”(The Daily Hodl)[2022/9/24 7:19:06]
假設我們有一個使用ChainlinkPriceFeeds的合同,看起來像這樣:
首先,我們正在使用主網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:INKHAIChainLINKtronlink錢包官網2.0地址JobchainIdea Chain CoinALINK幣
*算法穩定幣+YFII=?算法穩定幣能為YFII帶來什么?*北京時間2020年12月29日20:00~20:45算法穩定幣OlympusDAO與Treasure NFT達成合作:12月22日消息.
1900/1/1 0:00:002020年,我們見證了全球區塊鏈行業進一步發展,區塊鏈及數字貨幣的概念已經走進主流社會,行業基本面已經發生了巨大變化。支付是金融的基礎,更是一切商業及社會運作不可缺少的重要的環節.
1900/1/1 0:00:00今年火了很多概念,IPFS、DAO、DeFi、NFT等紛紛涌入人們的視野中,本篇文章我為大家講解一下這幾個概念究竟是什么,百度上能搜索到的概念我就不說了.
1900/1/1 0:00:0010月24日,第一屆區塊鏈人才培養與產業融合發展峰會在成都信息工程大學成功舉辦,相關領導、專家、學者圍繞“鏈接產學,聚變未來”主題共話區塊鏈的發展.
1900/1/1 0:00:00財經消息面: 美東時間12月11日,灰度信托持倉數據變化如下:灰度BTC信托持倉量增加7615.64枚,總持倉量為561132.75BTC;灰度ETH信托持倉量減少201.59枚.
1900/1/1 0:00:00一不小心比特幣一度接近了16000美元對的位置。這個價格也是比特幣在2018年1月以來的新高。從歷史看,比特幣曾在2017年12月達到過19875美元.
1900/1/1 0:00:00