Cordaの5.1
このページでは、Cordaの5.1リリースの主な変更点がリストされており、以下の項目が含まれています:
- 機能強化
- 修正済みの問題
- 既知の問題および制限事項
Corda Clusterを5.0から5.1にアップグレードする情報については、こちらを参照してください。
機能強化
アーキテクチャ
Java 17
Cordaコンポーネントは、Java 17互換のJVMでホストされるようになりました。
Workers
以下の新しいタイプのWorkerが追加されました:
- Persistence workers
- Uniqueness workers
- Flow mapper workers
- Verification workers
- Token selection workers
ログ
デフォルトのlog4j構成が変更され、例外のスタックトレースがJSONログメッセージ内のテキストブロブとして出力されるようになりました。
CorDapp開発
Finality Flowのためのログ
Finalityのために書かれたログのIDが一貫性を持つようになりました。
自動請求リリース
Cordaは、もはや存在しないフローのために自動的にトークンをリリースするようになりました。
Groupパラメータ
新しいインターフェース、GroupParametersLookupがnet.corda.v5.membershipパッケージに追加され、フローが追加の検証のために現在のGroupParametersにアクセスできるようになりました。
FindUnconsumedByExactType
新しいFindUnconsumedByExactTypeメソッドが追加され、これはfindUnconsumedStatesByTypeを置き換えます。この新しいメソッドのパフォーマンスはFindUnconsumedByTypeよりも優れており、指定された正確な型のstate(サブクラスのstateは含まれません)を取得するインデックス検索を使用しています。
トランザクション署名の検証
署名の検証機能が新しいTransactionSignatureVerificationServiceインターフェースに追加されました。これにより、検証サンドボックスに個別にインジェクトできるようになりました。
署名されたグループパラメーター
署名されたグループパラメーターは、履歴トランザクションのノータリー連続検証のために、バックチェーンの解決を介して配布されるようになりました。
トークン選択の可視性
stateのcontractにisVisibleメソッドを実装することで、そのstateが選択対象として指定できるようになりました。これはisRelevantを置き換えます。
Vault-Namedクエリ
vault-namedクエリに関して以下の変更が加えられました:
- Vault-namedクエリ式は、括弧内の
:parameterおよび::intを正しく解析します。 StateRefでクエリを行うことができるようになりました。StateはContractStateJSONオブジェクトのstateRefフィールドに保存されます。
CorDapp API 廃止予定のアイテム
このリリースで以下のメソッドは非推奨となりました:
findUnconsumedStatesByType— FindUnconsumedByExactTypeを参照してください。useAndRelease— Automatic Claim Releaseを参照してください。
UtxoLedgerTokenStateObserver インターフェースは非推奨となりました。代わりにUtxoTokenTransactionStateObserverを使用してください。
デプロイメント
プレインストールチェック
Corda CLIにpreinstallコマンドが追加されました。このコマンドを使用すると、Cordaのためのプレインストールチェックを実行できます。これらのチェックはデフォルトでデプロイプロセスの一部として実行されます。詳細についてはCLI ReferenceおよびDeployment Configurationを参照してください。
P2Pゲートウェイの構成
P2Pゲートウェイ構成では、2つのサーバーがhostAddressとhostPortペアを共有できるようになりました。
Corda CLI Kafka topics
Corda CLIコマンドtopic のscriptサブコマンドが新しいコマンドpreviewに置き換えられました。previewコマンドは、必要なKafka topic構成のプレビューをYAMLで生成します。これをCorda CLIを使用して実行する前に、保存して必要に応じて変更できます。詳細についてはCLI Referenceを参照してください。
State Managerデータベース
Cordaは現在、Workerタイプ間のstateの永続性のために1つ以上のPostgreSQLデータベースインスタンスが必要です。これらはstate managerデータベースと呼ばれます。R3は、次のworker用に個別に分離されたstate managerデータベースインスタンスを展開することをお勧めしています:
- Flow workers
- Flow mapper workers
- Token selection workers
詳細についてはState Manager Databasesを参照してください。
データベースコネクションプールの構成
データベースコネクションプールを構成できるようになりました。詳細についてはconfiguration fieldsを参照してください。
アフィニティノード
デプロイメント構成ファイルでaffinityパラメータを設定することで、workerレプリカがKubernetesノードにどのように分散されるかを構成できるようになりました。詳細についてはDeployment Configurationを参照してください。
Kubernetes Ingress
Kubernetes Ingressを構成して、P2PゲートウェイworkerにHTTPロードバランシングを提供できるようになりました。詳細については、Deployment Configurationを参照してください。
P2P ゲートウェイworkerメトリクス
P2P ゲートウェイworkerのメトリクスが利用可能になりました。詳細については、Observabilityセクションを参照してください。
タスクマネージャーメトリクス
タスクマネージャーのメトリクスが利用可能になりました。詳細についてはObservabilityセクションを参照してください。
アプリケーションネットワーク
メンバーシップメタデータ
以下の種類のメンバーシップメタデータを定義できるようになりました:
- メンバーは、登録コンテキストでカスタムキーバリューのペアを指定できます。これらは
MemberInfoの一部としてネットワークの他のメンバーに配布されます。 - MGMは、
GroupParametersの一部として配布され、アプリケーションがそのデータに基づいてビジネスロジックを実行するために使用できるカスタムメタデータを指定できます。たとえば、CorDappコントラクト内から発行者のためのトランザクションルールを強制するために。
メンバーの再登録
メンバーは、custom metadata、CPI version、platform version、およびsoftware version of the memberInfoのカスタムメタデータ、CPIバージョン、プラットフォームバージョン、およびメンバーの情報を変更し、ネットワークに再登録を要求できるようになりました。再登録は、ネットワークの構成によっては手動で承認が必要な場合があります。詳細についてはRe-register a Memberを参照してください。CPIのアップグレードは、仮想ノードが実行しているCPIに関する正確な情報をMGMが持っていることを確認するため、メンバーがMGMに再登録するトリガーとなります。
Notary Ledger Keys
アプリケーションネットワークにオンボーディングする際、ノータリー仮想ノードにはもはやledgerキーが必要ではありません。Cordaは、ledgerキーを含むノータリー仮想ノードの登録を拒否するようになりました。
メンバーの管理
メンバーを一時停止または再アクティブ化する際、serial-number が必須となりました。
REST API の改善点
- このリリースには、REST API の新しいバージョン v5_1 が含まれています。v1からの古いエンドポイントは、5.1で動作しますが、REST WorkerログとHTTP応答に警告が書き込まれます。
certificatesおよびkeysのエンドポイントは、certificateおよびkeyに名称変更されました。GET/hsm/{tenantid}/{category}エンドポイントは、カテゴリが存在しない場合に HTTP 404 ステータスを返すようになりました。- GET user エンドポイントの
loginnameパラメータは、パスパラメータに変更されました。 membersエンドポイントは、検索が行われるメンバーが一時停止状態であっても、そのメンバーのためにMemberInfoを返すようになりました。これにより、メンバーはいつでも自分のステータスを確認できます。- upgrade virtual node エンドポイント
/api/v5_1/virtualnode/{virtualnodeshortid}/cpi/{targetcpifilechecksum}は、forceupgradeというオプションのクエリパラメータを取るようになりました。これは、前回のアップグレードが失敗した場合にtrueに設定します。デフォルト値はfalseです。 - 新しいエンドポイントが追加され、フローの結果を JSON で返します:
/flow/{holdingidentityshorthash}/{clientrequestid}/result。
修正済みの問題
カスタムLedgerクエリ
ページングを使用した台帳のカスタムクエリが、クエリの where 句が変更された場合に、データの行をスキップする場合がありました。これは、クエリが where 句の一部として consumed フィールドを使用し、以前に取得されたページの1つ以上のステートがクエリの最終ページが返される前に消費された場合に最も一般的に発生しました。この変更の結果、VaultNamedParameterizedQueryはクエリにoffsetを指定することを許可しなくなりました。このインターフェースで setOffsetを呼び出すと、例外がスローされます。CorDappフローはこの属性を設定してはいけません。代わりに、クエリのページングが必要な場合は、最初のクエリ呼び出しから返された ResultSet を使用する必要があります。
既知の問題と制限事項
制限のないクエリ
制限のない状態で vault-named または標準の永続性クエリが実行されると、エラーが発生します。
Vault {{< enterprise-icon >}} の中での暗号データベースのパスワードの変更 E
クリプトデータベースのクラスターレベルのパスワードは、変更されてもVaultから再読み込まれません。
ノータリーの選択
ノータリー仮想ノードの選択ロジック(NotaryVirtualNodeSelectorServiceImpl)には、保留中および停止中のメンバーが含まれます。
フローサービスの例外
一部のケースでは、フローサービスがラムダ式を使用した場合に例外をスローします。この問題はASMライブラリのバグに起因しています。
