メインコンテンツまでスキップ

登録とライセンス

ライトノード報酬シェア3%を得るには、ライトノードがオンチェーンで登録されており、かつ稼働していることを証明し続けている必要があります。このページでは、チェーンが要求する条件、ライセンスの取得方法、ノードが自ら登録する方法、そしてノードが稼働証明(liveness)を行う方法について説明します。

登録は開始されています

メインネット(qorechain-vladi)とテストネット(qorechain-diana)で登録を受け付けています。ノードの稼働と同期にライセンスは不要です。現在の状態を確認する方法は報酬プログラムのステータスを参照してください。

オンチェーン登録​

登録は、あなたのライトノードをチェーン上に記録し、プロトコルがそのノードの存在、種別(sxまたはux)、そしてどのオペレーターアカウントがそれを制御しているかを把握できるようにします。登録が完了し稼働状態になると、そのノードはライトノード報酬シェアの対象になります。

要件​

登録トランザクションの実行時に、チェーンは次のすべてを確認します。

  1. オペレーターアドレスに有効なlightnode_operatorライセンスがあること。
  2. 同じアドレスからボンド済みのバリデータに少なくとも1,000 QORがデリゲートされていること(任意のバリデータにわたるあなたの合計。jailされたバリデータやアンボンドされたバリデータへのデリゲーションはカウントされません)。
  3. 1 QORの登録手数料とトランザクション手数料を支払うための、オペレーターアカウントの残高。ノードはこのアカウントからハートビートごとの手数料も支払います。ネイティブ署名の場合、手数料はガス1単位あたり0.25 uqorなので、デフォルトの[heartbeat] gasである300,000では75,000 uqor(0.075 QOR)、1日約25回のハートビートで月に約1.9 QORになります。
  4. ネットワーク全体で登録済みのライトノードが10,000未満であること。

登録後、ノードは1,000ブロックごとに(猶予100ブロック)ハートビートを送信し、報酬を受け取るには少なくとも80%の稼働率を維持する必要があります。現在の値はGET https://api.qore.host/qorechain/lightnode/v1/params(テストネット: https://api-testnet.qore.host)で確認できます。

オペレーターアカウント​

登録はオペレーターアドレスから行います。これはライセンスとステークを保持し、手数料を支払い、報酬を受け取る通常のqor1…アカウントです。ノードがこのアカウントのために署名できる必要があるため、リカバリーワードをあなた自身が保持しているアカウントでなければなりません。自分で書き留めたワード、Keplrのアカウント、またはqorechaindのキー(導出パスm/44'/118'/0'/0/0)が該当します。ノード専用のアカウントを使うのが最善です。

Dashboard上のカストディアルウォレット(Dashboardがシードを代わりに保管しているウォレット)は、先にそのシードをエクスポートしない限りノードを稼働させることはできません。

ノードのDilithium-5キーには独自のアドレスがありません。QoreChainでは耐量子キーはアカウントに関連付けられるものであり、アカウントを作成するものではありません。ノードは、アカウントにすでに耐量子キーがある場合を除き(すでに耐量子キーを持つアカウントを参照)、自身のキーをオペレーターアカウントの耐量子キーとして関連付けます。

ライセンスの取得​

メインネット: Dashboardで購入​

ライセンスはQoreChain DashboardのTools → Light Nodeで購入します。ライセンスの価格は $50 で、ERC-20、BEP-20またはTRC-20上のUSDTで支払います。支払いはそのチェーン上で検証されます。支払う前に、ライセンスの付与先となるqor1…アドレスを入力する必要があります。上で説明したオペレーターアドレスを使用してください。

付与(grant)は別のオンチェーンのステップで、手動で署名され、バッチで送信されます。チェーンが確認するまで、タブにはPaid, awaiting on-chain grantと表示され、ノードはそのアドレスにライセンスがないと報告し続けます。lightnode-sx statusはLicence:行を表示し、付与が反映されるとactiveに切り替わります。直接確認することもできます。

curl -s https://api.qore.host/qorechain/license/v1/check/<operator-address>/lightnode_operator

テストネット: リクエストに応じて付与​

テストネットでは何も販売していません。テストネットのライセンスは無料で、リクエストに応じてテストネットのライセンス機関が付与します。テストネットのqor1…アドレスを添えてnodes@qorechain.ioまでご連絡ください。

ノードの登録​

以下の手順はノード自身のセットアップフローです。両エディションで同じです。lightnode-uxはlightnode-sxと同じコマンドを持ち、同じホームディレクトリ(~/.qorechain-lightnode)を使用します。各コマンドの詳細はSX Editionを参照してください。

# 1. Keys are stored encrypted. Keep this set for every command below and for start.
export QORE_LIGHTNODE_KEYRING_PASSPHRASE='choose-a-passphrase'

# 2. Self-test, RPC endpoint (mainnet: https://rpc.qore.host), node key
lightnode-sx onboard

# 3. The operator account: the one the licence is for. --recover reads its
# recovery words from standard input.
lightnode-sx keys add-operator --recover

# 4. Post-quantum key, missing stake (only if you name a validator), registration
lightnode-sx register --delegate-to qorvaloper1...

# 5. Run the node; it sends heartbeats on its own
lightnode-sx start
lightnode-sx status

パスフレーズは、ノードのキーリングにある2つのキー、つまりノードの耐量子キーとオペレーターアカウントのキーの両方を保護します。

registerが行うこと​

registerはキーリングからoperator_addressとキーを読み取り、次の処理を行います。

  1. ライセンスを確認します。 operator_addressが有効なlightnode_operatorライセンスを保持しているかをチェーンに問い合わせます。ない場合は停止し、入手先を案内します。3.1.10以降、このメッセージはメインネットではTools → Light Nodeを、テストネットではnodes@qorechain.ioへのリクエストによる無料ライセンスを案内します(3.1.9ではまだDashboardの旧タブを挙げていました)。期限切れまたは停止中のライセンスはその旨が報告されます。すでに登録済みのノードもその旨が報告され、何も送信されません。
  2. アカウントにすでに耐量子キーがある場合を除き、耐量子キーを関連付けます。耐量子キーを持たないアカウントは、このメッセージ1件だけを従来型の署名で(ハイブリッド拡張なしで)送信できます。ノードはその方法で送信し、チェーンが対応している場合はキーの所有証明を含めます。
  3. --delegate-to qorvaloper1...でバリデータを指定した場合に限り、不足しているステークをデリゲートします。--delegate-toがなく、アカウントが最低額に満たない場合は、停止して不足額を表示します。3.1.10以降は、チェーンと同様にボンド済みのバリデータへデリゲートされたステークのみをカウントします。3.1.9はjailされたバリデータやアンボンドされたバリデータもカウントしていたため、チェーン上で拒否されることがありました。3.1.9を実行している場合は、アクティブなバリデータにデリゲートしてください。
  4. 1 QORの手数料とともにノードを登録します。

各ステップはノード自身が署名し、次のステップを送信する前にブロックで確認されます。キー登録以降のすべてのトランザクションには、チェーンが要求するハイブリッドML-DSA-87 + secp256k1署名が付きます。

このコマンドは次のフラグを取ります。

  • --delegate-to — 不足しているステークのデリゲート先となるqorvaloper1…バリデータ。
  • --type — ノード種別。sxまたはux(デフォルトはバイナリのエディション)。
  • --version — 登録するノードバージョン(デフォルトはバイナリ自身のバージョン)。
  • --print — 署名する代わりに、同等のqorechaindコマンドを出力します(下記参照)。

registerが署名できるようにするには、アカウントがすでにチェーン上に存在している(資金を受け取ったことがある)必要があります。

すでに耐量子キーを持つアカウント​

ウォレットで設定したアカウントは、同じリカバリーワードから導出された耐量子キーをすでに持っていることがよくあります。チェーンのv3.2.3ルールでは、チェーンはアカウントに登録されたキーのみを受け付け、classical_onlyタイプのキーや空のキーを拒否します。

3.1.9以降、keys add-operator --recoverがこれに対応します。アカウントにすでに耐量子キーがある場合は、wallet-adapterやDashboardと同じ導出方法(qorechaind tx pqc recover-keyと同じ)でワードからそのキーを再構築し、ノードはそのキーで署名します。アカウントにキーがない場合は、ノードがワードからキーを導出するため、ワードでノードのキーも復元できます。ワードから再現できない耐量子キーをアカウントが持っている場合(独自のキーを生成・保管するウォレット)、コマンドは拒否し、専用のオペレーターアカウントを使うよう勧めます。

フォールバック: qorechaindキーリング内のオペレーターキー​

オペレーターアカウントのキーをqorechaindのキーリングに保管し、ノードには保存したくない場合は、手順3を省略して次を実行します。

lightnode-sx register --print

このコマンドは同じライセンスと登録のチェックを行い、各ステップのqorechaindコマンドをあなたの値を埋め込んで出力します。ノードキーのqorechaindのキーディレクトリへのエクスポート(keys export <name> --out ~/.qorechaind/pqc/<name>.dilithium)、tx pqc register-key-v2 … hybrid、ステークが不足している場合のtx staking delegate、そして生成してからtx pqc cosignするペアとしてのtx lightnode registerです。この経路では、デーモンもハートビートにqorechaindを使用します。[heartbeat]の設定を参照してください。

ハートビート稼働証明​

登録だけでは対象資格を維持するには不十分です。登録済みのライトノードは、ハートビート稼働証明(heartbeat liveness proofs)を継続的に送信することで、自身がオンラインであることを証明し続けなければなりません。このハートビートによって、チェーンは稼働中のノード(報酬シェアの対象)と、登録はされているがオフラインのノードとを区別します。

実務上これが意味するのは、登録され、稼働し続けている(かつ同期している)ノードは対象資格を維持し続ける一方、オフラインになったノードは稼働証明の送信を停止し、復帰するまで対象資格を失うということです。したがって、デーモンを稼働・健全な状態に保つことは報酬を得るための一部です — ハートビートと同期の健全性を確認する方法についてはRewards and Monitoringを参照してください。

PQC共署名ハートビートパイプライン​

QoreChainはデフォルトでPQC必須であるため、すべてのハートビートにはハイブリッド署名が付きます。アカウントの耐量子キーによるML-DSA-87(Dilithium-5)署名と、オペレーターアカウントのキーによるsecp256k1署名です。ノードはLinux、macOS、Windows上でトランザクションを自ら構築して署名し、qorechaindは不要です。どのsign-bytesバージョンを使用するかはネットワークから読み取ります。

オンチェーンのハートビートはデフォルトで有効です。デーモンは、チェーン自身が持つそのノードのlast_heartbeatから1,000ブロック([heartbeat] interval_blocks、チェーンのheartbeat_intervalに一致)が経過した時点でハートビートを1つ送信し、60秒ごとに確認します。そのため再起動しても重複して送信したり、まる1インターバル待ったりすることはありません。各ハートビートは、ブロックに取り込まれた後にのみ報告されます。

デーモンは起動時に署名者を選択します。

  • ネイティブ — キーリングにオペレーターキー(keys add-operatorで追加)があり、それがoperator_addressと一致する場合。これが通常のケースです。
  • qorechaindフォールバック — それ以外の場合で、qorechaindバイナリがPATH上、または[heartbeat] qorechaind_pathにある場合。qorechaindキーリング内のオペレーターキー([heartbeat] key_name、ホームqorechaind_home、デフォルトは~/.qorechaind)と、pqc/<key_name>.dilithiumにエクスポートされたノードキーを使用します。qorechaindのキーリングパスフレーズはQORE_LIGHTNODE_QORECHAIND_PASSPHRASEに設定します。これは標準入力経由でqorechaindに渡され、コマンドラインに置かれることはありません。

ノードが登録されるまでは、ハートビートを送信しません。代わりに、状態が変わるたびに1回、その理由をログに記録します。ライセンスなし、またはライセンスは有効だが未登録(registerを実行してください)のいずれかです。lightnode-sx statusはSigner:、Licence:、Registration:の行を表示するため、ログを読まなくても理由がわかります。署名者がいない場合でも、ノードは稼働と同期を続けます。ただしオンチェーンでアクティブな状態を維持できず、statusがその旨を表示します。

DashboardのLight Nodeタブ​

QoreChain DashboardのTools → Light Nodeタブは、これらの手順をひとまとめにしています。

  1. ダウンロード。 選択したネットワーク向けのライトノードバイナリ(https://download.qore.host/<net>/lightnode/latest.jsonと同じファイルで、sha256チェックサム付き)へのリンクを提供します。
  2. セットアップ手順。 リリースマニフェストのバージョンに合わせた上記の5つの手順と、マニフェストのregistrationフィールドから読み取った登録受付の可否を表示します。
  3. ライセンスの購入(メインネットのみ)。支払い前にライセンスのアドレスを受け取り、チェーンが付与を確認するまでPaid, awaiting on-chain grantと表示します。入力したアドレスがあなた自身のDashboardのカストディアルウォレットであれば警告し、アドレスがすでに耐量子キーを持っている場合は参考情報として知らせます。
  4. ステータス。 ステータスパネルが、チェーンから読み取ったノードの状態を表示します。

登録そのものは、常にlightnode-sx register(またはlightnode-ux register)が送信するトランザクションです。Dashboardはノードを登録しません。記録を保存するだけだった旧登録フォームは削除されました。

次に読むもの​

  • Rewards and Monitoring — 3%シェアがどのように付与され、請求され、監視されるか。
  • SX Edition — registerコマンドと完全なCLIリファレンス。