From b2a1ddec72257c9a299d00362805e383bb2121e1 Mon Sep 17 00:00:00 2001 From: Pal Dorogi <1113398+ilap@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:40:20 +0200 Subject: [PATCH] feat(dart/catalyst_cardano_serialization): add support for additional transaction body fields (#858) * feat(transaction_builder): add support for additional transaction body fields (#710) * fix(catalyst_cardano_serialization): add missing properties to Transaction constructor in `_buildBody()` * docs(catalyst_cardano_serialization): Correct typo in transaction builder class Co-authored-by: Dominik Toton <166132265+dtscalac@users.noreply.github.com> --------- Co-authored-by: Steven Johnson Co-authored-by: Dominik Toton <166132265+dtscalac@users.noreply.github.com> --- .../catalyst_cardano_serialization/README.md | 14 ++--- .../lib/src/builders/transaction_builder.dart | 55 ++++++++++++++++++- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/catalyst_voices_packages/catalyst_cardano_serialization/README.md b/catalyst_voices_packages/catalyst_cardano_serialization/README.md index 7354c3ecce..4cb692b5d5 100644 --- a/catalyst_voices_packages/catalyst_cardano_serialization/README.md +++ b/catalyst_voices_packages/catalyst_cardano_serialization/README.md @@ -194,15 +194,15 @@ Byron era addresses are not supported. | 5 = reward withdrawals | ❌️ | | 6 = protocol parameter update | ❌️ | | 7 = auxiliary_data_hash | ✔️ | -| 8 = validity interval start | ❌️ | -| 9 = mint | ❌️ | -| 11 = script_data_hash | ❌️ | -| 13 = collateral inputs | ❌️ | +| 8 = validity interval start | ✔️ | +| 9 = mint | ✔️ | +| 11 = script_data_hash | ✔️ | +| 13 = collateral inputs | ✔️ | | 14 = required signers | ✔️ | | 15 = network_id | ✔️ | -| 16 = collateral return | ❌️ | -| 17 = total collateral | ❌️ | -| 18 = reference inputs | ❌️ | +| 16 = collateral return | ✔️ | +| 17 = total collateral | ✔️ | +| 18 = reference inputs | ✔️ | ## Reference documentation diff --git a/catalyst_voices_packages/catalyst_cardano_serialization/lib/src/builders/transaction_builder.dart b/catalyst_voices_packages/catalyst_cardano_serialization/lib/src/builders/transaction_builder.dart index b6470a4676..96d071ace6 100644 --- a/catalyst_voices_packages/catalyst_cardano_serialization/lib/src/builders/transaction_builder.dart +++ b/catalyst_voices_packages/catalyst_cardano_serialization/lib/src/builders/transaction_builder.dart @@ -38,13 +38,34 @@ final class TransactionBuilder extends Equatable { /// The transaction metadata as a list of key-value pairs (a map). final AuxiliaryData? auxiliaryData; - /// The list of public key hashes of addresses - /// that are required to sign the transaction. + /// Validity interval start as integer. + final SlotBigNum? validityStart; + + /// Mint as a non-zero uint64 multiasset. + final MultiAsset? mint; + + /// The transaction metadata as a list of key-value pairs (a map). + final ScriptData? scriptData; + + /// Collateral inputs as nonempty set. + final Set? collateralInputs; + + /// The list of public key hashes of addresses that are required to sign the + /// transaction. A nonempty set of addr key hashes. final Set? requiredSigners; /// Specifies on which network the code will run. final NetworkId? networkId; + /// Collateral return's transaction output. + final ShelleyMultiAssetTransactionOutput? collateralReturn; + + /// Total collateral as coin (uint64). + final Coin? totalCollateral; + + /// Reference inputs as nonempty set of transaction inputs. + final Set? referenceInputs; + /// The builder that builds the witness set of the transaction. /// /// The caller must know in advance how many witnesses there will be to @@ -60,8 +81,15 @@ final class TransactionBuilder extends Equatable { this.fee, this.ttl, this.auxiliaryData, + this.validityStart, + this.mint, + this.scriptData, + this.collateralInputs, this.requiredSigners, this.networkId, + this.collateralReturn, + this.totalCollateral, + this.referenceInputs, this.witnessBuilder = const TransactionWitnessSetBuilder( vkeys: {}, vkeysCount: 1, @@ -232,8 +260,15 @@ final class TransactionBuilder extends Equatable { fee, ttl, auxiliaryData, + validityStart, + mint, + scriptData, + collateralInputs, requiredSigners, networkId, + collateralReturn, + totalCollateral, + referenceInputs, witnessBuilder, ]; @@ -476,8 +511,17 @@ final class TransactionBuilder extends Equatable { auxiliaryDataHash: auxiliaryData != null ? AuxiliaryDataHash.fromAuxiliaryData(auxiliaryData!) : null, + validityStart: validityStart, + mint: mint, + scriptDataHash: scriptData != null + ? ScriptDataHash.fromScriptData(scriptData!) + : null, + collateralInputs: collateralInputs, requiredSigners: requiredSigners, networkId: networkId, + collateralReturn: collateralReturn, + totalCollateral: totalCollateral, + referenceInputs: referenceInputs, ); } @@ -493,8 +537,15 @@ final class TransactionBuilder extends Equatable { fee: fee ?? this.fee, ttl: ttl, auxiliaryData: auxiliaryData, + validityStart: validityStart, + mint: mint, + scriptData: scriptData, + collateralInputs: collateralInputs, requiredSigners: requiredSigners, networkId: networkId, + collateralReturn: collateralReturn, + totalCollateral: totalCollateral, + referenceInputs: referenceInputs, witnessBuilder: witnessBuilder ?? this.witnessBuilder, ); }