Testnets
如何建立私有乙太坊網路?
我想建立一個不連接到更廣泛網際網路的本地(私有)區塊鏈,以便我可以部署一些測試合約。我該怎麼做呢?
為乙太坊創建私有測試網實際上非常容易。在最新版本的 geth 中,您甚至不需要創建自己的創世塊或任何其他復雜的步驟(許多線上教程已過時)。
首先,確保您已安裝 geth。在 OSX 上,您可以先安裝Homebrew,然後執行:
$ brew tap ethereum/ethereum $ brew install ethereum
對於其他平台,請查看geth 安裝說明。
您可以通過檢查版本來測試它是否正常工作:
$ geth version Geth Version: 1.3.6 Git Commit: 9e323d65b20c32ab1db40e8dde7172826e0e9c45 Protocol Versions: [63 62 61] Network Id: 1 Go Version: go1.6 OS: darwin GOPATH=/Users/adrian/go GOROOT=/usr/local/Cellar/go/1.6/libexec
--dev
現在,您可以通過使用以下選項執行 geth 來啟動私有區塊鏈:$ get --dev --ipcpath ~/Library/Ethereum/geth.ipc
這會做以下事情來簡化開發(source):
- 集
--vmdebug
(虛擬機調試輸出)- 集
--maxpeers 0
(網路禁用)- 套裝
--gasprice 0
(讓您的契約負擔得起)- 集
--port 0
(在隨機埠上偵聽)- 集合
--shh
(啟用 Whisper 協議)- 設置
--datadir
為硬碟驅動器上的臨時目錄- 啟用“開發模式”,這會導致 geth 在您第一次執行它時自動生成一個新的創世塊。
- 設置
--ipcpath
為標準 IPC 路徑,因此其他命令(例如 geth attach)無需其他參數即可工作現在,您可能已經可以通過
geth --dev attach
在另一個終端視窗中執行或啟動Mist Wallet來連接到您的專用網路。但在你做任何事情之前,你可能想創建一個帳戶,並挖一些硬幣以便你可以花掉它們。讓您的原始終端視窗保持執行,並在另一個視窗類型中:
$ geth --dev attach
這將為您提供一個 JavaScript 控制台。您可以執行以下命令來創建您的第一個帳戶:
> personal.newAccount('choose-a-password') "0x48517108e6368f2b4da71816f9929e89c3e19ae5"
現在,你想挖一些硬幣:
> miner.start() true
在第一個視窗中,您將看到探勘消息開始滾動:
I0401 12:41:03.318046 83003 worker.go:348] 🔨 Mined block (#1 / fb68b6aa). Wait 5 blocks for confirmation I0401 12:41:03.318486 83003 worker.go:569] commit new work on block 2 with 0 txs & 0 uncles. Took 399.006µs
挖出大約 10 個區塊後,返回 JavaScript 控制台並停止它:
> miner.stop() true
就是這樣!現在你有了自己的私有測試網。
最後,一個快速無恥的外掛:我寫了gethdev,一個簡單的包裝器
geth
,它將通過自動創建你的第一個帳戶,在有待處理交易時啟動和停止探勘過程,並提供一個環境變數來記住你總是最終傳遞給的常見參數geth
。歡迎回饋!
一些主要步驟包括指定一個networkId,並創建一個創世文件(你可以給你的賬戶很多乙太幣!)。