corda / net.corda.finance.contracts.asset / Obligation / State

State

data class State<P : Any> : FungibleAsset<Terms<P>>, NettableState<State<P>, MultilateralNetState<P>>

A state representing the obligation of one party (obligor) to deliver a specified number of units of an underlying asset (described as token.acceptableIssuedProducts) to the beneficiary no later than the specified time.

Parameters

P - the product the obligation is for payment of.

Constructors

<init>

State(lifecycle: Lifecycle = Lifecycle.NORMAL, obligor: AbstractParty, template: Terms<P>, quantity: Long, beneficiary: AbstractParty)

A state representing the obligation of one party (obligor) to deliver a specified number of units of an underlying asset (described as token.acceptableIssuedProducts) to the beneficiary no later than the specified time.

Properties

amount

val amount: Amount<Issued<Terms<P>>>

Amount represents a positive quantity of some issued product which can be cash, tokens, assets, or generally anything else that's quantifiable with integer quantities. See Issued and Amount for more details.

beneficiary

val beneficiary: AbstractParty

The public key of the entity the contract pays to

bilateralNetState

val bilateralNetState: BilateralNetState<P>

Returns an object used to determine if two states can be subject to close-out netting. If two states return equal objects, they can be close out netted together.

dueBefore

val dueBefore: Instant

exitKeys

val exitKeys: Collection<PublicKey>

There must be an ExitCommand signed by these keys to destroy the amount. While all states require their owner to sign, some (i.e. cash) also require the issuer.

lifecycle

var lifecycle: Lifecycle

multilateralNetState

val multilateralNetState: MultilateralNetState<P>

Returns an object used to determine if two states can be subject to close-out netting. If two states return equal objects, they can be close out netted together.

obligor

val obligor: AbstractParty

Where the debt originates from (obligor)

owner

val owner: AbstractParty

There must be a MoveCommand signed by this key to claim the amount.

participants

val participants: List<AbstractParty>

quantity

val quantity: Long

template

val template: Terms<P>

Functions

net

fun net(other: State<P>): State<P>

Perform bilateral netting of this state with another state. The two states must be compatible (as in bilateralNetState objects are equal).

toString

fun toString(): String

withNewOwner

fun withNewOwner(newOwner: AbstractParty): CommandAndState

Copies the underlying data structure, replacing the owner field with this new value and leaving the rest alone.

withNewOwnerAndAmount

fun withNewOwnerAndAmount(newAmount: Amount<Issued<Terms<P>>>, newOwner: AbstractParty): State<P>

Copies the underlying data structure, replacing the amount and owner fields with the new values and leaving the rest (exitKeys) alone.

Extension Functions

at

infix fun <T : Any> State<T>.at(dueBefore: Instant): State<T>

between

infix fun <T : Any> State<T>.between(parties: Pair<AbstractParty, AbstractParty>): State<T>

issued by

infix fun <T : Any> State<T>.issued by(party: AbstractParty): State<T>

issuedBy

fun <T : Any> State<T>.issuedBy(party: AnonymousParty): State<T>

owned by

infix fun <T : Any> State<T>.owned by(owner: AbstractParty): State<T>

ownedBy

fun <T : Any> State<T>.ownedBy(owner: AbstractParty): State<T>