Re: Bitcoin scripting language extensions, collaboration requested
Mark Friedenbach <[email protected]> Fri, 31 Jan 2014 11:42:02 -0800
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Organization | Monetize.io Inc. |
| Message-ID | <[email protected]> |
Thanks Robert, I'll take a look at Enchilada! Mark On 01/29/2014 12:12 AM, Robbert van Dalen wrote: > > > Hi, > > > I’ve developed (but stopped maintaining) the Enchilada programming > <http://www.enchiladacode.nl> language which more or less covers > requirements b) c) and d). > Enchilada is (dynamically) mono-typed and homoiconic: evaluations and > code are also data. > > Proving things in Enchilada should - to some extend - be possible, > because of: > > 1) pure (rule) rewriting semantics > 2) every operator is a pure and total function > > I’m not suggesting that Enchilada is a perfect fit, but I do think some > of Enchilada’s rationale/design decisions may be of interest to you. > > Cheers, > Robbert. > > On 29 Jan 2014, at 00:34, Mark Friedenbach <[email protected] > <mailto:[email protected]>> wrote: > > Hi, > > My name is Mark Friedenbach and I am a bitcoin-core developer [1]. You > probably know Bitcoin as a peer-to-peer protocol for the digital > money. What you may not know is that Bitcoin uses a simple, > Forth-derived but crippled concatenative language for encoding smart > contracts representing the terms and conditions for transferring > ownership of digital goods. > > I'm part of a small volunteer team that is looking at ways we can > extend the Bitcoin protocol so as to be able to perform a broader > range of financial services. For example, a more expressive scripting > language could enable attaching conditionals / "covenants" to assets > which stay with them even as they transfer owners, e.g. a restricted > buy-back option for an IOU certificate, which lets the debtor pay off > the loan without requiring permission of the owner of the debt or > impacting his/her rights in any other way. This is not currently > possible in Bitcoin. > > We would like to prototype a replacement contract scripting language > for Bitcoin derived from Joy, or any one of the other purely > functional concatenative languages I see discussed in this list's > archives. This is a chance to help secure and extend the capabilities > of a $10 billion economy, and to make an expressive concatenative > language which will be used by the financial industry for decades to come. > > There are also some interesting requirements that we must place on > such a language: > > a. The language must be strongly typed with a decidable type system > capable of constructing proofs of nontrivial properties. Examples > beyond ordinary type safety verification might include: proving that > the scripts requirements can be met solely with knowledge of a set of > signature-generating private keys, or proving the opposite (that a > script is unspendable); proving that a script has a constraint > attached (e.g. cannot be spent before block height N, or simple > restricted buy-back capability) which can then be pattern matched > against a whitelist of acceptable constraints. > > b. The script must be simple, as thousands of nodes world-wide running > multiple implementations will need to reach global consensus over not > just the outcome of a script, but also some aspects of the execution > (e.g. an instruction counter). Consensus failures whether due to bugs > or faulty designs can lead to unsecured payment networks and possible > losses in the millions of dollars or more. Interpreter escape would be > absolutely catastrophic. So simple, minimal, but expressive > architectures with simple fail-safe implementations are to be > preferred over complex but user-friendly (RISC is better than CISC). > > c. The language must support the various cryptographic primitives > necessary for performing core bitcoin functions. Mostly this just > means adding a handful of builtin words for performing strong > cryptographic hashes and elliptic curve signature verification, but > there are some requirements on the language design as well, chiefly in > making decisions about how the stack is represented for hash > operations and in supporting authenticated data structures as > primitive types for external state. > > d. Merkle structured compiled form [2]. A script containing quoted > forms may be considered a hierarchical structure, and Merkle > compression allows us to reduce such a script to a single root hash > value (to be placed in the output of a bitcoin transaction) or to > "prune" execution pathways which are not taken when the script is > instantiated at spend time, either to compress a large script or to > provide privacy over the data in branches not taken. > > The requirements (a) and (b) are probably the most interesting for > this list. I must admit that type theory is outside of my area of > expertise. I know only enough to know that we need it, but not enough > to design such a system myself. I imagine that it must also be an > interesting challenge to design a minimalistic language that is > trivial to implement, but still capable of generating expressive, > compact, readable programs. > > If anyone here is interested in collaborating with us, or even just > sharing their experience in comments, we'd appreciate it very much! > > Happy hacking, > Mark Friedenbach > > [1]: Bitcoin is a peer-to-peer currency and payment protocol: > http://bitcoin.org/ > > [2]: By analogy to the Merkle hash-tree: > http://en.wikipedia.org/wiki/Merkle_tree >> >> > > ------------------------------------ Yahoo Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/concatenative/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/concatenative/join (Yahoo! ID required) <*> To change settings via email: [email protected] [email protected] <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo Groups is subject to: http://info.yahoo.com/legal/us/yahoo/utos/terms/