News for hackers. Stuff that matters.
Re:Upgradeable smart contracts in Ethereum by Animats on Wednesday April 18, 2018 @04:40PM (#16870970)
Contracts with terms that can be changed retroactively by one party. What could possibly go wrong? The whole point of this smart contract stuff is supposed to eliminate the need for trusting a party.

The article has full details on how to create a contract changeable by one party, then hand waving about "writing a contract that uses tokens and voting mechanism to allow the community to decide whether to update or not." No details on how that's supposed to work. Who's "the community", anyway? The parties to the agreement are the ones involved.

A mechanism where all parties to a contract could agree to replace it with a new contract would be useful. That's a normal contract activity. You do that whenever you renew a lease.

The Etherium promoters want this because they botched the design. Smart contracts as byte coded programs are too error prone. The DAO debacle, and this latest demand for a "state change" because someone botched a big contract, indicate that. Smart contracts should have been in some declarative form like decision logic tables, not Turing-complete programs with race conditions.

Re:Upgradeable smart contracts in Ethereum by KMag on Wednesday April 18, 2018 @08:54PM (#16872559)
> not Turing-complete programs with race conditions.

I know it's common, but please stop calling reentrancy bugs "race conditions". Smart contracts don't observe concurrent modification of state by other contracts and aren't internally concurrent. Solidity and the EVM object model have way too much implicit behavior, which can lead to unexpected control flows, but these unexpected flows aren't the result of other threads coming in and mucking up state.

Calling a simple reentrancy bug or spookily unexpected control flow a race condition lets the Solidity and EVM designers off too easily. Concurrency with shared mutable state is always difficult, but Solidity makes even simple single-threaded reentrancy difficult to get right. (On a side note, I'm a big fan of Actors/shared-nothing concurrency and think raw threads are almost always the wrong abstraction to expose to application-level developers.)

I also totally agree that Turing completeness is overkill for 99% of use cases, leading to bugs in simple contracts and makes analysis very difficult. If you really need Turing completeness, you could still explicitly construct it within a sufficiently expressive declarative non-Turing complete execution model via externally triggering repeated contract invocation. (For instance, a Brainfuck interpreter that advances one program step per contract execution.) The ecosystem would be Turing complete without contracts being Turing complete.

Re:Upgradeable smart contracts in Ethereum by wan23 on Wednesday April 18, 2018 @05:37PM (#16871450)
Smart contracts are usually not meant to be actual contracts between parties so much as something more like financial applications. For example, a common type of smart contract implements a new token type by providing an API for distributing and transferring them. This is the kind of thing that could be useful if you could upgrade it, perhaps with input from token holders. That said, I totally agree with the idea of declarative smart contracts for things that are actually contracts.
Re:Upgradeable smart contracts in Ethereum by CryptoPunk on Wednesday April 18, 2018 @04:52PM (#16871072)
>>The article has full details on how to create a contract changeable by one party, then hand waving about "writing a contract that uses tokens and voting mechanism to allow the community to decide whether to update or not." No details on how that's supposed to work. Who's "the community", anyway?

The possibilities are endless. You could have pre-chosen adjucators that can upgrade a contract on majority vote. You could use a decentralized prediction market like Augur to trigger a contract upgrade if it deems that certain events occurred, etc.

Upgradability is just one component of many that will be needed to create a durable/secure smart contracting system. It's not a silver bullet.

>>The Etherium promoters want this because they botched the design.

Do you misspell Ethereum deliberately? I only ask because I've seen you comment multiple times about Ethereum with this misspelling, which comes across as very petty.

>>The DAO debacle, and this latest demand for a "state change" because someone botched a big contract, indicate that.

The latest state change request is overwhelmingly rejected by the community and will not happen.

The request is only possible at all because of the temporary state of Ethereum having several hard forks planned that a state change can be snuck into.

Once this phase of its life cycle is over, even requests for a state change will not happen.

>>Smart contracts should have been in some declarative form like decision logic tables

The point of using byte coded programs and a Turing Complete execution environment is to make features like the smart contract programming language totally configurable, rather tied to a single base implementation.

Re:Upgradeable smart contracts in Ethereum by tfha on Wednesday April 18, 2018 @10:08PM (#16872823)
The biggest advantage to a blockchain, in fact the only thing it does better than other systems, is immutability.

Lots of people don't seem to appreciate this.

Re:Upgradeable smart contracts in Ethereum by spookthesunset on Thursday April 19, 2018 @02:43AM (#16873832)
Seems like The DAO bailout prove that the blockchain is most certainly mutable...
Re:Upgradeable smart contracts in Ethereum by xorcist on Wednesday April 18, 2018 @05:06PM (#16871190)
> Smart contracts as byte coded programs are too error prone

That's perhaps a too strong statement. Bitcoin's smart contracts are byte coded programs too, and have had none of these problems. Perhaps partly because a lot of the instructions were pruned early on, and only those deemed absolutely necessary for the kind of contracts that made sense were kept.

Re:Upgradeable smart contracts in Ethereum by leetbulb on Wednesday April 18, 2018 @05:53PM (#16871564)
I don't think that's a fair comparison. Would you say that something turing complete is more error prone than something that isn't?
Re:Upgradeable smart contracts in Ethereum by xorcist on Thursday April 19, 2018 @03:31AM (#16874014)
Turing completeness isn't really an interesting aspect of the VM. Ethereum could probably remove the loop instruction without affecting any contracts of importance, but the DAO would have happened anyway.
Re:Upgradeable smart contracts in Ethereum by Animats on Friday April 20, 2018 @04:32AM (#16883110)
And because almost nobody ever used Bitcoin smart contracts.
Re:Upgradeable smart contracts in Ethereum by guelo on Wednesday April 18, 2018 @08:09PM (#16872366)
You could build a declarative contract language on top of Etherum's Turing-complete language.