corda / net.corda.core.contracts / FungibleState


interface FungibleState<T : Any> : ContractState

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.

This interface has been defined in addition to FungibleAsset to provide some additional flexibility which FungibleAsset lacks, in particular:

The expectation is that this interface should be combined with the other core state interfaces such as OwnableState and others created at the application layer.


T - a type that represents the fungible thing in question. This should describe the basic type of the asset (GBP, USD, oil, shares in company , etc.) and any additional metadata (issuer, grade, class, etc.). An upper-bound is not specified for T to ensure flexibility. Typically, a class would be provided that implements TokenizableAssetInfo.



Amount represents a positive quantity of some token which can be cash, tokens, stock, agreements, or generally anything else that's quantifiable with integer quantities. See Amount for more details.

abstract val amount: Amount<T>

Extension Functions


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



Interface for contract states representing assets which are fungible, countable and issued by a specific party. States contain assets which are equivalent (such as cash of the same currency), so records of their existence can be merged or split as needed where the issuer is the same. For instance, dollars issued by the Fed are fungible and countable (in cents), barrels of West Texas crude are fungible and countable (oil from two small containers can be poured into one large container), shares of the same class in a specific company are fungible and countable, and so on.

interface FungibleAsset<T : Any> : FungibleState<Issued<T>>, OwnableState