Go-Ethereum
沒有新幣挖礦的乙太坊專用網路
我設法使用以下方法創建了一個私有乙太坊網路
genesis.json
{ "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "200000000", "gasLimit": "2100000", "alloc": { "1A77F77E1e523f9f68D97A89b0502f136fB7F942": { "balance": "300000000000000000000000000000000000000" } } }
因為我已經將硬幣分配到上述錢包中,所以我不希望在此網路中生成任何新硬幣。有了這種創世配置,礦工是否能夠生成新幣?或者礦工只會為交易驗證而挖礦?
我們如何將這兩種方式與創世區塊區分開來?
我們如何將這兩種方式與創世區塊區分開來?
您不能在 Geth 中,至少不能通過在 genesis 文件中設置任何內容。
有了這種創世配置,礦工是否能夠生成新幣?
是的。同樣,如果您正在執行 Geth (go-ethereum) 客戶端,則無法直接關閉創世區塊中的挖礦獎勵。
我不希望在此網路中生成任何新硬幣
我能想到的幾個選項:
- 研究使用 Parity,它支持
blockReward
其 genesis 文件中的欄位。- 如果您要使用 Parity,請檢查不同的共識算法是否適合您的項目。(Parity 支持Pluggable Consensus。)
- 如果您非常想使用 Geth 客戶端,並且不介意從原始碼重新建構,請
ByzantiumBlockReward
更改consensus.go
.要更改的程式碼:
var ( FrontierBlockReward *big.Int = big.NewInt(5e+18) // Block reward in wei for successfully mining a block ByzantiumBlockReward *big.Int = big.NewInt(3e+18) // Block reward in wei for successfully mining a block upward from Byzantium maxUncles = 2 // Maximum number of uncles allowed in a single block allowedFutureBlockTime = 15 * time.Second // Max time from current time allowed for blocks, before they're considered future blocks )