Title: Simplicity new language for blockchains Post by: matthewcampbell on October 31, 2017, 04:53:07 AM Anyone read the Simplicity paper from block stream. https://blockstream.com/simplicity.pdf . Its rather interesting, it appears they are making a new language for smart contracts. This one seems more formally proved with Coq, hopefully it won't have as many security issues as solidity
Title: Re: Simplicity new language for blockchains Post by: buwaytress on October 31, 2017, 08:29:31 AM Thanks for sharing, first time I've come across the term "Bitcoin as programmable money". I've got a question (or observation?), with early caveat that am as close as it gets to being a Bitcoin user with zero-knowledge on programming/coding language.
1. So far, improvements and upgrades to the network are done through script addons, as an alternative or workaround to an overhaul of the coding structure - since that would require a hard fork (correct?). If Simplicity is a low-level language, would it also interact with Bitcoin the same way? The paper says "possibly in Bitcoin itself" but does not seem to mention how or why not. 2. Will it ever be possible to do an overhaul of the network's main script or will it be the last possible solution, since in my mind doing so without forking would not be possible? Title: Re: Simplicity new language for blockchains Post by: matthewcampbell on October 31, 2017, 09:23:52 AM Yeah they are quite vague about how this would actually work in practice. I suspect its going to require a hard fork to actually make this happen. So it probably makes more sense to do more upgrades to the existing script
Title: Re: Simplicity new language for blockchains Post by: HeRetiK on October 31, 2017, 11:09:48 PM Thank you for sharing! I still need to read the paper in detail, but at a first glance this looks very exiting, should it come to fruition.
Simplicity's restrictiveness will make writing scripts probably hard to learn, but even harder to fuck up -- in other words, exactly what you want from a scripting language that is supposed to handle billions worth of unmutable transactions. Statelessness without recursions and higher-order functions -- that's a solid foundation. More solid, than... ahem... Solidity. Excuse the pun. From a language design perspective that's probably as secure as it can get. I just hope that Simplicity doesn't turn out to be too restrictive for practical use. However given the nature of smart contracts, I'm afraid the kind of restrictiveness that Simplicity offers is the only way to go. Lest we get DAO debacles and parity hacks all over the place. [...] 2. Will it ever be possible to do an overhaul of the network's main script or will it be the last possible solution, since in my mind doing so without forking would not be possible? I only read a bit since it's a bit difficult for me, but i wonder how fast/secure secure is it compared with current system/technology we use and wonder if it's need hard fork if developers think it's good solution/upgrade for bitcoin? Yeah they are quite vague about how this would actually work in practice. I suspect its going to require a hard fork to actually make this happen. So it probably makes more sense to do more upgrades to the existing script SegWit introduced script versioning so maybe they will be able to deploy Simplicity using that -- which means without a hardfork. But I guess the jury is still out on that one, otherwise they would have explicitely mentioned that in the whitepaper. Title: Re: Simplicity new language for blockchains Post by: Polygora on October 31, 2017, 11:41:17 PM The statement about programs not having access to any outside information is interesting. Surely it means you can't make timed contracts?...
Why can't Charles Moore take his big brain and make a FORTH-like VM for blockchain? Title: Re: Simplicity new language for blockchains Post by: gmaxwell on November 01, 2017, 12:51:34 AM SegWit introduced script versioning so maybe they will be able to deploy Simplicity using that -- which means without a hardfork. But I guess the jury is still out on that one, otherwise they would have explicitely mentioned that in the whitepaper. ::sigh:: People think weird stuff. The paper does not talk about Bitcoin integration in any detail, as it is massively premature for that. But adding a new script system is a softfork, it's always been a softfork. It's pretty much the most softforky thing you can imagine, and moreover it's already been done before! P2SH replaced Script with a nested copy of Script.. In that case the nested thing was the same as the outer thing, but there was no technical reason it couldn't have been different. Title: Re: Simplicity new language for blockchains Post by: HeRetiK on November 01, 2017, 01:11:23 AM SegWit introduced script versioning so maybe they will be able to deploy Simplicity using that -- which means without a hardfork. But I guess the jury is still out on that one, otherwise they would have explicitely mentioned that in the whitepaper. ::sigh:: People think weird stuff. The paper does not talk about Bitcoin integration in any detail, as it is massively premature for that. [...] Apart from Simplicity being still in the conceptional phase -- Is it really that off-target to presume that script versioning could be helpful in deploying Simplicity without the need for a hardfork -- ie. requiring only a softfork instead? Isn't that one of the possible use cases of script versioning? Title: Re: Simplicity new language for blockchains Post by: Ucy on November 03, 2017, 03:55:58 PM Does this mean Bitcoin will be having Smart Contract soon? That would be awesome, friends!
Bitcoin is too big and important to be without Smart Contract Hope this works as planned. Currently on WhitePaper. Title: Re: Simplicity new language for blockchains Post by: pebwindkraft on November 04, 2017, 02:30:55 PM The statement about programs not having access to any outside information is interesting. Surely it means you can't make timed contracts?... Why can't Charles Moore take his big brain and make a FORTH-like VM for blockchain? the problem is merely, how to integrate data from real live (like stock exchange values) into the contract. When it comes to timed contracts, we already have this with CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY. See my posting here: https://bitcointalk.org/index.php?topic=2204938.msg23664225#msg23664225 Oh, and the whole stack engine is already FORTH like. Have a look at it here: https://en.bitcoin.it/wiki/Script Title: Re: Simplicity new language for blockchains Post by: Polygora on November 04, 2017, 05:32:46 PM Oh, and the whole stack engine is already FORTH like. Have a look at it here: https://en.bitcoin.it/wiki/Script I want to be able to define my own words, in the blockchain's VM. Forth is run in an operating system after all, why can't it be one on a blockchain?Title: Re: Simplicity new language for blockchains Post by: haltingprobability on November 05, 2017, 03:06:52 AM Oh, and the whole stack engine is already FORTH like. Have a look at it here: https://en.bitcoin.it/wiki/Script I want to be able to define my own words, in the blockchain's VM. Forth is run in an operating system after all, why can't it be one on a blockchain?I think you're looking for something more like Ethereum's Solidity (https://en.wikipedia.org/wiki/Solidity). While Bitcoin does use a miniature stack-based language, its only purpose is to assess the validity of the transaction. From the Wiki, "A transaction is valid if nothing in the combined script triggers failure and the top stack item is true (non-zero)." Pay-to-script-hash (https://en.bitcoin.it/wiki/Pay_to_script_hash) allows a fairly large script to be created but the transaction fees for evaluating the script may be very high. This is quite different from Ethereum, where scripting is comparatively very cheap. But even the largest transaction script could not begin to handle OS-style programming. Title: Re: Simplicity new language for blockchains Post by: vv181 on November 05, 2017, 07:01:15 AM I still didn't have time to read a full paper but so only read a little bit. "Simplicity is a typed, combinator-based, functional language without loops and recursion, designed to be used for crypto-currencies and blockchain applications", first that comes up in my mind is does the flexibility in the language reduced? and how about its security, sometimes efficiency is often sacrificed for security purposes.
Title: Re: Simplicity new language for blockchains Post by: Polygora on November 05, 2017, 04:34:42 PM I think you're looking for something more like Ethereum's Solidity (https://en.wikipedia.org/wiki/Solidity). While Bitcoin does use a miniature stack-based language, its only purpose is to assess the validity of the transaction. From the Wiki, "A transaction is valid if nothing in the combined script triggers failure and the top stack item is true (non-zero)." Pay-to-script-hash (https://en.bitcoin.it/wiki/Pay_to_script_hash) allows a fairly large script to be created but the transaction fees for evaluating the script may be very high. This is quite different from Ethereum, where scripting is comparatively very cheap. But even the largest transaction script could not begin to handle OS-style programming. That's what I mean. Bitcoin needs a VM layer like Ethereum, and a FORTH-like language that compiles to BVM (a hypothetical Bitcoin VM) bytecode.Title: Re: Simplicity new language for blockchains Post by: HeRetiK on November 05, 2017, 05:02:49 PM I still didn't have time to read a full paper but so only read a little bit. "Simplicity is a typed, combinator-based, functional language without loops and recursion, designed to be used for crypto-currencies and blockchain applications", first that comes up in my mind is does the flexibility in the language reduced? and how about its security, sometimes efficiency is often sacrificed for security purposes. Yes. Compared to turing-complete languages you are looking at improved security by reducing complexity which more or less translates to reduced flexibility and expressiveness. There's always a trade-off. That's what I mean. Bitcoin needs a VM layer like Ethereum, and a FORTH-like language that compiles to BVM (a hypothetical Bitcoin VM) bytecode. If I understood it correctly the VM layer would be the Bit Machine mentioned in the whitepaper, with Simplicity being the equivalent of bytecode. Title: Re: Simplicity new language for blockchains Post by: igotek on February 20, 2018, 11:01:53 PM any exchane for quark simplicity ?
|