
以下是在選擇 Hardhat 和 Foundry 時需要考慮的一些事項。

為您的 dapp 開發選擇合適的工具,不僅影響生產力,也會影響智能合約的測試、部署和維護效果。在這篇文章中,我們比較了 Ethereum dapp 開發者常用的兩種選擇:Foundry 與 Hardhat,重點介紹它們的安裝需求、測試與部署工作流程,以及各自的技術特點與限制。
Hardhat 是一個成熟的開發環境,專為協助開發者管理和自動化智能合約開發中的各項任務而設計,以其靈活且高度適應性著稱。Hardhat 內建 Hardhat Network,這是一個專為開發設計的本地 Ethereum 網路,可輕鬆進行測試、部署和除錯。
開發者可透過互動式控制台直接與部署在 Hardhat Network 上的智能合約互動,提供一個專為開發任務量身打造的完整本地環境。Hardhat 也支援豐富的插件生態系統,讓開發者能輕鬆擴展其功能。不過,部分使用者可能會覺得 Hardhat 的初始設定與配置較為複雜。
另一方面,Foundry 是一個相對較新的開發工具包,強調速度與可靠性。它以 Forge 為核心,這是一個強大的測試框架,讓開發者能高效地撰寫、編譯和測試智能合約。Foundry 的一大亮點是其快速測試能力,Forge 測試框架大幅縮短了測試執行時間,讓開發者能更快速地進行迭代。
此外,Foundry 內建原生除錯工具,協助開發者直接在環境中診斷並修復問題。Foundry 也能與 Ethereum 生態系統中的其他工具無縫整合,讓開發流程更加順暢。然而,由於相對較新,Foundry 可能缺乏像成熟工具那樣廣泛的社群支援。
在本節中,我們將使用一個基本的隨機加總智能合約。這個智能合約在 Hardhat 和 Foundry 中保持相同,但兩個框架的專案設定會略有不同。
要開始使用 Hardhat,您需要在機器上安裝 Node.js。完成後,可依照以下步驟建立新的 Hardhat 專案:
初始化新的 Node.js 專案:
安裝 Hardhat:
npm install --save-dev hardhat建立 Hardhat 專案:
npx hardhat依照提示建立基本專案。選擇「Create an empty hardhat.config.js」進行最簡設定,或選擇建立範例專案。這將設定一個包含所有必要配置的 Hardhat 環境。
合約:將您的 RandomSum 合約放置於 contracts 資料夾中。
Foundry 使用 Rust,因此您需要先在系統上安裝 Rust。準備好 Rust 後,執行以下指令安裝 Foundry:
安裝 Foundry:
初始化新的 Foundry 專案:
合約:將您的 RandomSum 合約放置於 src 目錄中。
本地區塊鏈:使用 Hardhat Network,當您執行測試或部署合約等任務時,它會自動啟動。
部署腳本:在 scripts/deploy.js 下建立腳本:
執行部署:使用以下指令執行部署:
npx hardhat run scripts/deploy.js --network localhost本地區塊鏈:Foundry 使用 anvil,一個本地 Ethereum 節點。在獨立的終端機中執行以下指令啟動本地節點。
anvil部署腳本:直接使用 forge create 指令:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url 網路配置:在 hardhat.config.js 中配置所需網路,新增網路設定區段(例如 Sepolia)。
部署:將網路選項改為 Sepolia,執行相同的部署腳本。
網路配置:無需額外的配置檔案;直接在指令中指定網路。
部署:使用:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url 撰寫測試:使用 JavaScript 在 test/randomSum.js 中建立測試檔案:
執行測試:使用以下指令執行:
npx hardhat test若測試遇到問題,只需從 @nomicfoundation/hardhat-toolbox/network-helpers 加入 loadFixture 函式即可。
使用 loadFixture 的主要優點:
透過還原至快照,為每個測試建立乾淨的環境。
比為每個測試重新部署合約更有效率。
可在多個測試之間共用設定程式碼。
撰寫測試:使用 Solidity 在 test/RandomSum.t.sol 中新增測試檔案:
執行測試:使用:
forge test選擇 Hardhat 還是 Foundry,通常取決於團隊的技術背景和專案的具體需求。如果團隊熟悉 JavaScript,且需要與網頁技術進行廣泛整合,Hardhat 可能是更好的選擇。其豐富的插件生態系統和靈活的環境,使其非常適合需要高度客製化並與各種網頁技術互動的專案。
另一方面,如果專案需要快速的開發週期,且專注於智能合約本身,Foundry 提供了一個吸引人且高效的選擇,讓一切都保持在 Solidity 生態系統之內。其速度和對 Solidity 的原生支援,能大幅提升專注於智能合約開發的團隊生產力。
總體而言,兩種工具各有其優勢,正確的選擇取決於您專案的獨特需求以及團隊的專業能力。
AI 翻譯。可能包含錯誤。請務必核實資訊。