QORel の新機能
このページでは、QORel の各リリースが追加するものを一覧にします。Hermes から、または以前の QORel から移行するかどうかを判断するオペレーター向けで、確認可能な動作として、リリースが行うことだけを記載します。QORel は Hermes 1.13.3(Informal Systems、Apache-2.0)をベースにしており、以下の変更はすべてそのベースの上に加えられたものです。記載されていないものは、Hermes と同じように動作します。
0.1.0
最初のリリースです。テストネット専用です。ファイルはリリースページにあります。
特長
- QoreChain 向けのハイブリッドのポスト量子署名。 チェーンに
signing = 'qorechain-hybrid'を設定すると、QORel は各トランザクションの唯一のクリティカルな拡張オプションとして ML-DSA-87 署名(/qorechain.pqc.v1.PQCHybridSignature)を追加し、その後、最終的なボディに secp256k1 で署名します。ポスト量子鍵が署名するメッセージは、バージョン 2 の sign bytes で、QoreChain の両方のネットワークがこれを検証します。静的なextension_optionsはこのモードと併用できず、併用すると設定は拒否されます。 - 標準の署名は変更されません。
signing = 'standard'(デフォルト)では、Cosmos Hub、Osmosis、その他すべての Cosmos SDK チェーンに対して、トランザクション形式は Hermes とバイト単位で同一です。 qorel-signerクレート。 ポスト量子プリミティブ(MlDsa87Signerを含むPqSigner)、チェーンのルール(SignBytesFramer)、リレイヤーが呼び出す拡張シグナー(TxExtensionSigner)は、別々のインターフェースです。ガスのシミュレーションとバッチサイズの決定は同じ経路を通るため、追加の約 4.7 KB と検証のガスは常に計上されます。qorel keys addがポスト量子鍵を導出します。 ハイブリッドチェーンでは、同じニーモニックとアカウントから QoreChain ウォレットの導出方式で ML-DSA-87 鍵を導出し、その 32 バイトのシードだけを、鍵の隣に<key name>.pqcとして保存します。秘密情報は一切出力されません。qorel keys register-pqc。MsgRegisterPQCKeyV2を 1 回送信します。v3.2.3 以降のネットワークでは所有証明(proof of possession)を伴います。冪等であり(同じ鍵がすでに登録されている場合は何も送信しません)、アカウントにすでに別の鍵がある場合は送信を拒否します。--no-proofは v3.2.3 より古いネットワーク専用です。qorel keys pqc-status。 鍵が登録されているか、ローカルの鍵と一致するか、所有が証明されたか、チェーンがどの sign bytes を検証するか、そしてready_to_relayを表示します。- 送信前の安全チェック。 ハイブリッドチェーンへのトランザクションごとに、QORel は、鍵が読み込まれていて、登録され、ローカルの鍵と同一であること、そして sign-bytes バージョンが判明していることを確認します。
pqc.sign_bytes = 'auto'では、チェーンの適用済みアップグレード記録からバージョンを読み取り、1 分ごとに再読み込みし、codespacepqcコード 21 での拒否の後にも再読み込みします。いずれかが失敗した場合は何も送信されず、手数料も消費されません。health-checkがその理由を報告します。 - フィーマーケットのガス価格。
dynamic_gas_price.backend = 'cosmos-evm-feemarket'は、QoreChain のベースフィーを読み取ります。その下限はガス 1 あたり 0.1 uqor です。 - ibc-go v10 チェーンでの不正行為の検出。 ibc-go v10 は
update_clientイベントにヘッダーを含めなくなったため、QORel はMsgUpdateClientトランザクションからヘッダーを読み取ります。標準の Hermes 1.13 は、これらのチェーンで検出を無効にします。 - パケットワーカーはレート制限を乗り越えます。 ワーカーは、リレーまたはクリアリングの試行が失敗している間も動き続け、クリアインターバルごとに再試行します。Hermes では、直近のクリアリングが失敗していても、新しい IBC イベントなしで
clear_interval x 5ブロックが経過するとワーカーが停止するため、その時点で保留中だったパケットは、チャネル上の次のパケットか再起動まで待たされました。 - 所有者のみの鍵ファイル。 Hermes は鍵ファイルをデフォルトの umask で書き込んでいました。QORel は
<key name>.jsonと<key name>.pqcをモード 0600 で書き込みます。古い Hermes で追加された鍵は以前のモードのままなので、ls -lで確認してください。 qorelバイナリ。 Hermes のコマンドセットにポスト量子鍵コマンドを加えた、qorelという 1 つのバイナリ。同じ CLI を持つhermesバイナリも、ソースツリーからビルドされます。- 来歴付きのリリース。 Linux と macOS 向けの tarball、堅牢化された systemd ユニットを含む
.debと.rpmパッケージ、Homebrew フォーミュラ、cosign で署名されたマルチアーキテクチャのコンテナイメージ。リリースファイルにはSHA256SUMSとビルド attestation が付属します。インストールを参照してください。 - ローカルのデブネットテスト。 リポジトリには
scripts/qorel-devnet/が含まれており、QoreChain ノードと ibc-go v10 のテストチェーンをローカルにビルドして、両方向の ICS-20 エンドツーエンドテストを実行します。内容は、鍵の登録、クライアント・コネクション・チャネルの作成、両方向の転送、転送されたトークンの巻き戻し、タイムアウトしたパケットのクリアと返金、QORel 自身が送信した転送です。
テストネットでの実証
- QoreChain テストネット最初の IBC チャネル、
qorechain-dianaのtransfer/channel-0から Cosmos Hub 公開テストネット(チェーン IDprovider)のchannel-600は、QORel がリレーしています。クライアントは07-tendermint-0と07-tendermint-466、コネクションはconnection-0とconnection-315です。 - 両方向の転送(1 QOR の送出、0.1 ATOM の受け取り、0.4 QOR の返却)と、タイムアウト 1 秒の転送のタイムアウトメッセージによる自動返金がテストされました。
qorechain-diana上のリレイヤーのトランザクション 13 件はすべて成功しました。 - チャネルの読み取り側の表示はアセットのブリッジにあります。
このリリースに含まれないもの
- IBC v2 のリレー。QORel にはまだ実装されておらず、次のフェーズです。
- Ethereum(Eureka)のリレー。未着手です。
- メインネットでのリレー。メインネットの IBC チャネルはまだ開かれていません。
- Windows 向けビルド。
- crates.io 上の
qorel-signerクレート。公開は保留中です。クレートはリポジトリのcrates/qorel-signerにあるため、git 依存として利用してください。
アップグレード
以前の QORel リリースはありません。Hermes 1.13 から QORel 0.1.0 への移行:
hermesの隣に、または置き換えてqorelをインストールします(インストール)。config.tomlはそのまま使います。signingのないチェーンは標準署名のままで、以前と同じように動作します。- サービスファイルのコマンドを
hermesからqorelに変更します。鍵ストアフォルダ(デフォルトは~/.hermes/keys)は変わりません。コンテナイメージがデータを/home/nonroot/.hermesにマウントするのはそのためです。 ls -lで鍵ファイルのモードを確認します。新しい鍵は 0600 で、古いものは以前のモードのままです。
リポジトリの UPGRADING.md にあるアップストリーム Hermes のアップグレードノートは、1.6 より古い Hermes のバージョンから移行する方に当てはまります。