Go-Ethereum

如何更新我的私有乙太坊區塊鏈上的預設 homesteadBlock 值?

  • May 10, 2017

我正在嘗試使用要分配的 homesteadBlock 值創建我的私有乙太坊區塊鏈。據我了解,預設 homesteadBlock 值為 1500000。

$$ Q $$如何將 homesteadBlock 值分配為 0?在 geth 內部是否可以檢查它的值是否已更新為 0?或者我如何檢查 homesteadBlock 值是否已更新? 更重要的是如何創建我的私有乙太坊區塊鏈?我知道有很多關於這個問題的資源,但我找不到 geth 1.4.17 版本的資源。

我不確定我的私有區塊鏈的 homesteadBlock 值是否已更新。以下是我從頭開始創建我的私有乙太坊區塊鏈的方法:

首先清空先前的設置數據:

[$] rm -rf ~/.ethash/* && rm -rf ~/.ethereum/*
[$] sudo rm -rf /home/miner/MyEthereumEbloc/  && mkdir /home/miner/MyEthereumEbloc/

創建一個新帳戶:

[$] sudo geth --datadir="/home/miner/MyEthereumEbloc/" account new

賬戶新地址:{eda8c89a68f059c1659272076e85e4373717b0d8}

此地址將添加到 CustomGenesis.json 文件中。

**設置 CustomGenesis.json:**對於連接到私有乙太坊網路的所有節點,此文件應該相同:

{
   "config": {
           "homesteadBlock": 0
   },
   "nonce": "0",
   "difficulty": "0x400",
   "mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
   "coinbase": "0x0000000000000000000000000000000000000000",
   "timestamp": "0x00",
   "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
   "extraData": "0x",
   "gasLimit": "0x3B4A1B44",
   "alloc": {
       "0xeda8c89a68f059c1659272076e85e4373717b0d8":   //added line
       { "balance": "1000000000000000000000000000000" } //added line
   }
}

區塊鏈初始化:

[$] sudo geth --datadir="/home/miner/MyEthereumEbloc/" init /home/CustomGenesis.json

請注意,當我執行時,我可以看到更新的餘額:

sudo geth --datadir="/home/miner/MyEthereumEbloc/" console

primaryAddress = eth.accounts[0]
> web3.fromWei(eth.getBalance(primaryAddress), "ether")
1000000000000000000000000000000

要我的:

$ sudo ./geth --port 3000 --networkid 23422 --identity node1 --verbosity 3 
--nodiscover --nat none --datadir="/home/miner/MyEthereumEbloc" --mine
--ipcpath /home/miner/MyEthereumEbloc/geth.ipc console

感謝您的寶貴幫助和時間。

為了更改 Homestead 塊,您需要從原始碼重新編譯 geth。

您可以看到相關行

MainNetHomesteadBlock = big.NewInt(1150000)

只需將其更改為

MainNetHomesteadBlock = big.NewInt(0)

並使用說明重新編譯

你可以通過編譯這個合約來測試 Homestead 是否被啟用:

contract TestHomestead{
   function test () constant returns(bool){
       return address(4).delegatecall(1);
   }
}

如果您在 Homestead,這將使用很少的氣體(大約 300)點頭不會返回 true。如果您處於前沿,您將使用交易中發送的所有氣體,並且會拋出異常。

引用自:https://ethereum.stackexchange.com/questions/9240