Tech

geth の difficulty をあまり上げない(or 一定にする)方法

  • このエントリーをはてなブックマークに追加

マイニングしていると、マイニングが遅くなる、という問題への対処方法。
プライベートのブロックチェーンで利用したい場合を想定しています。

1. まずは、genesis.jsonで設定

ただ、difficultyが調整されるので、根本解決になっておらず。

1.3.x 以前: geth –genesis genesis.json
1.4.x 以降: geth init genesis.json の後、geth + オプション

{
  "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x4000",
    "alloc": {},
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "Custem Ethereum Genesis Block",
    "gasLimit": "0xffffffff"
}

2. コードを変更する

gethのコードを変更して、コンパイルする

func CalcDifficulty(config *ChainConfig, time, parentTime uint64, parentNumber, parentDiff *big.Int) *big.Int {
    return big.NewInt(1)
}

1.4.10だと、この辺り

https://github.com/ethereum/go-ethereum/blob/master/core/block_validator.go#L257

関連用語

  • Ethereum
  • geth, go-ethereum
  • genesis ジェネシスブロック
  • このエントリーをはてなブックマークに追加