甜點自由的XDDDGanache 的法文原意是「笨蛋」、「傻瓜」。就像過往 Android 版本的代號常以甜點命名一樣,Ganache 也是有故事的~
19世紀中葉的法國,一位糕點學徒在廚房忙碌時,不慎將熱鮮奶油打翻,全部倒入一盆頂級巧克力裡。學徒心知闖下大禍,慌亂不已。這時,師傅看到此情此景,氣得大罵他一聲「Ganache!」。
師傅在盛怒中隨手攪拌了這個「被毀掉」的混合物,嚐了一口之後,卻被那絲滑柔順、濃郁香醇的口感驚豔。這場美麗的意外,讓原本用來罵人的「笨蛋」一詞,搖身一變,成為這款經典甜點的名字。從此,Ganache 不再是嘲諷,而是美味巧合的象徵。
小小聲地說:
Ganache 的中文就是「甘納許」,這樣就親切多了~
在區塊鏈開發的初期階段,開發者常常需要進行大量的測試與模擬操作,在這個階段使用真實的主網(Mainnet)或公開測試網(Testnet)進行開發,往往會遇到許多不便。例如:
為了讓開發者能在一個適合開發階段的環境中測試智能合約,Truffle Suite 推出了 Ganache。
Ganache 是一款專為以太坊(Ethereum)開發設計的本地區塊鏈模擬工具。專為智慧合約的本地開發與測試設計。它可以在本機快速啟動一條私有鏈,讓開發者在完全隔離、可控且零成本的環境中,模擬智慧合約的部署與交易流程。
| 功能 | 說明 |
|---|---|
| 即時處理交易 | 無需等待區塊生成,交易立即生效,加快開發效率 |
| 免 Gas 費 | 所有交易免費,無真實成本(無需支付真實 Gas 費) |
| 可控環境 | 可自訂區塊生成速度、Gas 消耗、甚至重置整條鏈 |
| 高度整合 | 與 Truffle、Hardhat、Remix、MetaMask 等主流工具完美兼容 |
傳統的以太坊開發過程中,若想測試一段智慧合約,必須:
| 問題 | 傳統方式 | 使用 Ganache 的方式 |
|---|---|---|
| 測試幣來源 | 必須向 Faucet 申請 | 自動生成虛擬 ETH |
| 交易速度 | 等待網路確認 | 即時完成 |
| Gas 成本 | 雖為測試幣,但仍需支付 | 免費、無限次執行 |
| 環境穩定性 | 節點延遲或失效 | 完全可控、離線可用 |
Ganache 提供直觀的桌面應用介面,啟動後會自動生成:
介面包含多個主要分頁:
| 分頁名稱 | 功能說明 |
|---|---|
| Accounts | 顯示帳戶地址、私鑰、餘額、交易次數 |
| Blocks | 顯示每個生成的區塊與其中的交易內容 |
| Transactions | 列出所有已執行過的交易紀錄 |
| Logs | 顯示交易日誌、錯誤訊息與偵錯資訊 |
在 Ganache 中,所有交易都會立即被確認,不需要等待區塊生成時間。
這種「即時交易」模式對開發者來說極為便利,能快速驗證:
Ganache 的測試幣是虛擬的,所有交易都不會消耗真實資源。可以無限次重置整條鏈狀態(Reset),回到初始條件,重新開始測試。
| 工具 / 框架 | 整合方式 |
|---|---|
| Truffle | 直接設定 development 網路為 localhost:7545 |
| Hardhat | 以 hardhat.config.js 連接 RPC 端點 |
| Remix | 使用 Injected Provider(透過 MetaMask)連線 |
| MetaMask | 將 RPC 指向 Ganache 網路,即可模擬真實錢包操作 |
前往 Truffle Suite 官方網站
選擇適用的版本(Windows / macOS / Linux),依照指示完成安裝。
開啟 Ganache 後,系統會自動建立一條新的本地區塊鏈,並生成 10 個預設帳戶,每個帳戶內預設擁有 100 ETH(虛擬)。
Remix IDE:在「Environment」選擇 Injected Provider,確保 MetaMask 已連線至 Ganache(RPC 通常為 http://127.0.0.1:7545)。
應用程式開發:於程式碼中設定 RPC 位址,即可與本地 Ganache 網路互動
任何支援 Ethereum JSON-RPC 的工具都能與其互動,例如:
const Web3 = require("web3");
const web3 = new Web3("http://127.0.0.1:7545");
(async () => {
const accounts = await web3.eth.getAccounts();
console.log("本地帳戶列表:", accounts);
})();
程式碼執行後即可取得 Ganache 產生的帳戶資訊。