Skip to main content

TxBody

export interface TxBody {
  allScriptHashes: ScriptHash<unknown>[]
  collateral: TxInput<SpendingCredential>[]
  collateralReturn: undefined | TxOutput<SpendingCredential>
  countUniqueSigners(): number
  dcerts: DCert[]
  dump(): any
  encodingConfig: TxBodyEncodingConfig
  fee: bigint
  firstValidSlot: undefined | number
  getValidityTimeRange(params: NetworkParams): TimeRange
  hash(): number[]
  inputs: TxInput<SpendingCredential>[]
  isValidSlot(slot: IntLike): boolean
  kind: "TxBody"
  lastValidSlot: undefined | number
  metadataHash: undefined | number[]
  minted: Assets
  outputs: TxOutput<SpendingCredential>[]
  recover(network: {getUtxo(id: TxOutputId): Promise<TxInput<SpendingCredential>>}): Promise<void>
  refInputs: TxInput<SpendingCredential>[]
  scriptDataHash: undefined | number[]
  signers: PubKeyHash[]
  sortOutputs(): void
  sumInputAndMintedAssets(): Assets
  sumInputAndMintedValue(): Value
  sumInputValue(): Value
  sumOutputAssets(): Assets
  sumOutputValue(): Value
  toCbor(): number[]
  totalCollateral: bigint
  toTxInfo(
    params: NetworkParams,
    redeemers: TxRedeemer[],
    datums: UplcData[],
    txId: TxId
  ): TxInfo
  withdrawals: [StakingAddress<StakingCredential>, bigint][]
}
Note: inputs, minted assets, and withdrawals need to be sorted in order to form a valid transaction

Properties

allScriptHashes

allScriptHashes: ScriptHash<unknown>[]
Used to validate if all the necessary scripts are included TxWitnesses (and that there are not redundant scripts)

collateral

collateral: TxInput<SpendingCredential>[]
Optionally encoded as set. TODO: rename to collateralInputs

collateralReturn

collateralReturn: undefined | TxOutput<SpendingCredential>

countUniqueSigners

countUniqueSigners(): number
Calculates the number of dummy signatures needed to get precisely the right tx size.

dcerts

dcerts: DCert[]
Optionally encoded as set.

dump

dump(): any

encodingConfig

encodingConfig: TxBodyEncodingConfig

fee

fee: bigint

firstValidSlot

firstValidSlot: undefined | number

getValidityTimeRange

getValidityTimeRange(params: NetworkParams): TimeRange

hash

hash(): number[]
The bytes that form the TxId

inputs

inputs: TxInput<SpendingCredential>[]
Optionally encoded as set.

isValidSlot

isValidSlot(slot: IntLike): boolean
Used by (indirectly) by emulator to check if slot range is valid. Note: firstValidSlot == lastValidSlot is allowed

kind

kind: "TxBody"

lastValidSlot

lastValidSlot: undefined | number

metadataHash

metadataHash: undefined | number[]

minted

minted: Assets
Internally the assets must be sorted by mintingpolicyhash Minting redeemers must point to the sorted minted assets

outputs

outputs: TxOutput<SpendingCredential>[]

recover

recover(network: {getUtxo(id: TxOutputId): Promise<TxInput<SpendingCredential>>}): Promise<void>
A serialized tx throws away input information This must be refetched from the network if the tx needs to be analyzed This must be done for the regular inputs because the datums are needed for correct budget calculation and min required signatures determination This must be done for the reference inputs because they impact the budget calculation This must be done for the collateral inputs as well, so that the minium required signatures can be determined correctly

refInputs

refInputs: TxInput<SpendingCredential>[]
Optionally encoded as set.

scriptDataHash

scriptDataHash: undefined | number[]

signers

signers: PubKeyHash[]
Optionally encoded as set.

sortOutputs

sortOutputs(): void
Not done in the same routine as sortInputs(), because balancing of assets happens after redeemer indices are set

sumInputAndMintedAssets

sumInputAndMintedAssets(): Assets
Excludes lovelace

sumInputAndMintedValue

sumInputAndMintedValue(): Value
Throws error if any part of the sum is negative (i.e. more is burned than input)

sumInputValue

sumInputValue(): Value

sumOutputAssets

sumOutputAssets(): Assets
Excludes lovelace

sumOutputValue

sumOutputValue(): Value

toCbor

toCbor(): number[]

totalCollateral

totalCollateral: bigint

toTxInfo

toTxInfo(
  params: NetworkParams,
  redeemers: TxRedeemer[],
  datums: UplcData[],
  txId: TxId
): TxInfo
Returns the on-chain Tx representation

withdrawals

withdrawals: [StakingAddress<StakingCredential>, bigint][]
Withdrawals must be sorted by address Stake rewarding redeemers must point to the sorted withdrawals