ContractUpgradeLedgerTransaction - corda

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`