|
| 1 | +Topic: High-level machine-assisted multi-party smart contract negotiation framework |
| 2 | +=================================================================================== |
| 3 | + |
| 4 | +What is the ideal high-level language for a smart contract? The |
| 5 | +high-level source language used to specify a contract needs to be both |
| 6 | +readable to the human beings involved in specifying it, and to machine |
| 7 | +tools which verify its correctness or illuminate edge cases. In the |
| 8 | +ideal language a typical smart contract is concisely specified, |
| 9 | +correct, and easy to understand with minimal training, with features |
| 10 | +reflecting the fact that multiple stakeholders are involved in the |
| 11 | +creation of any given smart contract. |
| 12 | + |
| 13 | +This is a much higher level than what is typically thought of as |
| 14 | +"script" in bitcoin-like blockchains or what ethereum calls "smart |
| 15 | +contracts." What is being specified can be a state machine for |
| 16 | +determining ownership of tokens or collateral, for which state |
| 17 | +transitions involve interactive signing rounds and/or confirmation of |
| 18 | +a transaction on the network. Or, perhaps, what is specified is |
| 19 | +constraints on the set of allowable state machines, and the actual |
| 20 | +state machine is materialized as a compilation step. This would |
| 21 | +reflect the fact that multiple parties are involved and the final |
| 22 | +state machine must conjunctively satisfy each of the parties' |
| 23 | +necessary conditions, the specification of which is under their own |
| 24 | +control. |
| 25 | + |
| 26 | +Regardless of the form of the language, it must be possible to make |
| 27 | +and/or verify assertions about the behavior of the resulting smart |
| 28 | +contract protocol, and it must be possible to deterministically |
| 29 | +compile program actors / daemons which satisfy each role of the |
| 30 | +protocol with proofs of correctness. Ideally this compilation step |
| 31 | +should make use of generic protocol runners such that specialized code |
| 32 | +need not be written on a per-contract basis. |
| 33 | + |
| 34 | +The output of a compilation step from this high-level source language |
| 35 | +is a [portable protocol |
| 36 | +specification](smart-contract-specification.md) which provably |
| 37 | +satisfies each participant's constraints or requirements. |
| 38 | + |
| 39 | +_Originally from https://github.com/BlockchainCommons/ResearchAgenda/blob/master/topics/smart-contract-negotiation.md by maaku._ |
0 commit comments