Go-Ethereum

如何將一些乙太幣分配給乙太坊測試網賬戶?

  • September 20, 2017

問題:我怎樣才能在乙太坊測試網/開發甚至私有區塊鏈中獲得一些乙太幣?

我完全糊塗了。如果我使用這樣的自定義創世塊:

{
"config": {
   "chainId":123 ,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
 },

"nonce": "0x0000000000000042",     "timestamp": "0x0",
"parentHash": 
"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",     "gasLimit": "0x8000000",     "difficulty": 
"0x400",
"mixhash": 
"0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc":{"0x17e6672b3a917b7543d44e07846358aaa22a4379":{
"balance":"8000000000000000000"

}}

}

那麼如果我這樣做

geth --datadir ~/.ethereum_private init ~/CustomGenesis.json 

出現此錯誤:

  Fatal: Failed to write genesis block: database already contains an 
  incompatible genesis block (have 6650a0ac6c5e8054, new 
  644f9b97e5f57df7)

如果我將“alloc”欄位留空,則錯誤將不再出現(但我沒有任何乙太幣)。

獲得一些乙太幣的另一個選擇是我的:

miner.start(1)

但如果我這樣做,就會出現 null 。所以,我不能再得到任何乙太了。

當我們使用 truffle + testrpc 時,我們沒有這種問題。因為它將乙太幣分配給我們創建的所有帳戶。

所以我不知道如何在乙太坊測試網/開發甚至私有區塊鏈中獲得一些乙太幣。

您不能從已經初始化的私有區塊鏈更改創世參數。

您必須重置區塊鏈以消除任何先前的交易。

geth --datadir <your_data_directory> removedb

然後你可以執行

geth --datadir <your_data_directory> init <your_genesis_file>

用餘額乙太創建一個私有區塊鏈。

將以下程式碼保存在 genesis.json

{
"config": {
   "chainId": 15,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
},
"nonce": "0x0000000000000042",
"difficulty": "0x40",
"gasLimit": "21000000000000000",
"alloc": {
   "0x95490e50a8b43348fa198bad08d4de211fb2b887": { "balance": "100000000000000000000000000" },
   "0xa4f6f95b6cb36025dd09c9f5fe068e401951e963": { "balance": "10000000000000000000" }
}

}

初始化節點 us

geth --datadir "node1" init "/path/to/genesis.json"

然後使用進入java控制台

geth --datadir "node1" --rpc console

在 java 控制台中使用創建 coinbase 帳戶

personal.newAccount("Password")

方法一:

然後使用

miner.start(1)

現在您可以使用

eth.getBalance(eth.accounts[0])

你可以找到餘額

方法二:

創建帳戶後,複製帳戶地址並關閉 java 控制台。然後使用刪除 node1 文件夾下的密鑰庫文件

rm -rf `ls | grep -v keystore`

然後在 genesis.json 文件中用複制的地址和余額替換帳戶地址。然後再次使用初始化 node1

geth --datadir "node1" init "/path/to/genesis.json"

連接到 java 控制台並查詢餘額,現在您將擁有您在 genesis.json 中提到的餘額

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