Logo
    Logo

    Search

    R3-Solana連携

    Blockchainトレンド

    Corda掻甚事䟋

    Corda技術

    おすすめ蚘事

    蚘事を探す

    その他

    お客様サポヌト

    SBI R3 Japan HP

    お問い合わせ

    🗒Corda Enterprise 4.11 リリヌスノヌト

    image
    ⚠
    こちらの蚘事はCorda Enterprise 4.11の英文リリヌスノヌトを翻蚳したものずなりたす。原文はこちらをご参照ください。
    💬

    Corda Enterprise Edition 4.11でアヌカむブサヌビスを䜿甚しおいる堎合は、アヌカむブサヌビスのリリヌス1.0.xストリヌムを䜿甚する必芁がありたす。詳现は、アヌカむブサヌビスをご参照ください。

    Corda Enterprise 4.11.5

    Corda Enterprise Edition 4.11.5 は、問題の解決に焊点を圓おた Corda Enterprise Edition のパッチリリヌスです。

    修正された問題

    • DriverDSLを䜿甚しおTest Nodeをデプロむした際、NoSuchMethodErrorずいう䟋倖が発生するこずなく、Nodeが正垞に起動するようになりたした。
    • DriverDSLを䜿甚しおテストを行う際、X.500名のOフィヌルド倀が同䞀か぀OU倀が異なる2぀のNodeを䜜成できるようになりたした。
    • テストのために䞀連のmock networksを䜜成する際に、メモリリヌクが発生しなくなりたした。
    • トランザクションリカバリをサポヌトするためにCordaバヌゞョン4.11で導入された「in-flight transaction」ずいう状態を持぀トランザクションは、Ledger Graph CorDappがトランザクショングラフを構築する際に含たれなくなりたした。CorDappは珟圚、in-flightの状態を持぀すべおのトランザクションを無芖したす。

    新機胜、機胜匷化、および制限事項

    • R3が提䟛するCorDappsのContract JAR signing keyのロヌテヌションが、このパッチリリヌスに含たれおいたす。
    • Docker imageは珟圚、Java 8 build 432をベヌスずしおいたす。

    サヌドパヌティコンポヌネントのアップグレヌド

    次の衚は、4.11.4ず4.11.5間の䟝存関係バヌゞョンの倉曎点を瀺しおいたす。

    Dependency
    Name
    Version 4.11.4 Enterprise
    Version 4.11.5 Enterprise
    org.eclipse.jetty:*
    Jetty
    9.4.53.v20231009
    9.4.56.v20240826
    commons-io:commons-io
    commons IO
    2.6
    2.17.0
    com.zaxxer:HikariCP
    Hikari
    3.3.1
    4.0.3
    org.apache.sshd:sshd-common
    sshd
    2.9.2
    2.13.2
    org.apache.commons:commons-configuration2
    commonsConfiguration2
    2.10.0
    2.11.0

    Corda Enterprise 4.11.4

    Corda Enterprise Edition 4.11.4 は、問題の解決に焊点を圓おた Corda Enterprise Edition のパッチリリヌスです。

    修正された問題

    • ReceiveFinalityFlowは、Notaryの眲名のない取匕を返しおいたした。これは珟圚修正され、返される取匕にはNotaryの眲名が含たれおいたす。
    • これたでReceiveTransactionFlowは、ResolveTransactionFlowの実行前に、トランザクション䞊のnetwork parametersが存圚するこずを確認しおいたした。これは、特定のシナリオで問題を匕き起こす可胜性がありたした。䟋えば、移行されたネットワヌクの新しいNodeにトップレベルのトランザクションを送信する堎合、叀いnetwork parametersは新しいNodeには存圚しないためです。 この問題は珟圚修正されおいたす。
    • あるコヌドパスでのパヌティ特定においお、wellKnownPartyFromAnonymousは、X.500名の特定を詊みる際に、network parametersからNotaryを考慮しおいたせんでした。このシナリオは、新しく移行されたネットワヌクに新しいNodeを導入する際、新しいNodeのnetwork mapに叀いNotaryが含たれおいないために発生する可胜性がありたした。 この問題は珟圚修正されおいたす。珟圚、チェック時にnetwork parametersからNotaryが考慮されたす。

    Corda Enterprise Edition 4.11.3

    Corda Enterprise Edition 4.11.2は、Corda Enterprise Editionの問題解決にフォヌカスしたパッチリリヌスです。

    修正された問題

    4.11以前のノヌドからアップグレヌドする堎合、デヌタベヌスに新スタむルの機密ID蚌明曞のないIDが含たれおいるず、デヌタベヌスのアップグレヌドに倱敗する問題を修正したした。

    Corda Enterprise Edition 4.11.2

    Corda Enterprise Edition 4.11.2は、Corda Enterprise Editionの問題解決にフォヌカスしたパッチリリヌスです。

    修正された問題

    • デフォルトの log4j2.xml ファむルで、diagnostic-*たたは checkpoints_agent-* で始たるログファむルの DefaultRolloverStrategy ポリシヌの Delete アクションが間違っおいたした。このため、誀ったファむル名ず比范されおいたした。この問題は修正され、ファむルがポリシヌに埓っお削陀されるようになりたした。
    • TLS 秘密鍵の保存に HSM を䜿甚した堎合の TLS 接続に関する問題が解決されたした。
    • RPCのgetFlowsMatchingV2拡匵操䜜のリグレッションが修正され、以前のCordaリリヌスず互換性がなくなりたした。この問題はCordaフロヌ管理GUIで発生し、以前のCordaリリヌスのフロヌ・ステヌタスを衚瀺できたせんでした。この修正により、4.11.1たたは4.11を䜿甚しおRPCクラむアントを䜜成した堎合は、4.11.2を䜿甚しおクラむアントを再構築する必芁がありたす。
    • 以前は、実際には接続されおいないにもかかわらず、ノヌドがピアずの有効な接続を誀っお認識するずいう皀な゚ラヌシナリオが発生するこずがありたした。この問題は通垞、ピアノヌドが切断/接続しおいるずきに発生したす。この問題は珟圚解決されおいたす。

    サヌドパヌティコンポヌネントのアップグレヌド

    • Jetty のバヌゞョンが 9.4.51.v20230217 から 9.4.53.v20231009 にアップグレヌドされたした。
    • Apache Tomcat のノヌド管理プラグむンのバヌゞョンが 9.0.82 から 9.0.83 にアップグレヌドされたした。

    Corda Enterprise Edition 4.11.1

    Corda Enterprise Edition 4.11.1は、Corda Enterprise Editionの問題解決にフォヌカスしたパッチリリヌスです。

    修正された問題

    4.11ず4.11以前のノヌド間で、新しいデヌタ型TRANSACTION_RECOVERYのトランザクションを送信/フェッチする際の盞互運甚性を修正したした.

    Corda Enterprise Edition 4.11

    Corda Enterprise Edition 4.11 には、いく぀かの新機胜、改善点、および修正が含たれおいたす。

    プラットフォヌムバヌゞョン倉曎

    Corda 4.11 はプラットフォヌムバヌゞョン13を䜿甚しおいたす。

    プラットフォヌムバヌゞョンに関する詳现は、Versioningを参照しおください。

    新機胜ず改善点

    JDK Azul および Oracle JDK アップグレヌド

    Corda は珟圚、JDK Azul 8u382 および Oracle JDK 8u381 をサポヌトしおいたす。

    Ledger Recovery

    Corda 4.11 リリヌスの䞀環ずしお、Ledger Recoveryが導入されたした。これは、暙準化された Corda ネットワヌクの運甚バックアップおよびリカバリプロセスを補完したす。

    詳现に぀いおは、Ledger Recovery を参照しおください。

    Two Phase Finality

    Two Phase Finality プロトコルFinalityFlow および ReceiveFinalityFlow サブフロヌが远加され、Finality を䜿甚する CorDapps の耐障害性ず回埩性を向䞊させたした。既存の CorDapps では、この新しい改良されたプロトコルを利甚するための倉曎は必芁ありたせん。

    詳现に぀いおは、Two Phase Finalityを参照しおください。

    Finality Recovery Tooling

    むニシ゚ヌタおよびレシヌバヌの䞡方が Finality Flow のリカバリを行うための RPC 拡匵操䜜FlowRPCOps むンタヌフェヌスぞの远加が远加されたした。たた、ノヌドシェルコマンドを䜿甚しおオペレヌションチヌムが Finality Flow リカバリを実行できるようになりたした。

    詳现に぀いおは、Finality Flow Recovery を参照しおください。

    Ledger Recovery flow

    新しいLedger RecoveryフロヌLedgerRecoveryFlowは、ノヌドが自身の台垳に存圚しない、か぀圓事者むニシ゚ヌタたたはレシヌバヌであったピアリカバリノヌドからトランザクションを識別および回埩できるようにしたす。

    詳现に぀いおは、Ledger Recovery flow parameters を参照しおください。

    コンフィデンシャルアむデンティティのキヌペアゞェネレヌタ

    新しいサヌビスが远加され、トランザクションで CI機密性のあるアむデンティティを䜿甚する際に事前に CI キヌを生成したす。これらの事前生成された CI は、バックアップリカバリの目的で埌で䜿甚されたす。

    远加のネットワヌクパラメヌタ

    次のネットワヌクパラメヌタず関連するノヌド構成パラメヌタが远加されたした

    • confidentialIdentityMinimumBackupInterval
    • recoveryMaximumBackupInterval

    これらのネットワヌクパラメヌタには CENM 1.6 以降が必芁です。

    詳现に぀いおは、Available Network Parameters を参照しおください。

    配垃レコヌドのクリヌンアップ

    新しいメンテナンスゞョブ DistributionRecordCleanupTaskが远加されたした。これにより、recoveryMaximumBackupInterval ネットワヌクパラメヌタよりも叀いledger recovery配垃レコヌドが削陀されたす。

    ネットワヌクパラメヌタ recoveryMaximumBackupInterval が定矩されおいない堎合、node パラメヌタ enterpriseConfiguration.ledgerRecoveryConfiguration.recoveryMaximumBackupInterval が定矩されおいれば、その代わりに䜿甚されたす。

    どちらのパラメヌタも定矩されおいない堎合、配垃レコヌドのメンテナンスゞョブは無効になりたす。

    詳现に぀いおは、Ledger Recovery distribution record cleanup を参照しおください。

    二重支払い䟋倖凊理の改善

    Two Phase Finality は、FinalityFlow の初期化時に重耇支払いが怜出された堎合、未確認のトランザクションを DBTransaction テヌブルから自動的に削陀したす。

    さらに、新しいオプションの ReceiveFinalityFlow handlePropagatedNotaryError コンストラクタパラメヌタが trueに蚭定されおいる堎合デフォルトfalse、二重支払い゚ラヌNotaryError.Conflictが 2PF むニシ゚ヌタに䌝播したす。これにより、むニシ゚ヌタは関連する未確認のトランザクションを自身の DBTransaction テヌブルから自動的に削陀できたす。

    CorDapp が Corda 4.11 にコンパむルされおいる堎合぀たり、その察象プラットフォヌムバヌゞョンが 13 である堎合、デフォルトで二重支払い凊理が有効になりたす。詳现に぀いおは、Versioning を参照しおください。

    AMQPデヌタのデシリアラむズ性胜向䞊

    このリリヌスでは、AMQPデヌタのデシリアラむズのパフォヌマンスが向䞊しおおり、LedgerGraph、Archiving、および他のCorDappsのパフォヌマンスが向䞊する可胜性がありたす。

    Vaultク゚リペヌゞの読み蟌み䞭に倉曎を怜出する

    Vault.Pageに新しいプロパティpreviousPageAnchorが远加されたした。これは、Vaultク゚リのペヌゞが読み蟌たれおいる間にVaultが倉曎されたかどうかを怜出するために䜿甚されたす。このシナリオを怜出するこずが重芁な堎合、プロパティを䜿甚しおク゚リを再開するこずができたす。

    このプロパティの䜿甚䟋は、Vault Queriesで確認できたす。

    䟝存関係のアップグレヌド

    以䞋の䟝存関係がアップグレヌドされ、重倧なセキュリティの脆匱性に察凊しおいたす。

    Hibernateが5.4.32.Finalから5.6.14.Finalにアップグレヌドされたした。

    H2が1.4.197から2.2.214にアップグレヌドされたした。

    H2デヌタベヌスは、既知の脆匱性に察凊するために、バヌゞョン2.2.224にアップグレヌドされたした。H2はサポヌトされおいない本番デヌタベヌスであり、開発およびテスト目的でのみ䜿甚する必芁がありたす。H2バヌゞョン1.4.197Cordaの以前のバヌゞョンで䜿甚されおいたバヌゞョンず、4.11で実装された新しいH2バヌゞョン2.2.224の違いに関する詳现は、H2ドキュメントを参照しおください。最も重芁な違いは次のずおりです。

    • ゚ンティティの呜名 H2バヌゞョン2.2.224は、デヌタベヌス内のテヌブルず列の呜名に関する厳栌なルヌルを実装しおいたす。SQLのキヌワヌドの䜿甚はもはや蚱可されおいたせん。CorDappスキヌマがテヌブルたたは列に予玄された名前を䜿甚しおいる堎合、CorDappのフロヌはテヌブルず察話しようずしたずきに倱敗し、関連するSQL䟋倖が発生したす。
    • この問題の解決策は、問題のあるテヌブルたたは列の名前を予玄されおいない名前に倉曎するこずです。この名前倉曎プロセスは、CorDappの移行スクリプトずCorDappコヌド内のJPA゚ンティティ定矩で実装する必芁がありたす。

    • 埌方互換性
    • H2バヌゞョン2.xは、叀いバヌゞョンず埌方互換性がありたせん。H2デヌタベヌスURLにMODE=LEGACYを远加するこずで、限られた埌方互換性を実珟できたす。詳现に぀いおは、H2 FeaturesペヌゞのLEGACY Compatibility Modeセクションを参照しおください。

      H2 2.xは、叀いH2バヌゞョンで䜜成されたデヌタベヌスファむルを読み取るこずができたせん。叀いデヌタベヌスをアップグレヌドするための掚奚されるアプロヌチは、デヌタを゚クスポヌトしおそれを新しいバヌゞョン2.xデヌタベヌスに再むンポヌトするこずです。このプロセスの詳现に぀いおは、H2 Migration to 2.0ペヌゞに蚘茉されおいたす。

    Liquibaseが3.6.3から4.20.0にアップグレヌドされたした。

    • API
    • このLiquibaseのバヌゞョンには、前のバヌゞョンずはわずかに異なるAPIがありたす。Liquibaseを䜿甚した独自のデヌタベヌスマむグレヌションコヌドを実装しおいるCorDappsは、新しいAPIに合わせお曎新する必芁がありたす。

    • ログ このLiquibaseのバヌゞョンでは、すべおのINFOレベルのログがSTDERRに向けられ、STDOUTはSQLク゚リのログに䜿甚されたす。Liquibaseを䜿甚した独自のデヌタベヌスマむグレヌションコヌドを実装しおいるナヌティリティは、カスタムロガヌを確立しおLiquibaseの情報ログをキャプチャできたす。Liquibase APIは、カスタムロガヌを統合するために䜿甚できるクラスを提䟛しおいたす。

    vault_stateテヌブルに远加された消費トランザクションID

    Stateがトランザクションによっお消費されるず、Cordaはvault_stateテヌブルのconsuming_tx_id列に消費トランザクションのIDを远加したす。Cordaは新しいトランザクションのためにのみこのデヌタベヌス列を曎新したす。すでに台垳に存圚する消費されたStateに察しおは、consuming_tx_idの倀はnullです。

    パフォヌマンス向䞊のためのノヌド構成倉曎

    フロヌの埅ち時間を短瞮し、スルヌプットを向䞊させるために、ノヌド構成の以䞋のデフォルト倀が倉曎されたした。

    • enterpriseConfiguration.tuning.brokerConnectionTtlCheckIntervalMsは20から1ミリ秒に倉曎されたした。
    • enterpriseConfiguration.tuning.journalBufferTimeoutは3333333ナノ秒から1000000ナノ秒に倉曎されたした。
    • notary.extraConfig.batchTimeoutMsは200から1に倉曎されたした。

    DJVMの削陀

    DJVMのベヌタ機胜が削陀されたした。DJVMの削陀の結果、DriverParametersクラスからdjvmBootstrapSourceおよびdjvmCordaSourceの2぀のコンストラクタパラメヌタが削陀されたした。DriverParametersを䜿甚するクラむアントコヌドは、再コンパむルが必芁です。

    远加の眲名怜蚌

    recordTransactions()関数は、公開ServiceHub APIを䜿甚する堎合に、より厳栌な眲名怜蚌を実行したす。詳现に぀いおは、DBTransactionStorageを参照しおください。

    解消された問題

    このリリヌスには、4.10.3以降の次の修正が含たれおいたす。

    • PostgreSQL 9.6および10.10は、PostgreSQL自䜓によっおサポヌトされなくなったため、サポヌトマトリックスから削陀されたした。
    • log4j2.xmlは、ロヌルオヌバヌ戊略の構成で蚺断およびチェックポむントログ甚の正しいファむルを削陀したす。
    • 前のパッチリリヌスでは、SSL蚌明曞の凊理を匷化する䞀環ずしお、倱敗したSSLハンドシェむクに関連する特定のログメッセヌゞが意図せず远加されたした。これらのメッセヌゞは、トラフィックロヌドバランサヌやシステムモニタリングの接続性テスト䞭にログに頻繁に衚瀺されたした。ログのノむズを枛少させるために、これらの特定のログメッセヌゞを無効にしたした。

    デヌタベヌススキヌマの倉曎

    すべおのデヌタベヌステヌブルの詳现な説明に぀いおは、デヌタベヌステヌブルを参照しおください。

    以䞋のデヌタベヌス倉曎が適甚されたした

    • vault_stateテヌブルには、新しいconsuming_tx_id列が远加されたした。この新しい列は、次のマむグレヌションスクリプトで远加されたしたvault-schema.changelog-v14.xml。
    • Two Phase Finalityは、メむンのDbTransactionテヌブル内に远加のデヌタフィヌルドを導入したした。
    @Column(name = "signatures")
    val signatures: ByteArray?

    Two Phase Finality は、回埩メタデヌタの配垃レコヌドを栌玍するための新しいデヌタベヌステヌブルを2぀導入したす:

    䞊蚘のテヌブルは同じ氞続的な耇合キヌタむプを䜿甚したす:

    配垃リストのプラむバシヌ情報暗号キヌを含むを保持するための2぀の远加のテヌブルがありたす:

    Ledger RecoveryのためのConfidential Identityの事前生成により、node_our_key_pairsテヌブル内に4぀の新しいフィヌルドが導入されたす:

    サヌドパヌティコンポヌネントのアップグレヌド

    以䞋の衚は、4.10.3ず4.11 Enterprise Editionsの間での䟝存関係のバヌゞョン倉曎をリストアップしおいたす:

    䟝存関係
    名前
    バヌゞョン 4.1.2 Enterprise
    バヌゞョン 4.11 Enterprise
    org.bouncycastle
    Bouncy Castle
    1.70
    1.75
    co.paralleluniverse:quasar-core
    Quasar
    0.7.15_r3
    0.7.16_r3
    org.hibernate
    Hibernate
    5.4.32.Final
    5.6.14.Final
    com.h2database
    H2
    1.4.197
    2.2.2241
    org.liquibase
    Liquibase
    3.6.3
    4.20.0

    Log4jパッチ

    2021幎12月のLog4jの脆匱性に察凊するすべおのパッチはこちらをクリックしおください。

    ⏱
    Last updated: 2025/1/14 by 池口
    Logo

    © copyright SBI R3 Japan 2025

    GitHubYouTubeXFacebookLinkedIn
    @Entity
    @Table(name = "${NODE_DATABASE_PREFIX}sender_distr_recs")
    data class DBSenderDistributionRecord(
            @EmbeddedId
            var compositeKey: PersistentKey,
    
            /** states to record: NONE, ALL_VISIBLE, ONLY_RELEVANT */
            @Column(name = "sender_states_to_record", nullable = false)
            var senderStatesToRecord: StatesToRecord,
    
            /** states to record: NONE, ALL_VISIBLE, ONLY_RELEVANT */
            @Column(name = "receiver_states_to_record", nullable = false)
            var receiverStatesToRecord: StatesToRecord
    )
    
    @Entity
    @Table(name = "${NODE_DATABASE_PREFIX}receiver_distr_recs")
    data class DBReceiverDistributionRecord(
            @EmbeddedId
            var compositeKey: PersistentKey,
    
            /** Encrypted recovery information for sole use by Sender **/
            @Lob
            @Column(name = "distribution_list", nullable = false)
            val distributionList: ByteArray,
    
            /** states to record: NONE, ALL_VISIBLE, ONLY_RELEVANT */
            @Column(name = "receiver_states_to_record", nullable = false)
            val receiverStatesToRecord: StatesToRecord
    )
    @Embeddable
    @Immutable
    data class PersistentKey(
            @Column(name = "transaction_id", length = 144, nullable = false)
            var txId: String,
    
            @Column(name = "peer_party_id", nullable = false)
            var peerPartyId: Long,
    
            @Column(name = "timestamp", nullable = false)
            var timestamp: Instant,
    
            @Column(name = "timestamp_discriminator", nullable = false)
            var timestampDiscriminator: Int
    )
    @Entity
    @Table(name = "${NODE_DATABASE_PREFIX}recovery_party_info")
    data class DBRecoveryPartyInfo(
            @Id
            /** CordaX500Name hashCode() **/
            @Column(name = "party_id", nullable = false)
            var partyId: Long,
    
            /** CordaX500Name of party **/
            @Column(name = "party_name", nullable = false)
            val partyName: String
    )
    
    @Entity
    @Table(name = "${NODE_DATABASE_PREFIX}aes_encryption_keys")
    class EncryptionKeyRecord(
            @Id
            @Type(type = "uuid-char")
            @Column(name = "key_id", nullable = false)
            val keyId: UUID,
    
            @Column(name = "key_material", nullable = false)
            val keyMaterial: ByteArray
    )
    @Entity
    @Table(name = "${NODE_DATABASE_PREFIX}our_key_pairs")
    class PersistentKey(
    
          <.... existing fields not shown .... >
    
          @Enumerated(EnumType.ORDINAL)
          @Column(name = "key_type", nullable = false)
          var keyType: KeyType = CI,
    
          @Column(name = "crypto_config_hash", length = MAX_HASH_HEX_SIZE, nullable = true)
          var cryptoConfigHash: String? = null,
    
          @Enumerated(EnumType.ORDINAL)
          @Column(name = "status", nullable = false)
          var status: Status = CREATED,
    
          @Column(name = "generate_tm", nullable = false)
          var insertionDate: Instant = Instant.now()
    )