JPUバナーイメージ

JPUバナーメール

 

Nethermindでローカルネットワークを立てた話

 

 

Gethが重い!

ということで検索して出てきたParityのPoAでネットワークを建てたらめちゃくちゃ軽くなってかなり満足した。

本当はそこでおしまいのはずだったのだけれど、「ところでコマンドがopenethereumとかなんで名前違うの?」と調べてるうちにParityが合併みたいになって、さらにはOpenEthereumのサポートさえ終わってることに気付く。

どんだけ浦島なことしてんのと落胆しつつNethermindを試した日記です。

 

基本はNamebase(github)に書いてあることとあるものですべて終わります。

ただ、Debianでソースからあれこれしたら10ギガ近くも容量を取られたので全消しして結局Namebaseサイトからビルド済みをダウンロードしました。

ほとんどコピーだけれど変えた部分とか参考になればどうぞ。なんか余分なものとか、ローカルとは言え有効になってると嫌だなぁってモジュールは除いてます。

もとはgithubのspaceneth.jsonです。


{
  "name": "Jpu Network",
  "engine": {
    "NethDev": {
      "params": {
      }
    }
  },
  "params": {
    "gasLimitBoundDivisor": "0x0400",
    "accountStartNonce": "0x0",
    "maximumExtraDataSize": "0x20",
    "minGasLimit": "0x1388",
    "networkID": "0x3e7",
    "eip140Transition": "0x0",
    "eip145Transition": "0x0",
    "eip150Transition": "0x0",
    "eip155Transition": "0x0",
    "eip160Transition": "0x0",
    "eip161abcTransition": "0x0",
    "eip161dTransition": "0x0",
    "eip211Transition": "0x0",
    "eip214Transition": "0x0",
    "eip658Transition": "0x0",
    "eip1014Transition": "0x0",
    "eip1052Transition": "0x0",
    "eip1283Transition": "0x0",
    "eip1283DisableTransition": "0x0",
    "eip152Transition": "0x0",
    "eip1108Transition": "0x0",
    "eip1344Transition": "0x0",
    "eip1884Transition": "0x0",
    "eip2028Transition": "0x0",
    "eip2200Transition": "0x0",
    "eip2315Transition": "0x0",
    "eip2537Transition": "0x0",
    "eip2565Transition": "0x0",
    "eip2929Transition": "0x0",
    "eip2930Transition": "0x0",
    "eip1559Transition": "0x0",
    "eip3198Transition": "0x0",
    "eip3529Transition": "0x0",
    "eip3541Transition": "0x0"
  },
  "genesis": {
    "seal": {
      "ethereum": {
        "nonce": "0x0000000000000042",
        "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "difficulty": "0x01",
    "author": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "gasLimit": "0x1000000"
  },
  "nodes": [
  ],
  "accounts": {
    "0000000000000000000000000000000000000000": { "balance": "1" },
    "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "0", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } },
    "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "0", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } },
    "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "0", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } },
    "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "0", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } },
    "0000000000000000000000000000000000000005": { "balance": "1", "nonce": "0", "builtin": { "name": "modexp", "activate_at": 1700000, "pricing": { "modexp": { "divisor": 20 } } } },
    "0000000000000000000000000000000000000006": { "balance": "1", "nonce": "0", "builtin": { "name": "alt_bn128_add", "activate_at": 1700000, "pricing": { "linear": { "base": 500, "word": 0 } } } },
    "0000000000000000000000000000000000000007": { "balance": "1", "nonce": "0", "builtin": { "name": "alt_bn128_mul", "activate_at": 1700000, "pricing": { "linear": { "base": 40000, "word": 0 } } } },
    "0000000000000000000000000000000000000008": { "balance": "1", "nonce": "0", "builtin": { "name": "alt_bn128_pairing", "activate_at": 1700000, "pricing": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 } } } },
    "0000000000000000000000000000000000000009": { "balance": "1" },
    "0x123456789abcdffghijklmnopqrstuvwxyz...": { "balance": "100000000000000000000" }
  }
}

 

configはこんな感じ


{
  "Init": {
    "WebSocketsEnabled": false,
    "IsMining": true,
    "StoreReceipts" : true,
    "EnableUnsecuredDevWallet": true,
    "DiscoveryEnabled": false,
    "GenesisHash": "0x...",
    "ChainSpecPath": "jpu/jpu.json",
    "BaseDbPath": "node/db",
    "LogFileName": "node/clique.logs.txt",
    "StaticNodesPath": "Data/static-nodes.json"
  },
  "Aura": {
    "ForceSealing": false
  },
  "Pruning": {
    "CacheMb": 64
  },
  "Network": {
    "OnlyStaticPeers": true
  },
  "JsonRpc": {
    "Enabled": true,
    "EnabledModules": ["Eth", "Web3", "Net"],
    "Port": 9999
  },
  "KeyStore": {
    "KeyStoreDirectory": "node/keystore",
    "BlockAuthorAccount": "0x123456789abcdffghijklmnopqrstuvwxyz...",
    "UnlockAccounts": "0x123456789abcdffghijklmnopqrstuvwxyz...",
    "PasswordFiles": ["node.pwds"]
  }
}

 

あとはもうかんたん、「./Nethermind.Runner -c ./node/configs/config.cfg」ですね! 一通り確認したら、ログを見やすくするために「--log ERROR」もしくは「--log WARN」のオプションをつけることをお勧めします。

GenesisHashは一回起動しないとわからないので、一行抜いておいて、後から足してください。この行はなくてもいいけれど、エラーが出るのでデータベースのうっかり上書き予防に少し役立ちます。

 

こんだけで一応コントラクトあげたりする、ちょっとしたブロックチェーンとして事足ります。

ただ、マイニングされたときのガス代がどこかに消えてるんですよ。なんか最初につくられるアカウントにも入っていなくて、Init moduleのIsMiningとMining moduleのEnabledとの違いの謎を解明したらわかるかな?

他にも問題があって、本当はPoAで構築したいんだけれど、どんなトランザクションもなにしてもpendingから一向にすすまない!

構築でき方からのご連絡を切に希望しております。今後、Web3関連の仕事のお手伝いお願いします!

 

 

近くの小学校は今日から新学期でした。

今年度も頑張っていきましょう!!

 

ではまた。

 

 

2023/4/6

 

 

--------------------------------

日記一覧

 

© JointPoint

 

JPUフッターイメージ