7*24快訊探索Cha...

探索Chainlink Hardhat Starter Kit Typescript Edition l Chainlink 博客

我們很高興地宣布我們最受歡迎的開發者入門套件的新版本:Chainlink 安全帽入門套件現在支持Typescript!繼續閱讀以了解所有新功能的細分。

複習——Chainlink 安全帽入門套件

Hardhat 是一個基於JavaScript 和TypeScript 的開發環境,使開發人員能夠編譯、部署、測試和調試與EVM 兼容的智能合約。一年前,我們發布了Chainlink Hardhat Starter Kit,這是一個單一的存儲庫,包含開發人員開始使用Chainlink 構建所需的一切,包括智能合約、測試、高級任務和部署腳本。你可以閱讀更多關於它 我們的博客.

一年後,這個項目帶來了一個全新的Typescript 版本。要使用初始JavaScript 版本,請打開終端並輸入

git clone https://github.com/smartcontractkit/hardhat-starter-kit.git

要切換到TypeScript 版本,您需要簽出到 typescript 分支。

git checkout typescript

裡面有什麼?

打字稿

TypeScript 是一種面向對象的編碼語言,是JavaScript 的超集,旨在克服大型項目的代碼複雜性。這意味著所有TypeScript 代碼都是有效的JavaScript 代碼,但反之則不然。 TypeScript 的主要優勢之一是它是強類型的,這意味著編譯器會提醒用戶任何與類型相關的錯誤,從而導致早期的錯誤檢測。用TypeScript 編寫的代碼比JavaScript 代碼結構更好、更簡潔。

測試

測試已經真正升級到這個新版本。測試文件分為兩個獨立的類別——單元測試和分段測試。在等待來自oracle 網絡的回調時,每個測試都會偵聽特定事件。

每個單元測試都是獨立的,來自預言機網絡的回調響應是使用來自 官方Chainlink存儲庫. 這意味著您可以通過使用以下命令並行運行它們來節省時間:

yarn test --parallel

另一方面,分階段測試在偵聽事件時使用已在各種測試網絡上部署的合約實例。沒有模擬合同或模擬回調。您可以通過防止ts-node 在每次運行時重新編譯和類型檢查項目來加速Hardhat TS_NODE_TRANSPILE_ONLY 環境變量為1。

此外,在測試中,您可以通過取消註釋Hardhat 配置文件中的“分叉”屬性並將“啟用”設置為true,在具體塊中分叉主網。為此,您將需要一個存檔節點或JSON RPC 提供程序,例如Alchemy。

類型鏈

TypeChain 為您的Solidity 智能合約生成TypeScript 類型(d.ts) 文件。使用JavaScript,您不僅需要記住給定智能合約方法或事件的名稱,還需要記住其完整簽名。這會浪費時間,並且可能會引入僅在運行時觸發的錯誤。 TypeChain 支持更精確、更高效的測試、任務和腳本。

國家規範

以太坊自然語言規範格式,或簡稱NatSpec,是一種評論形式,旨在為Solidity 智能合約提供豐富的文檔。這些評論使用標籤,例如 @notice, @params, @return等,並且可以用來描述從合約本身到函數的幾乎任何東西,包括變量、事件甚至修飾符。但不僅如此,NatSpec 生成的消息直接用於在最終用戶與您的合約功能交互時顯示給他們,即簽署交易。

代碼覆蓋率

在智能合約開發中,理解代碼覆蓋率是一項被低估的技能,尤其是當你練習測試驅動開發時。它是運行特定測試套件時智能合約源代碼執行程度的百分比度量。 與測試覆蓋率低的項目相比,測試覆蓋率高的項目包含未檢測到的錯誤的機會較低。 要開發安全的dApp,您應該至少達到90% 的代碼覆蓋率。但是,不要試圖不惜一切代價追求100% 的覆蓋率,因為這可能會導致意想不到的副作用。

要運行它,請輸入:

yarn coverage

一些Solidity 文件,例如僅用作測試助手的模擬合約,將顯示低覆蓋率。要從檢查中排除它們,請更新“.solcover.js”文件。

估算氣體

為與EVM 兼容的鏈編寫智能合約意味著使用有限的資源進行編程。出於這個原因,開發人員傾向於盡可能優化他們的代碼。 Gas 優化可能很棘手,Mocha 報告器已添加到測試套件中,顯示每個單元測試的Gas 使用情況以及方法調用和部署的各種指標。

要估算氣體,只需設置一個 REPORT_GAS 環境變量為true,然後運行:

yarn hardhat test

輸出將存儲在“gas-report.txt”文件中。如果您想以美元或其他貨幣查看汽油價格,請添加 COINMARKETCAP_API_KEY代幣市值.

查看合約規模

曾經花費數週時間構建智能合約,卻在部署過程中遇到“超出最大代碼大小”錯誤?這意味著您達到了智能合約代碼大小限制(以太坊測試網為24,576 字節),並且您需要在部署之前減小合約的大小,或者將其拆分為幾個較小的合約和庫。為了避免在開發過程結束時進行大規模重構,添加了一個簡單的命令來顯示項目中每個智能合約的大小,以便您可以更早地意識到這種限制並採取相應的行動。

要查看合約大小,請運行:

yarn run hardhat size-contracts

模糊測試

由於智能合約的不可變特性,您總是希望確保在部署到區塊鏈之前測試所有可能的場景。這就是為什麼Chainlink Hardhat Starter Kit 的TypeScript 版本帶有一個fuzzer 來查找使用單元測試或分段測試無法找到的邊緣情況。模糊測試是一種生成大量隨機場景以發現產生意外結果的值的技術。

Echidna 已作為模糊測試工具包含在此入門工具包中。你需要有 碼頭工人 安裝時分配了至少8GB 的​​虛擬內存。要更新此參數,請轉到 設置-> 資源-> 高級-> 內存.

您還可以從源代碼運行Echidna。欲了解更多信息,請訪問 針鼴公共存儲庫.

要啟動Echidna 實例,請從項目根目錄運行以下命令

yarn fuzzing

如果是第一次使用,需要等待Docker 下載 eth-安全工具箱 圖片。可能還要等一下。前面的命令會將項目目錄的內容複製到Docker 容器內的“/src”目錄中。

模糊測試僅針對與Keeper 兼容的智能合約示例實施,但您可以隨意嘗試並添加更多內容。該測試的主要重點是實現塊時間戳的模糊測試。這個想法是,無論如何, performUpkeep 功能無法更新 counter 在設定的時間間隔之前的狀態變量。

要開始模糊測試,請運行

echidna-test /src/contracts/test/fuzzing/KeepersCounterEchidnaTest.sol --contract KeepersCounterEchidnaTest --config /src/contracts/test/fuzzing/config.yaml

幾分鐘後,您將在控制台中看到測試結果。要退出Echidna,請鍵入

exit

VRF v2

最後添加的當然是新版本的Chainlink Verifiable Random Function! Chainlink VRF v2 對您為智能合約提供資金和請求隨機性的方式進行了多項改進。您將找到有關如何編寫VRF v2 兼容合約、如何部署它們、訂閱管理如何工作以及如何正確測試和使用它們的完整演練。

首先,導航到 VRF 訂閱頁面,選擇網絡,連接你的錢包,然後點擊“創建訂閱”。然後將您的“subscriptionId”保存為 VRF_SUBSCRIPTION_ID 環境變量。部署後,返回VRF 訂閱頁面,導航到您的訂閱,單擊“添加消費者”按鈕,並粘貼最近部署的VRF 消費者合約的地址。完成後,您可以使用 request-random-number 任務:

yarn hardhat request-random-number --contract insert-contract-address-here --network network

成功請求隨機數後,您可以通過 read-random-number 任務:

yarn hardhat read-random-number --contract insert-contract-address-here --network network

如果遇到錯誤,請在VRF 訂閱頁面上查看請求是否已完成,然後重試。

概括

可以理解,TypeScript 是開發大型或複雜應用程序的流行選擇,而JavaScript 通常更適合小型項目。前往 Chainlink 公共存儲庫 並開始試驗這個和其他可用的入門工具包。

通過訪問了解有關Chainlink 的更多信息 鏈環 或閱讀文檔 docs.chain.link. 要討論集成,請聯繫專家。

Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...