public static class CommercialPaper.State implements OwnableState, QueryableState
Constructor and Description |
---|
State(PartyAndReference issuance,
CompositeKey owner,
Amount<net.corda.core.contracts.Issued> faceValue,
java.time.Instant maturityDate) |
Modifier and Type | Method and Description |
---|---|
PartyAndReference |
component1() |
CompositeKey |
component2()
There must be a MoveCommand signed by this key to claim the amount
|
Amount<net.corda.core.contracts.Issued> |
component3() |
java.time.Instant |
component4() |
CommercialPaper.State |
copy(PartyAndReference issuance,
CompositeKey owner,
Amount<net.corda.core.contracts.Issued> faceValue,
java.time.Instant maturityDate) |
boolean |
equals(java.lang.Object p) |
PersistentState |
generateMappedObject(MappedSchema schema)
Object Relational Mapping support.
|
CommercialPaper |
getContract()
An instance of the contract class that will verify this state.
|
Amount<net.corda.core.contracts.Issued> |
getFaceValue() |
PartyAndReference |
getIssuance() |
java.time.Instant |
getMaturityDate() |
CompositeKey |
getOwner()
There must be a MoveCommand signed by this key to claim the amount
|
java.util.List<net.corda.core.crypto.CompositeKey> |
getParticipants()
A participant is any party that is able to consume this state in a valid transaction.
|
Issued<net.corda.contracts.CommercialPaper.Terms> |
getToken() |
int |
hashCode() |
java.lang.Iterable<net.corda.core.schemas.MappedSchema> |
supportedSchemas()
Object Relational Mapping support.
|
java.lang.String |
toString() |
NonExistentClass |
withFaceValue(Amount<net.corda.core.contracts.Issued> newFaceValue) |
NonExistentClass |
withIssuance(PartyAndReference newIssuance) |
NonExistentClass |
withMaturityDate(java.time.Instant newMaturityDate) |
kotlin.Pair<net.corda.contracts.CommercialPaper.Commands.Move,net.corda.contracts.CommercialPaper.State> |
withNewOwner(CompositeKey newOwner)
Copies the underlying data structure, replacing the owner field with this new value and leaving the rest alone
|
NonExistentClass |
withOwner(CompositeKey newOwner) |
getOwner, withNewOwner
generateMappedObject, supportedSchemas
getContract, getParticipants
public State(PartyAndReference issuance, CompositeKey owner, Amount<net.corda.core.contracts.Issued> faceValue, java.time.Instant maturityDate)
owner
- There must be a MoveCommand signed by this key to claim the amountpublic CommercialPaper getContract()
An instance of the contract class that will verify this state.
This field is not the final design, it's just a piece of temporary scaffolding. Once the contract sandbox is further along, this field will become a description of which attachments are acceptable for defining the contract.
Recall that an attachment is a zip file that can be referenced from any transaction. The contents of the attachments are merged together and cannot define any overlapping files, thus for any given transaction there is a miniature file system in which each file can be precisely mapped to the defining attachment.
Attachments may contain many things (data files, legal documents, etc) but mostly they contain JVM bytecode.
The class files inside define not only interface Contract
implementations but also the classes that define the states.
Within the rest of a transaction, user-providable components are referenced by name only.
This means that a smart contract in Corda does two things:
Define the data structures that compose the ledger (the states)
Define the rules for updating those structures
The first is merely a utility role ... in theory contract code could manually parse byte streams by hand. The second is vital to the integrity of the ledger. So this field needs to be able to express constraints like:
Only attachment 733c350f396a727655be1363c06635ba355036bd54a5ed6e594fd0b5d05f42f6 may be used with this state.
Any attachment signed by public key 2d1ce0e330c52b8055258d776c40 may be used with this state.
Attachments (1, 2, 3) may all be used with this state.
and so on. In this way it becomes possible for the business logic governing a state to be evolved, if the constraints are flexible enough.
Because contract classes often also define utilities that generate relevant transactions, and because attachments cannot know their own hashes, we will have to provide various utilities to assist with obtaining the right code constraints from within the contract code itself.
TODO: Implement the above description. See COR-226
interface Contract
public java.util.List<net.corda.core.crypto.CompositeKey> getParticipants()
A participant is any party that is able to consume this state in a valid transaction.
The list of participants is required for certain types of transactions. For example, when changing the notary
for this state (class TransactionType.NotaryChange
), every participant has to be involved and approve the transaction
so that they receive the updated state, and don't end up in a situation where they can no longer use a state
they possess, since someone consumed that state during the notary change process.
The participants list should normally be derived from the contents of the state. E.g. for Cash the participants list should just contain the owner.
class TransactionType.NotaryChange
,
Cashpublic Issued<net.corda.contracts.CommercialPaper.Terms> getToken()
public kotlin.Pair<net.corda.contracts.CommercialPaper.Commands.Move,net.corda.contracts.CommercialPaper.State> withNewOwner(CompositeKey newOwner)
Copies the underlying data structure, replacing the owner field with this new value and leaving the rest alone
public java.lang.String toString()
public NonExistentClass withOwner(CompositeKey newOwner)
public NonExistentClass withIssuance(PartyAndReference newIssuance)
public NonExistentClass withFaceValue(Amount<net.corda.core.contracts.Issued> newFaceValue)
public NonExistentClass withMaturityDate(java.time.Instant newMaturityDate)
public java.lang.Iterable<net.corda.core.schemas.MappedSchema> supportedSchemas()
Object Relational Mapping support.
public PersistentState generateMappedObject(MappedSchema schema)
Object Relational Mapping support.
public PartyAndReference getIssuance()
public CompositeKey getOwner()
There must be a MoveCommand signed by this key to claim the amount
public Amount<net.corda.core.contracts.Issued> getFaceValue()
public java.time.Instant getMaturityDate()
public PartyAndReference component1()
public CompositeKey component2()
There must be a MoveCommand signed by this key to claim the amount
public Amount<net.corda.core.contracts.Issued> component3()
public java.time.Instant component4()
public CommercialPaper.State copy(PartyAndReference issuance, CompositeKey owner, Amount<net.corda.core.contracts.Issued> faceValue, java.time.Instant maturityDate)
public int hashCode()
public boolean equals(java.lang.Object p)