相關文章推薦 | 鏈接 |
---|---|
Web3專欄 | https://blog.csdn.net/qq_42392981/category_13016259.html |
在 VSCode 中基于 Foundry 快速構建 Solidity 智能合約本地開發環境
- 引言
- 1. 開發環境準備(Windows)
- 1.1 安裝 VSCode
- 1.2 安裝推薦插件
- 1.3 安裝 Foundry
- 1.4 驗證 Forge 和 Anvil 安裝成功
- 2. 創建 Solidity 項目(使用 Foundry)
- 2.1 使用 Forge Init 創建項目
- 2.2 項目目錄結構解析
- 2.3 配置文件 foundry.toml 的作用說明
- 3. 編寫智能合約與單元測試
- 3.1 編寫簡單合約示例(Counter.sol)
- 3.2 編寫測試用例(使用 Forge 測試框架)
- 3.3 運行本地測試命令
- 4. 使用 Foundry 搭建本地測試網絡
- 4.1 啟動本地節點 Anvil
- 4.2 使用 Anvil 模擬本地區塊鏈環境
- 4.3 在本地部署合約(使用 Forge Script)
- 5. 使用 Anvil 生成的私鑰通過歐易連接本地區塊鏈
- 5.1 下載歐易插件
- 5.2 導入私鑰
- 5.3 設置自定義網絡
- 6. 腳本部署與調試演示
- 6.1 編寫部署腳本(script/Deploy.s.sol)
- 6.2 運行部署腳本連接 Anvil
- 6.3 在終端查看交易過程和輸出
- 結語
- 參考鏈接
引言
作為 Solidity 初學者或中級開發者,你可能希望在本地環境中快速開發和測試智能合約。Foundry 是一個高效的以太坊開發工具鏈,支持 Solidity 合約的編寫、測試和部署,而 VSCode 則提供優秀的代碼編輯支持。本教程將指導你在 Windows 系統下搭建環境、創建項目、編寫合約、進行單元測試,并使用本地網絡進行部署和調試。所有步驟均針對 Windows 環境,確保易于復現。
前提條件:
- Windows 10 或更高版本。
- 基本命令行操作知識(Git bash)。
- 安裝 Git(如果未安裝,可從 Git 官網 下載)。
1. 開發環境準備(Windows)
1.1 安裝 VSCode
- 訪問 VSCode 官網 下載 Windows 安裝包。
- 雙擊安裝包,按照提示完成安裝。
- 啟動 VSCode,確認界面正常。
1.2 安裝推薦插件
在 VSCode 中打開擴展面板(Ctrl + Shift + X),搜索并安裝以下插件:
- Solidity(由 Juan Blanco 開發):提供 Solidity 語法高亮、自動補全和 linting。
- Prettier - Code formatter:自動格式化代碼,確保一致性。
- Solidity Visual Developer:增強 Solidity 可視化,如函數調用圖和審計工具。
安裝后,重啟 VSCode 以生效。
1.3 安裝 Foundry
可以參考我的另外一篇詳細安裝Foundry的文章
:Foundry安裝和使用指南
官網安裝指南
:https://getfoundry.sh/
Foundry 通過 foundryup
安裝腳本進行安裝。在 Windows 上,使用 Git bash 執行以下步驟:
-
打開 Git bash。
-
執行以下命令下載并安裝 Foundry:
curl -L https://foundry.paradigm.xyz | Invoke-Expression
這將安裝
foundryup
,然后運行foundryup
更新到最新版本。注意:如果 curl 未安裝,確保你的 Windows 已啟用(或通過 Git Bash 使用)。
1.4 驗證 Forge 和 Anvil 安裝成功
在 Git Bash 中運行以下命令驗證:
forge --version
anvil --version
輸出類似 forge Version 0.x.x
和 anvil Version 0.x.x
表示安裝成功。
2. 創建 Solidity 項目(使用 Foundry)
2.1 使用 Forge Init 創建項目
-
在 Git Bash 中導航到你想要的目錄(例如:
cd C:\Projects
)。 -
創建并初始化項目:
forge init my-solidity-project cd my-solidity-project
這將生成一個模板項目。
2.2 項目目錄結構解析
初始化后,項目結構如下:
- src/:存放智能合約源代碼(例如 Counter.sol)。
- test/:存放單元測試文件(例如 Counter.t.sol)。
- script/:存放部署和交互腳本(例如 Deploy.s.sol)。
- lib/:存放依賴庫(如 Forge-Std)。
- foundry.toml:配置文件。
- .git/:Git 版本控制目錄。
2.3 配置文件 foundry.toml 的作用說明
foundry.toml
是 Foundry 的配置文件,用于自定義構建、測試和部署行為。默認內容包括:
[profile.default]
src = 'src'
out = 'out'
libs = ['lib']
- src:源代碼目錄。
- out:編譯輸出目錄。
- libs:依賴庫目錄。
可以查看詳細配置
:foundry.toml詳細配置
3. 編寫智能合約與單元測試
3.1 編寫簡單合約示例(Counter.sol)
在 VSCode 中打開項目,編輯 src/Counter.sol
:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;contract Counter {uint256 public number;function setNumber(uint256 newNumber) public {number = newNumber;}function increment() public {number++;}
}
3.2 編寫測試用例(使用 Forge 測試框架)
編輯 test/Counter.t.sol
:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;import {Test, console} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";contract CounterTest is Test {Counter public counter;function setUp() public {counter = new Counter();counter.setNumber(0);}function test_Increment() public {counter.increment();assertEq(counter.number(), 1);}function testFuzz_SetNumber(uint256 x) public {counter.setNumber(x);assertEq(counter.number(), x);}
}
3.3 運行本地測試命令
在 Git Bash中運行:
forge build
forge test
forge build
:編譯合約。forge test
:運行測試用例。
4. 使用 Foundry 搭建本地測試網絡
4.1 啟動本地節點 Anvil
Anvil 是 Foundry 的本地以太坊模擬器。在新建的 Git Bash窗口中運行:
anvil --accounts 10 --balance 100
--accounts 10
:生成 10 個測試賬戶。--balance 100
:每個賬戶初始余額 100 ETH。
Anvil 會輸出 RPC URL(如 http://127.0.0.1:8545
)和測試賬戶私鑰。
4.2 使用 Anvil 模擬本地區塊鏈環境
Anvil 模擬完整的以太坊環境,支持合約部署和交易模擬。保持 Anvil 窗口打開,作為本地鏈。
4.3 在本地部署合約(使用 Forge Script)
使用腳本部署到 Anvil
本地鏈。
5. 使用 Anvil 生成的私鑰通過歐易連接本地區塊鏈
在區塊鏈開發和測試中,本地模擬環境是必不可少的工具。Foundry 框架中的 Anvil 是一個高效的本地以太坊節點模擬器,它可以快速啟動一個測試鏈,并生成測試賬戶和私鑰。本文將介紹如何使用 Anvil 生成私鑰,然后通過歐易(OKX)Web3 錢包導入這些私鑰,并連接到本地區塊鏈節點。這適用于開發者在本地測試智能合約、DApp 或錢包集成時使用。
pc@DESKTOP-C1KR1ML MINGW64 /e/web3
$ anvil --accounts 10 --balance 100_ _(_) | |__ _ _ __ __ __ _ | |/ _` | | '_ \ \ \ / / | | | || (_| | | | | | \ V / | | | |\__,_| |_| |_| \_/ |_| |_|1.2.3-stable (a813a2cee7 2025-06-08T15:44:09.674540400Z)https://github.com/foundry-rs/foundryAvailable Accounts
==================(0) 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (100.000000000000000000 ETH)
(1) 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (100.000000000000000000 ETH)
(2) 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (100.000000000000000000 ETH)
(3) 0x90F79bf6EB2c4f870365E785982E1f101E93b906 (100.000000000000000000 ETH)
(4) 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 (100.000000000000000000 ETH)
(5) 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc (100.000000000000000000 ETH)
(6) 0x976EA74026E726554dB657fA54763abd0C3a0aa9 (100.000000000000000000 ETH)
(7) 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 (100.000000000000000000 ETH)
(8) 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f (100.000000000000000000 ETH)
(9) 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 (100.000000000000000000 ETH)Private Keys
==================(0) 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
(1) 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
(2) 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
(3) 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6
(4) 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a
(5) 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba
(6) 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e
(7) 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356
(8) 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97
(9) 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6Wallet
==================
Mnemonic: test test test test test test test test test test test junk
Derivation path: m/44'/60'/0'/0/Chain ID
==================31337Base Fee
==================1000000000Gas Limit
==================30000000Genesis Timestamp
==================1754019204Genesis Number
==================0Listening on 127.0.0.1:8545
5.1 下載歐易插件
要使用歐易(OKX)Web3 錢包與本地區塊鏈交互,首先需要安裝 OKX 錢包插件。以下是具體步驟:
-
訪問 OKX 官網:
- 打開瀏覽器,前往 插件市場 (https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge?hl=zh-CN)。
- 下載瀏覽器擴展版本。
- 安裝完成后,瀏覽器右上角會顯示 OKX 錢包圖標。
-
初始化錢包:
- 點擊 OKX 錢包圖標,按照提示設置密碼并完成初始化。
- 備份助記詞(若新建錢包),并妥善保存。注意:助記詞僅用于新錢包創建,導入私鑰時無需使用。
注意:確保從官方渠道下載插件,避免使用非官方來源以防止安全風險。
5.2 導入私鑰
使用 Anvil 生成的私鑰導入 OKX 錢包,可以快速接入測試賬戶。以下是導入步驟:
-
打開 OKX 錢包:
- 點擊瀏覽器右上角的 OKX 錢包圖標,進入錢包界面。
- 如果使用移動端 App,打開 OKX Web3 錢包應用。
-
選擇導入選項:
- 在錢包界面,點擊“添加錢包”或“我已經有錢包”。
- 選擇“導入私鑰”選項。
-
輸入私鑰:
- 粘貼從 Anvil 獲取的私鑰(例如:
0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
)。 - 確認導入,錢包會自動生成對應的公鑰和地址。
- 粘貼從 Anvil 獲取的私鑰(例如:
-
驗證賬戶:
- 切換到錢包主界面,檢查新導入的賬戶是否顯示正確的地址和余額(在 Anvil 本地節點中為 100 ETH)。
安全提示:私鑰是賬戶的唯一憑證,僅在本地測試環境使用 Anvil 的私鑰。切勿將測試私鑰用于生產環境或泄露給他人。
5.3 設置自定義網絡
為了讓 OKX 錢包連接到 Anvil 運行的本地以太坊節點,需要配置自定義網絡。以下是詳細步驟:
-
進入網絡管理:
- 在 OKX 錢包界面,點擊“設置”或“網絡”選項。
- 找到“管理網絡”或“Add Network”按鈕。
-
添加本地網絡:
- 點擊“添加自定義網絡”,填寫以下信息:
- 網絡名稱:Local Anvil(可自定義)
- RPC URL:
http://127.0.0.1:8545
(Anvil 默認 RPC 地址) - 鏈 ID:31337(Anvil 默認鏈 ID)
- 貨幣符號:ETH
- 區塊瀏覽器 URL:(可選,留空)
- 保存配置。
- 點擊“添加自定義網絡”,填寫以下信息:
-
切換網絡:
- 在錢包網絡選擇菜單中,選擇剛添加的“Local Anvil”網絡。
- 確認切換后,錢包應顯示本地節點的賬戶余額(10,000 ETH)。
-
測試連接:
- 嘗試發送一筆小額測試交易(如 0.01 ETH 到另一測試地址)。
- 在 Anvil 終端查看交易日志,確認交易被本地節點處理。
6. 腳本部署與調試演示
6.1 編寫部署腳本(script/Deploy.s.sol)
創建或編輯 script/Counter.s.sol
:
注意:如果是初始化的,則已經存在了這個文件
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;import {Script, console} from "forge-std/Script.sol";
import {Counter} from "../src/Counter.sol";contract CounterScript is Script {Counter public counter;function setUp() public {}function run() public {vm.startBroadcast();counter = new Counter();vm.stopBroadcast();}
}
6.2 運行部署腳本連接 Anvil
在另一個 PowerShell 窗口(項目目錄下)運行:
forge script script/Counter.s.sol --rpc-url http://127.0.0.1:8545 --broadcast --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
--rpc-url
:Anvil 的 URL。--broadcast
:實際廣播交易。--private-key
:從 Anvil 輸出中復制一個私鑰。
6.3 在終端查看交易過程和輸出
部署后,終端會顯示交易哈希和合約地址。Anvil 窗口會日志交易細節,用于調試。
根據這個輸出的結果可以得到:
項目 | 說明 |
---|---|
腳本 | script/Counter.s.sol |
運行環境 | 本地 Anvil 節點(localhost:8545) |
合約部署成功 | ? 是 |
合約地址 | 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0 |
交易哈希 | 0x9ab869... |
Gas 花費 | 156,801 |
支付 ETH | ~0.00012 ETH |
保存位置 | broadcast/ 和 cache/ 文件夾 |
使用 Foundry 框架 編寫的 Solidity 腳本,用于在本地或測試網絡中部署一個名為 Counter 的智能合約。這個腳本文件遵循 Foundry 的標準結構,通常保存在 script/ 目錄下,并配合命令 forge script 使用。
結語
通過本教程,你已在 Windows 上使用 VSCode 和 Foundry 完成了 Solidity 合約的開發、測試和本地部署。實踐這些步驟,能顯著提升你的開發效率。如果遇到問題,檢查命令是否正確或參考官方文檔。
參考鏈接
- Foundry 官方文檔
- Foundry GitHub 倉庫
相關文章推薦 | 鏈接 |
---|---|
Web3專欄 | https://blog.csdn.net/qq_42392981/category_13016259.html |