1. 程式人生 > >Windows 環境下搭建以太坊私有鏈節點

Windows 環境下搭建以太坊私有鏈節點

1.搭建以太坊私有鏈節點

下載Geth ,下載地址: https://geth.ethereum.org/downloads/

2.安裝Geth,在安裝的過程中不要安裝C盤中

3.建立創世區塊檔案

在安裝目錄下建立一個genesis.json檔案,內容如下:

{

      "config": {

            "chainId": 10,

            "homesteadBlock": 0,

            "eip155Block": 0,

            "eip158Block": 0

      },

      "coinbase

" : "0x0000000000000000000000000000000000000000",

      "difficulty" : "0x20000",

      "extraData" : "",

      "gasLimit" : "0x2fefd8",

      "nonce" : "0x0000000000000042",

      "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

      "timestamp" : "0x00",

      "alloc" : {}

}

引數名稱

引數描述

mixhash

與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設定需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。

nonce

nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設定需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。

difficulty

設定當前區塊的難度,如果難度過大,cpu挖礦就很難,這裡設定較小難度

alloc

用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己建立即可以。

coinbase

礦工的賬號,隨便填

timestamp

設定創世塊的時間戳

parentHash

上一個區塊的hash值,因為是創世塊,所以這個值是0

extraData

附加資訊,隨便填,可以填你的個性資訊

gasLimit

該值設定對GAS的消耗總量限制,用來限制區塊能包含的交易資訊總和,因為我們是私有鏈,所以填最大。

4.初始化創世區塊資訊並指定資料檔案存放位置

使用geth init ./genesis.json --datadir "E:\Eth"命令,來進行創世區塊的初始化,當前區塊鏈網路資料存放的位置會儲存在E:\Eth目錄中,資料存放位置可以更改

5.啟動節點

使用geth --datadir "E:\Eth" --networkid 10 --port 30303 --rpc --rpcaddr 127.0.0.1 --rpcapi "db,eth,personal,net,web3" console 啟動節點並開啟控制檯  注意 --networdid 和 genesis.json檔案中chainId必須一致

6.建立賬戶

使用 personal.newAccount(“123456”) 命令建立地址

7.啟動挖礦

使用 miner.start() 命令啟動挖礦 啟動挖礦時會先更新DAG資料

開始挖礦

8.停止挖礦

使用 miner.stop() 命令停止挖礦

以上以太坊私有鏈搭建完成

9.以太坊節點命令

命令:

account 管理賬戶

attach 啟動互動式JavaScript環境(連線到節點)

bug 上報bug Issues

console 啟動互動式JavaScript環境

copydb 從資料夾建立本地鏈

dump Dump(分析)一個特定的塊儲存

dumpconfig 顯示配置值

export 匯出區塊鏈到檔案

import 匯入一個區塊鏈檔案

init 啟動並初始化一個新的創世紀塊

js 執行指定的JavaScript檔案(多個)

license 顯示許可資訊

makecache 生成ethash驗證快取(用於測試)

makedag 生成ethash 挖礦DAG(用於測試)

monitor 監控和視覺化節點指標

removedb 刪除區塊鏈和狀態資料庫

version 列印版本號

wallet 管理Ethereum預售錢包

help,h 顯示一個命令或幫助一個命令列表

Ethereum選項:

--config value TOML 配置檔案

--datadir “xxx” 資料庫和keystore金鑰的資料目錄

--keystore keystore存放目錄(預設在datadir內)

--nousb 禁用監控和管理USB硬體錢包

--networkid value 網路識別符號(整型, 1=Frontier, 2=Morden (棄用), 3=Ropsten, 4=Rinkeby) (預設: 1)

--testnet Ropsten網路:預先配置的POW(proof-of-work)測試網路

--rinkeby Rinkeby網路: 預先配置的POA(proof-of-authority)測試網路

--syncmode "fast" 同步模式 ("fast", "full", or "light")

--ethstats value 上報ethstats service URL (nodename:[email protected]:port)

--identity value 自定義節點名

--lightserv value 允許LES請求時間最大百分比(0 – 90)(預設值:0)

--lightpeers value 最大LES client peers數量(預設值:20)

--lightkdf 在KDF強度消費時降低key-derivation RAM&CPU使用

開發者(模式)選項:

--dev 使用POA共識網路,預設預分配一個開發者賬戶並且會自動開啟挖礦。

--dev.period value 開發者模式下挖礦週期 (0 = 僅在交易時) (預設: 0)

ETHASH 選項:

--ethash.cachedir ethash驗證快取目錄(預設 = datadir目錄內)

--ethash.cachesinmem value 在記憶體儲存的最近的ethash快取個數 (每個快取16MB ) (預設: 2)

--ethash.cachesondisk value 在磁碟儲存的最近的ethash快取個數 (每個快取16MB) (預設: 3)

--ethash.dagdir "" 存ethash DAGs目錄 (預設 = 使用者hom目錄)

--ethash.dagsinmem value 在記憶體儲存的最近的ethash DAGs 個數 (每個1GB以上) (預設: 1)

--ethash.dagsondisk value 在磁碟儲存的最近的ethash DAGs 個數 (每個1GB以上) (預設: 2)

交易池選項:

--txpool.nolocals 為本地提交交易禁用價格豁免

--txpool.journal value 本地交易的磁碟日誌:用於節點重啟 (預設: "transactions.rlp")

--txpool.rejournal value 重新生成本地交易日誌的時間間隔 (預設: 1小時)

--txpool.pricelimit value 加入交易池的最小的gas價格限制(預設: 1)

--txpool.pricebump value 價格波動百分比(相對之前已有交易) (預設: 10)

--txpool.accountslots value 每個帳戶保證可執行的最少交易槽數量 (預設: 16)

--txpool.globalslots value 所有帳戶可執行的最大交易槽數量 (預設: 4096)

--txpool.accountqueue value 每個帳戶允許的最多非可執行交易槽數量 (預設: 64)

--txpool.globalqueue value 所有帳戶非可執行交易最大槽數量 (預設: 1024)

--txpool.lifetime value 非可執行交易最大入隊時間(預設: 3小時)

效能調優的選項:

--cache value 分配給內部快取的記憶體MB數量,快取值(最低16 mb /資料庫強制要求)(預設:128)

--trie-cache-gens value 保持在記憶體中產生的trie node數量(預設:120)

帳戶選項:

--unlock value 需解鎖賬戶用逗號分隔

--password value 用於非互動式密碼輸入的密碼檔案

API和控制檯選項:

--rpc 啟用HTTP-RPC伺服器

--rpcaddr value HTTP-RPC伺服器介面地址(預設值:“localhost”)

--rpcport value HTTP-RPC伺服器監聽埠(預設值:8545)

--rpcapi value 基於HTTP-RPC介面提供的API

--ws 啟用WS-RPC伺服器

--wsaddr value WS-RPC伺服器監聽介面地址(預設值:“localhost”)

--wsport value WS-RPC伺服器監聽埠(預設值:8546)

--wsapi value 基於WS-RPC的介面提供的API

--wsorigins value websockets請求允許的源

--ipcdisable 禁用IPC-RPC伺服器

--ipcpath 包含在datadir裡的IPC socket/pipe檔名(轉義過的顯式路徑)

--rpccorsdomain value 允許跨域請求的域名列表(逗號分隔)(瀏覽器強制)

--jspath loadScript JavaScript載入指令碼的根路徑(預設值:“.”)

--exec value 執行JavaScript語句(只能結合console/attach使用)

--preload value 預載入到控制檯的JavaScript檔案列表(逗號分隔)

網路選項:

--bootnodes value 用於P2P發現引導的enode urls(逗號分隔)(對於light servers用v4+v5代替)

--bootnodesv4 value 用於P2P v4發現引導的enode urls(逗號分隔) (light server, 全節點)

--bootnodesv5 value 用於P2P v5發現引導的enode urls(逗號分隔) (light server, 輕節點)

--port value 網絡卡監聽埠(預設值:30303)

--maxpeers value 最大的網路節點數量(如果設定為0,網路將被禁用)(預設值:25)

--maxpendpeers value 最大嘗試連線的數量(如果設定為0,則將使用預設值)(預設值:0)

--nat value NAT埠對映機制 (any|none|upnp|pmp|extip:<IP>) (預設: “any”)

--nodiscover 禁用節點發現機制(手動新增節點)

--v5disc 啟用實驗性的RLPx V5(Topic發現)機制

--nodekey value P2P節點金鑰檔案

--nodekeyhex value 十六進位制的P2P節點金鑰(用於測試)

礦工選項:

--mine 開啟挖礦

--minerthreads value 挖礦使用的CPU執行緒數量(預設值:8)

--etherbase value 挖礦獎勵地址(預設=第一個建立的帳戶)(預設值:“0”)

--targetgaslimit value 目標gas限制:設定最低gas限制(低於這個不會被挖?) (預設值:“4712388”)

--gasprice value 挖礦接受交易的最低gas價格

--extradata value 礦工設定的額外塊資料(預設=client version)

GAS價格選項:

--gpoblocks value 用於檢查gas價格的最近塊的個數 (預設: 10)

--gpopercentile value 建議gas價參考最近交易的gas價的百分位數,(預設: 50)

虛擬機器的選項:

--vmdebug 記錄VM及合約除錯資訊

日誌和除錯選項:

--metrics 啟用metrics收集和報告

--fakepow 禁用proof-of-work驗證

--verbosity value 日誌詳細度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)

--vmodule value 每個模組詳細度:以 <pattern>=<level>的逗號分隔列表 (比如 eth/*=6,p2p=5)

--backtrace value 請求特定日誌記錄堆疊跟蹤 (比如 “block.go:271”)

--debug 突出顯示呼叫位置日誌(檔名及行號)

--pprof 啟用pprof HTTP伺服器

--pprofaddr value pprof HTTP伺服器監聽介面(預設值:127.0.0.1)

--pprofport value pprof HTTP伺服器監聽埠(預設值:6060)

--memprofilerate value 按指定頻率開啟memory profiling (預設:524288)

--blockprofilerate value 按指定頻率開啟block profiling (預設值:0)

--cpuprofile value 將CPU profile寫入指定檔案

--trace value 將execution trace寫入指定檔案

WHISPER實驗選項:

--shh 啟用Whisper

--shh.maxmessagesize value 可接受的最大的訊息大小 (預設值: 1048576)

--shh.pow value 可接受的最小的POW (預設值: 0.2)

棄用選項:

--fast 開啟快速同步

--light 啟用輕客戶端模式

其他選項:

help, -h 顯示幫助