corda / net.corda.core.transactions / ContractUpgradeLedgerTransaction

ContractUpgradeLedgerTransaction

class ContractUpgradeLedgerTransaction : FullTransaction, TransactionWithSignatures

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.

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.

Constructors

<init>

ContractUpgradeLedgerTransaction(inputs: List<StateAndRef<ContractState>>, notary: Party, legacyContractAttachment: Attachment, upgradedContractClassName: ContractClassName, upgradedContractAttachment: Attachment, id: SecureHash, privacySalt: PrivacySalt, sigs: List<TransactionSignature>, networkParameters: NetworkParameters)

Properties

id

val id: SecureHash

inputs

The inputs of this transaction. Note that in BaseTransaction subclasses the type of this list may change!

val inputs: List<StateAndRef<ContractState>>

legacyContractAttachment

val legacyContractAttachment: Attachment

networkParameters

Network parameters that were in force when this transaction was created. Resolved from the hash of network parameters on the corresponding wire transaction.

val networkParameters: NetworkParameters

notary

If present, the notary for this transaction. If absent then the transaction is not notarised at all. This is intended for issuance/genesis transactions that don't consume any other states and thus can't double spend anything.

val notary: Party

outputs

Outputs are computed by running the contract upgrade logic on input states. This is done eagerly so that the transaction is verified during construction.

val outputs: List<TransactionState<ContractState>>

privacySalt

val privacySalt: PrivacySalt

references

ContractUpgradeLedgerTransactions do not contain reference input states.

val references: List<StateAndRef<ContractState>>

requiredSigningKeys

The required signers are the set of all input states' participants.

val requiredSigningKeys: Set<PublicKey>

sigs

List of signatures on this transaction.

val sigs: List<TransactionSignature>

upgradedContractAttachment

val upgradedContractAttachment: Attachment

upgradedContractClassName

val upgradedContractClassName: ContractClassName

Functions

component1

operator fun component1(): List<StateAndRef<ContractState>>

component2

operator fun component2(): Party

component3

operator fun component3(): Attachment

component4

operator fun component4(): ContractClassName

component5

operator fun component5(): Attachment

component6

operator fun component6(): SecureHash

component7

operator fun component7(): PrivacySalt

component8

operator fun component8(): List<TransactionSignature>

component9

operator fun component9(): NetworkParameters

copy

fun copy(inputs: List<StateAndRef<ContractState>> = this.inputs, notary: Party = this.notary, legacyContractAttachment: Attachment = this.legacyContractAttachment, upgradedContractClassName: ContractClassName = this.upgradedContract::class.java.name, upgradedContractAttachment: Attachment = this.upgradedContractAttachment, id: SecureHash = this.id, privacySalt: PrivacySalt = this.privacySalt, sigs: List<TransactionSignature> = this.sigs, networkParameters: NetworkParameters = this.networkParameters): ContractUpgradeLedgerTransaction

equals

fun equals(other: Any?): Boolean

getKeyDescriptions

Get a human readable description of where signatures are required from, and are missing, to assist in debugging the underlying cause.

fun getKeyDescriptions(keys: Set<PublicKey>): List<String>

hashCode

fun hashCode(): Int

toString

fun toString(): String