Skip to content

Commit 089c682

Browse files
authored
Create smart-contract-negotiation.md
1 parent 1974594 commit 089c682

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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

Comments
 (0)