An interface for transactions containing signatures, with logic for signature verification.
An abstract class defining fields shared by all transaction types in the system.
A ComponentGroup is used to store the full list of transaction components of the same type in serialised form. Practically, a group per component type of a transaction is required; thus, there will be a group for input states, a group for all attachments (if there are any) etc.
A filtered version of the
A contract upgrade transaction with fully resolved inputs and signatures. Contract upgrade transactions are separate to regular transactions because their validation logic is specialised; the original contract by definition cannot be aware of the upgraded contract (it was written after the original contract was developed), so its validation logic cannot succeed. Instead alternative verification logic is used which verifies that the outputs correspond to the inputs after upgrading.
A special transaction for upgrading the contract of a state.
A FilteredComponentGroup is used to store the filtered list of transaction components of the same type in serialised form. This is similar to
Class representing merkleized filtered transaction.
A transaction with fully resolved components, such as input states.
A LedgerTransaction is derived from a
A notary change transaction with fully resolved inputs and signatures. In contrast with a regular transaction, signatures are checked against the signers specified by input states' participants fields, so full resolution is needed for signature verification.
A special transaction for changing the notary of a state. It only needs specifying the state(s) as input(s), old and new notaries. Output states can be computed by applying the notary modification to corresponding inputs on the fly.
SignedTransaction wraps a serialized WireTransaction. It contains one or more signatures, each one for a public key (including composite keys) that is mentioned inside a transaction command. SignedTransaction is the top level transaction type and the type most frequently passed around the network and stored. The identity of a transaction is the hash of Merkle root of a WireTransaction, therefore if you are storing data keyed by WT hash be aware that multiple different STs may map to the same key (and they could be different in important ways, like validity!). The signatures on a SignedTransaction might be invalid or missing: the type does not imply validity. A transaction ID should be the hash of the
A TransactionBuilder is a transaction class that's mutable (unlike the others which are all immutable). It is intended to be passed around contracts that may edit it by adding new states/commands. Then once the states and commands are right, this class can be used as a holding bucket to gather signatures from multiple parties.
Thrown when checking for visibility of all-components in a group in
A contract attachment was missing when trying to automatically attach all known contract attachments
Base data types for transactions which modify contract state on the distributed ledger.
The core transaction on the ledger is
class WireTransaction, which is constructed by
class TransactionBuilder. Once signed a transaction is stored
class SignedTransaction which encapsulates
class WireTransaction. Finally there is a special-case
class LedgerTransaction which is used by contracts
validating transactions, and is built from the wire transaction by resolving all references into their underlying data (i.e. inputs are
actual states rather than state references).