core / TransactionBuilder

TransactionBuilder

class TransactionBuilder

A mutable transaction thats in the process of being built, before all signatures are present.



Constructors

<init> TransactionBuilder(inputs: MutableList<StateRef> = arrayListOf(), attachments: MutableList<SecureHash> = arrayListOf(), outputs: MutableList<ContractState> = arrayListOf(), commands: MutableList<Command> = arrayListOf())

A mutable transaction thats in the process of being built, before all signatures are present.

Properties

time val time: TimestampCommand?

Functions

addAttachment fun addAttachment(attachment: Attachment): Unit
addCommand fun addCommand(arg: Command): Unit
fun addCommand(data: CommandData, vararg keys: PublicKey): <ERROR CLASS>
fun addCommand(data: CommandData, keys: List<PublicKey>): Unit
addInputState fun addInputState(ref: StateRef): Unit
addOutputState fun addOutputState(state: ContractState): Unit
addSignatureUnchecked fun addSignatureUnchecked(sig: WithKey): Unit

Adds the signature directly to the transaction, without checking it for validity.

attachments fun attachments(): List<SecureHash>
checkAndAddSignature fun checkAndAddSignature(sig: WithKey): Unit

Checks that the given signature matches one of the commands and that it is a correct signature over the tx, then adds it.

checkSignature fun checkSignature(sig: WithKey): Unit

Checks that the given signature matches one of the commands and that it is a correct signature over the tx.

commands fun commands(): List<Command>
inputStates fun inputStates(): List<StateRef>
outputStates fun outputStates(): List<ContractState>
setTime fun setTime(time: Instant, authenticatedBy: Party, timeTolerance: Duration): Unit

Places a TimestampCommand in this transaction, removing any existing command if there is one. To get the right signature from the timestamping service, use the timestamp method after building is finished, or run use the TimestampingProtocol yourself.

signWith fun signWith(key: KeyPair): Unit
timestamp fun timestamp(timestamper: TimestamperService, clock: Clock = Clock.systemUTC()): Unit

Uses the given timestamper service to request a signature over the WireTransaction be added. There must always be at least one such signature, but others may be added as well. You may want to have multiple redundant timestamps in the following cases:

toSignedTransaction fun toSignedTransaction(checkSufficientSignatures: Boolean = true): SignedTransaction
toWireTransaction fun toWireTransaction(): WireTransaction
withItems fun withItems(vararg items: Any): TransactionBuilder

A more convenient way to add items to this transaction that calls the add* methods for you based on type