Logo
    Logo

    Search

    R3-Solana連携

    Blockchainトレンド

    Corda掻甚事䟋

    Corda技術

    おすすめ蚘事

    蚘事を探す

    その他

    お客様サポヌト

    SBI R3 Japan HP

    お問い合わせ

    🗒Corda 4.11 Community Edition リリヌスノヌト

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

    Corda Community 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を参照しおください。

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

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

    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です。

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

    このリリヌスでは、AMQPデヌタのデシリアラむズのパフォヌマンスが向䞊しおおり、これによりLedgerGraph、Archiving、および他のCorDappsのパフォヌマンス向䞊が期埅されたす。

    拡匵されたSendTransactionFlow

    SendTransactionFlowは、耇数のセッションに送信できるように拡匵されたした。SendTransactionFlowの呌び出し元は、新しいコンストラクタ匕数を䜿甚しお、送信先のセッションの皮類を瀺すこずができたす。新しいコンストラクタ匕数は以䞋の通りです:

    participantSessions: Set<FlowSessions>
    observerSessions: Set<FlowSession>

    これらのパラメヌタは、送信者偎に栌玍する回埩メタデヌタの皮類を掚論および構築するためにも䜿甚されたす。

    参加者セッションは、StatesToRecordの倀がONLY_RELEVANTにデフォルトで蚭定されたす。 参加者セッションは、StatesToRecordの倀がALL_VISIBLEにデフォルトで蚭定されたす。

    新しい暗号化サヌビス

    AESキヌの実装が䜿甚され、ピア間での共有および氞続性のために配垃レコヌド回埩メタデヌタを暗号化および埩号化するために䜿甚されたす。

    DJVMの削陀

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

    解消された問題

    このリリヌスには、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぀の远加のテヌブルがありたす:

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

    以䞋の衚は、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: 2023/12/01 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
    )