Obligation

An obligation contract commits the obligor to delivering a specified amount of a fungible asset (for example the Cash contract) at a specified future point in time. Settlement transactions may split and merge contracts across multiple input and output states. The goal of this design is to handle amounts owed, and these contracts are expected to be netted/merged, with settlement only for any remainder amount.

Parameters

P

the product the obligation is for payment of.

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
interface Commands : CommandData
Link copied to clipboard
object Companion
Link copied to clipboard

Represents where in its lifecycle a contract state is, which in turn controls the commands that can be applied to the state. Most states will not leave the NORMAL lifecycle. Note that settled (as an end lifecycle) is represented by absence of the state on transaction output.

Link copied to clipboard
data class State<P : Any>(var lifecycle: Obligation.Lifecycle = Lifecycle.NORMAL, val obligor: AbstractParty, val template: Obligation.Terms<P>, val quantity: Long, val beneficiary: AbstractParty) : FungibleAsset<Obligation.Terms<P>> , NettableState<Obligation.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.

Link copied to clipboard
data class Terms<P : Any>(val acceptableContracts: NonEmptySet<SecureHash>, val acceptableIssuedProducts: NonEmptySet<Issued<P>>, val dueBefore: Instant, val timeTolerance: Duration = 30.seconds)

Subset of state, containing the elements specified when issuing a new settlement contract.

Functions

Link copied to clipboard
open override fun verify(tx: LedgerTransaction)

Takes an object that represents a state transition, and ensures the inputs/outputs/commands make sense. Must throw an exception if there's a problem that should prevent state transition. Takes a single object rather than an argument so that additional data can be added without breaking binary compatibility with existing contract code.