Add some TODOs

This commit is contained in:
Mike Hearn 2015-11-09 17:32:16 +00:00
parent b8c7f949f4
commit 4b9536af04
3 changed files with 10 additions and 2 deletions

View File

@ -7,6 +7,11 @@ import java.time.Instant
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// Cash // Cash
//
// Open issues:
// - Cannot do currency exchanges this way, as the contract insists that there be a single currency involved!
// - Nothing ensures cash states are not created out of thin air.
// - Complex logic to do grouping: can it be generalised out into platform code?
// Just a fake program identifier for now. In a real system it could be, for instance, the hash of the program bytecode. // Just a fake program identifier for now. In a real system it could be, for instance, the hash of the program bytecode.
val CASH_PROGRAM_ID = SecureHash.sha256("cash") val CASH_PROGRAM_ID = SecureHash.sha256("cash")

View File

@ -1,7 +1,9 @@
package core package core
// TODO: Implement transaction processing logic first pass (selection of contract types to run). Ensure that outputs are all accounted for.
//
// TODO: Make a decision on basic timestamping approach (use external TSAs? use fake TSA?) // TODO: Make a decision on basic timestamping approach (use external TSAs? use fake TSA?)
// TODO: Think about how to expose time to the contract
// TODO: Pick a serialisation solution for the prototype (kryo?) // TODO: Pick a serialisation solution for the prototype (kryo?)
// TODO: Store transactions to a database, design some conflict detection and rollback // TODO: Store transactions to a database, design some conflict detection and rollback
// TODO: Implement a basic UI that shows contracts and very basic network layer (with chat?) // TODO: Implement a basic UI that shows contracts and very basic network layer (with chat?)

View File

@ -94,6 +94,7 @@ interface Contract {
/** Must throw an exception if there's a problem that should prevent state transition. */ /** Must throw an exception if there's a problem that should prevent state transition. */
fun verify(inStates: List<ContractState>, outStates: List<ContractState>, args: List<VerifiedSigned<Command>>, time: Instant) fun verify(inStates: List<ContractState>, outStates: List<ContractState>, args: List<VerifiedSigned<Command>>, time: Instant)
// TODO: This should probably be a hash of a document, rather than a URL to it.
/** Unparsed reference to the natural language contract that this code is supposed to express (usually a URL). */ /** Unparsed reference to the natural language contract that this code is supposed to express (usually a URL). */
val legalContractReference: String val legalContractReference: String
} }