News for hackers. Stuff that matters.
Re:What does $100 Ether mean? by RichardHeart on Friday May 05, 2017 @12:32PM (#14274694)
I think it means a lot of people are going to lose a lot more money than $1 Ether would have meant.

1. The halting problem states you can't predict what a turing complete program will do, until you run it. This means to some degree, that you can't predict what your "smart" contract will do, until it does it. Thus turing completeness causes security to be far, far harder than non turing completeness. This is how you lose the millions of dollars as the DAO did after it passed audits.

2. Competing implementations of consensus code in different languages greatly increases breakdown of consensus. (more millions have been lost over this, and it created a fork at about 10 percent the value of the old chain.)

3. You can buy things with bitcoin. What can you buy with ETH? If you can't buy anything with a currency, it's not a currency.

Thus, human resolved chain rollbacks? Check. Failed consensus between implementations? Check. Passed audit yet totally failed smart contracts? Check. No place to spend them? Check. New tokens given out all the time forever? Check.

Every dollar that goes into bad ideas is taken directly from the good ideas. Smart contracts can never be smart until oracles are solved. Oracles aren't solved. ETH has all the technical odds and history stacked against it, however some how, the people that bought them aren't dumping.

There's a saying that the market can stay irrational longer than you can stay solvent.

Re:What does $100 Ether mean? by benchaney on Friday May 05, 2017 @12:48PM (#14274824)
> The halting problem states you can't predict what a turing complete program will do, until you run it. This means to some degree, that you can't predict what your "smart" contract will do, until it does it. Thus turing completeness causes security to be far, far harder than non turing completeness. This is how you lose the millions of dollars as the DAO did after it passed audits.

The Halting Problem states that you can't create a general purpose algorithm for predicting what an arbitrary program in a Turing Complete language will do. This is very different.

Re:What does $100 Ether mean? by RichardHeart on Friday May 05, 2017 @01:33PM (#14275210)
"The naïve Ethereum people think they've cleverly sidestepped this with the notion of "gas" but actually all they're doing is cheating with this messy kludge: because simply saying "we'll arbitrarily make the program stop running at some point" does not make "smart contracts" written in Ethereum "decidable" - as we've seen, these contracts can still blow up / go wrong in other ways before they run out of gas." https://www.reddit.com/r/btc/comments/4p0gq3/why_turingcompl...
Re:What does $100 Ether mean? by benchaney on Friday May 05, 2017 @02:18PM (#14275604)
This comment is simply incorrect. The gas limits do make smart contracts decidable. It is a mathematical fact. Bringing the idea that things have gone wrong with Ethereum as proof to the contrary is completely absurd. Things have also gone wrong with Bitcoin [1]. Is it undecidable now too?

[1] https://en.wikipedia.org/wiki/Mt._Gox

Re:What does $100 Ether mean? by makomk on Friday May 05, 2017 @03:52PM (#14276334)
Indeed. All you have to do is test every possible input, in much the same way that any computation on a real computer is technically decidable because the limited amount of RAM means that it can only have a finite number of states. Neither of those limits actually makes solving the problem feasible in practice.
Re:What does $100 Ether mean? by benchaney on Friday May 05, 2017 @05:14PM (#14276893)
>Neither of those limits actually makes solving the problem feasible in practice.

That's the point. Theoretical limitations has no bearing on solving the practical problem. That is why RichardHeart's original point [1] is wrong.

[1] The halting problem states you can't predict what a turing complete program will do, until you run it. This means to some degree, that you can't predict what your "smart" contract will do, until it does it. Thus turing completeness causes security to be far, far harder than non turing completeness. This is how you lose the millions of dollars as the DAO did after it passed audits.

Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @06:55PM (#14277413)
Pretty sure the parent was saying the opposite. Testing every possible input is infeasible, since the number of possible inputs (and number of possible states) is HUGE.
Re:What does $100 Ether mean? by benchaney on Sunday May 07, 2017 @02:00AM (#14284100)
That is not the opposite of what I said. That is a reason why what I said is true.
Re:What does $100 Ether mean? by jude- on Sunday May 07, 2017 @09:11PM (#14288606)
Parent said "Neither of those limits actually makes solving the problem feasible in practice." This is correct, since the input space is too huge to feasibly explore. Yes, it is technically correct that there are a finite number of states that your laptop can be in. No, it does not mean that I can practically enumerate all possible states my code can be in.

Formal verification will be necessary in practice. This is not an ideal outcome either, since (1) you have to formally specify the problem you're trying to solve and (2) the proof that the code meets the specification can easily be bigger than the program, by many orders of magnitude. Even this does not guarantee that bugs won't happen, since there's no guarantee that your specification accurately describes the problem you're solving.

Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @02:51PM (#14275888)
> This comment is simply incorrect. The gas limits do make smart contracts decidable. It is a mathematical fact.

This line of reasoning does not help me write better code, and does not address the parent's concerns. Using this argument, I can say that every single program I will ever run in my lifetime is also decidable, since eventually the computer I'm using to run it will stop working. This of course does not mean that I will write bug-free code, nor does it mean that I will write code that is feasible to prove correct.

What I want is a decidable programming language where it is always feasible to reason about the smart contract's halting states for arbitrary input. Bitcoin and its derivatives let me do this. Ethereum does not.

Re:What does $100 Ether mean? by nicksdjohnson on Friday May 05, 2017 @03:02PM (#14275982)
Sure it does - the marvelous thing about a turing-complete virtual machine is that you can write a decidable language that compiles to EVM bytecode.
Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @04:03PM (#14276419)
Sorry, I didn't qualify "always feasible" well enough. What I meant was, I want it to be feasible to reason about the halting states of every single smart-contract that will ever interact with my code. Not just the ones that I write, but also the ones that are reachable from my smart contract's call graph, and the ones that call into my smart contract.

If I can do this, then I can feasibly reason about how my code will react to other peoples' inputs (e.g. I can prove the absence of DAO-like re-entrance bugs). The fact that Ethereum allows smart contracts to be written in undecidable languages means that this is not feasible in practice.

Re:What does $100 Ether mean? by nicksdjohnson on Friday May 05, 2017 @05:04PM (#14276845)
I don't think I follow - why would you need to reason about your callers' internal states in order to prove properties about your own contract?
Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @05:47PM (#14277069)
Because in practice, I'm trying to reason about the consequences of submitting a given transaction. A transaction can invoke many smart contracts in addition to mine. It's not enough for my code to be correct; every piece of code the transaction causes to run has to be correct as well.
Re:What does $100 Ether mean? by nicksdjohnson on Saturday May 06, 2017 @03:50AM (#14279212)
If you want to know what a given transaction will do, you can simply run it locally; no need for formal analysis. Formal analysis is useful for proving properties about your program like "the total balance will always equal the sum of the accounts" and "transfers never increase the sender's balance".
Re:What does $100 Ether mean? by jude- on Saturday May 06, 2017 @05:29PM (#14282366)
I want to know what any possible transaction can do. See my sibling comments.
Re:What does $100 Ether mean? by nicksdjohnson on Sunday May 07, 2017 @03:40AM (#14284346)
But you can reason about what any possible transaction can do by reasoning about all possible inputs to your code; you don't need to know anything about how other contracts were written, since even if they are formally provable, they could send you literally any input.

Edit: Rereading your earlier comment, I understand now - you're talking about other contracts your code calls, not vice-versa. In that case, I'd point out that you're totally free to either write those contracts yourself if they're not already provably secure, or write your own code such that it's formally proved to work regardless of what those contracts do.

Re:What does $100 Ether mean? by jude- on Sunday May 07, 2017 @10:10PM (#14288801)
> But you can reason about what any possible transaction can do by reasoning about all possible inputs to your code; you don't need to know anything about how other contracts were written, since even if they are formally provable, they could send you literally any input.

I also have to reason about the transactions that invoke other smart contracts that, through one or more subsequent calls, will call into mine. These transactions are inputs to my smart contract as well. Recall that the DAO was hacked by an "attacker" contract that called into it, for example.

> I'd point out that you're totally free to either write those contracts yourself if they're not already provably secure, or write your own code such that it's formally proved to work regardless of what those contracts do.

If formal specification and verification were practical, we'd be doing it in every programming domain. Normally, few people bother since (1) it takes a lot of work, and (2) the consequences of bugs are small in most domains, especially compared to the consequences of not shipping code on time. If you have not tried to formally specify and verify the correctness of a non-trivial program before, I encourage you to try it before recommending that strategy (especially if that recommendation includes telling developers to rewrite other peoples' code).

Since smart contracts have other peoples' money attached to them, the developers' first priority must be user safety. Ethereum does not appear to take this seriously, since (1) its default programming languages are not designed to be amenable to formal verification, and (2) smart contracts are allowed to call into one another.

I would much rather program on a blockchain that kept smart contracts completely isolated from one another, and required me to submit a machine-checked proof that the user's money (1) will be sent to an address of the user's choice automatically no more than X blocks after the deposit, and (2) cannot leave the smart contract at an earlier time without a one-time-use signature from the user. If a smart contract cannot be proven to do both of these things, then the blockchain should prevent it from running.

Re:What does $100 Ether mean? by MarkPNeyer on Friday May 05, 2017 @01:26PM (#14275152)
To elaborate:

You can look at some programs with your mind, and tell quite clearly what they'll do.

You can't write a _program_ that will look at other programs, and always give a correct answer.

Re:What does $100 Ether mean? by ellius on Friday May 05, 2017 @12:44PM (#14274797)
"3. You can buy things with bitcoin. What can you buy with ETH? If you can't buy anything with a currency, it's not a currency."

This is the one that really sticks out to me. What do people need any of this for? I think they did a fine job pitching the value of smart contract / blockchain technology. But why do I, or a bank, or society need anything beyond those?

The tech may be useful, but what 99% of these discussions come down to is whether you think a decentralized currency and disintermediated payments system have value. I don't really see the need for the vast majority of society to have the former in the long run, and I think the latter is actively harmful and impractical. Like you pointed out, you're inevitably going to have these code failures, disagreements, etc. Those are basic failures of any human-designed and human-negotiated system. As far as those go, I still prefer to wager my business on the time-worn technology of English common law.

As far as the tech goes, yes, banks should get behind some of this. Their infrastructure is garbage and could well benefit from associations of private chains and the like.

Re:What does $100 Ether mean? by erikpukinskis on Friday May 05, 2017 @02:52PM (#14275894)
> What do people need any of this for?

I can write an app for managing a business, fund it, and then walk away forever. Ethereum is a platform for hosting autonomous corporations.

Re:What does $100 Ether mean? by iamatworknow on Friday May 05, 2017 @03:14PM (#14276061)
Is that something we want? Because it doesn't sound like something I want.

I like that there's some level of the human element in the personal transactions I conduct with businesses, and I don't think I'm alone given how hackneyed the joke about bypassing automated phone support systems has become. If something falls outside company procedures there's usually someone who can help me out by bending the rules or deferring to a superior who can make an exception, or at the very least explain why it can't be done. Empathy plays a role.

If the entire business transaction is automated sure, maybe the more mundane everyday processes run smoother, but if there's an exception that wasn't accounted for you're shit out of luck.

Re:What does $100 Ether mean? by kolinko on Saturday May 06, 2017 @04:40AM (#14279349)
> I like that there's some level of the human element in the personal transactions I conduct with businesses, and I don't think I'm alone[...]

I'm quite sure the same argument was being used by many brick and mortar stores at the dawn of e-commerce.

In certain businesses empathy matters, in many of them it doesn't. There are also businesses that would never be built without the blockchain - and that's the most interesting part.

Re:What does $100 Ether mean? by iamatworknow on Tuesday May 09, 2017 @11:48AM (#14301011)
>I'm quite sure the same argument was being used by many brick and mortar stores at the dawn of e-commerce.

It was, but even then every e-commerce company has a chain of escalation that, at some point, ends at a human who isn't controlled by an algorithm. Setting your business logic and "walking away" as the original comment said wouldn't have that escalation path. If it does, then how is it much different from the way things work now?

Re:What does $100 Ether mean? by rocqua on Friday May 05, 2017 @01:39PM (#14275275)
The main 'value' of ETH is in buying 'gas' for your smart contracts. Basically, you need ETH to use the Ethereum network.

So it makes more sense to view it as a commodity.

Re:What does $100 Ether mean? by RichardHeart on Friday May 05, 2017 @12:51PM (#14274849)
I've been in crypto since 2011. If critical mass/adoption/press/uptime/wallets/ matter to you, then there's you know what. The problems ETH has had would be predicted by anyone looking at their choices. They will continue to have the same problems for the same core reasons. Good news for people long ETH though, it seems the market doesn't really care about the downtime, or forks, or risks of dual codebases or the halting problem of turing comleteness in smart contracts. Hell, they dont' even care about user wallet adoption, or retailer adoption, so, it would seem that the price can just keep going up without really hitting any of the metrics other crypto's have cared about.
Re:What does $100 Ether mean? by nicksdjohnson on Friday May 05, 2017 @02:48PM (#14275858)
> 1. The halting problem states you can't predict what a turing complete program will do, until you run it. This means to some degree, that you can't predict what your "smart" contract will do, until it does it. Thus turing completeness causes security to be far, far harder than non turing completeness. This is how you lose the millions of dollars as the DAO did after it passed audits.

While others have pointed out that this is wrong, it's worth amplifying: Turing machines are deterministic. You can run the contract locally and observe how it behaves, and it will behave the same way in the same environment elsewhere. If this wasn't the case, you couldn't have consensus at all.

> 2. Competing implementations of consensus code in different languages greatly increases breakdown of consensus. (more millions have been lost over this, and it created a fork at about 10 percent the value of the old chain.)

The DAO hard fork had nothing to do with a consensus failure. There's been one single short-lived mainnet fork due to a consensus issue, which was quickly resolved with - to the best of my knowledge - no financial loss.

Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @04:09PM (#14276470)
> While others have pointed out that this is wrong, it's worth amplifying: Turing machines are deterministic. You can run the contract locally and observe how it behaves, and it will behave the same way in the same environment elsewhere. If this wasn't the case, you couldn't have consensus at all.

"Deterministic" != "feasible to reason about halting states for all inputs." Running it locally to see how it behaves for a handful of inputs is definitely not sufficient for claiming that the code behaves correctly (i.e. is "secure").

Recall that people lost money in the DAO not because they didn't test how the DAO behaved when they sent their Ether to it. They lost money because someone discovered the contract as implemented did not behave the way it was expected and advertised to behave. Had it been possible to reason about the DAO's halting states for all possible inputs, the re-entrance bug would have been caught and fixed before the DAO was released.

Re:What does $100 Ether mean? by nmca on Friday May 05, 2017 @04:51PM (#14276749)
Formal analysis will help sort this out. Larry Paulson trained up these guys: https://www.imandra.ai/

And similar tech can be applied to smart contracts. Would have spotted the DAO bug. Not ready for prime time yet, but will be around the same time as sharding maybe...

Re:What does $100 Ether mean? by jude- on Friday May 05, 2017 @05:51PM (#14277086)
That's much easier said than done. If formal methods were practical, we'd be using them already everywhere else.
Re:What does $100 Ether mean? by jaibot on Friday May 05, 2017 @12:51PM (#14274852)
I routinely pay for things with ethereum - and if the target only accepts btc, then I can just shapeshift.

The "Halting Problem" is a red herring here - eth transactions are technically not Turing complete since they automatically halt when they run out of the finite supply of ether attached to the transaction. Saying that ethereum isn't feasible because of the halting problem is like saying cars aren't feasible because an object in motion stays in motion - there are countless practical ways to manage it, and if nothing else stops you, in the end you'll definitely run out of gas.

Re:What does $100 Ether mean? by mikejarema on Friday May 05, 2017 @01:28PM (#14275171)
Here (and when I see people generally using the term) is the meaning of "shapeshift" simply that you go to shapeshift.io and exchange from one cryptocurrency to another?
Re:What does $100 Ether mean? by jaibot on Friday May 05, 2017 @01:52PM (#14275381)
Yup!
Re:What does $100 Ether mean? by m3ta on Friday May 05, 2017 @12:41PM (#14274758)
Theoretically ETH can easily replace bitcoin as a payment method for anything that can be bought with BTC currently. I would imagine some people investing in ETH are expecting that to happen.
Re:What does $100 Ether mean? by geppeto on Friday May 05, 2017 @12:39PM (#14274745)
You can buy ICOs with eth.

Did you ever consider that the currency part of cryptocurrency was a misnomer and has nothing to do with the value of the asset?

Re:What does $100 Ether mean? by leashless on Friday May 05, 2017 @02:09PM (#14275533)
To be fair, BTC had a lot of problems in the early years too.

And note I'm trying to be technology agnostic as we build out the VC firm and the Internet of Agreements organisation - I am not of the opinion any of these systems are going to scale cleanly. I think we will need to go back and build it from scratch on an abstraction like pi calculus and work it up from there, not try to accelerate the Proof of Work systems by increments.

Only time will tell, though. I'm flexible on this.

Re:What does $100 Ether mean? by Jenya_ on Friday May 05, 2017 @05:07PM (#14276862)
Vitalik Buterin (founder of Ethereum) and his tweet about Turing completeness (now I only need to understand what a "rich statefulness" is):

https://twitter.com/VitalikButerin/status/854271590804140033