環境構築
まず、イーサリアムのプライベートチェーンを構築するにはさまざまな方法がありますが、この記事では、コントラクトのテストや実験に使用できる、docker を使用してテストチェーンをすばやく構築する方法を紹介します。運用環境には適していません。
(openethereum は 2022 年 5 月に更新されなくなり、既存のバージョンのみが保持されることが事前に述べられています。)
docker を使用して Ethereum プライベート チェーンを構築するには、当然 docker と docker compose をインストールする必要があります。 docker のインストールについては、公式 Web サイトにアクセスすることをお勧めします。インストールについては、別の記事 ( hyperledger Fabric 2.4 のインストールと実行テスト) で詳しく説明しています。
この記事で使用しているdockerイメージはopenethereum/openethereumですが、興味のある方は公式サイトでご自身で調べてください。
openethereum源码官网
https://github.com/openethereum/openethereum
openethereum文档详解
https://openethereum.github.io/Configuring-OpenEthereum
詳細なインストールリンクは以下に添付されています
。注、docker、docker-compose をインストールし、apt 経由ではなく、公式 Web サイトからアクセスしてください。(影響があるかもしれません)
docker
設定ファイルのディレクトリ
まず新しいチェーン ディレクトリを作成し、対応するデータ ディレクトリとキー ディレクトリを作成します。このうち、newethchain はメイン プロジェクトのルート ディレクトリであり、キー フォルダーは対応するアカウント キー ファイルを保存するために使用されます。
mkdir newethchain
cd newethchain
mkdir chaindata
mkdir key
次に重要な点ですが、OpenEthereum を起動して設定するために、対応する設定ファイルを作成する必要があります。
イーサリアムの構成
1. 1つ目はイーサリアムノードを起動するための設定ファイル、つまりジェネシスブロックを生成するためにイーサリアムを起動するための設定ファイルですここではよく使う起動設定を使用します。以下を参照して設定してください。
簡単な構成は次のように添付されます。
{
"name": "newethchain",
"engine": {
"instantSeal": {
"params": {
}
}
},
"params": {
"gasLimitBoundDivisor": "0x0400",
"accountStartNonce": "0x0",
"maximumExtraDataSize": "0x20",
"minGasLimit": "0x1388",
"networkID": "0x11",
"registrar": "0x0000000000000000000000000000000000001337",
"eip150Transition": "0x0",
"eip160Transition": "0x0",
"eip161abcTransition": "0x0",
"eip161dTransition": "0x0",
"eip155Transition": "0x0",
"eip98Transition": "0x7fffffffffffff",
"maxCodeSize": 24576,
"maxCodeSizeTransition": "0x0",
"eip140Transition": "0x0",
"eip211Transition": "0x0",
"eip214Transition": "0x0",
"eip658Transition": "0x0",
"eip145Transition": "0x0",
"eip1014Transition": "0x0",
"eip1052Transition": "0x0",
"wasmActivationTransition": "0x0"
},
"genesis": {
"seal": {
"generic": "0x0"
},
"difficulty": "0x20000",
"author": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x7A1200"
},
"accounts": {
"E2612d75e9BEBe8924d1d3e92a0003876eF113fa": {
"balance": "1000000000000000000000000000" },
"3e8230dfc38Fb145E10F9484AFdD823DD079FdF2": {
"balance": "5000000000000000000" }
}
}
OpenEthereum の構成
2. 2 番目のステップでは、OpenEthereum を構成し、最初のステップのイーサリアム作成ブロックの構成を OpenEthereum に導入します。openethereum は docker 形式で起動され、geth のようにコマンドラインから起動しないため、設定ファイルの最初のステップの設定ファイルをパス形式で設定する必要があります
まずはopenethereumの設定ファイルconfig.tomlを作成します。以下の設定を入力し、詳細な設定については公式 Web サイトを参照し、必要に応じて設定してください。
詳細な構成については、Web サイト https://openethereum.github.io/Cconfiguring-OpenEthereum を参照してください
。 フルバージョンの構成 toml ファイルについては、https://github.com/openethereum/openethereum/blob/main/bin を参照してください。 /oe/cli/ の testing/config.full.toml では
、最初の構成が最初のステップの作成構成であることに注意してください。これは docker のパスに書き込む必要があります。ここでのパスについては、3 番目のステップを参照してください。詳細については。
[parity]
# 创世配置文件,指定相关的创世配置信息,第一步的配置文件的文件名
chain = "/home/openethereum/.local/share/openethereum/neweth.json"
#base_path = "./chain-data"
#keys_path = "./keys"
[rpc]
interface = "all"
apis = ["all"]
hosts = ["all"]
cors = ["all"]
# necessary for EIP1186 eth_getProof
experimental_rpcs = true
port = 8845
[websockets]
interface = "all"
apis = ["all"]
hosts = ["all"]
origins = ["all"]
port = 8846
[mining]
reseal_min_period = 0
min_gas_price = 0
[footprint]
# Enables Fat DB
fat_db = "on"
docker compose の起動構成
3. このステップは主に dockercompose の設定です. docker compose コマンドを使用して openethereum の docker イメージを配置して起動します. 主に設定ファイル config.toml (2 番目のステップの設定ファイルのファイル名) を設定する必要があります、チェーン データ ディレクトリ chain-data 、アカウント シークレット キー ディレクトリ キー。ここでは参考として簡単な設定を示しますが、ここで注意が必要なのは、この手順の設定ファイルと2番目の手順の設定ファイルは、開いているポート番号が1対1で対応している必要があることです。
version: '3.3'
services:
openethereum:
container_name: newethchain
image: openethereum/openethereum
volumes:
- ./:/home/openethereum/.local/share/openethereum
command: >
--config /home/openethereum/.local/share/openethereum/config.toml
--base-path /home/openethereum/.local/share/openethereum/chain-data
--keys-path /home/openethereum/.local/share/openethereum/key
ports:
- 8845:8845
- 8846:8846
# - 30002:30002
# - 30002:30002/udp
この設定は完了です
テスト
Dockerコンテナを起動する
cd newethchain
sudo docker compose up
添加-d参数可使容器在后台运行
コンテナが正常に起動していることがわかります
。ジェネシス ブロックを構成するときに、メタマスクでアカウントに初期 ETH を割り当てることができます。
"accounts": {
"E2612d75e9BEBe8924d1d3e92a0003876eF113fa": {
"balance": "1000000000000000000000000000" },
"3e8230dfc38Fb145E10F9484AFdD823DD079FdF2": {
"balance": "5000000000000000000" }
}
この時点で、メタマスクを介してプライベート チェーンを接続することによる効果を確認できます。
必要に応じて、web3.js または ether.js を使用してより詳細なテストを行うことができます。
要約する
この記事で紹介する高速イーサリアム構築方法は、主に実験やテスト契約に使用されます。チェーンのバージョンに特別な要件がある場合は、geth またはその他の方法で最新バージョンの Ethereum プライベート チェーンを開始することをお勧めします。
ご質問がございましたら、お気軽にお問い合わせください。