ContractState - corda

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`