corda / net.corda.core.contracts / ContractState

ContractState

interface ContractState

A contract state (or just "state") contains opaque data used by a contract program. It can be thought of as a disk file that the program can use to persist data across transactions. States are immutable: once created they are never updated, instead, any changes must generate a new successor state. States can be updated (consumed) only once: the notary is responsible for ensuring there is no "double spending" by only signing a transaction if the input states are all free.

Properties

participants

A participant is any party that should be notified when the state is created or consumed.

abstract val participants: List<AbstractParty>

Extension Functions

hash

Returns the SHA-256 hash of the serialised contents of this state (not cached!)

fun ContractState.hash(): SecureHash

Returns the hash of the serialised contents of this state (not cached!)

fun ContractState.hash(algorithm: String): SecureHash

Inheritors

FungibleState

Interface to represent things which are fungible, this means that there is an expectation that these things can be split and merged. That's the only assumption made by this interface.

interface FungibleState<T : Any> : ContractState

LinearState

A state that evolves by superseding itself, all of which share the common "linearId".

interface LinearState : ContractState

OwnableState

A contract state that can have a single owner.

interface OwnableState : ContractState

QueryableState

A contract state that may be mapped to database schemas configured for this node to support querying for, or filtering of, states.

interface QueryableState : ContractState

SchedulableState

interface SchedulableState : ContractState