メインコンテンツへスキップ
このガイドでは、ローカルにスタンドアロンネットワークをセットアップするプロセスと、メインネットまたはテストネットでノードを実行する方法について説明します。 各ネットワークのハードウェア要件は、それぞれのタブで確認できます。
ローカルノードを簡単にセットアップするには、setup.shスクリプトをダウンロードして実行します。これにより、ローカルInjectiveネットワークが初期化されます。
wget https://raw.githubusercontent.com/InjectiveLabs/injective-chain-releases/master/scripts/setup.sh
chmod +x ./setup.sh # スクリプトを実行可能にする
./setup.sh
以下のコマンドでノードを起動します:
injectived start # このコマンドの実行後、ブロックの生成が開始されます
スクリプトの動作の詳細説明やセットアッププロセスをより細かく制御したい場合は、以下を参照してください。

チェーンの初期化

Injectiveノードを実行する前に、チェーンとノードのgenesisファイルを初期化する必要があります:
# <moniker>引数はノードのカスタムユーザー名です。人間が読める形式にしてください。
injectived init <moniker> --chain-id=injective-1
上記のコマンドにより、ノードの実行に必要なすべての設定ファイルとデフォルトのgenesisファイルが作成されます。genesisファイルはネットワークの初期状態を定義します。すべての設定ファイルはデフォルトで~/.injectivedにありますが、--homeフラグを渡すことでこのフォルダの場所を上書きできます。~/.injectived以外のディレクトリを使用する場合は、injectivedコマンドを実行するたびに--homeフラグで場所を指定する必要があります。既存のgenesisファイルがある場合は、--overwriteまたは-oフラグで上書きできます。~/.injectivedフォルダは以下の構造を持ちます:
.                                   # ~/.injectived
  |- data                           # ノードが使用するデータベースを含みます。
  |- config/
      |- app.toml                   # アプリケーション関連の設定ファイル。
      |- config.toml                # Tendermint関連の設定ファイル。
      |- genesis.json               # genesisファイル。
      |- node_key.json              # p2pプロトコルでのノード認証に使用する秘密鍵。
      |- priv_validator_key.json    # コンセンサスプロトコルでバリデーターとして使用する秘密鍵。

genesis.jsonファイルの修正

この時点で、genesis.jsonファイルの修正が必要です:
  • stakingのbond_denom、crisisのdenom、govのdenom、mintのdenomの値を"inj"に変更します。これはInjectiveのネイティブトークンです。
以下のコマンドを実行することで簡単に変更できます:
cat $HOME/.injectived/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
cat $HOME/.injectived/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="inj"' > $HOME/.injectived/config/tmp_genesis.json && mv $HOME/.injectived/config/tmp_genesis.json $HOME/.injectived/config/genesis.json
上記のコマンドは、デフォルトの.injectivedディレクトリを使用している場合にのみ動作します。特定のディレクトリの場合は、上記のコマンドを修正するか、genesis.jsonファイルを手動で編集して変更を反映してください。

バリデーターアカウントのキーの作成

チェーンを開始する前に、少なくとも1つのアカウントでstateを初期化する必要があります。そのためには、まずtest keyringバックエンドでmy_validatorという名前の新しいアカウントをkeyringに作成します(別の名前や別のバックエンドを選択しても構いません):
injectived keys add my_validator --keyring-backend=test

# 生成されたアドレスを後で使用するために変数に格納します。
MY_VALIDATOR_ADDRESS=$(injectived keys show my_validator -a --keyring-backend=test)
ローカルアカウントを作成したら、チェーンのgenesisファイルでそのアカウントにinjトークンを付与します。これにより、チェーンのgenesis時点からこのアカウントの存在がチェーンに認識されます:
injectived add-genesis-account $MY_VALIDATOR_ADDRESS 100000000000000000000000000inj --chain-id=injective-1
$MY_VALIDATOR_ADDRESSは、keyring内のmy_validatorキーのアドレスを保持する変数です。Injectiveのトークンは{amount}{denom}形式です:amountは18桁精度の10進数で、denomはdenomination key付きの一意のトークン識別子(例:inj)です。ここではinjトークンを付与しています。injinjectivedでstakingに使用されるトークン識別子です。

チェーンへのバリデーターの追加

アカウントにトークンが付与されたら、チェーンにバリデーターを追加する必要があります。バリデーターは、チェーンに新しいブロックを追加するためにコンセンサスプロセスに参加する特別なフルノードです。任意のアカウントがバリデーターオペレーターになる意向を宣言できますが、十分なdelegationを持つアカウントのみがアクティブセットに入ることができます。このガイドでは、上記のinitコマンドで作成したローカルノードをチェーンのバリデーターとして追加します。バリデーターは、gentxと呼ばれるgenesisファイルに含まれる特別なトランザクションを通じて、チェーンの最初の起動前に宣言できます:
# gentxを作成します。
injectived genesis gentx my_validator 1000000000000000000000inj --chain-id=injective-1 --keyring-backend=test

# gentxをgenesisファイルに追加します。
injectived genesis collect-gentxs
gentxは以下の3つのことを行います:
  1. 作成したvalidatorアカウントをバリデーターオペレーターアカウント(バリデーターを制御するアカウント)として登録します。
  2. 指定されたamountのstakingトークンをセルフデリゲートします。
  3. オペレーターアカウントを、ブロックの署名に使用されるTendermintノードのpubkeyにリンクします。--pubkeyフラグが指定されていない場合、上記のinjectived initコマンドで作成されたローカルノードのpubkeyがデフォルトで使用されます。
gentxの詳細については、以下のコマンドを使用してください:
injectived genesis gentx --help

app.tomlconfig.tomlを使用したノードの設定

2つの設定ファイルが~/.injectived/config内に自動生成されます:
  • config.toml: Tendermintの設定に使用されます(詳細はTendermintのドキュメントを参照)。
  • app.toml: Cosmos SDK(Injectiveの基盤)によって生成され、stateプルーニング戦略、テレメトリ、gRPCおよびRESTサーバーの設定、state sync等の設定に使用されます。
両ファイルには詳細なコメントが記載されています。ノードの調整については直接ファイルを参照してください。調整する設定の一例として、app.toml内のminimum-gas-pricesフィールドがあります。これは、バリデーターノードがトランザクションの処理に受け入れる最低ガス価格を定義します。空の場合は、何らかの値(例:10inj)を設定してください。そうしないとノードは起動時に停止します。このチュートリアルでは、最低ガス価格を0に設定します:
 # バリデーターがトランザクションの処理に受け入れる最低ガス価格。
 # トランザクションの手数料は、この設定で指定された任意のdenominationの
 # 最低額を満たす必要があります(例:0.25token1;0.0001token2)。
 minimum-gas-prices = "0inj"

Localnetの実行

すべてのセットアップが完了したら、ノードを起動できます:
injectived start # このコマンドの実行後、ブロックの生成が開始されます
このコマンドでは単一のノードを実行できます。チェーンとの対話には十分ですが、複数のノードを同時に実行してコンセンサスの動作を確認することもできます。