由于智能合約的不可更改性,在部署之前對其進行徹底的測試是至關重要的。在編寫自動化測試時,開發人員有幾個選擇。
1.Solidity測試
2.Javascript/python/其他語言測試
通常情況下,用JavaScript和Solidity對合約進行兩種方式的測試是很有用的,因為大多數dApp都會以這種方式與合約交互,你可以從這個示例測試倉庫中看到。另一方面,當你測試一個主要使用點來自另一個鏈上合約的合約/庫時,最應該使用Solidity。
很明顯,為了更加測試更加全面,請同時使用這兩種方法。如果你有一個簡單的智能合約,比如:
編寫一些Solidity測試非常簡單,例如:
去中心化交易平臺KINE啟動500萬美元專項賠付基金:據官方消息,公告稱,去中心化交易平臺Kine Protocol于2023年8月10日正式上線超級盲盒,直接火爆全球,瞬時激增注冊流量數百倍,造成網絡擁擠短暫卡頓,KINE第一時間啟動5000000$專項賠付基金給予虧損用戶全額補償,為用戶的資金安全保駕護航。[2023/8/12 16:22:23]
對于那些想要了解更多關于一般智能合約測試的人,這里有一些額外的來源,你可以查看。
-Ethereum.org
-Truffle
-HardhatandWaffle
您至少需要熟悉Truffle或HardHat,才能閱讀本文檔的其他內容。你也可以從我們之前的一些文章中學習如何使用Truffle部署和測試Chainlink智能合約。另外你需要明白單元測試和集成測試是不同的,它們各自有非常重要的功能。
Twitter:從2月9日開始公司將不再支持免費訪問Twitter API:金色財經報道,Twitter表示,從2月9日開始,公司將不再支持免費訪問Twitter API,取而代之的是付費的基本層(Basic Tier)。[2023/2/2 11:43:25]
然而,當使用ChainlinkOracles和鏈上數據時,測試可能會變得有點棘手。一些傳統的方法并不能完全覆蓋每一個結果。在這篇文章中,我們將幾乎只關注JavaScript測試,但如果你也想使用Solidity的方式做測試,這些方法也同樣適用。
測試Chainlink智能合約的最簡單方法
DeFiMoneyMarket(DMM)(是一個使用測試網來運行Chainlink測試的項目的例子。
測試Chainlink智能合約最簡單的方法就是使用測試網!大多數項目會在主網之前部署到測試網上,但他們也可以不斷重新部署來迭代他們的測試,因為測試網ETH是免費的。Kovan或Rinkeby上目前有很多Chainlink節點,pricefeeds,以及任何其他你要找的東西。在你的測試文件中,需要獲得一些測試網的LINK和ETH。另一個簡單的方法就是運行你自己的Chainlink節點,讓它監控你正在運行的本地私有鏈。
以太坊推出的“Shandong”測試網將對執行智能合約的EVM進行更改:金色財經報道,10月17日,以太坊的核心開發人員推出了“Shandong”測試網,用于區塊鏈網絡的上海升級。上海升級預計將在2023年進行。這將是以太坊自9月合并以來的首次升級。此次升級對執行智能合約的技術以太坊虛擬機(EVM)進行了更改。另一個預期的提議將允許通過信標鏈提取質押的ETH和獲得的獎勵。目前,持有ETH的驗證者無法直接提取資金。此外,升級還將引入對第2層協議的更改,通過均衡塊大小和提高網絡中的呼叫數據效率來降低gas價格。[2022/10/19 16:30:10]
與本地私有區塊鏈相比,在測試網上運行測試并不是特別快。你還會面臨觸及faucet極限的可能。讓我們看看如何在本地私有鏈測試你的Chainlink智能合約。
使用分叉
Gelato是一個使用分叉和Chainlink的項目例子。
ChainlinkPriceFeeds是Chainlink提供的最受歡迎的服務之一。PriceFeeds預言機網絡聚合了來自去中心化的獨立來源的數據,并在鏈上創建了一個真實的數據源。問題是,你如何測試你是否正確使用了這些價格數據?
-你是否部署自己的pricefeed?
埃森哲:亞洲52%的富裕投資者持有某種類型的數字資產:6月6日消息,咨詢公司埃森哲(Accenture)周一公布的一項行業調查表明:“目前,亞洲52%的富裕投資者持有某種類型的數字資產。埃森哲的研究表明,到2022年底,這一比例可能達到73%。”埃森哲說:“在接受調查的投資者投資組合中,數字資產占7%,是亞洲第五大資產類別,超過了它們在外幣、大宗商品或收藏品上的配置。然而,三分之二的財富管理公司沒有提供數字資產的計劃。”
這些調查結果是埃森哲(Accenture)關于亞洲財富管理行業未來的報告的一部分,該報告基于兩項調查——一項是對3200名投資者的調查,另一項是對亞洲財富管理公司500多名財務顧問的調查。調查于2021年12月和2022年1月進行。(路透社)[2022/6/6 4:06:12]
-你是否直接忽略測試pricefeed?
-你是否完全跳過測試并祈禱你的dApp不會崩潰?
現在,我們非常歡迎你做第三種選擇,但我們不鼓勵你這樣做,尤其是測試它們其實是一件很容易的事情。我們需要做的就是將我們正在使用的鏈進行分叉。如果你之前沒有使用過ChainlinkPriceFeeds,請務必查看我們的文檔。本節的所有代碼都可以在chainlink-hardhat代碼倉庫中找到。Hardhat是一個類似于Truffle的框架,但有很多不錯的質量很好并且有一定的差異化。
Sturdy Finance將于5月底上線以太坊并支持Curve LP作為抵押品:金色財經消息,無息借貸協議Sturdy Finance宣布將于5月底上線以太坊,用戶屆時可以通過抵押Curve LP進行無息貸款。Sturdy Finance采用無息借貸模型,不收取借款人利息,而是將其抵押品投入DeFi并將收益支付給貸方。
此前報道,DeFi借貸協議Sturdy完成390萬美元融資,Pantera領投。[2022/5/19 3:27:59]
假設我們有一個使用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:INKLINKAINChainLinkdatalinkbasewinklink幣如何blockchainBusiness官網chainlink幣怎么挖
對于區塊鏈行業從業者來說,不管是神龍見首不見尾的中本聰,還是年少成名的V神,好像每個人都能講上幾段關于他們的八卦.
1900/1/1 0:00:00從接觸區塊鏈開始,我一直堅信它可能會與其他技術一起,在未來的某個時刻顛覆我們的世界,它為什么有這么大的魅力呢?聽我一一道來.
1900/1/1 0:00:0012月17日,波卡平行鏈測試網RococoV1發布會上主要公布平行鏈安排與未來開發進展,其中公布了RococoV1預計能支持10+個平行鏈接入,并預計將于圣誕前夕上線測試網.
1900/1/1 0:00:00大家好,我是子禹。我一直相信選擇比努力更重要,一個好的指導老師,一個好的技術團隊除了給客戶帶來盈利以外,更應該對客戶負責任.
1900/1/1 0:00:0012月19日下午,“尋找牛市盛宴同行者—印比特中國行杭州站”活動在杭州東方君悅酒店舉行。本次活動由印比特和金色財經聯合主辦,翼比特、幣信、螞蟻礦池、菠蘿礦機、人人礦場、胡安科技、MCredit、.
1900/1/1 0:00:00Dfinity創始人DominicWilliams在活動中透漏團隊有望在12月31日之前上線主網.
1900/1/1 0:00:00