Constructors

Link copied to clipboard
constructor(txId: SecureHash, message: String, cause: Throwable?)

Types

Link copied to clipboard

Indicates this transaction violates the "no overlap" rule: two attachments are trying to provide the same file path. Whereas Java classpaths would normally allow that with the first class taking precedence, this is not allowed in transactions for security reasons. This usually indicates that two separate apps share a dependency, in which case you could try 'shading the fat jars' to rename classes of dependencies. Or you could manually attach dependency JARs when building the transaction.

Link copied to clipboard

This exception happens when a transaction was not built correctly. When a contract is not annotated with NoConstraintPropagation, then the platform ensures that the constraints of output states transition correctly from input states.

Link copied to clipboard

The transaction attachment that contains the contractClass class didn't meet the constraints specified by the TransactionState.constraint object. This usually implies a version mismatch of some kind.

Link copied to clipboard

A Contract class named by a state could not be constructed. Most likely you do not have a no-argument constructor, or the class doesn't subclass Contract.

Link copied to clipboard

Indicates that one of the Contract.verify methods selected by the contract constraints and attachments rejected the transaction by throwing an exception.

Link copied to clipboard

Whether the inputs or outputs list contains an encumbrance issue, see TransactionMissingEncumbranceException.

Link copied to clipboard

Indicates that the same attachment has been added multiple times to a transaction.

Link copied to clipboard
Link copied to clipboard
class InvalidConstraintRejection(val txId: SecureHash, val contractClass: String, val reason: String) : TransactionVerificationException

A constraint attached to a state was invalid, e.g. due to size limitations.

Link copied to clipboard

A state requested a contract class via its TransactionState.contract field that didn't appear in any attached JAR at all. This usually implies the attachments were forgotten or a version mismatch.

Link copied to clipboard

Thrown when the network parameters with hash: missingNetworkParametersHash is not available at this node. Usually all the parameters that are in the resolution chain for transaction with txId should be fetched from peer via FetchParametersFlow or from network map.

Link copied to clipboard

An output state has a notary that doesn't match the transaction's notary field. It must!

Link copied to clipboard

Thrown when multiple attachments provide the same file when building the AttachmentsClassloader for a transaction.

Link copied to clipboard
class PackageOwnershipException(val txId: SecureHash, val attachmentHash: AttachmentId, val invalidClassName: String, val packageName: String) : TransactionVerificationException

Thrown to indicate that a contract attachment is not signed by the network-wide package owner. Please note that the txId will always be SecureHash.zeroHash because package ownership is an error with a particular attachment, and because attachment classloaders are reused this is independent of any particular transaction.

Link copied to clipboard

If a state is identified as belonging to a contract, either because the state class is defined as an inner class of the contract class or because the state class is annotated with BelongsToContract, then it must not be bundled in a TransactionState with a different contract.

Link copied to clipboard

If two or more states refer to another state (as their encumbrance), then the bi-directionality property cannot be satisfied.

Link copied to clipboard

If a state is encumbered (the TransactionState.encumbrance field is set) then its encumbrance must be used as an input to any transaction that uses it. In this way states can be tied together in chains, thus composing logic. Note that encumbrances aren't fully supported by all aspects of the platform at this time so if you use them, you may find transactions created by the platform don't always respect the encumbrance rule.

If the network parameters associated with an input or reference state in a transaction are more recent than the network parameters of the new transaction itself.

An encumbered state should also be referenced as the encumbrance of another state in order to satisfy the bi-directionality property (a full cycle should be present).

All encumbered states should be assigned to the same notary. This is due to the fact that multi-notary transactions are not supported and thus two encumbered states with different notaries cannot be consumed in the same transaction.

Link copied to clipboard

Thrown during classloading upon encountering an untrusted attachment (eg. not in the TRUSTED_UPLOADERS list)

Properties

Link copied to clipboard
open override val cause: Throwable?
Link copied to clipboard
open override val message: String?
Link copied to clipboard

the ID backing getErrorId. If null it will be set dynamically by the flow framework when the exception is handled. This ID is propagated to counterparty flows, even when the FlowException is downgraded to an UnexpectedFlowEndException. This is so the error conditions may be correlated later on.

Link copied to clipboard
Link copied to clipboard
open override val originalMessage: String?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

the Merkle root hash (identifier) of the transaction that failed verification.

Functions

Link copied to clipboard
open override fun addSuppressed(suppressed: Array<Throwable>)
Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
Link copied to clipboard
open fun getErrorId(): Long?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun setCause(cause: Throwable?)
Link copied to clipboard
open override fun setMessage(message: String?)
Link copied to clipboard