Corda4.4

Cordaの新しいバージョンである4.4がリリースされました。リリースノートの全文訳を掲載いたします。


リリースノート序文

Corda 4.4リリースノートへようこそ。このリリースで何が新しくなったのか、また、その機能がどのように役立つのかを理解するために、これらを注意深く読んでください。これまでのリリースでは、APIの後方互換性が保証されていましたが、Corda 4.4ではそれと同じ保証が付いています。Corda 3.0で有効だった状態やアプリは、Corda 4.4でも使用できます。


Corda 4.4

Corda 4.4は、Cordaコードベースの新しいオープンコアアプローチの基礎を築きました。これにはCordaの主要な機能コンポーネントのリファクタリングが含まれています。CorDapp開発への実際の影響の概要についてはcordapp-overview.rstを参照してください。

さらに、Corda 4.4 では、Flowフレームワーク API の改善、新しい診断ServiceHub呼び出し、多くのセキュリティ強化が導入されました。


開発者向けの変更点

Flow APIの改善

Corda 4.4では、新しいFlowLogic.await APIが導入されました。これにより、CorDapp開発者は、ユーザー定義のロングランオペレーション(外部サービスへのコールアウトなど)を実行しているときに、Flowを一時停止することができます。これにより、これらのロングランオペレーションがFlowスレッドをブロックすることを防ぎ、他のFlowがその間に処理を進めることができます。以前は、これらの操作は同期的に実行され、Flowスレッドをブロックしていました。

CorDapp開発者は、これらの非同期Flow操作を専用のスレッドプールで実行するか、スレッド処理を直接行うかを決定できます。

以前と同様に、Flowフレームワークは、特定の操作(例えば、カウンターパーティからのメッセージを受信するのを待っているときなど)に対して自動的に中断することに注意してください。これらの中断は、明示的に引き起こされる必要はありません。

ノードオペレータは、外部操作に割り当てるスレッドプールのスレッド数を設定することができます。

Corda 4.4では、新しいHospitalizeFlowException例外タイプも導入されました。この例外タイプは、スローされるとFlowの実行を停止し、flow hospitalに自分自身を送って観察します。Flowは、次のノードの開始時に自動的に再試行されます。

この例外は、既知の断続的な障害が発生した場合に、最後のチェックポイントからFlowを再試行する方法をユーザーコードに提供します。

新しいユーティリティAPI

Corda 4.4では、CorDapp開発者がアクセスできるようにするための新しいコール(ServiceHub.DiagnosticsService)を導入しています。

・実行している Corda のエディション (例: オープンソース、エンタープライズ)
・パッチ番号を含む実行中の Corda のバージョン (例: 3.2.20190215)

Corda 4.4では、コールバック (AppServiceHub.register) も提供しており、ノードが完全に起動したら実行するカスタムアクションを Corda サービスが登録できるようにしています。このパターンは、サービスがまだ初期化されていないノードの一部にすぐにアクセスしようとすることによる問題を防ぎます。

セキュリティの強化

Node shellの SSH サーバが更新され、時代遅れの弱い暗号やアルゴリズムが削除されました。
・スタンドアロンシェルにSSHする機能が削除されました。
・新しい読み取り専用のRPCユーザロールテンプレートがNode shellに文書化されました。

統合テストの変更点

Driver DSL (Integration testingを参照) を通して生成された “out-of-process” ノードは、アプリケーションのクラスパスに誤ってCorDappsが含まれてしまうことはなくなります。自動的にフィルタリングされる項目のリストには、以下のものが含まれます。

・ディレクトリ(通常のファイルのみ使用可能)
・Jars with Mavenのクラス分けテストまたはテスト
・マニフェストに Cordapp 属性を持つ jar (Building and installing a CorDappに記載されているもの、または Target-Platform-Version と Min-Platform-Version の両方が存在する場合はそれらのいずれか)
・jarのマニフェストに Corda-Testing 属性が含まれています。以下のアーティファクトのマニフェストが更新され、Corda-Testing 属性が含まれるようになりました。
-corda-node-driver
-corda-test-utils
-corda-test-common
-corda-test-db
-corda-mock
・名前が corda-mock, junit, testng, mockito で始まるファイル

既存の統合テストの中には、暗黙のうちに上記のファイルの存在に依存しているものがあるかもしれませんので、Corda のバージョンをアップグレードする際には、このことを念頭に置いてください。


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

新しい API が追加されたことを受けて、Corda 4.4のプラットフォームバージョンが5 から6にバンプアップされました。これは、Corda 4.4を使用しているCorDappsがホストできないノードにデプロイされるのを防ぐためです。最小プラットフォームバージョンは変更されていないことに注意してください — これは、古いCordaノードがCorda 4.4ノードと相互運用できることを意味します。追加されたAPIはワイヤプロトコルに影響を与えず、ゾーンレベルでの影響もないため、Corda 4.4ノードが最小プラットフォームバージョンが4のネットワーク上で動作していても、アプリケーションはこれらの新しいプラットフォームバージョン6の機能を利用することができます。

プラットフォームバージョンの詳細については、Versioningを参照してください。CorDappをプラットフォームバージョン5にアップグレードする際の詳細については、Upgrading CorDapps to newer Platform Versionsを参照してください。

既知の問題

元帳の完全性を高めるためにCorda 4.4で導入された変更により、データベーストランザクションに関する制限が強調されました。データベーストランザクションがコミットに失敗したり、コミット前の永続例外が発生した後にFlowが処理を継続しないようにするために、追加のデータベースフラッシュが追加されました。これらの追加フラッシュにより、以前は発生しなかった例外が発生する可能性があります(Corda 4.3や以前のバージョンと比較して、異なるタイプの例外が発生する可能性があります)。一般的に、CorDappの開発者は、データベーストランザクション中にスローされた例外をキャッチして、同じFlowの一部としてさらにDB操作を続けることは期待してはいけません。より安全なパターンは、Flowを失敗させて再試行することです。


バグ修正

以下のバグが修正されました

  • 初期登録中に Doorman からの応答が失敗すると、クラスキャスト例外が発生する [CORDA-2744]

 

翻訳記事は以上となります。

翻訳元ドキュメント(英語)

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