From 9ffad8a3262209969e686e11ae7c2669a9d1b386 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:04:59 +0000 Subject: [PATCH] Add Japanese translation for first half of Infrastructure section Generated-By: mintlify-agent --- .gitbook/docs.json | 24 ++ .gitbook/jp/infra/cosmovisor.mdx | 171 ++++++++ .gitbook/jp/infra/index.mdx | 8 + .../jp/infra/interact-node/command-line.mdx | 7 + .gitbook/jp/infra/interact-node/go.mdx | 88 ++++ .gitbook/jp/infra/interact-node/grpc.mdx | 62 +++ .gitbook/jp/infra/interact-node/index.mdx | 10 + .gitbook/jp/infra/interact-node/rest.mdx | 44 ++ .gitbook/jp/infra/join-a-network.mdx | 376 ++++++++++++++++++ .gitbook/jp/infra/run-node.mdx | 56 +++ .gitbook/jp/infra/set-up-keyring.mdx | 96 +++++ .gitbook/jp/infra/upgrade-node.mdx | 28 ++ 12 files changed, 970 insertions(+) create mode 100644 .gitbook/jp/infra/cosmovisor.mdx create mode 100644 .gitbook/jp/infra/index.mdx create mode 100644 .gitbook/jp/infra/interact-node/command-line.mdx create mode 100644 .gitbook/jp/infra/interact-node/go.mdx create mode 100644 .gitbook/jp/infra/interact-node/grpc.mdx create mode 100644 .gitbook/jp/infra/interact-node/index.mdx create mode 100644 .gitbook/jp/infra/interact-node/rest.mdx create mode 100644 .gitbook/jp/infra/join-a-network.mdx create mode 100644 .gitbook/jp/infra/run-node.mdx create mode 100644 .gitbook/jp/infra/set-up-keyring.mdx create mode 100644 .gitbook/jp/infra/upgrade-node.mdx diff --git a/.gitbook/docs.json b/.gitbook/docs.json index 701677f4..28c1e5d4 100644 --- a/.gitbook/docs.json +++ b/.gitbook/docs.json @@ -1701,6 +1701,30 @@ "group": "INJECTIVE", "pages": [ "jp/index", + { + "group": "インフラストラクチャ", + "icon": "network-wired", + "expanded": false, + "pages": [ + "jp/infra/index", + { + "group": "ノードとの対話", + "expanded": false, + "pages": [ + "jp/infra/interact-node/index", + "jp/infra/interact-node/command-line", + "jp/infra/interact-node/grpc", + "jp/infra/interact-node/go", + "jp/infra/interact-node/rest" + ] + }, + "jp/infra/run-node", + "jp/infra/set-up-keyring", + "jp/infra/join-a-network", + "jp/infra/cosmovisor", + "jp/infra/upgrade-node" + ] + }, "jp/faq", "jp/glossary", "jp/references" diff --git a/.gitbook/jp/infra/cosmovisor.mdx b/.gitbook/jp/infra/cosmovisor.mdx new file mode 100644 index 00000000..9b109bb5 --- /dev/null +++ b/.gitbook/jp/infra/cosmovisor.mdx @@ -0,0 +1,171 @@ +--- +title: Injective NetworkのCosmovisorセットアップガイド +--- + +Cosmovisorは、Cosmos SDKベースのブロックチェーン向けに設計されたプロセスマネージャーで、バイナリ(チェーン)アップグレードの管理を簡素化します。このガイドでは、Injective NetworkノードにCosmovisorをセットアップする手順を説明します。 + +> **注意:** これらの手順は、既存のチェーンバイナリ(例:`injectived`)があり、ソースからCosmovisorをインストールする場合にはGo環境が動作していることを前提としています。セットアップに応じて名前とパスを調整してください。 + +--- + +## 目次 + +1. [インストール](#インストール) + - [Goによるインストール](#goによるインストール) +2. [環境変数](#環境変数) +3. [ディレクトリ構造](#ディレクトリ構造) +4. [Cosmovisorの実行](#cosmovisorの実行) +5. [チェーンアップグレードの処理](#チェーンアップグレードの処理) +6. [Cosmovisorをsystemdサービスとして実行](#cosmovisorをsystemdサービスとして実行) + +--- + +## インストール + +### Goによるインストール + +Goがインストールされている場合、以下のコマンドでCosmovisorをインストールできます: + +```bash +go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0 +``` + +> **ヒント:** Goバイナリのインストールパス(通常`$GOPATH/bin`または`$HOME/go/bin`)がシステムの`PATH`に追加されていることを確認してください。以下のコマンドでインストールを確認できます: +> +> ```bash +> which cosmovisor +> ``` + +## 環境変数 + +Cosmovisorがどのバイナリを実行し、どこにあるかを認識できるように、以下の環境変数をセットアップします: + +- **`DAEMON_NAME`** + チェーンのバイナリ名(例:`injectived`)。 + +- **`DAEMON_HOME`** + ノードのホームディレクトリ(例:`~/.injectived`)。 + +これらの変数は、シェルのプロファイル(`~/.bashrc`や`~/.profile`など)に設定するか、ターミナルセッションで直接エクスポートできます: + +```bash +export DAEMON_NAME=injectived +export DAEMON_HOME=~/.injectived +``` + +--- + +## ディレクトリ構造 + +Cosmovisorは、ノードのホームディレクトリに特定のフォルダ構造を必要とします: + +1. **Genesisディレクトリの作成** + + このディレクトリには初期(genesis)バイナリが配置されます。 + + ```bash + mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin + ``` + +2. **現在のバイナリのコピー** + + 現在のチェーンバイナリ(例:`injectived`)をgenesisフォルダに配置します。ファイル名が`DAEMON_NAME`の値と一致していることを確認してください(次のセクションを参照)。 + + ```bash + cp $(which injectived) $DAEMON_HOME/cosmovisor/genesis/bin/injectived + ``` + +--- + +## Cosmovisorの実行 + +チェーンのバイナリを直接実行する代わりに、以下のコマンドでCosmovisorを使用してノードを起動します: + +```bash +cosmovisor run start +``` + +Cosmovisorは以下を行います: + +- `$DAEMON_HOME/cosmovisor/genesis/bin`(または適切なアップグレードフォルダ)のバイナリを検索します。 +- そのバイナリを使用してノードを起動します。 +- オンチェーンのアップグレードシグナルを監視し、必要に応じてバイナリを自動的に切り替えます。 + +--- + +## チェーンアップグレードの処理 + +オンチェーンでアップグレードがアナウンスされた場合、Cosmovisorが自動的に切り替えられるように新しいバイナリを準備します: + +1. **アップグレードディレクトリの作成** + + オンチェーンで提供されるアップグレード名(例:`v1.14.0`)を使用します: + + ```bash + mkdir -p $DAEMON_HOME/cosmovisor/upgrades//bin + ``` + +2. **新しいバイナリの配置** + + 新しいバイナリをコンパイルまたはダウンロードし、アップグレードディレクトリにコピーします。バイナリ名が`DAEMON_NAME`と一致していることを確認してください。 + + ```bash + cp /path/to/new/injectived $DAEMON_HOME/cosmovisor/upgrades//bin + cp /path/to/new/libwasmvm.x86_64.so $DAEMON_HOME/cosmovisor/upgrades//bin + ``` + +> **ヒント:** GitHubから`injectived`バイナリパッケージをダウンロードした場合、`libwasmvm.x86_64.so`をアップグレードの`bin`ディレクトリにコピーします。後でsystemdサービスにこのディレクトリを`LD_LIBRARY_PATH`に追加する環境変数が設定されます。 + +3. **アップグレードプロセス** + + アップグレード高に達すると、Cosmovisorはスケジュールされたアップグレードを検出し、対応するアップグレードフォルダにあるバイナリに自動的に切り替えます。 + +--- + +## Cosmovisorをsystemdサービスとして実行 + +本番環境では、ノードをsystemdサービスとして実行するのが一般的です。以下はサービスファイルの例です。 + +1. **サービスファイルの作成** + + 以下の内容でファイル(例:`/etc/systemd/system/injectived.service`)を作成します。パスと``を適宜調整してください: + + ```ini + [Unit] + Description=Injective Daemon managed by Cosmovisor + After=network-online.target + + [Service] + User= + ExecStart=/home//go/bin/cosmovisor run start + Restart=always + RestartSec=3 + Environment="DAEMON_NAME=injectived" + Environment="DAEMON_HOME=/home//.injectived" + Environment="PATH=/usr/local/bin:/home//go/bin:$PATH" + Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false" + Environment="DAEMON_RESTART_AFTER_UPGRADE=true" + Environment="UNSAFE_SKIP_BACKUP=true" + Environment="LD_LIBRARY_PATH=/home//.injectived/cosmovisor/current/bin" + + [Install] + WantedBy=multi-user.target + ``` + +2. **サービスの有効化と起動** + + ```bash + sudo systemctl daemon-reload + sudo systemctl enable injectived.service + sudo systemctl start injectived.service + ``` + +3. **ログの確認** + + サービスが正常に動作していることを確認します: + + ```bash + journalctl -u injectived.service -f + ``` + +--- diff --git a/.gitbook/jp/infra/index.mdx b/.gitbook/jp/infra/index.mdx new file mode 100644 index 00000000..ea56c2f4 --- /dev/null +++ b/.gitbook/jp/infra/index.mdx @@ -0,0 +1,8 @@ +--- +description: >- + このセクションでは、ノードオペレーターおよびバリデーターがsentry/バリデーターノードの運用、アップグレード、メンテナンスを行う方法について説明します。 +title: 概要 +--- + +* [メインネットバリデーター](/jp/infra/validator-mainnet/) +* [テストネットバリデーター](/jp/infra/validator-testnet/) diff --git a/.gitbook/jp/infra/interact-node/command-line.mdx b/.gitbook/jp/infra/interact-node/command-line.mdx new file mode 100644 index 00000000..71ab60bd --- /dev/null +++ b/.gitbook/jp/infra/interact-node/command-line.mdx @@ -0,0 +1,7 @@ +--- +title: CLIを使用したノードとの対話 +--- + +`injectived` CLIを使用してノードと対話できます。ローカルプライベートネットワーク内のノードと対話する場合は、CLIを使用する前にターミナルでノードが実行されていることを確認してください。 + +`injectived`の使用方法の詳細については、[injectivedの使用](/developers/injectived/use/ "mention")を参照してください。 diff --git a/.gitbook/jp/infra/interact-node/go.mdx b/.gitbook/jp/infra/interact-node/go.mdx new file mode 100644 index 00000000..da814c11 --- /dev/null +++ b/.gitbook/jp/infra/interact-node/go.mdx @@ -0,0 +1,88 @@ +--- +title: Goを使用したノードとのプログラム的な対話 +--- + + +以下の例はGoで記述されていますが、PythonおよびTS SDKもノード/Injectiveとのプログラム的な対話に使用できます。 + +* [TypeScript の例](/developers-native/examples/) +* [Python の例](https://github.com/InjectiveLabs/sdk-python/tree/master/examples) + + +以下のスニペットは、Goプログラム内でgRPCを使用してstateをクエリする方法を示しています。gRPC接続を作成し、Protobufで生成されたクライアントコードを使用してgRPCサーバーにクエリを送信します。 + +```go +import ( + "context" + "fmt" + + "google.golang.org/grpc" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx" +) + +func queryState() error { + myAddress, err := sdk.AccAddressFromBech32("inj...") + if err != nil { + return err + } + + // gRPCサーバーへの接続を作成します。 + grpcConn := grpc.Dial( + "127.0.0.1:9090", // gRPCサーバーのアドレス + grpc.WithInsecure(), // SDKはトランスポートセキュリティメカニズムをサポートしていません。 + ) + defer grpcConn.Close() + + // x/bankサービスをクエリするためのgRPCクライアントを作成します。 + bankClient := banktypes.NewQueryClient(grpcConn) + bankRes, err := bankClient.Balance( + context.Background(), + &banktypes.QueryBalanceRequest{Address: myAddress, Denom: "inj"}, + ) + if err != nil { + return err + } + + fmt.Println(bankRes.GetBalance()) // アカウント残高を出力 + + return nil +} +``` + +#### **Goを使用した過去のstateのクエリ** + +過去のブロックのクエリは、gRPCリクエストにブロック高のメタデータを追加することで行います。 + +```go +import ( + "context" + "fmt" + + "google.golang.org/grpc" + "google.golang.org/grpc/metadata" + + grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" + "github.com/cosmos/cosmos-sdk/types/tx" +) + +func queryState() error { + // --省略-- + + var header metadata.MD + bankRes, err = bankClient.Balance( + metadata.AppendToOutgoingContext(context.Background(), grpctypes.GRPCBlockHeightHeader, "12"), // リクエストにメタデータを追加 + &banktypes.QueryBalanceRequest{Address: myAddress, Denom: denom}, + grpc.Header(&header), // レスポンスからヘッダーを取得 + ) + if err != nil { + return err + } + blockHeight = header.Get(grpctypes.GRPCBlockHeightHeader) + + fmt.Println(blockHeight) // ブロック高を出力(12) + + return nil +} +``` diff --git a/.gitbook/jp/infra/interact-node/grpc.mdx b/.gitbook/jp/infra/interact-node/grpc.mdx new file mode 100644 index 00000000..ef7f6d0c --- /dev/null +++ b/.gitbook/jp/infra/interact-node/grpc.mdx @@ -0,0 +1,62 @@ +--- +title: gRPCを使用したノードとの対話 +--- + +Protobufエコシステムでは、`*.proto`ファイルからさまざまな言語へのコード生成を含む、さまざまなユースケース向けのツールが開発されています。これらのツールにより、クライアントを簡単に構築できます。多くの場合、クライアント接続(トランスポート)は簡単にプラグインおよび置換できます。ここでは一般的なトランスポート方法であるgRPCについて説明します。 + +コード生成ライブラリは技術スタックに大きく依存するため、ここでは2つの方法のみを紹介します: + +* 汎用的なデバッグおよびテスト用の`grpcurl` +* Go、Python、またはTSによるプログラム的な方法 + +## grpcurl + +[grpcurl](https://github.com/fullstorydev/grpcurl)は、gRPC版の`curl`です。GoライブラリとしてもGoから利用可能ですが、ここではデバッグおよびテスト目的のCLIコマンドとしてのみ使用します。インストール方法については、上記リンクの手順に従ってください。 + +ローカルノードが稼働している場合(localnetまたはライブネットワークに接続済み)、以下のコマンドを実行して利用可能なProtobufサービスの一覧を取得できます。`localhost:9090`は、`app.toml`の`grpc.address`フィールドで設定された別のノードのgRPCサーバーエンドポイントに置き換えることができます: + +```bash +grpcurl -plaintext localhost:9090 list +``` + +`cosmos.bank.v1beta1.Query`のようなgRPCサービスの一覧が表示されます。これはリフレクションと呼ばれ、利用可能なすべてのエンドポイントの説明を返すProtobufエンドポイントです。これらはそれぞれ異なるProtobufサービスを表し、各サービスはクエリ可能な複数のRPCメソッドを公開しています。 + +サービスの詳細を取得するには、以下のコマンドを実行します: + +```bash +# 確認したいサービス +grpcurl \ + localhost:9090 \ + describe cosmos.bank.v1beta1.Query +``` + +RPCコールを実行してノードから情報を取得することも可能です: + +```bash +grpcurl \ + -plaintext + -d '{"address":"$MY_VALIDATOR"}' \ + localhost:9090 \ + cosmos.bank.v1beta1.Query/AllBalances +``` + +## grpcurlを使用した過去のstateのクエリ + +gRPCリクエストに[gRPCメタデータ](https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md)を渡すことで、過去のデータをクエリすることもできます。`x-cosmos-block-height`メタデータにクエリ対象のブロックを含める必要があります。grpcurlを使用する場合、コマンドは以下のようになります: + +```bash +grpcurl \ + -plaintext \ + -H "x-cosmos-block-height: 279256" \ + -d '{"address":"$MY_VALIDATOR"}' \ + localhost:9090 \ + cosmos.bank.v1beta1.Query/AllBalances +``` + +そのブロックのstateがノードによってまだプルーニングされていない場合、このクエリは空でないレスポンスを返します。 + +## トランザクションの送信 + +gRPCおよびRESTを使用してトランザクションを送信するには、トランザクションの生成、署名、そしてブロードキャストという追加手順が必要です。 + +詳細については[トランザクション](/defi/transactions/ "mention")を参照してください。 diff --git a/.gitbook/jp/infra/interact-node/index.mdx b/.gitbook/jp/infra/interact-node/index.mdx new file mode 100644 index 00000000..754bc747 --- /dev/null +++ b/.gitbook/jp/infra/interact-node/index.mdx @@ -0,0 +1,10 @@ +--- +title: ノードとの対話 +--- + +このセクションでは、Injectiveノードと対話するためのさまざまな方法について説明します。 + +- [コマンドライン](/jp/infra/interact-node/command-line) +- [gRPC](/jp/infra/interact-node/grpc) +- [Go](/jp/infra/interact-node/go) +- [REST](/jp/infra/interact-node/rest) diff --git a/.gitbook/jp/infra/interact-node/rest.mdx b/.gitbook/jp/infra/interact-node/rest.mdx new file mode 100644 index 00000000..7bd7c8b7 --- /dev/null +++ b/.gitbook/jp/infra/interact-node/rest.mdx @@ -0,0 +1,44 @@ +--- +title: RESTエンドポイントを使用したノードとの対話 +--- + +Cosmos SDK上のすべてのgRPCサービスは、gRPC-gatewayを通じてより便利なRESTベースのクエリとして利用できます。URLパスの形式はProtobufサービスメソッドの完全修飾名に基づいていますが、最終的なURLがより慣用的に見えるようにカスタマイズされている場合があります。例えば、`cosmos.bank.v1beta1.Query/AllBalances`メソッドのRESTエンドポイントは`GET /cosmos/bank/v1beta1/balances/{address}`です。リクエスト引数はクエリパラメータとして渡されます。 + +以下の例では、ローカルプライベートネットワーク内のノードとRESTエンドポイントを使用して対話することを想定しています。ドメインをパブリックネットワークに変更することもできます。 + +具体的な例として、残高リクエストを行う`curl`コマンドは以下のとおりです: + +```bash +curl \ + -X GET \ + -H "Content-Type: application/json" \ + http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR +``` + +`localhost:1317`を、`api.address`フィールドで設定されたノードのRESTエンドポイントに置き換えてください。 + +利用可能なすべてのRESTエンドポイントの一覧はSwagger仕様ファイルとして提供されています。`localhost:1317/swagger`で確認できます。`app.toml`ファイルの`api.swagger`フィールドがtrueに設定されていることを確認してください。 + +## RESTを使用した過去のstateのクエリ + +過去のstateのクエリは、HTTPヘッダー`x-cosmos-block-height`を使用して行います。例えば、curlコマンドは以下のようになります: + +```bash +curl \ + -X GET \ + -H "Content-Type: application/json" \ + -H "x-cosmos-block-height: 279256" \ + http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR +``` + +そのブロックのstateがノードによってまだプルーニングされていない場合、このクエリは空でないレスポンスを返します。 + +## Cross-Origin Resource Sharing (CORS) + +セキュリティのため、[CORSポリシー](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)はデフォルトで有効になっていません。rest-serverを使用する場合は、リバースプロキシの提供を推奨します。これは[nginx](https://www.nginx.com/)を使用して行うことができます。テストおよび開発目的では、`app.toml`内に`enabled-unsafe-cors`フィールドがあります。 + +## トランザクションの送信 + +gRPCおよびRESTを使用してトランザクションを送信するには、トランザクションの生成、署名、そしてブロードキャストという追加手順が必要です。 + +詳細については[トランザクション](/defi/transactions/ "mention")を参照してください。 diff --git a/.gitbook/jp/infra/join-a-network.mdx b/.gitbook/jp/infra/join-a-network.mdx new file mode 100644 index 00000000..3f73a565 --- /dev/null +++ b/.gitbook/jp/infra/join-a-network.mdx @@ -0,0 +1,376 @@ +--- +title: ネットワークへの参加 +--- + +このガイドでは、ローカルにスタンドアロンネットワークをセットアップするプロセスと、メインネットまたはテストネットでノードを実行する方法について説明します。 + +各ネットワークのハードウェア要件は、それぞれのタブで確認できます。 + + + +ローカルノードを簡単にセットアップするには、`setup.sh`スクリプトをダウンロードして実行します。これにより、ローカルInjectiveネットワークが初期化されます。 + +```bash +wget https://raw.githubusercontent.com/InjectiveLabs/injective-chain-releases/master/scripts/setup.sh +chmod +x ./setup.sh # スクリプトを実行可能にする +./setup.sh +``` + +以下のコマンドでノードを起動します: + +```bash +injectived start # このコマンドの実行後、ブロックの生成が開始されます +``` + +スクリプトの動作の詳細説明やセットアッププロセスをより細かく制御したい場合は、以下を参照してください。 + +#### チェーンの初期化 + +Injectiveノードを実行する前に、チェーンとノードのgenesisファイルを初期化する必要があります: + +```bash +# 引数はノードのカスタムユーザー名です。人間が読める形式にしてください。 +injectived init --chain-id=injective-1 +``` + +上記のコマンドにより、ノードの実行に必要なすべての設定ファイルとデフォルトのgenesisファイルが作成されます。genesisファイルはネットワークの初期状態を定義します。すべての設定ファイルはデフォルトで`~/.injectived`にありますが、`--home`フラグを渡すことでこのフォルダの場所を上書きできます。`~/.injectived`以外のディレクトリを使用する場合は、`injectived`コマンドを実行するたびに`--home`フラグで場所を指定する必要があります。既存のgenesisファイルがある場合は、`--overwrite`または`-o`フラグで上書きできます。 + +`~/.injectived`フォルダは以下の構造を持ちます: + +```bash +. # ~/.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のネイティブトークンです。 + +以下のコマンドを実行することで簡単に変更できます: + +```bash +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に作成します(別の名前や別のバックエンドを選択しても構いません): + +```bash +injectived keys add my_validator --keyring-backend=test + +# 生成されたアドレスを後で使用するために変数に格納します。 +MY_VALIDATOR_ADDRESS=$(injectived keys show my_validator -a --keyring-backend=test) +``` + +ローカルアカウントを作成したら、チェーンのgenesisファイルでそのアカウントに`inj`トークンを付与します。これにより、チェーンのgenesis時点からこのアカウントの存在がチェーンに認識されます: + +```bash +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`トークンを付与しています。`inj`は`injectived`でstakingに使用されるトークン識別子です。 + +#### チェーンへのバリデーターの追加 + +アカウントにトークンが付与されたら、チェーンにバリデーターを追加する必要があります。バリデーターは、チェーンに新しいブロックを追加するためにコンセンサスプロセスに参加する特別なフルノードです。任意のアカウントがバリデーターオペレーターになる意向を宣言できますが、十分なdelegationを持つアカウントのみがアクティブセットに入ることができます。このガイドでは、上記の`init`コマンドで作成したローカルノードをチェーンのバリデーターとして追加します。バリデーターは、`gentx`と呼ばれるgenesisファイルに含まれる特別なトランザクションを通じて、チェーンの最初の起動前に宣言できます: + +```bash +# 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`の詳細については、以下のコマンドを使用してください: + +```bash +injectived genesis gentx --help +``` + +#### `app.toml`と`config.toml`を使用したノードの設定 + +2つの設定ファイルが`~/.injectived/config`内に自動生成されます: + +* `config.toml`: Tendermintの設定に使用されます(詳細は[Tendermintのドキュメント](https://docs.tendermint.com/v0.34/tendermint-core/configuration.html)を参照)。 +* `app.toml`: Cosmos SDK(Injectiveの基盤)によって生成され、stateプルーニング戦略、テレメトリ、gRPCおよびRESTサーバーの設定、state sync等の設定に使用されます。 + +両ファイルには詳細なコメントが記載されています。ノードの調整については直接ファイルを参照してください。 + +調整する設定の一例として、`app.toml`内の`minimum-gas-prices`フィールドがあります。これは、バリデーターノードがトランザクションの処理に受け入れる最低ガス価格を定義します。空の場合は、何らかの値(例:`10inj`)を設定してください。そうしないとノードは起動時に停止します。このチュートリアルでは、最低ガス価格を0に設定します: + +```toml + # バリデーターがトランザクションの処理に受け入れる最低ガス価格。 + # トランザクションの手数料は、この設定で指定された任意のdenominationの + # 最低額を満たす必要があります(例:0.25token1;0.0001token2)。 + minimum-gas-prices = "0inj" +``` + +#### Localnetの実行 + +すべてのセットアップが完了したら、ノードを起動できます: + +```bash +injectived start # このコマンドの実行後、ブロックの生成が開始されます +``` + +このコマンドでは単一のノードを実行できます。チェーンとの対話には十分ですが、複数のノードを同時に実行してコンセンサスの動作を確認することもできます。 + + + +#### ハードウェア仕様 + +ノードオペレーターは、最適なパフォーマンスを達成するためにベアメタルサーバーにデプロイすることを推奨します。また、バリデーターノードは推奨されるハードウェア仕様、特にCPU要件を満たし、高いアップタイムを確保する必要があります。 + +| _最小要件_ | _推奨_ | +| :-------------------: | :-------------------: | +| RAMメモリ 128GB | RAMメモリ 128GB | +| CPU 12コア | CPU 16コア | +| CPUベースクロック 3.7GHz | CPUベースクロック 4.2GHz | +| ストレージ 2TB NVMe | ストレージ 2TB NVMe | +| ネットワーク 1Gbps+ | ネットワーク 1Gbps+ | + +#### `injectived`と`peggo`のインストール + +最新のリリースについては[Injective releases repo](https://github.com/InjectiveLabs/testnet/releases)を参照してください。非バリデーターノードオペレーターは`peggo`をインストールする必要はありません。 + +```bash +wget https://github.com/InjectiveLabs/testnet/releases/latest/download/linux-amd64.zip +unzip linux-amd64.zip +sudo mv peggo /usr/bin +sudo mv injectived /usr/bin +sudo mv libwasmvm.x86_64.so /usr/lib +``` + +#### 新しいInjectiveチェーンノードの初期化 + +Injectiveノードを実行する前に、チェーンとノードのgenesisファイルを初期化する必要があります: + +```bash +# 引数はノードのカスタムユーザー名です。人間が読める形式にしてください。 +export MONIKER= +# Injectiveテストネットのchain-idは"injective-888"です +injectived init $MONIKER --chain-id injective-888 +``` + +`init`コマンドを実行すると、`~/.injectived`に`injectived`のデフォルト設定ファイルが作成されます。 + +#### テストネットに参加するための設定の準備 + +テストネットのgenesisファイルとアプリケーション設定ファイルでデフォルト設定を更新し、シードノードでpersistent peersを設定する必要があります。 + +```bash +git clone https://github.com/InjectiveLabs/testnet.git + +# genesisファイルを設定ディレクトリにコピー +aws s3 cp --no-sign-request s3://injective-snapshots/testnet/genesis.json . +mv genesis.json ~/.injectived/config/ + +# 設定ファイルを設定ディレクトリにコピー +cp testnet/corfu/70001/app.toml ~/.injectived/config/app.toml +cp testnet/corfu/70001/config.toml ~/.injectived/config/config.toml +``` + +genesisのチェックサムを検証することもできます - a4abe4e1f5511d4c2f821c1c05ecb44b493eec185c0eec13b1dcd03d36e1a779 + +```bash +sha256sum ~/.injectived/config/genesis.json +``` + +#### `injectived`用の`systemd`サービスの設定 + +`/etc/systemd/system/injectived.service`の設定を編集します: + +```bash +[Unit] + Description=injectived + +[Service] + WorkingDirectory=/usr/bin + ExecStart=/bin/bash -c '/usr/bin/injectived --log-level=error start' + Type=simple + Restart=always + RestartSec=5 + User=root + +[Install] + WantedBy=multi-user.target +``` + +systemdサービスの起動と再起動 + +```bash +sudo systemctl daemon-reload +sudo systemctl restart injectived +sudo systemctl status injectived + +# システム起動時の自動起動を有効にする +sudo systemctl enable injectived + +# ログを確認する場合 +journalctl -u injectived -f +``` + +#### ネットワークとの同期 + +スナップショットをダウンロードしてネットワークと同期するには、[Polkachu Injective Testnet Node Snapshot](https://polkachu.com/testnets/injective/snapshots)を参照してください。 + +**サポート** + +ご質問がある場合は、[Discord](https://discord.gg/injective)、[Telegram](https://t.me/joininjective)、または[メール](mailto:contact@injectivelabs.org)でInjectiveチームに連絡できます。 + + + +#### ハードウェア仕様 + +ノードオペレーターは、最適なパフォーマンスを達成するためにベアメタルサーバーにデプロイすることを推奨します。また、バリデーターノードは推奨されるハードウェア仕様、特にCPU要件を満たし、高いアップタイムを確保する必要があります。 + +| _最小要件_ | _推奨_ | +| :-------------------: | :-------------------: | +| RAMメモリ 128GB | RAMメモリ 128GB | +| CPU 12コア | CPU 16コア | +| CPUベースクロック 3.7GHz | CPUベースクロック 4.2GHz | +| ストレージ 2TB NVMe | ストレージ 2TB NVMe | +| ネットワーク 1Gbps+ | ネットワーク 1Gbps+ | + +#### `injectived`と`peggo`のインストール + +最新のリリースについては[Injective chain releases repo](https://github.com/InjectiveLabs/injective-chain-releases/releases/)を参照してください。非バリデーターノードオペレーターは`peggo`をインストールする必要はありません。 + +```bash +wget https://github.com/InjectiveLabs/injective-chain-releases/releases/latest/download/linux-amd64.zip +unzip linux-amd64.zip +sudo mv peggo /usr/bin +sudo mv injectived /usr/bin +sudo mv libwasmvm.x86_64.so /usr/lib +``` + +#### 新しいInjectiveノードの初期化 + +Injectiveノードを実行する前に、チェーンとノードのgenesisファイルを初期化する必要があります: + +```bash +# 引数はノードのカスタムユーザー名です。人間が読める形式にしてください。 +export MONIKER= +# Injectiveメインネットのchain-idは"injective-1"です +injectived init $MONIKER --chain-id injective-1 +``` + +`init`コマンドを実行すると、`~/.injectived`に`injectived`のデフォルト設定ファイルが作成されます。 + +#### メインネットに参加するための設定の準備 + +メインネットのgenesisファイルとアプリケーション設定ファイルでデフォルト設定を更新し、シードノードでpersistent peersを設定する必要があります。 + +```bash +git clone https://github.com/InjectiveLabs/mainnet-config + +# genesisファイルを設定ディレクトリにコピー +cp mainnet-config/10001/genesis.json ~/.injectived/config/genesis.json + +# 設定ファイルを設定ディレクトリにコピー +cp mainnet-config/10001/app.toml ~/.injectived/config/app.toml +``` + +genesisのチェックサムを検証することもできます - 573b89727e42b41d43156cd6605c0c8ad4a1ce16d9aad1e1604b02864015d528 + +```bash +sha256sum ~/.injectived/config/genesis.json +``` + +次に、`~/.injectived/config/config.toml`の`seeds`フィールドを`mainnet-config/10001/seeds.txt`の内容で更新し、`timeout_commit`を`300ms`に更新します。 + +```bash +cat mainnet-config/10001/seeds.txt +nano ~/.injectived/config/config.toml +``` + +#### `injectived`用の`systemd`サービスの設定 + +`/etc/systemd/system/injectived.service`の設定を編集します: + +```bash +[Unit] + Description=injectived + +[Service] + WorkingDirectory=/usr/bin + ExecStart=/bin/bash -c '/usr/bin/injectived --log-level=error start' + Type=simple + Restart=always + RestartSec=5 + User=root + +[Install] + WantedBy=multi-user.target +``` + +systemdサービスの起動と再起動: + +```bash +sudo systemctl daemon-reload +sudo systemctl restart injectived +sudo systemctl status injectived + +# システム起動時の自動起動を有効にする +sudo systemctl enable injectived + +# ログを確認する場合 +journalctl -u injectived -f +``` + +スナップショットデータを正しいディレクトリにロードする前にサービスを停止し、ロード後に開始する必要があります。 + +```bash +# ノードを停止する +sudo systemctl stop injectived + +# ノードを起動する +sudo systemctl start injectived +``` + +#### ネットワークとの同期 + +**オプション1. State-Sync** + +_近日追加予定_ + +**オプション2. スナップショット** + +**プルーニング済み** + +1. [Polkachu](https://polkachu.com/tendermint_snapshots/injective) +2. [HighStakes](https://tools.highstakes.ch/files/injective.tar.gz) +3. [Imperator](https://www.imperator.co/services/chain-services/mainnets/injective) +4. [Bware Labs](https://bwarelabs.com/snapshots) +5. [AutoStake](https://autostake.com/networks/injective/#validator) + +Injectiveの`mainnet-config seeds.txt`リストが機能しない場合(ノードがブロックの同期に失敗する場合)、ChainLayer、Polkachu、およびAutostakeがピアリスト(`config.toml`の`persistent_peers`フィールドで使用可能)またはアドレスブック(より高速なピア検出用)を管理しています。 + +**サポート** + +ご質問がある場合は、[Discord](https://discord.gg/injective)、[Telegram](https://t.me/joininjective)、または[メール](mailto:contact@injectivelabs.org)でInjectiveチームに連絡できます。 + + diff --git a/.gitbook/jp/infra/run-node.mdx b/.gitbook/jp/infra/run-node.mdx new file mode 100644 index 00000000..40fdd71c --- /dev/null +++ b/.gitbook/jp/infra/run-node.mdx @@ -0,0 +1,56 @@ +--- +title: ノードの実行 +--- + +パブリックネットワークに参加する前に、ローカルプライベートネットワークをセットアップすることを強く推奨します。これにより、セットアッププロセスに慣れ、テスト環境を提供できます。 + +### **プライベートネットワーク** + +* ローカルにスタンドアロンネットワークをセットアップして参加 + +### **パブリックネットワーク** + +* パブリックエンドポイントを介してネットワークを使用する、または +* ノードを実行して参加する + +誰でもInjectiveブロックチェーンと通信するためのエンドポイントを持つノードをセットアップできます。利便性のために、チェーンへのクエリに利用可能なパブリックエンドポイントもあります。これらは開発およびテスト目的に推奨されます。最大限の制御と信頼性のためには、自身のノードを実行することを推奨します。 + +## ノード実行の準備 + +ノードを実行する場合(プライベートネットワークのセットアップまたはパブリックネットワークへの参加のいずれか)、keyringをセットアップする必要があります。また、最小限のダウンタイムでチェーンアップグレードを支援するCosmovisorのインストールも選択できます。 + +## ノードとの対話 + +ノードが起動して実行されたら、gRPCエンドポイント、RESTエンドポイント、または`injectived` CLIを使用してノードと対話するいくつかの方法があります。詳細については[ノードとの対話](/infra/interact-node/)セクションを参照してください。 + +## ノード実行ガイド + + + + keyringのセットアップ方法を学ぶ + + + ネットワークへの参加方法を学ぶ + + + ノードのアップグレード方法を学ぶ + + diff --git a/.gitbook/jp/infra/set-up-keyring.mdx b/.gitbook/jp/infra/set-up-keyring.mdx new file mode 100644 index 00000000..5a439206 --- /dev/null +++ b/.gitbook/jp/infra/set-up-keyring.mdx @@ -0,0 +1,96 @@ +--- +title: keyringのセットアップ +--- + + +このドキュメントでは、Injectiveノード用のkeyringとそのさまざまなバックエンドの設定と使用方法について説明します。keyringをセットアップする前に`injectived`をインストールする必要があります。詳細については[`injectived`のインストールページ](../developers/injectived/install/)を参照してください。 + + +keyringは、ノードとの対話に使用される秘密鍵/公開鍵のペアを保持します。例えば、ブロックを正しく署名するために、Injectiveノードを実行する前にバリデーターキーをセットアップする必要があります。秘密鍵は「バックエンド」と呼ばれるさまざまな場所に保存できます。例えば、ファイルやオペレーティングシステム独自のキーストレージなどです。 + +### keyringの利用可能なバックエンド + +#### `os`バックエンド + +`os`バックエンドは、オペレーティングシステム固有のデフォルトに依存してキーストレージを安全に処理します。通常、オペレーティングシステムの資格情報サブシステムは、ユーザーのパスワードポリシーに従って、パスワードプロンプト、秘密鍵の保存、ユーザーセッションを処理します。以下は、最も一般的なオペレーティングシステムとそれぞれのパスワードマネージャーの一覧です: + +* macOS(Mac OS 8.6以降): [Keychain](https://support.apple.com/en-gb/guide/keychain-access/welcome/mac) +* Windows: [Credentials Management API](https://docs.microsoft.com/en-us/windows/win32/secauthn/credentials-management) +* GNU/Linux: + * [libsecret](https://gitlab.gnome.org/GNOME/libsecret) + * [kwallet](https://api.kde.org/frameworks/kwallet/html/index.html) + +GNOMEをデフォルトデスクトップ環境として使用するGNU/Linuxディストリビューションには、通常[Seahorse](https://wiki.gnome.org/Apps/Seahorse)が付属しています。KDEベースのディストリビューションのユーザーには、通常[KDE Wallet Manager](https://userbase.kde.org/KDE_Wallet_Manager)が提供されます。前者は実質的に`libsecret`の便利なフロントエンドであり、後者は`kwallet`クライアントです。 + +`os`は、オペレーティングシステムのデフォルトの資格情報マネージャーがユーザーの最も一般的なニーズを満たし、セキュリティを損なうことなく快適なエクスペリエンスを提供するよう設計されているため、デフォルトのオプションです。 + +ヘッドレス環境で推奨されるバックエンドは`file`と`pass`です。 + +#### `file`バックエンド + +`file`は、アプリの設定ディレクトリ内にkeyringを暗号化して保存します。このkeyringはアクセスのたびにパスワードを要求し、1つのコマンド内で複数回発生する場合があり、パスワードプロンプトが繰り返し表示されます。`file`オプションを使用してコマンドを実行するbashスクリプトを使用する場合、複数のプロンプトに対して以下の形式を利用できます: + +```bash +# KEYPASSWDが環境変数に設定されていることを前提としています +yes $KEYPASSWD | injectived keys add me +yes $KEYPASSWD | injectived keys show me +# keyring-backendフラグを指定してinjectivedを起動 +injectived --keyring-backend=file start +``` + + +空のkeyringに初めてキーを追加する際、パスワードを2回入力するよう求められます。 + + +#### `pass`バックエンド + +`pass`バックエンドは、[pass](https://www.passwordstore.org/)ユーティリティを使用して、キーの機密データとメタデータのディスク上の暗号化を管理します。キーはアプリ固有のディレクトリ内の`gpg`暗号化ファイルに保存されます。`pass`は、最も一般的なUNIXオペレーティングシステムおよびGNU/Linuxディストリビューションで利用可能です。ダウンロードとインストールの方法については、マニュアルページを参照してください。 + + +`pass`は暗号化に[GnuPG](https://gnupg.org/)を使用します。`gpg`は実行時に自動的に`gpg-agent`デーモンを起動し、GnuPG資格情報のキャッシュを処理します。資格情報のTTLやパスフレーズの有効期限などのキャッシュパラメータの設定方法の詳細については、`gpg-agent`のmanページを参照してください。 + + +パスワードストアは初回使用前にセットアップする必要があります: + +```sh +pass init +``` + +``をGPGキーIDに置き換えてください。個人のGPGキーまたはパスワードストアの暗号化専用に使用する別のキーを使用できます。 + +#### `kwallet`バックエンド + +`kwallet`バックエンドは`KDE Wallet Manager`を使用します。これは、KDEをデフォルトデスクトップ環境として搭載するGNU/Linuxディストリビューションにデフォルトでインストールされています。詳細については[KWallet Handbook](https://docs.kde.org/stable/en/kdeutils/kwallet/index.html)を参照してください。 + +#### `test`バックエンド + +`test`バックエンドは、`file`バックエンドのパスワード不要バージョンです。キーは暗号化されずにディスクに保存されます。 + +**テスト目的でのみ提供されています。`test`バックエンドは本番環境での使用は推奨されません**。 + +#### `memory`バックエンド + +`memory`バックエンドはキーをメモリに保存します。プログラムの終了後、キーは即座に削除されます。 + +**テスト目的でのみ提供されています。`memory`バックエンドは本番環境での使用は推奨されません**。 + +### keyringへのキーの追加 + +`injectived keys`を使用してkeysコマンドのヘルプを表示し、`injectived keys [command] --help`で特定のサブコマンドの詳細を確認できます。 + + +`injectived completion`コマンドでオートコンプリートを有効にすることもできます。例えば、bashセッションの開始時に`. <(injectived completion)`を実行すると、すべての`injectived`サブコマンドがオートコンプリートされます。 + + +keyringに新しいキーを作成するには、``引数を指定して`add`サブコマンドを実行します。このチュートリアルでは`test`バックエンドのみを使用し、新しいキーを`my_validator`と呼びます。このキーは次のセクションで使用されます。 + +```bash +$ injectived keys add my_validator --keyring-backend test + +# 生成されたアドレスを後で使用するために変数に格納します。 +MY_VALIDATOR_ADDRESS=$(injectived keys show my_validator -a --keyring-backend test) +``` + +このコマンドは新しい24単語のニーモニックフレーズを生成し、該当するバックエンドに保存し、キーペアに関する情報を出力します。このキーペアが価値のあるトークンを保持するために使用される場合は、ニーモニックフレーズを安全な場所に必ず書き留めてください。 + +デフォルトでは、keyringは`eth_secp256k1`キーペアを生成します。keyringは`ed25519`キーもサポートしており、`--algo ed25519`フラグを渡すことで作成できます。keyringはもちろん両方のタイプのキーを同時に保持できます。 diff --git a/.gitbook/jp/infra/upgrade-node.mdx b/.gitbook/jp/infra/upgrade-node.mdx new file mode 100644 index 00000000..4aaaa098 --- /dev/null +++ b/.gitbook/jp/infra/upgrade-node.mdx @@ -0,0 +1,28 @@ +--- +title: ノードのアップグレード +--- + +### チェーンアップグレード + +Injectiveは定期的にソフトウェアアップグレードを実施します。チェーンアップグレードのガバナンスプロポーザルが可決されると、すべてのノードが自動的にパニックし実行を停止するブロック高が指定されます。この時点で、アップグレードされた`injectived`バイナリをインストールし、ノードを再起動できます。 + +最新および過去のチェーンリリースについては[InjectiveLabs/injective-chain-releases](https://github.com/InjectiveLabs/injective-chain-releases/releases)を参照してください。 + +### ノードアップグレードの手順 + +要約すると、以下の手順でノードをアップグレードします: + +1. アップグレードガバナンスプロポーザルで指定されたブロック高までノードを同期します。 +2. ノードは指定されたアップグレード高で自動的にパニック/停止します。 +3. 古いバイナリを削除し、新しいリリースバイナリをインストールします。 +4. ノードを再起動します。 + +### Cosmovisorによるアップグレード + +チェーンアップグレードを管理するには、[Cosmovisor](./cosmovisor/)を使用してください。 + +### ノードのメンテナンス(ストレージ管理) + +Injectiveのstateが増大すると、ディスク容量が不足する場合があります。新しいスナップショットをダウンロードして定期的にチェーンデータをプルーニングすることを推奨します。ディスクへの負荷だけでなく、チェーンstateが小さいほどノードのパフォーマンスが向上します。 + +Injectiveのバリデーターは毎日軽量スナップショットを取得しており、チェーンstateのクリーンアップに使用できます。チェーンstateは1日あたり約10〜15 GB増加します。これらのスナップショットは通常約2〜3 GBです。300〜400 GBごとにチェーンデータをプルーニングすることを推奨します。スナップショットへのリンクとスナップショットの適用/ノードの同期方法については、[ネットワークへの参加](./join-a-network/)を参照してください。