Corda Enterprise 4.5 リリースノート

Corda Enterpriseの新しいバージョンである4.5がリリースされました。パフォーマンス、データ復旧、運用性について更に改善されました。リリースノートの全文訳を掲載いたします。
ご参考になれば幸いです。
(
リリースノートの原文はこちらから)

Corda Enterprise 4.5 リリース概要

このリリースは、Corda Enterprise 4.4 をベースにパフォーマンス、復旧、運用などの改善を実現しました。

Corda Enterprise 4.5 は、本番環境では Linux をサポートしていますが、Windows と macOS のサポートは開発とデモンストレーションのみを目的としています。詳細については、Corda Enterprise プラットフォームサポートマトリックスを参照してください。

Corda Enterprise 4.5 は、Corda (オープンソース) 4.xや3.x、および Corda Enterprise 4.4、4.3、4.2、4.1、4.0、3.xと運用上の互換性があります。

 

新機能&機能の強化

パフォーマンスの向上

Corda Enterprise 4.5 の一部として、パフォーマンスの大幅な向上を導入しました。プラットフォームの複数の領域におけるレイテンシーが改善されました。

FinalityFlowCollectSignaturesFlowの待ち時間を短縮しました。これは、バックチェーンの解析、署名の収集、ファイナライズされたトランザクションのピアへのブロードキャストなど、プラットフォームの様々な領域を並列化することで達成されました。これらの変更の恩恵を受けるために CorDapp を変更する必要はありません。

新しいflowフレームワークAPIsendAll/sendAllMap)を導入しました。これまでflowは、各カウンターパーティに対して一度だけsend API を使用することで、複数のカウンターパーティにメッセージを送信することができました。これらの新しい API を使用して、より良いパフォーマンスで同じことを実現することができるようになります。

※新しいAPIを使うためには、既存のCorDappsをアップデートする必要があります。

 

flowを流す際、ノード間でやり取りされるメッセージを圧縮することで、レイテンシーとスループットの両方の面で性能を向上させることができます。パフォーマンスの向上は、ネットワーク構成やハードウェアの仕様などの環境要因に依存します。このオプションはデフォルトで有効になっていますが、必要に応じてノード設定オプションの enableP2PCompression node configuration optionを使用して無効にすることができます。

 

Corda Enterprise イメージ on DockerHub

公式の Corda Enterprise Docker イメージが DockerHubで直接利用できるようになりました。

さらに、新しいDockerイメージを利用し、選択したノードデータベースとしてPostgreSQLをデフォルトで使用するようにDockerformを更新しました。

Corda Enterprise イメージを実行するには、専用の環境変数を介して Corda Enterprise の評価版ライセンスを保有していることをプログラムへ通知する必要があります。で受け付ける必要があります。詳細については、公式の Corda Docker イメージのドキュメントセクションをご参照してください。

 

新しいAzure Cloudテンプレート

クラウド環境での Corda のデプロイとテストを容易にするために、Microsoft の Azure クラウド コンピューティング プラットフォームを活用した新しいクラウド テンプレートを作成しました。テンプレートはAzureマーケットプレイスで利用可能で、以下のように使用できます。

  • 完全なCorda ネットワーク(Corda Enterprise Network Manager と 1 つ以上のノードを含む)を生成
  • 既存のネットワークに新しいCorda Enterpriseノードを追加

これらのテンプレートは、既存のネットワーク内でCorDappsを迅速にテストするための開発ツールとして、軽量且つターゲットを絞って設計されています。これらのテンプレートは、DockerとKubernetesを利用しており、ユーザーは自分のCorDappsをノードコンテナにバンドルすることで、セットアップを迅速に行うことができます。

※テンプレートを使用して、高可用性のノードを作成したり、Corda Firewall で保護されたノードを設定したりすることはできません。

詳細については、ワンクリック開発者テスト環境のドキュメントをご参照ください。

 

ハードウェアセキュリティモジュール(HSM)のサポート

Corda Enterprise 4.5では、AWS CloudHSMを使用することで、ノードが使用する暗号鍵のセキュリティを確保できる機能が導入されました。Legal identity、TLS、Corda Firewall、Confidential Identityの鍵はすべてAWS HSMに格納できるようになりました。

詳細については、プラットフォームサポートマトリックスのドキュメントをご参照ください。

 

災害復旧のためのCollaborative Recovery CorDapps

Corda Enterprise 4.5 は、災害シナリオで失われた元帳データを安全に、かつ個人的に照合して復旧するのに役立つ新しいユーティリティ CorDapps を導入しました。

LedgerSyncCorDappは、セキュリティを損なうことなく、ノード間でデータの不整合がないか定期的にレッジャーをチェックするために使用することができます。稀に不整合が発見された場合、CorDappLedgerRecover`は、自動リカバリーまたはマニュアル・リカバリー・モード(より深刻なデータ損失の場合)でデプロイして、ネットワーク全体のノードから失われたデータを安全に回復することができます。

詳細については、Collaborative Recoveryのドキュメントセクションを参照してください。

 

スタンドアローンツールとしてのLedgerSync CorDapp

LedgerSync CorDapp は、Collaborative Recovery CorDapps の一部ですが、スタンドアロンツールとしても実行できます。

これは、同じビジネスネットワーク内の2つのノードが保持する共通のレッジャーデータ間の違いを安全且つプライベートにハイライトします。CorDappを実行しているピアは、不足しているトランザクションを警告することができます。この手順はリコンシリエーション(Reconciliation)と呼ばれています。

CorDapp は、次の 2 つのイベントのいずれかによって引き起こされるレッジャーの不整合を確認するように設計されています。

  • ノードのリレーショナルデータストアに影響を与える災害
  • (稀にある)ハードウェアまたは接続性の障害の発生

LedgerSyncは、オンデマンドまたは定期的に実行することができます。アプリは、同じビジネスネットワーク上にあるinitiatingノードのすべてのピアに連絡し、initiatingノードのレッジャーに、ノードとターゲット ピアの両方に関連するすべてのトランザクションが保持されているかどうかの詳細なレポートを生成します。LedgerSync は、initiatingツールが関連するトランザクションのいずれかを欠落していることを発見した場合、オペレータに不一致を知らせ、オペレータは欠落しているデータをリカバリーすることが可能です。

LedgerSync は、Corda のプライバシーモデルに準拠するように設計されています。アクセスできるはずのないネットワークピアとトランザクション情報を共有しません。

詳細については、LedgerSync ドキュメントセクションを参照してください。

 

HA Notary readbackキュー

各Notaryワーカーはreadbackキューを持つようになりました。このキューは、最近使用されたステートを収集し、それらが Notary データベースに使用されたものとして正しく記録されているかどうかをダブルチェックします。このメカニズムが不整合を検出した場合、ワーカーのログファイルにエラーが記録され、保留されていないDBレコードのJMXメトリックが更新されます。

詳細については、データベース監視エージェントのドキュメントセクションをご参照ください。

 

Notary 二重支払監査ツール

二重支払は、Notaryが使用済みとマークしたステートが新しいトランザクションの入力として使用された場合に発生します。Notaryは、ダブルスペンドを試みるトランザクションを拒否します。

Corda Enterprise 4.5 は、Notaryオペレータがステートを二重支払しようとしたトランザクションのリストを取得できる新しいコマンドラインツールである Spent State Audit Tool を導入しました。このツールで提供される情報は、ネットワーク上で発生した二重支払の試みの根本的な原因分析を行うために使用することができます。

詳細については、Spent State Audit Toolドキュメントセクションを参照してください。

ツールを実行するには、Notaryデータベーススキーマの変更が必要です。詳細に関してはこちらをご参照ください。

 

署名数カウントツールの改善

Metering Collector CorDapps は、flowフレームワークを介してネットワーク上の 1 つ以上の他の参加者から Corda Enterprise の使用状況のサマリーを要求するように拡張されました。この機能は、ビジネスネットワークオペレーター(BNO)をサポートするために設計されており、各ユーザーが自分の情報を共有することに同意しなければならないことを確実にするための強力なビルトインプライバシーコントロールを備えています。

RPC監査

Corda Enterprise ノードは、RPC 使用の監査証跡を維持するようになりました。ユーザーがRPCコールを実行しようとするたびに、その情報はノードによってCorda台帳外のテーブルに記録されます。情報は、権限のあるユーザーが専用のRPC操作を介してCSVまたはJSON形式でローカルにダウンロードすることができます。

詳細については、RPC Audit Collection Toolのドキュメントセクションをご参照ください。

 

モニタリング

モニタリングに関するドキュメントが改訂され、ノードオペレータのための改善されたガイダンスが含まれるようになりました。

さらに、Corda Enterprise ノードは追加のメトリクスを公開しています。ノードが公開しているすべてのメトリクスのリストは、こちらでご覧いただけます。

また、一般的なノードのモニタリングシナリオのリストも提供しています。

 

Corda エンタープライズ設定難読化ツール

Corda Enterprise と Corda Enterprise Network Manager の設定難読化ツールを単一の .jar ファイルに統一しました。この新しいツールは、以前のツールと同じレベルの機能を提供します。

 

セキュリティアップデート

以下のライブラリが更新されました。

 

Token-SDKのドキュメントとトレーニング

Tokens SDKのドキュメントは、Cordaトレーニングサイトの開発者向けの包括的なトレーニングモジュールとともに、メインのCordaとCorda Enterpriseのドキュメントサイトに移設されました。

ドキュメントを読む

トレーニングモジュールを見る

 

その他改善点

  • データスタンプを含むすべてのデータベースカラムは、UTCを使用するように標準化されました (以前は使用されていたタイムゾーンに一貫性がありませんでした)。
  • HA Utilities --bridge-hsm-nameおよび--float-hsm-nameコマンドラインパラメータで使用されるHSM名は、ここで説明されているように、 cryptoServiceNameと正確に一致するようになりました。

 

プラットフォームのバージョン変更

Corda Enterprise 4.5 のプラットフォームバージョンが 6 から 7 に変更されたのは、新しいflowフレームワーク API の sendAll と sendAllMap が追加されたためで、パフォーマンスが向上された形で複数の相手にメッセージを送信できるようになったからです。

プラットフォームのバージョンについての詳細は、こちらをご参照ください。

 

修正されたイシュー

  • QueryCriteriaUtilsFieldInfo.notEqualの実装がFieldInfo.Equal と同じであった問題を修正しました。
  • CorDapp カスタム シリアライザが MockNetwork でサポートされておらず、Driver を使用せずにflowのユニット テストが失敗する原因となっていた問題が修正されました。
  • FlowLogic への参照を維持していた FlowExternalOperation をシリアライズすると、FlowExternalOperation から FlowAsyncOperation を構築する際に IndexOutOfBoundsException エラーが発生する問題が修正されました。
  • ServiceHub.signInitialTransaction()が宣言されていないチェック済み例外TransactionDeserialisationExceptionMissingAttachmentsExceptionをスローしていた問題を修正しました。
  • すべてのノードデータベースのタイムスタンプをUTCタイムゾーンを使用するように標準化しました。
  • 既存のチェックポイント・イテレータ・シリアライザのnull処理とイテレータ位置を復元する際のequalsの使用に関する問題を修正しました。
  • Cordaがカスタムの toString() メソッドを持つ Enums を DJVM サンドボックスにデシリアライズする際に失敗する問題が修正されました。
  • core内のCordaの内部providerMapフィールドが、プライベートであるはずのものが、パブリックであり、かつミュータブルであった問題を修正しました。
  • データベースの接続性に問題があるため、最初のチェックポイントをパースしていないflowを再試行するために、ステートマシンがArtemisキューからセッションinitメッセージを再生したときに失敗する問題を修正しました。
  • Oracle 11でcom.r3.corda.enterprise.seteltionationperftestcordapp.flows.SwapStockForCashFlowTestが失敗する問題が修正されました。
  • スタックトレースからより多くの情報を抽出するために更新した後、Level.WARNおよびLevel.FATALログに元のログメッセージが含まれていなかった問題を修正しました。
  • データベース内にtransactionが存在する場合でも、ハッシュ付きのtransactionをコミットするためにレッジャーが待機している間にFlowがハングすると競合状態が発生する問題を修正しました。
  • 埋め込まれたArtemisを使用しているときにCRLチェックが行われていなかった問題を修正しました。
  • HSMが利用できない場合に、コンポーネントを起動する際のエラーメッセージが矛盾していた問題を修正しました。
  • LinearStateQueryCriteria(linearId = emptyList())を使用したVaultクエリがPostgreSQL上で不正なSQL文に変換され、例外が発生する問題を修正しました。
  • FetchDataFlowConcurrentModificationExceptionの問題を解決するために、壊れたイテレータを修正できるカスタムシリアライザ(IteratorSerializer)を追加しました。
  • Oracle で VaultObserverExceptionTest テストが失敗する問題を修正しました。
  • ノードシェルを使用したノード登録時に「Cordaネットワークを使用して新しい参加者として登録します」というメッセージが中央に表示されない問題が修正されました。
  • Collaborative Recovery CorDappsのライセンスに関する問題を修正しました。
  • LedgerRecoverLedgerSyncで実行しているときのlevel.INFOlevel.WARNログのスタックトレースを削除しました。
  • リカバリーがすでに初期化されているときに、ユーザーがノードから InitiateManualRecoveryFlowというflowを開始しようとしたときに、ハンドルされていない例外がスローされる問題を修正しました。
  • LedgerRecover の実行中に isRequester が間違った値を持っていた場合に未処理の例外がスローされていた問題が修正されました。
  • ノードが起動していない手動のLedgerRecoverを要求したときに、Corda Enterpriseがflowに関する情報を提供していなかった問題を修正しました。
  • LedgerRecoverに関するドキュメントで、回復したtransactionのタイムスタンプが元のtransactionと比較して変更されることが明確に説明されていることを確認しました。
  • LedgerRecover が実行されている間、ExportTransactionsFlow というflowがスタックする可能性がある問題を修正しました。
  • PostgreSQL 10でマニュアルのLedgerRecoverが動作しなかった問題を修正しました。
  • 重複挿入を防ぐため、node_propertyesテーブルに主キーを追加しました。
  • Firewall負荷テストツールとCorda Firewall間の接続が中断された場合にCorda Firewall負荷がスタックする問題を修正しました。
  • Java を Zulu 8.46.0.19 にアップグレードした後、Notaryが応答不能になる本番環境の問題を修正しました。
  • ネットワーク情報を解析する際に、Corda Health Surveyツールが HTTP 301 と 404 の応答コードを無視する問題が修正されました。
  • Corda Health Survey ツールが HTTP/HTTPS ネットワークマップのリダイレクトを実行しない問題が修正されました。
  • net.corda.coretests.transactions.AtpttachmentsClassLoaderTests.attachment が強制的にガベージコレクションを行った後もverifyで利用可能であった問題を修正しました。
  • バックチェーンのバルク解析に使用される backchainFetchBatchSize オプションを、ノード構成の正しい Corda Enterprise 固有のチューニングセクションに移動しました (このセクションには、R3 と相談してのみ変更すべきオプションが含まれています)。
  • データベース・マネジメント・ツールを使用しているときに、機密情報がログとシェルターミナルでプレーンテキストとして公開されていた問題を修正しました。

Created by: Sheng Zhao

Last edited by: Sheng Zhao

Updated: 2020/06/25

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています