Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Miners Aren’t Friends (keep.network)
394 points by vinnyglennon on Jan 14, 2018 | hide | past | favorite | 249 comments


Can someone explain to me how on earth Ethereum is still a thing? People have lost hundreds of millions of dollars in the Ethereum ecosystem, many due to basic flaws in the "Solidity" language. For example, last November $280 million was frozen in Parity wallets because function visibility defaults to external rather than internal (see the previous HN discussion here[0]). Just for fun, I was looking through the Security Considerations[1] in the Ethereum docs, and here are two so-called "minor details":

- In `for (var i = 0; i < arrayName.length; i++) { ... }`, the type of `i` will be `uint8`, because this is the smallest type that is required to hold the value `0`. If the array has more than 255 elements, the loop will not terminate.

- The `constant` keyword for functions is currently not enforced by the compiler. Furthermore, it is not enforced by the EVM, so a contract function that "claims" to be constant might still cause changes to the state.

WTF?! Trivial loops won't terminate to due (unchecked) integer overflow, and the `constant` keyword does nothing? It's a complete gong show. I'm not touching anything to do with this language with a 100 foot pool. Is the hype bubble just that big?

[0] https://news.ycombinator.com/item?id=14807779

[1] https://solidity.readthedocs.io/en/develop/security-consider...

Edit: Oops, it looks like I'm mixing up my multi-million dollar screw-ups. First in July $30 million was stolen due to the "public is default" debacle, and then the fix for that problem introduced another bug (the developers forget to call the `initWallet` function), which lead to the $280 million being frozen in November[2]. Holy crap.

[2] https://news.ycombinator.com/item?id=15642856


Who cares about the language when the very premise of the project "code is law" was proven wrong. When the DAO was "hacked" by a "thief", rather than tell people "whelp, code is law and the code executed perfect" the mob (more accurately, those at the top of the etherium pyramid) decided to change history and roll back the blockchain.

Even the language designed to describe the "hack" was garbage. It wasn't a "hack", if code is law, all bugs are code and therefore part of law. There was no "thief" that "stole" anything either. Code is law. Somebody followed the contract down to the letter and made a trade to their benefited. Code is law.

If the central tenant of "code is law" cannot even be held and real meatspace-based humans can modify history at will.... what value does ethereum add at all besides pissing away an unimaginable amount of energy turning non-renewable fossil fuels into heat?

If anybody can modify history.... just use AWS. It's cheaper.


IMHO, "code is law" is a silly thing to aim for, and by ignoring that saying for the DAO incident proves that Ethereum is more valuable than it would be otherwise.

The "code is law" is just hype about how amazing and new and unprecedented this thing is, but it's a truly bad idea. The reversibility of bugs is a good thing. In human law, there are exceptions, and appeals, etc. Aiming for a completely mechanical system is the type of unnuanced thinking that leads me to be extremely skeptical of the entire cryptocurrency community, and in particular made me think that Ethereum was a total joke run by unserious people.

Computer tools must adapt to human nature, not the other way around. Ethereum's hype train ignored that. Such temporary hype trains can help get the train moving, but it's always important to separate the hype and marketing from the reality. Especially in everything from post 2000 in the Silicon Valley, hype and marketing are what drives success much more than product itself. We need to remember to not get high on our own supply, and not believe the bullshit that gets peddled in order to drive platform adoption.


I'm a little lost. What does ETH provide society if it's just another system for allowing 51% of people to screw over the 49% that dissent?


It's not 51% of people, it's 51% of computing power, or 51% of stake if Ethereum ever switches to proof of stake. Ethereum runs by capitalistic power, not democratic power.

I don't know if there's any alternative to that; any such system is going to have some means of enforcing truth and power, and means of gaining or losing it.

Cryptocurrencies are not a way of escaping that fundamental fact. They shift where the power is. Having that alternative to current ledger and contract systems can be valuable to people in certain situations.

Thinking that Ethereum or Bitcoin or any blockchain tech escapes these fundamental power relationships is exactly the type of inanity that makes the tech seem unserious. It's a hype train, it's not true, but there is still the potential for value.


> It's not 51% of people, it's 51% of computing power,

Cool, so in reality a lot less than 51% of people can screw over every else.

Again, what is it that ETH provides society that's new and useful?


Here's an easy one: the ability to receive a payment for a service without relying on a third party to deliver that payment.

New: state-level actor(s) cannot stop an organization from receiving payment merely by forcing your third-party payment processor to freeze funds/stop payments.

Example: sci-hub. If they were receiving payments through Mastercard/Visa it would have almost certainly been frozen long ago. However, since they (apparently) get funded by receiving Bitcoin, they continue to operate. In the meantime, grad students and professors get the convenience of using sci-hub's interface to easily retrieve journal articles.

Even if sci-hub eventually gets taken down completely (or a researcher finds a catastrophic bug in all cryptocurrencies), the total time during which sci-hub served documents funded by Bitcoins was a benefit to society.

ETH allows fancier transaction scripts than Bitcoin, but the same argument holds-- a state level actor cannot just stop the contract from being executed simply by putting pressure on a third party.

Based on this article, I'd say there is value in ETH just as there is value in writing a complex, multi-threaded application in a memory-unsafe language. It's a bad idea, but for some special cases it may be better than doing nothing at all.


Everytime I see the argument that smart contract allow for no third party payment I always think that people are diminishing the role of third party.

In most transaction, the third party also act as an insurance, a safety. If something goes wrong, the third party is supposed to be here to make sure everybody got their fair share without the need to take legal action, which can be difficult to near impossible sometime.

If I get scamed, does the smart contract allow a chargeback ? Who is going to make sure I was scam and not abusing ? etc.


It's almost like you read the two words "third party" in my response, then triggered a canned reply based on the existence of those words.

What insurance would you need when sending a Bitcoin donation to a site where thousands of researchers already benefited by retrieving scientific journal articles?

I didn't write, "cryptocurrencies will replace all third party payment systems." I gave a single example of a situation where third party payment systems don't function and Bitcoin does.


> a state level actor cannot just stop the contract from being executed simply by putting pressure on a third party.

They just haven't gotten around to it yet. The decentralized nature of cryptocurrencies increases the number of entities that need to be pressured, but doesn't make state-level actors completely powerless.


They won't get around to it, because stopping the mining of all cryptocurrencies that sci-hub could use to pay for uptime is more work than stopping sci-hub.

Since stopping cryptocurrencies is harder than freezing third party payments (evidence: see Wikileaks), this is a single, narrow example of the usefulness of cryptocurrencies. Researchers get the convenience of sci-hub's frontend for longer than they would if sci-hub had relied on a third party payment system.


This is why some cryptocurrency communities like monero push for people to use smaller mining pools so the miners are more decentralized.


So we need some guidance. Oh that's what governments are for, definitely not a private company, which is not accountable by voters (with a wide voters base; if the voter base is not wide, made it so, don't discard democracy.)

Finally, there are a lot of good reasons why in democracy we vote per-head and not per-share. It's a big thing, but that is also being dismissed by cryptocurrencies.


> a state level actor cannot just stop the contract from being executed simply by putting pressure on a third party.

They've forked before they could be forced to again.


And proof of stake is likely to be even worse. The people with the most money decide who gets richer and who doesn't. What could possibly go wrong?


Not quite. The richest actually do the work to keep the system running. They need to stake their claim to the system to validate everyone else's trx. If is in their best interest not to mess up, otherwise they lose their stake in the system.


Cool. So it’s a centralised system ran by the rich (which I don’t necessarily have a problem with).

Again, what is it that ETH provides society that's new and useful?


What do most financial products provide to society that's new and useful?

If you want to throw up your hands and declare this all a waste of time, feel free. You'll have lots of company, and for good reason, but setting some arbitrarily high goal such as "providing something new and useful to society" just makes it sound like you've got an axe to grind.

There's plenty of things about Ethereum (and blockchain exchanges and how they are used and hyped) to criticize legitimately, but this doesn't seem to be one of them.


In reality, you would be very hard pressed to get 51% of all global wealth to agree on anything. Today, it is pockets of ~1% wealth screwing over their regional 0.00001% constituents.

Ethereum forces a global authority :)


So those who benefit from cemented structures are incentivized to maintain status quo. Sounds like humanity, just a different set of masters.


Sounds like the banking system, but now you can vote with your wallet to buy the cryptocoin of your preference. Pretty much akin to how you can vote for a politician, or vote with your money by buying a product or not buying a product.

Not only do those who designed the cryptocoin plus early adapters (the former are the latter, but not necessarily vice versa) get more rich with thin air generated by electricity, they also get more powerful. No wonder these things rise up like mushrooms from the ground.

Man, if I were into this, I'd just convince people 24/7 to get into these cryptocoins. Best way to get rich doing virtually nothing but some marketing. Right?


Actually, 51% of miners can't cause a hard fork (which TheDAO was).


A decentralized computing network that can be used for anything essentially?


As long as "anything" is an algorithm expressible given Solidity's tremendous constraints

And if you're just going to use ETH to pay for real compute hardware in the cloud so you can run real software, at that point why not just use BTC?

Turing-completeness doesn't automatically make something useful.


> why not just use BTC?

By the very nature of your argument if a Turing-complete blockchain isn't inherently worth something than a stack-based language which isn't Turing complete is certainly worthless.

I feel like your arguing with me for the sake of arguing? What's your point ETH isn't perfect, so what, it's relatively new tech which is exploring an interesting problem. The fact it's valued X _may be_ a fair evaluation or even undervalued given it's impact. The upside being possibly a DAO controlled by an AI efficiently providing resources to humanity in a way human's can't given traditional power structures. Or maybe fiat isn't so bad and we don't want robot overlords so we scrap it all. At the end of the day who cares, as long as your smart about the money you've invested into to the ecosystem you won't be hurt by a Black Swan in the cryptosphere. I think anyone working on ETH up to Vitak would have the same sentiment.


"that can be used for anything essentially" is a pretty wild claim to make if you can't actually back it up with useful algorithms to run on the network. This doesn't mean it's useless (you can probably run interesting contracts and stuff on the network), but stop trying to make Ethereum into something it's not.


By the very nature of being Turing Complete it can do anything any other Turing Complete language can. I didn't claim anything about ease of use...or really any wild claim at all, except maybe a DAO being controlled by an AI..oh well. My point explicitly is ETH is a Turing Complete decentralized runtime.

If you want to build a better language for interfacing with the VM your free to do so.


Have you seen the fees associated with BTC... way too high. Plus the time until complete confirmation is so slow.


A system where it is not 0.1% of the people who are allowed to screw over 99.9% of the others?

You argue for purity of a principle. Very few people actually care about such a notion. The majority has more practical concerns. The fact that a theft that would have made the whole currency seem insecure has been reversed was seen as a proof of solidity by many users.


What implicitly stops 0.1% of people from controlling 51% of the network? You realize how much of global fiat wealth is currently in the hands of the 0.1%, right?

The current system at least theoretically has democratic (or otherwise) control over who the 0.1% in power are. In a system like BTC or ETH it's just 'who has the most compute?' or in proof of stake, 'who's the richest?'


If any group controlled >50% of the network and also was willing to use that power in a way that would diminish trust in that same network then they'd very quickly end up with 100% of something worthless.


This seems to imply that everyone else's stake in the network would become worthless too, though. What stops a particularly motivated billionaire from buying 51% compute for a month or so to destroy a cryptocurrency for good? They waste that money but any competitor of theirs (in business, etc) who had wealth tied up in that currency can kiss it goodbye. If a business was built around that currency it's dead now.

The 'diminish trust in the network' threat really only discourages an existing good actor (invested in the network) from turning into a bad actor.

If I've been mining a cryptocurrency for years and I decide I want to move on to mining something else, what stops me from using 51% to destroy the currency before I move on to mining something else? If I moved my currency holdings out (or have been liquidating them regularly, as any sensible miner might), what's to lose?


They still own a bunch of hardware, though, which can be repurposed for other networks. If you're a big miner, and something on whattomine.com seems attractive, you'd join the network, mine it, unload via exchanges and leave for greener pastures once the ROI is not that attractive.


That implies there is a viable alternative people can go to. I'd be more concerned that a group with >50% would go after alternatives/competitors.


I think it's just the wrong forum, and fundamentally incompatible with "popularity". In crypto-anarchist mythos, hackers interact via deterministic, mechanical intermediary. It's darwinian. It's expected that participants shall beware, and inept ones will be injured.

It may not be for you, and it may not be for society writ large, but it is an excellent and very important idea. Removing human judgement is exactly the point. Whether this thrills or horrifies you is, I think, a personality trait.


> Removing human judgement is exactly the point. Whether this thrills or horrifies you is, I think, a personality trait.

I attach neither horror nor thrill to that idea, I find it laughable. We all have our abstract ideals, and these abstract ideals eventually meet the reality of human interaction. There is no possibility of removing human judgement, as long as humans are in control of the machines. Humans may temporarily agree to go with whatever the machines say, but that is only a temporary status, as whoever controls the machines has ultimate control.


More of a clarification of my original comment:

I'm still a little lost. What value does ETH provide if we cede to human emotions and social power structures at the end of the day? We don't need to invent a cryptocracy to realize a world where people who own 51% of the power can acceptably or at least "fairly" screw over the the dissenting lot with 49%... that is just old school power. It has been around for ages.

In theory, ETH proposed a playing field where law is specified using a language that everyone agrees upon, and where applications of said law are recorded on a decentralized public ledge and even executed using the compute power of the underlying network. The system was valuable precisely because it provided a cryptographically robust way to circumvent humanity for the purpose of recording law with authority and confidence.

But all we've learned from this experiment is that when someone messes up, or not, and it impacts a lot of people (in these cases negatively), they will appeal to the people who own the power and request execution of an "authorized" (not by the original rules but by virtue of ownership of power) out-of-band attack against the system. In other words, they'll collude to perform an illegal move in order to counter the undersireable outcome. In essence, it's a network coup.

Don't get me wrong, I think this is kinda cool too. And if ETH or blockchains or whatever is the zeitgeist what inspires people to continue to imagine and build transparent societies where we have better and better distribution of power, perhaps it has artistic value.

But these events jade people, and the reason they lose trust in the system is because they learn just how easily it is not to be trusted.. how human it is. You put your faith in a system only to see the network owners use their power to operate outside of it.

Of course this is great when you are the beneficiary of a network reset. But by condoning rewriting history, you've chosen to sacrifice the system and pander to your emotions above those of the people who shared trust with you when everyone agreed to play by the rules. So maybe you don't live in an ivory tower: there may appear to be few victimes (namely the bad actor) but finally don't forget the contracts that become void when the network is reset. To those who bought in ideologically to ETH, these events effectively invalidate the entire system. And ETH becomes a failed experiment.

We both appear to agree that ETH is still human. You claim this is a boon. I am skeptical. I am still curious why being human innately makes ETH more valuable. Perhaps you mean the fact that the participants evoked "human mode" over "machine mode" is an indication that people value this system dearly. I do not disagree. But I'd argue this value comes from a different place. This value comes from a desire for, well, value itself. This is a different, darker, value. It's no longer simply valued for its merit: the vision for a mechanically infungable system isolated from human emotional responses. But it's just another victim of human irrationality, greed, ignorance, and laziness. And that is a little sad in my opinion.

Just to be clear I'm not bitter I've never owned any ether.


In crypto-anarchist mythos, hackers interact via deterministic, mechanical intermediary.

What a completely idiotic notion that is. Language can be used to deceive, and if the neverending freakshow of "smart contract" bugs shows anything it is that computer languages are not exempt.

Removing human judgement is exactly the point.

The Underhanded C Contest is not about human judgement.


This thread has effectively devolved to "humans will be humans" vs "we can build systems that make us better humans". I don't disagree with your jaded stance that humans will be humans. But I don't think it's idiotic to try and continually improve the systems we imagine in pursuit of higher standards for society.


My argument is that it is absolutely barmy to think that a piece of Solidity code is something like an impartial arbiter that is completely independent of the human who wrote it.

We have processes that deal with human reality. We build political parties to extend power, we have judges and parliaments, where laws are written, people enter contracts every day - the system works mostly well. Ethereum is an improvement on exactly what?


There are a number of reasons a court might throw out a contract, but one party having made an expensive mistake is not one of them. Edit: turns out this isn't true. TIL that a contract to which no reasonable or informed person would have agreed can be thrown out as "unconscionable."

And even if it were, why roll back the block chain to rectify the situation? In traditional accounting, wouldn't you need a ledger record of both the mistake and its correction?


That's not necessarily how the US civil court system works. Courts will sometimes throw out or alter contracts if a good-faith mistake by one party produces a result that would violate the fundamental principle of equity. This is more likely if the result appears to violate the original intent of the contract.


That's very true; I should have looked this up before stating it. Edited my original comment


> And even if it were, why roll back the block chain to rectify the situation? In traditional accounting, wouldn't you need a ledger record of both the mistake and its correction?

This is exactly what happened. The blockchain wasn't rolled back. New transactions crediting the victims were injected into it.


> The reversibility of bugs is a good thing.

So can I make a purchase, receive the goods and then claim a bug?

Reversibility of platform bugs is a good thing, reversibility of contract bugs is basically reversibility of plain transactions, which makes the whole idea of cryptocurrency useless.


If you can convince 51% of the network, then yes.


yeah, the fact that ethereum community was convinced is already a death sentence, because it shows that no principle is sacred. go ahead and try convincing bitcoin community to reverse a transaction, that'll be fun to watch.



yep, that is an example of platform bug, not a contract bug.


The problem with the "code is law" principle is that it's also the version of history where a single attacker controls 15% of all Eth in existence. I think most participants probably would agree with that principle in general, but the practicalities outweighed principle in this situation.

(the fact that the creator of Ethereum was heavily invested in the DAO doubtless played a role as well... it's different when it's your money that got stolen, and he had the power to do something about it.)

Still though, people don't understand that the legal system is a feature, not a bug. A neutral arbiter that can judge the spirit of the contract and come to a decision that resolves the matter fairly for everybody... that way you don't need to guarantee bug-free code forever.

There was a post here a while back that made the interesting point that essentially everything cryptocurrency attempts to do is anti-user and the problems they claim to solve would actually be viewed as features by most people. For example, no chargebacks! But chargebacks are a good thing, if the good turns out to be significantly not as described then you can get your money back. Or - immutable history! But it's actually quite nice when the bank can remove fraudulent charges when my wallet gets stolen, I quite like having that recourse.

3% merchant fees for Visa don't seem so bad compared to the DAO hack and Solidity and all that other shit.


The point of "code is law" is to replace the legal system.

Laws are, after all, code. Programmers are the new lawyers.

The problem with the "hack" was that our laws/code are still incredibly primitive.

I don't have an issue with the rollback - because that's part of the design, and I really doubt they'll be able to do that again if the ownership of ETH spreads out more.

These problems will work themselves out.


Sounds like 2 things are getting confused.

Think of Ethereum as a very slow decentralized computer. People make mistakes building applications all the time, but this doesn't necessarily mean the underlying language, or for a better comparison, the compiler is at fault. Problems with the underlying language can cause problems with applications, obviously. Programmer error =/= language/compiler error, while both can occur.

People have been talking about the Parity hack like it's Ethereum's fault. Imo that's as absurd as blaming C for your program crashing to your coding error.

Your post, while you are confusing two types of errors, isn't completely off. Solidity does need improving. Any language has to pick tradeoffs, and evolves over time as it becomes apparent what the system's needs are. But Ethereum and Solidity aren't to blame for most of the ETH-based apps that rushed to market without an appropriate level of QA and review, cut corners, made mistakes, and caused catastrophic problems for their users like the Parity bug... this should be ringing bells, folks.


The problem is that it's virtually impossible to write a "correct" program in Solidity, there are just too many pitfalls that are literally trivial to run into.

https://news.ycombinator.com/item?id=14810008

https://news.ycombinator.com/item?id=14691212

It turns out that having a language designed by a 17-year-old who knows some Javascript might not be the best idea in the world, who would have thought?

The language needs to be thrown away and a more proper one implemented, plain and simple. Solidity is unfit for purpose.


I’m not sure who is more clueless - people that trust JavaScripty shit-language to manage their finances or people that built a cryptocurrency around javascripty shit-language.

But I definitely assign some guilt and responsibility for all the money lost in solidity contracts to creators of ethereum.


Ethereum and Solidity absolutely bear some of the blame for bad software if the software is only bad because the tooling is garbage. You can't just kick the can down the road, runtime and compiler authors have a responsibility to actually do a good job. PHP cost people tons of time and money in the bad old days and again, you can't just blame people for using PHP. You have to fix it.

At the end of the day of course, the biggest error was on the part of the app developer, #1 because they used a bad platform, #2 because they didn't QA enough to compensate for the platform being bad.

But it still comes down to the fact that Ethereum and Solidity are low quality and the low quality results in more bugs and lost money than we'd see otherwise. It's just like the bad old days of Windows XP (and the modern days of Cryptolockers) except now money is directly vanishing into the ether because bad software is controlling it.


Right, so you're saying if they decided to use Brainfuck instead, then it would be just as silly to complain? After all, it's not an issue with the language, which is perfectly functional, it's just that you're too stupid to write something in Brainfuck that actually works.

The point is that the designers of Ethereum shouldn't have been so short-sighted as to choose the hipster JS offshoot of the week to build their massive multi-million dollar distributed computing system on top of.


Solidity has a lot of potential pitfalls that need to be avoided, just like similar languages. Some of these are due to poor or unintuitive language design, although a lot of improvements have been made over time. The wallet bug involving Parity's multisig wallets was due to an error that Parity made, even if it's an error that may have been easy to make, it should have been caught in testing or code reviews due to how critical that library was. As far as the loop goes, you cannot have a loop that runs forever due to gas limits involved in transactions (a contract can only execute so many opcodes before it hits the gas limit and execution halts, with state reverted back), so it isn't a potential issue that it would never terminate. With that said Solidity still has some pitfalls that should be fixed, and many of them already have been fixed. It's not perfect, but it's quite usable compared to other smart contract systems, few of which are even as developed.

Most of the largest headlines involving loss of funds in the Ethereum network have been due to programmer or user error. Keep in mind that Ethereum is still in its "experimental" phase - it isn't "supposed" to have billions of dollars put into it just yet, but the market doesn't care about this as long as the prices are going up. Ethereum could be much worse than it is, but that wouldn't mean its value would go to zero, or even do down. Plenty of top coins by market capitalization have been orders of magnitude worse, or just outright scams. Remember "The market can stay irrational for longer than you can remain solvent".

It's still a very new area of technology despite the amount of money that pours into it. There's innovation, but it can be difficult to see it in the midst of the hype.


It’s well established that humans will make programming errors, and that good language design can reduce the rate of such errors (and eliminate certain classes of errors altogether). I’m surprised you are willing to place so much blame on Solidity’s users for their mistakes when these mistakes would have be avoided with simple improvements to the language design.


Simple improvements help fix simple errors. With so much money on the line I do somewhat blame the users.


The key difference between Solidity and other languages, of course, is that most people don't trust other languages so explicitly and irrevocably. Other code environments can be monitored for errors and those errors can be corrected, usually in ways that don't involve kissing all the money goodbye.

On something so absolute as Ethereum, I would expect them to use a very dumb language with as few complications and complexities as possible, and then to formally verify the crap out of it, and quickly make it the most consistent, predictable, and stable language on the planet (again, possible only with a very barebones language that does not have complex features). The fact that Ethereum has been around for so many years and this has not happened indicates that it's not a serious platform.


> Most of the largest headlines involving loss of funds in the Ethereum network have been due to programmer or user error.

What other classes of errors are there that Ethereum is successfully avoiding?


Errors in the protocol and the cryptography underlying the platform.


> Most of the largest headlines involving loss of funds in the Ethereum network have been due to programmer or user error.

Well, that's reassuring. Should we expect that there will be no more programmer errors in the future on the Ethereum network then? Isn't Ethereum's job to minimize those errors?


> Can someone explain to me how on earth Ethereum is still a thing?

Network effect and name recognition, the same reasons that Bitcoin hasn't been supplanted by Monero or Zcash or any of the other dozens of coins that do virtually everything better than Bitcoin.

The really interesting thing is that the original plan for Bitcoin included many of the same programmable-money features as Ethereum. The instructions are still in the bytecode but I believe they were disabled in one of the patches, except for a handful of instructions that implement the basic "send money from A to B" type functionality.

My impression is these were supposed to be enabled/used at some future date, but this is just one more thing that's gotten bogged down by the infighting and politics of the project. Much like blocksize - 1 MB was just a number picked to avoid transaction spamming blowing things up in the early days, not a divinely inspired number intended to be used for all time. But the project is so stagnant and calified that they can't handle even the smallest day-to-day tasks like this. God forbid we change one of Satoshi's sacred constants.


While monero is very cool, it has the same scalibility issues as bitcoin i believe, but to a worse extent as the transactions are much larger due to how the ring signatures work. I know they're working on this but it's not a straight upgrade, and last time I checked monero fees were quite high compared to other alt-coins with similar use.


Well, they start with an assumption that the halting problem is addressed simply by "running out of gas." I could easily see a dev assessing the infinite loop potential and glibly thinking, "well, that would just run out of gas, too."

That doesn't explain the lack of guarantee on "constant". What is the technical detail which prevents such a guarantee?


I don't know, but constant as a function return value signature does not make much sense at all.


Does Ethereum's existence hinge on Solidity? Isn't Solidity just a language that one can compile to the lower-level language actually built into Ethereum?


Solidity is the official language, part of the ethereum project, and pretty much all you get when you look for how to develop eth contracts, unless you specifically exclude mentions of solidity. Then you get Ivy (prototype & for bitcoin not eth) and Pyramid Scheme.

So I'd say yeah, technically not but practically it is.


Wait, there's a scheme variant for Eth called Pyramid Scheme? That is the best programming language name ever.


http://www.michaelburge.us/2017/11/28/write-your-next-ethere...

"Pyramid Scheme is implemented using the appropriately-named Racket."


could have used larceny as well..

http://www.larcenists.org/


Not explicitly. Currently, it's the most widest used language for interacting with the VM, but it's not the end development goal. I don't think the entire thing hinges on Solidity, though it's probably the most immediately accessible language. The hype driving the price up seems a bit premature, though.

There are a couple of other languages in development that might improve the ecosystem:

* Vyper https://github.com/ethereum/vyper

* Serpent https://github.com/ethereum/serpent


Yep, anyone interested in taking a crack can write a language that compiles down to the Low-level Lisp-like Language (LLL) intermediate lang.

There are a couple projects working on it (eg Viper), though many seems to prefer starting a new blockchain.

Edit: s/Serpent/Viper/


Isn't Serpent an earlier effort that was abandoned in favor of Solidity? There was also the short-lived Mutan, V[iy]per (apparently a work-in-progress) and something called Slang.


Duh, Viper is what I meant- thanks :)


Someone told me recently that there's an idea to replace EVM (the lower-level language actually built into Ethereum) with WASM. That would allow people to target it with a variety of existing programming languages, some of which are not clown shoes. If that's possible, it sounds sensible.


The EVM is the runtime, not the language. WASM would be great though. A couple new projects are using it (eg Dfinity)


You could have other languages that compile code into EVM-executable opcodes, but Solidity is currently the language used by all major players in the Ethereum ecosystem for writing smart contracts. Although there's other options (or new options could be made), it's very unlikely that Solidity will be replaced by any of them any time soon.


Even EVM has complex semantics surrounding critical features like time, dispatch, and exceptions. The whole ecosystem is amateur.


It is. This will improve but it's a lower priority than scaling.


The promise of Ethereum was to be a global, decentralize, virtual computer. Without smart contracts, it's just another electronic value exchange platform.


I think one can say that these issues of miner 'optimization' and some of the issues raised in the LeastAuthority audit [1] are architectural, rather than Solidity-specific, and which can only be addressed through defensive transaction design.

[1] https://github.com/LeastAuthority/ethereum-analyses/blob/mas...


"We have no idea what we are doing!" Karl Floersch - Ethereum Researcher

https://youtu.be/ycF0WFHY5kc?t=991


You seem to think terrible design is a blocker to adoption.

Are you acquainted with Javascript or windows?


Maybe because that is so fat the largest functioning cryptocurrency based on proof of stake instead of proof of work, and that bitcoin proved that energywise, a global cryptocurrency would not be sustainable?


Ethereum is not based on proof of stake.

Bitcoin proved that global cryptocurrency is absolutely sustainable, it just can’t be cheap.


> Bitcoin proved that global cryptocurrency is absolutely sustainable

It has not.

* Transactions don't scale: they're are expensive, and not instant.

* There are practically no ways to spend Bitcoins in the physical world.

* The electricity costs of mining are not sustainable by mankind. Although some people in China want you to believe otherwise.


> Transactions don't scale: they're are expensive, and not instant

blockchain has limited scalability, second layer doesn't. also blockchain transactions were never supposed to be instant. in fact nothing is instant, check this thing called physics.

> practically no ways to spend Bitcoins in the physical world

there are plenty

> electricity costs of mining are not sustainable by mankind

bitcoin is not even a blip in total world energy spending and less than that in total world energy production.

also if you check the dictionary for word sustainable:

> able to be maintained at a certain rate or level.

miners are profitable at current difficulty at current price of bitcoin. if price goes down - less efficient miners will go out of business and difficulty will decrease until balance is achieved.

bitcoin is sustainable by design.


First of all, perhaps you want to use proper capitalization in your posts. It adds to the readability of your post.

> blockchain has limited scalability, second layer doesn't. also blockchain transactions were never supposed to be instant.

Of course it wasn't supposed to be instant. That's why its a shit system to use as currency just like gold bars are a shit currency cause one has to drag them from the mine to the bank to the store. This Bitcoin thing was meant to be a currency, right?

I guess you're talking about Lightning Network though which Bitcoin evangelists appear to market as the Second Coming of Christ. Well, it isn't active yet, and it isn't part of Bitcoin ie. it isn't "Bitcoin". So... I was right.

> there are plenty

Not really. Many have been removed lately. There were Bitcoin debit cards. Well, they got revoked. Steam? Doesn't accept Bitcoins anymore due to high transaction costs. And those are just a few examples.

> in fact nothing is instant, check this thing called physics.

That's odd. I just put money on my debit card from my bank and it took like a minute. And I consider that slow! If I buy something from a store, which I did today, its instant enough that I can put my bank card in my wallet and move on. That's why I call it instant. The fact it isn't instant, is true, but it is nowhere near the latency of Bitcoin. And Bitcoin's latency is nowhere near my bank to debit card transaction. My statements regarding slow (and expensive) transactions were true.

> bitcoin is not even a blip in total world energy spending and less than that in total world energy production.

Yes, when it consumes more energy than my entire country, it is. Plus, when it is thin air we're discussing, it is.

> also if you check the dictionary for word sustainable:

How about you look up the word in your dictionary, called environment?

> bitcoin is sustainable by design.

Circulus in probando.

Wake me up when I can pay BTC at the same places where I can pay with EUR. I'll even do a concession! Wake me up when a United States resident can pay BTC at the same places they can pay with USD.


Your post is very uninformed.

Transaction speed is a function of timestamping mechanism of the consensus protocol. If that’s the only measure you decide whether the currency is shit - fair, don’t use it.

FWIW cross-bank transfers aren’t instant too, shall I give you my credentials so you could promptly dispense of all the worthless shit money you have?

Lightning network is active on mainnet, not sure what exactly batted that information from reaching you.

Revokation of debit cards had nothing to do with bitcoin and there are plenty of companies that still offer them.

That some merchants choose to drop support because low value transactions aren’t economical is unfortunate but also temporary.

> when it consumes more energy than my entire country, it is

Nope, still not a blip. So yourself a favor and spend more than 5 seconds to inform yourself on the topic.

> How about you look up the word in your dictionary, called environment?

You’re conflating energy use with energy source, nobody is burning oil to mine bitcoins - those guys are out of business.

> wake me up when

That explains everything - instead of informing yourself on the topic you just went to sleep. Bitcoin debit cards mostly cover those requirements btw.


> If that’s the only measure you decide whether the currency is shit - fair, don’t use it.

Reductio ad absurdum. I mentioned several reasons.

> Lightning network is active on mainnet, not sure what exactly batted that information from reaching you.

Why are Bitcoin transactions still slow?

> Revokation of debit cards had nothing to do with bitcoin and there are plenty of companies that still offer them.

Of course it is related to Bitcoin. Please link 5 of these currently valid Bitcoin debit card products. If they're so rampantly available, surely you can link 5 easily?

> That some merchants choose to drop support because low value transactions aren’t economical is unfortunate but also temporary.

Yeah, life is temporary as well rolleyes. This is a non-argument. You cannot tell when the problem is solved, and its a severe issue for adoption of Bitcoin.

> Nope, still not a blip. So yourself a favor and spend more than 5 seconds to inform yourself on the topic.

Yet, it is, and I can't be bothered to spend time to reply to the rest of your ad hominem.

> You’re conflating energy use with energy source, nobody is burning oil to mine bitcoins - those guys are out of business.

I didn't mention oil (ever heard of Co2?). I mentioned that power source has impact on the environment because that is reality 101. If I have 100 buckets of sustainable water, and I piss in 90 of them, then the rest of the world only got 10 buckets of sustainable water left for general consumption. Which is a loss of sustainable energy. So using unnecessarily vast amounts of energy is a loss for the environment. Of course this isn't in the interest of miners or Bitcoin evangelist like yourself.

> That explains everything

That explains nothing, its just one of your ad hominem fallacies which tells the reader something about you, not me.

Instead, this explains everything: https://en.wikipedia.org/wiki/Multi-level_marketing

Dear reader, please don't fall for the Bitcoin scam. Read the above link instead, and notice the parallels with the Bitcoin/cryptocurrency mania. Specifically, the parallel with ICO and early adopters of cryptocurrencies.


> I mentioned several reasons.

"Of course it wasn't supposed to be instant. That's why its a shit system to use as currency"

no you didn't.

> Why are Bitcoin transactions still slow?

that blanket statement is false and again illustrates how little you know about bitcoin. bitcoin transactions confirm within 10 minutes provided adequate fees. the lower fee you choose to pay the more you will have to wait until confirmation. speed is function of fees.

if you intended to ask "why aren't all transactions on lightning and therefore instant?" then it's because lightning is still in very early stages and is only starting to get adoption.

> Of course it is related to Bitcoin

it was related to one visa card issuer (wavecrest) that decided to discontinue support without any explanation. debit card providers that didn't rely on wavecrest are doing fine (and those that did - are moving to new issuers).

quick google shows a whole bunch: cryptopay.me, bitpay, spectrocoin, xapo, www.shiftpayments.com. there's 5 for you.

> Yeah, life is temporary as well rolleyes. This is a non-argument. You cannot tell when the problem is solved, and its a severe issue for adoption of Bitcoin.

this is possibly a non argument for you as a person who knows very little about the space.

everybody is aware that issue exists and makes a lot of low value transactions on chain economically not viable, that is exactly why lightning was developed.

> I can't be bothered to spend time to reply to the rest of your ad hominem.

you sure can't be bothered to educate yourself on the topic. as it seems you're from netherlands, your country's total energy consumption in 2012 was 82 Mtoe, total world energy consumption was 9000 Mtoe and world energy production was 13300 Mtoe. as i said - not even a blip, just find some courage to admit you were wrong. alternatively you could of course start arguing that 0.9% is totally a blip, in which case i'm at least happy to leave you better informed.

> If I have 100 buckets of sustainable water, and I piss in 90 of them, then the rest of the world only got 10 buckets of sustainable water left for general consumption

it's called a free market. if it is economically viable for mining companies to spend energy at their location for the price at that location - not much you can do about it.

> So using unnecessarily vast amounts of energy is a loss for the environment

it's only unnecessary by your definition and understanding of bitcoin.

> Dear reader, please don't fall for the Bitcoin scam. Read the above link instead, and notice the parallels with the Bitcoin/cryptocurrency mania. Specifically, the parallel with ICO and early adopters of cryptocurrencies.

yeah, i totally agree about most altcoins and ICOs. the rest is just you being angry and extrapolating more than you should.


> no you didn't.

Yes, I did, see the various posts I made. Posts you supposedly read, and responded to. You even addressed the multiple premises yourself! You're even addressing various of them in this very post!

> if you intended to ask

That wasn't my intention to ask, it is precisely what I asked. Read it back. Your answer to slow transaction premise was: "this is the solution to the problem" so I say "but it isn't available" to which you say "well it isn't widely available yet" rolleyes. How about you start being practical for a change?

> quick google shows a whole bunch: cryptopay.me, bitpay, spectrocoin, xapo, www.shiftpayments.com. there's 5 for you.

BitPay was on hold, doesn't inspire confidence. Plus:

"Sorry about that! The BitPay Card is not available for order in your area yet. We're working to bring it to more countries soon. If you’d like, we can notify you when it becomes available in your area."

"Why We're Updating the Minimum BitPay Payment Amount to $100 22 DECEMBER 2017 PRODUCT UPDATE, 12/23/17: We continue to monitor bitcoin network conditions, but we have re-enabled BitPay merchant invoices and BitPay card bitcoin-to-dollar loads for $5 or above. BitPay Card orders are also once again available."

Sounds like "working as intended"..

I checked Xapo as well, seems like its a virtual card only.

> everybody is aware that issue exists [...]

Ah, that one. Well, that's odd, I just asked my 5 year old about it and she had no idea what I was talking about.

Wake me up when you can do small transactions. It is kinda important being able to perform small transactions with a currency. You know, I can go to the store right now and auth with a PIN and here's what that costs me: 0,00 EUR. I can even auth with a NFC card, if I enabled that and am OK with that and all.

> it's called a free market

Red herring.

> if it is economically viable for mining companies to spend energy at their location for the price at that location - not much you can do about it.

Yeah, there is: not supporting cryptocurrency where mining is lucrative or not supporting cryptocurrency. You can opt to not support cryptocurrency by simply not joining the MLM/pyramid scheme. Actually, if you got savings, you're probably better off investing in safe stocks such as AAPL (~48% profit last year) or GOOGL (~36% profit last year). The likelihood of these two companies going belly up is very low. You can also spread further, or in multiple markets.

> it's only unnecessary by your definition and understanding of bitcoin.

My definition of the irrelevance of Bitcoin as well as.


> Your answer to slow transaction premise was: "this is the solution to the problem" so I say "but it isn't available" to which you say "well it isn't widely available yet" rolleyes

TIL a solution that doesn't yet have enough adoption is totally not a solution. go FUD somewhere else dude.

> more debit card FUD

you asked for 5 examples, i gave you 5 examples. go FUD somewhere else.

> I just asked my 5 year old about it and she had no idea what I was talking about.

yep, sounds like you're out of arguments. as i said - you should educate and stop embarrassing yourself.

> Wake me up when you can do small transactions

you should have woke up a while ago and started informing yourself on the subject before pretending to be an expert

https://twitter.com/alexbosworth/status/946175898029395968

> Yeah, there is: not supporting cryptocurrency where mining is lucrative or not supporting cryptocurrency

you're totally free to do that. but seriously, it's definitely useful to inform yourself on the subject before engaging in conversation about it.


If you live in a tech hub there are plenty of restaurants etc that will take crypto. There are dentists and doctors that take it now.


World-wide? Can you state 10 of these tech hubs where Bitcoin is widespread?

I haven't seen any place in Amsterdam Area (where I live, throughout Europe considered a tech hub) accepting Bitcoin. When I was in Berlin, saw zero Bitcoin as well. C-Base didn't accept it either. They did accept this currency called EUR, though.

Bitcoin's slow transaction speed wouldn't be an issue for something like dentist/doctor. Those have your PII including your SSN (or well, the Dutch equiv here), and you got physical contact with them. The payment here even goes via insurance company. Have never heard of any Dutch insurance company accepting Bitcoin though.


> I haven't seen any place in Amsterdam Area

You haven't looked very hard, than. This is a "black swan" thing, by the way. So here's why you are entirely wrong:

* thuisbezorgd.nl accepts Bitcoin. Has done that for years. You can order from any snackbar, febo, pizza-joint, sushi-bar and pay with Bitcoin. Literally thousands of places in Amsterdam.

* mollie.com has offered a bitcoin-payment option for all their merchants to enable for years. Many webshops in the netherlands have enabled this (I use at least three on a monthly basis) who will then accept bitcoin.

* At least two lodging/guesthouses in Amsterdam accept BTC to sleep there.

* At least 8 coffee-shops (the ones selling actual coffee) and restaurants accept it.

* A cinema (Filmhuis Cavia), a barber, a grocery-shop, a vegan restaurant, a lawyer (Plasman) and probaly many more.

So, there you are: you were wrong: You can spend your BTC just fine in the fysical world. Even in the city you live in.


his definition of success for bitcoin seems to be only if it supersedes USD in usage.


Oh I did look very hard. Thuisbezorgd.nl supports Bitcoin, that's not specific to Amsterdam Area though since it is nation-wide, and its a middleman not a local shop. So it isn't an argument for Amsterdam Area being a techhub for Bitcoin. Thuisbezorgd supporting Bitcoin payment is probably the flagship of Bitcoin support in The Netherlands and a solid example because it is basically the Dutch version of Uber Eats, and has a very strong market penetration in that field. Kudos for bringing it up.

Mollie, OTOH, is just a niche.

Now, let us discuss the amount of Thuisbezorgd transactions paid by means of Bitcoin. Paraphrasing their own words: "far less than 1%, and it hasn't increased over time" [1] (Nov 2017). They also convert the Bitcoin to EUR right away. That tells us something about the adoption of Bitcoin in the general public when your best example is this one. The elephant in the room is that paying with Bitcoin isn't feasible in this example due to the high transaction costs, and slow transaction speed.

Apart from Thuisbezorgd all of these examples are just that, exceptions and niches. They don't paint a Bitcoin paradise where one can spend their Bitcoins. If I take public transport, I gotta pay with EUR. If I pay for my OV Chipkaart (NFC) then I gotta put the money on the card via... EUR. There's no alternative to that. If I then go to IKEA and buy a bank, I gotta pay with EUR. If I then ask PostNL to deliver it, I gotta pay with, you guessed it, EUR. And if we'd go for a quickie at my fav fast food restaurant, Maoz, well they don't accept Bitcoins either.

Thuisbezorgd supports it (though I have no idea on the effect on delivery time, and transaction costs must be very high relative to the food. For one pizza that wouldn't be feasible) the rest is practically irrelevant.

Take this for example:

> At least two lodging/guesthouses in Amsterdam accept BTC to sleep there.

Two, woah! Blimey the free market provides us two options! Which ones? Wake me up when its market penetration is above 50%. Same can be said about your 8 (!!!) coffee-shops/restaurants. Look, it is a given that with so many stores (thousands) in such a small area, a few shops are going to adopt it. There were also shops who committed to the tulip mania back in the days, there are people in Amsterdam who work in MLM scheme, there are criminals as well, there's illegal prostitution, and there's Scientologists as well. That doesn't mean its a tech hub who adopted Bitcoin, doesn't mean the entire city is criminal, doesn't mean the entire city is full with illegal prostitution, nor that the entire city believes in Xenu.

A Bitcoin techhub or paradise would be a place where you can live your daily life by means of merely Bitcoins. We're not even remotely close to that in Amsterdam. I don't think it will ever happen. Although its in the interest of the Bitcoin facade to believe that, yes, Bitcoin can be easily used in the real world right now because you want to be able to cash out when the bubble busts (or right before that) your options are in practice severely limited. You cannot even remotely compare it to a strong currency like USD or EUR. Fuck me man, 8 cafetaria/restaurants to pick from in Amsterdam is seen as a techhub? A Pyrrhic victory, that's what that is.

> You can spend your BTC just fine in the fysical world.

Only at a very miniscule amount of stores. I wouldn't call this Amsterdam place "a techhub who adopted Bitcoin."

[1] https://www.ad.nl/economie/thuisbezorgd-nl-is-voorzichtig-me...


> Two, woah! Blimey the free market provides us two options!

You said there were "no options to pay in the phisical world".

I proved you wrong, because there are. Just one option would have proved you wrong, yet in reality there are far more than one. In Amsterdam alone.

And so your arguments start to move. Now it suddenly needs "a large adoption" and not a "niche" (mollie, btw is one of the largest, if not the largest PSP in the netherlands). And they shift from "no-where where I can pay" to "you can pay, but very few people actually do so".

You could also just admit that you were wrong because you were not aware that there is an actual community out there, even in your hometown, who accepts Bitcoin, pays with it and as such makes it an actual payment system. You could admit that you were not aware of this, but that now you are, you know that Bitcoin is used; just not in the way you envision it, or not by the people and companies that you would like to.

Also note that many people (I'm not aware that you did this!) mention that bitcoin is both a failure because no-one ever pays with it, yet also mention that it is a failure because the confirmation times are high and fees are growing; which is a direct effect of too much people using it.


> You said there were "no options to pay in the phisical world".

No, I said I didn't notice them in the physical world (and I still haven't, fwiw). Never seen any physical store say "we accept Bitcoin", never. I was clearly talking about my anecdata which is still, from my perspective, valid.

That has a different meaning than what you make out of it. I never wrote about the online world. You gave as example Thuisbezorgd; that's not the physical world. That's not a brick & mortar store. They're a virtual middleman service.

I avoid them btw, because I can get cheaper deals by cutting them out as middleman and giving a higher tip to the hard working delivery boy instead.

> (mollie, btw is one of the largest, if not the largest PSP in the netherlands)

Really, never heard of. I guess iDEAL and PayPal just went out of business. Good luck competing with iDEAL, btw.

> You could also just admit that you were wrong because you were not aware that there is an actual community out there, even in your hometown, who accepts Bitcoin, pays with it and as such makes it an actual payment system.

The existence of something doesn't describe its state or, in this case, adoption level. The adoption level (or market penetration) is very important in the subject of payment systems, but you prefer to ignore it and spout red herrings like this instead to pursue your character assasination agenda.

> You could admit that you were not aware of this, but that now you are, you know that Bitcoin is used; just not in the way you envision it, or not by the people and companies that you would like to.

I was aware Thuisbezorgd accepted Bitcoin. I was also aware that it wasn't being used much, as I quoted. That article was no news to me. The question whether its used or not is important in the discussion as put forth above. Is it used a lot? No, not really (far less than 1%). The question about transaction costs/time was also still up in the air. I guess you don't know the answer to that either.

> Also note that many people (I'm not aware that you did this!) mention that bitcoin is both a failure because no-one ever pays with it, yet also mention that it is a failure because the confirmation times are high and fees are growing; which is a direct effect of too much people using it.

My orig. point was it doesn't scale.

As for what you wrote here the fact transactions happen doesn't mean people are paying with Bitcoins in the physical world. It might as well be a bunch of astroturfers (the way Reddit came to existence), or a bunch of people buying drugs (the way Silkroad ran). You don't know.

But we do have a statement like the one from Thuisbezorgd.

Now I'd like to see a statement from a serious computer manufacturer like Apple or reseller like Media Markt or Bol.com stating they accept Bitcoin (all I read is businesses like Steam quitting accepting Bitcoin as payment method instead). Things like that are a sign of widespread adoption. What isn't a sign of widespread adoption: 8 bloody restaurants/pubs in the capital city (!!) accepting Bitcoin. That's a sign of a tiny, irrelevant niche.

PS: Oh, and with regards to the bubble, we didn't discuss Tether.


> Really, never heard of. I guess iDEAL and PayPal just went out of business. Good luck competing with iDEAL, btw.

https://www.mollie.com/nl/

They do the iDeal, Sofort, Creditcards, Bitcoin And so on, for some of the largest ecommerce platforms in the netherlands, as well as the majority of the small ecommerce shops. They are a PSP, which is very much a middleman, which is why you may not have heard of them.

Albert Heyn, Deliveroo, Douwe Egberts are just a few of the larger Dutch brands that use Mollie.

Note that not evey merchant using mollie will have Bitcoin enabled, I'm not sure if e.g. ah.nl has the bitcoin option enabled, but I haven't checked them either.

I'm leavin this discussion here. You come across as someone who has some axe to grind with Bitcoin. Which makes you appear angry, frustrated and shifty. There are places where you can spend your bitcoin. In Amsterdam. A lot. I've spent mine in some. There are places where you can spent your Bitcoin in my hometown, I've spent them there. I've seen stickers on doors, in both Amsterdam and Arnhem (And Barcelona, Berlin, Antwerp, Ghent). My wife and I were selling her stuff on several markets in Amsterdam (and festivals such as Lowlands), my wife has a "bitcoin accepted here" sign. You may not have seen it, but it was there. I know, because I was there. And you know what? People buy stuff with bitcoin from her. Very few, true, but they do.

But as soon as I point this out, it suddenly does not count as places to spend your bitcoin in the physical world because you haven't seen them yourselves, or because you decide that the volume processed there is too low. I'm out.


> They do the iDeal, Sofort, Creditcards, Bitcoin And so on, for some of the largest ecommerce platforms in the netherlands, as well as the majority of the small ecommerce shops. They are a PSP, which is very much a middleman, which is why you may not have heard of them.

Their entry on Wikipedia got deleted. That's how relevant they are. They're a BV with <= 50 people. MKB.

iDEAL/Currence is a PSP as well.

How important has Bitcoin been for Mollie? Do you have any data on the absolute or relative amount of Bitcoin transactions?

> Note that not evey merchant using mollie will have Bitcoin enabled, I'm not sure if e.g. ah.nl has the bitcoin option enabled, but I haven't checked them either.

??? Hello? Have you ever ordered on ah.nl??? I order there practically every week. You pay either in store if you pick it up, or you gotta pay by PIN if they deliver. You CANNOT pay online. Do you get that? They got barely time to deliver the groceries in your house. Do you think they'd be cool to wait till the Bitcoin transaction was finalised? Who are you kidding?!?!?!

> You come across as someone who has some axe to grind with Bitcoin.

Of course I do, its akin to MLM. I already burned my hands on that. Why would I want other people to get burned by scammers?

> or because you decide that the volume processed there is too low

You never refuted the volume being important premise. You had the opportunity to do this in your previous 2 posts but you neglected that by coming up with more niche examples which simply don't prove the existence of a Bitcoin techhub as you put forth in your earlier post. I know there are niche examples, and I know you're well aware of them. Here, have a cookie. What I'm interested in is figuring out how important Bitcoin is for the Amsterdam Area. From what I can tell by the data I have we have:

* Adoption (market penetration). Terrible. Only a few niche cases.

* Volume. Terrible. One data point from Thuisbezorgd, one data point from yourself.

And this isn't rocket science its reflected by the lack of large online stores accepting Bitcoin. Its reflected by the high transaction fees, and slow transaction speed. You say that's a sign of Bitcoin being used for legit transactions in the physical world. Where's the proof for that? Nothing we observe points to that. Might as well be bots to ensure people cannot and do not cash out their Bitcoins. All you've proven is that there are quite some niches which reluctantly accept Bitcoin, and very few data on volume. The rest is all red herring & ad hominem.


Not sure why this is getting down voted. It's true- Ethereum is still based on PoW, and hasn't started the transition to PoS (Casper's FFG is still in dev).


Why are you wasting people’s time in the comments on a technical article with your strident political opinions? This comment has nothing to do with the article.


> Again, let’s design a simple smart contract. This time Alice wants to play a guessing game. Alice puts 5 Ether in her contract. That ETH goes to the person that guesses closest to the number she’s thinking of. Alice calls commit with the hash of the number, so she can’t change her mind. Anyone else can call guess to submit a guess. After 2 blocks Alice calls reveal to tell everyone what the number is.

This scheme is not unsafe because of miners. Transactions are public. As soon as Alice’s “reveal” message is published to the network, everyone can submit guesses using the revealed number. And miners are incentivized to include whichever transaction pays the highest fee, which means the transaction fee of the guessing transactions published after the “reveal” transaction will converge with the prize sum.

Alice’s commit transaction needs to specify some block height after which further guesses are ignored, and then publish the “reveal” message some (safe) number of blocks after this.


Full disclosure: tech lead on Keep (the project whose blog this is posted to), and the post is by one of our advisors.

You're right that this particular example has other downsides. The goal was to present the simplest examples of some attacks and issues that are easy to miss when doing blockchain programming. As I mentioned in another comment (https://news.ycombinator.com/item?id=16144892), the important thing is that, as a developer for a given chain, you need to be aware of the pitfalls of your chain (keeping in mind some apply across chains) so you can design around them. That includes the pitfall you described---everything is public, and that introduces some careful decisions that need to be made when building smart contracts. That one is pretty widely discussed; on the other hand, we hadn't seen any other content with a basic introduction to the pitfalls around miner misbehavior, so we felt James's post was super valuable.

I think a key piece of it is the last paragraph:

> Miners aren’t your friends or enemies — they’re a force of nature in our consensus systems. Systems that fail to plan around this will eventually lose out to clever miners.

We've built many systems today that fail to take into account the dangers of ignoring security, and we're starting to pay the price. Public blockchain apps will need to be careful to have a decent understanding of the threats, especially since many of these threats have the potential to be even more directly tied to money than security issues in current systems. The more important (you consider) your system, the more important it is that your threat model include entities that are required for your system to function, like miners.


So in the same way a competent web programmer understands CSRF and XSS, a competent backend programmer understands SQL injection, and a competent node programmer understands concurrency vs. parallelism, there's a whole new set of paradigms (and interview questions!) that competent blockchain programmers will need to know.

The is-blockchain-hype-or-here-to-stay debate will unambiguously be settled if OWASP ever publishes a top-10 blockchain programming list.


> ...there's a whole new set of paradigms (and interview questions!) that competent blockchain programmers will need to know.

Yes, "paradigms" in the sense that broken bones and multiresistent germ infections are technically both "injuries" and can be fixed by "healing".

I think securing code against random accidents or even against specific, well-known vulnerabilities is something entirely different than writing a program for a processor that actively works against you.

We're realizing this right now in the context of adversarial code with Meltdown/Spectre and Rowhammer. I think this is a similar but even worse situation.


> Alice’s commit transaction needs to specify some block height after which further guesses are ignored, and then publish the “reveal” message some (safe) number of blocks after this.

I think this is unsafe as well. Noted that since everyone can verify the real answer, there is no point for Alice to reveal it. As a result, as soon as anyone submits the correct answer, the miners can cheat and replace the answer as their own.

After some degree of thinking, I find that it is quite difficult to design a secure smart contract such guessing game. I haven’t find a way can fulfill all following security properties: (a) the Alice has to pay for the first person who finds the correct answer; (b) that person can only collect reward after showing the the correct answer; and (c) the miner cannot cheat.

I wonder if anyone has a solution for the above problem. Also, if such solution exists, we can actually use it to implement the RSA challenge [1] in smart contract.

[1]: https://en.wikipedia.org/wiki/RSA_Factoring_Challenge


One solution is to formulate the contract so that guessers submit a hash of (guess, nonce). The contract records each submission. A few blocks after the submission deadline, Alice reveals the correct answer. Then submitters of correct guesses send another message to the contract with their nonce. The contract gives the reward to the person who submitted a correct guess the earliest.


You can solve that with additional step: 1. Alice send the challenge. 2. You submit the answered, encrypted. 3. After you verify that your answer was included in a block, you post the private key you used for the encrypted answer. 4. Profit


I think the miner can cheat in step 3. After you submit your private key as a transaction, the miner can delay it to be included in the blockchain for arbitrary time. During which, the miner can use your private key to decrypt your answer submit in step 2. And resubmit their version of the answer.


That won't help him much, since my answer is already published in the blockchain when he will publish his answer.It is trivial to see that my answer was published first.


If the commitment uses a salt, it won’t be possible for anyone to verify guesses before Alice publishes the reveal message (which would include the salt).

In any case, the blog post has Alice rewarding whoever comes closest, not whoever guesses the exact value. For a sufficiently large range of numbers (e.g. 128 bits), you wouldn’t really need a salt since the probability of anyone guessing the exact value would be negligible.


In other words, blockchain programming isn't trivial, and you have to translate your intentions into the contract with blockchain concepts in mind.


> blockchain programming isn't trivial

This surely is a very bad thing. I'm not saying programming smart contracts should be trivial. Or maybe I am.

I guess the thing is - for Ethereum to have any chance of surviving it needs to be simple to write simple contracts. Easy things should be easy and hard things should be possible. And footguns should be removed from the language...


blockchain programming isn't trivial

This is an understatement, and belies the more appropriate: blockchain programming is dangerous.

Proceed with extreme caution.


Hey, author here. Yeah, several of the example contracts are insecure in other ways. Or just plain bad ideas. I decided against providing implementations because I was worried people wouldn't understand that.


> And miners are incentivized to include whichever transaction pays the highest fee, which means the transaction fee of the guessing transactions published after the “reveal” transaction will converge with the prize sum.

Except the miner can simply include the transactions but add its own guess before all of them - so the miner would collect the fees and the guessing game prize.


IT's capitalism in its purest form. The work done is work n the physical sense of production, but from a labor perspective it ends up as a constant rote of attrition and self negation - people gt interested in coins to make a quick buck and take it easy, but either drop or spend all their time, energy, and money racing for a slice of the pie while producing little of value - in this case, trust tokens which may or may not turn out to be valuable later. The rewards always go to people who were there early and had excess capital to spend on buying, or could mine easy pickings and then let someone else take over the grind.

Oddly the mining analogy reminds me most of Eve Online, which has a professionally tuned in-game economy and where you basically have a graphic representation of everything mentioned in the article, including the tedium and energy of mining, the endless technological arms race (designed to make you invest as much time as possible or buy credits to leapfrog other players), and pointless destruction of wealth - intra-player conflict is where most of the action and excitement is because the exploratory aspect of the game is only as interesting as it yields new technology that gets recycled back into the arms race.

Perhaps the solution is a medium of exchange that doesn't use absolute units, but is a function of your ability to pay.


> a medium of exchange that doesn't use absolute units, but is a function of your ability to pay.

This is already implemented in many areas of modern life, especially by governments (Obamacare, progressive taxation, social security, etc), and it has a major negative side effect of incentivizing poverty: either real (by encouraging the young to work as little as possible) or faked (by encouraging those with accumulated wealth to conceal it as much as possible).


yes, if we take away the "he who does not work, neither shall he eat" incentive[1] people will work less. Is that good or bad? depending on your ideology, it could be either one. Do you think that it's ethical to threaten the poorest with starvation to add a few points to our gdp?

My own personal view is that using starvation to incent work is acceptable only if society is unable to produce enough food for everyone; in that case, those few points to the GDP have real impact. I personally don't feel that it's okay to use starvation to incent work when that work largely produces luxuries, but that's just me, and everyone has an opinion on this one.

[1]Interestingly, historically this aphorism has been a leftist saying... that is, the rich should have to work, too. Leaving aside my controversial views of the bible, in more recent history, John Smith used it to this meaning in Jamestown, and then in the early 20th century, Lenin argued that it was a fundamental principle necessary for socialism to work. Both were talking about situations were people were starving (the early days of Jamestown and the early days of the Russian revolution, respectively) More recently, it's used as a rightest saying, arguing that the poor ought to work or starve, something that was the assumed truth in earlier ages.


> I personally don't feel that it's okay to use starvation to incent work

I think most people would agree with you on that one. And the fact that people in "rich" countries are still food-insecure is horrible.

One problem is that there isn't a clear bright line between "starvation" (in the sense of malnutrition) and "nutritious but not very tasty food" and "nutritious and tasty but not very pretty food". And you can keep going in that vein to things like "not having a flat-screen tv", say, which I think most people would classify as quite different from "starvation". But there isn't an obvious cutoff point on the way.

Oh, and what we consider sufficiently nutritious today may not be so considered tomorrow. Both literally (at some point nutrition science discovered vitamins and then trace minerals, etc), but people nowadays also get into arguments about whether internet access is a fundamental right like food or a luxury. And whether personal transportation (e.g. cars) is a fundamental right. What will people think about access to a self-driving car 50 years from now: luxury or fundamental right?

In practice, what we consider below-acceptable standards of living (which we as a society need to subsidize until they reach acceptable levels) are a good bit higher than what was considered totally acceptable 50 years ago. That's a natural consequence of society growing richer, of course and I would say it's a _good_ thing.

But here's the question that bothers me: Had we frozen per-capita production at 50 years ago levels, while subsidizing living standards to a level above the 50-years-ago acceptable minimum but below the today acceptable minimum, such that vast numbers of people today would be forced to live below what we consider an acceptable living standard today, would that be a net gain? In the short term, clearly yes (we subsidized people at a higher level). In the medium term (to today), it seems clear to me the answer is no. In the longer term (200 years from now, say), I have no idea.

It's hard to tell even post facto, much less a priori, whether we're over-subsidizing or under-subsidizing to achieve maximal happiness. And that's even if we can all agree on a timeframe. Combine that with the fact that different people already have different definitions of what constitutes minimum acceptable living standards, and it becomes very hard to apply ethical considerations to this problem in a principled way. :(


The rewards go to the people who took on the most risk (i.e. the creators, and then the early investors). If Ether didn't have speculative value then the project would not have proceeded.


>Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference.

Except that ethereum is lying when they say this. The DAO contract was nullified and censored. The Ethereum Foundation and the DAO team were bailed out and had preferential treatment.


And how was the contract nullified exactly?


It was replaced with a new contract via a hard fork. Doing so was the right move, by far, but purists loathe the move.


I was partially being facetious :) But you said it precisely, it was via a hard fork, which was agreed upon in a democratic fashion. The person I was replying to was suggesting that transactions were simply revoked from Ethereum-HQ, which is far from the case.


The title of the piece is "Miners aren't your friends", implying that the interests of miners and the reader differ. However, the title of the HN submission is "Miners aren't friends", which implies that the interests of two separate miners diverge.

We should probably change the title to match the original one.


Agreed, I was frustrated at that too.


Nice article! Here's another type of failure with its solution:

* You want to register a domain name on the blockchain and associate it with your address, so you submit "register foo".

* The miner sees it, and inserts an earlier transaction registering foo to them instead.

Solution:

* You register the hash of foo, which registers the plaintext encoded by that hash, then wait until the transaction is accepted publicly and submit a second transaction that reveals to everyone the plaintext of the hash that you registered.

The miner could still try to guess at which name you're registering based on the hash (by having a long list of potential names to hash just in time), but I can't think of a way to do better than that. Anyone else?


You register the hash of domain+seed. Second transaction reveals both.


Couldn't someone else then simultaneously register the hash of the same domain with a different seed? Neither of you would know of the duplicate until you revealed your seeds.


What's the chances of simultaneous transactions? (That's a question, not a snarky statement).


There aren't any. That's what the article was about: The order of the transactions in a block.


Sorry I shouldn't perhaps have said transactions - the parent asks what to do with simultaneous requests for to reserve a unique unduplicable good, it was the simultaneity of identical requests I was asking about rather than the impossible simultaneity of processing the blockchain transactions.


Sure. Register encrypted domain name and a one-time public key. Next block, reveal private key.


This is similar to the rainbow table attack on password hashes. The defense against that is to use a (public) salt when computing the hash. Maybe something similar will work here, though I'm not clear about the details of your notion of "just in time" hashing. The salt just prevents precomputation of hashes.


It would be better for the salt to be private (and revealed at the same time as the name), otherwise a miner could still try to guess at the name being reserved. Having a public salt only eliminates the possibility of precomputing many hashes, i.e. rainbow tables.


I'm not sure about the idea that a miner could guess -- the point of a cryptographic hash is to make that impractical. We're not talking about CRC32 here. If there was discussion out there about protocols that involve keeping salts private I could be persuaded that it's a valid idea.


Almost all miners use a mining pool so wouldn't have access to these tricks. The pools on the other hand...

I used to have an Ethereum mining operation, before it became unprofitable to do so. It was one of the most fun ventures of my life. All the cards and enormous heat and fans exchanging outside air in. It felt like I was part of something futuristic and new, solving problems I had never had experience with before. I miss it very much, I wish it could have gone on forever.


If you have modern cards you can still mine with one of the services that find the most profitable algorithm for you.

I use NiceHash and have historically made about $2/day per GTX1070. This past month though I've been making more that double that.

EDIT: Use this site to find out if your cards will be profitable considering your energy costs: https://www.nicehash.com/profitability-calculator

I do want to leave one important caveat. NiceHash was recently hacked and anyone who left their money in their online NiceHash wallest lost it. They recently came back online and claimed they have a plan for paying people back and will give more details at the end of this month. That being said they have paid me for my mining since the hack. If you do use them I'd recommend withdrawing to wallets you control as often as possible.


I don't understand the economic argument for personal mining (I totally get it from a fun, geeky PoV if making money isn't the primary goal - it's how I got started in crypto).

A GTX1070 costs about $800. At $4/day, it will take you 200 days to make back your principle (ignoring power costs, difficulty scores going up etc. - in reality it will obviously take you even longer to cover your costs).

If you had put that same $800 in to buying ETH (picked because it's a relatively safe, "boring" coin) on 1st July, 200 days later (or 7 months) it would have been worth $2,140 (yielding a $1,340 profit per card equivalent cost invested - note I'm using ETH price on 1st Jan 2018 and not including the recent growth to a new all time high). And the profit will likely x5 (or more) this year if you hold on to your ETH.


Don't forget that graphics card can still have value outside of pure mining.

A couple years ago I dabbled in mining. I got a top end card that would mine transactions for 16+ hours a day. When I actually wanted to use my computer, I'd flip mining off for a couple of hours and do whatever I needed.

I got to game with ultra graphics, have a PC for school work, and do some mining.


That's fine and makes sense to me. It's more the people that cram 8 cards in to their machine and mine 24/7 that I have a hard time understanding.


£6 per card per day (1080ti) is quite appealing. 60p electricity costs.

£48 per day minus £4.80 costs. Every day? For just leaving something switched on? It is quite appealing.

I got my 1080ti's for £650 a pop. ROI is 108 days. That's why people, myself included, are doing it.


I still don't get it :( That's 108 days before you _start_ to make a profit and future returns are guaranteed to diminish as difficulty goes up.

Versus £5,200 capital to invest immediately in a basket of safe (as much as crypto currencies can be), liquid coins that will likely x3 to x8 over a 12 month period.

To each their own I guess but it's not the bet for me.


In the "invest in ETH" example, you're taking the appreciation of ETH into account, but in the case of mining crypto, you're ignoring it. Still, you're right in the overall point that just investing is more profitable. If you are going to gain value from the GPU, though, mining is a great way to make some extra cash.


Sorry, I just assumed ETH was out of reach of personal mining now.

Sure, you could hold "shitcoins" that are currently easier to mine but that's a lot more risky than long term holding something like ETH, LTC, XMR (at least I think it is anyway).


Pretty much any coin that you mine could be exchanged into the coin that you would prefer to hold for the appreciation.

So: * Mine whatever is most profitable to mine at that time. * On mining that coin, convert to whichever investment vehicle gives you the risk/return that you want (BTC, ETH, XLM, VFIFX, US T-bonds, etc).


It takes 3 months to make all of your initial investment back on mining ETH with a 1060, after electricity.


That's actually better than I would have imagined. What's the difficulty growth like with ETH these days? Or, what's a safe estimation of how many ETH a 1060 could mine before Casper lands?


3 months is longer than 108 days ;)

I don't mine ETH directly with Nvidia hardware though it is still profitable on AMD gear. I use whattomine.com to get a rough estimate of my daily earnings...

I mine to a pool called miningpoolhub which auto exchanges my shitcoins to LTC (or whatever I choose). From there I send to Coinbase -> GDAX -> Sell for ETH or FIAT. So far, since starting mining 1 month ago I have ROI'd 1.8 1080ti's already. Once they've paid themselves off the rest is pure profit and the best part, GPUs have intrinsic value beyond mining.

Also as per other commentors - coins I mined will appreciate too. If I buy ETH with FIAT (which I have also done btw) I am literally buying thin air. At least with GPUs I own a thing if the shit hits the proverbial!

- whattomine.com - https://goo.gl/94KHv4

- https://simplemining.net/

- https://miningpoolhub.com


> 3 months is longer than 108 days ;)

Following the Gregorian calendar (international defacto standard) this statement is always false, never true.

There's no way all these coins are going to be accepted currencies (literally none are, not even Bitcoin). There's no way all these coins will retain long-term value either.

Anyone who joins in on the mining is doing two things: 1) joining in on the pyramid schemes (on which you as miner and cryptocurrency owner depend) 2) adding to more electricity waste.

As for GPUs. Once the shit hits the fan their price will freefall. If their price falls now, they're pretty much worthless. More so because many of them will be abused. GPUs aren't made to be used 24/7. But yeah, you can play games on all your 1080s...


If the whole crypto ecosystem crashes (unlikely in my opinion) graphics cards can be resold and recoup losses.


Not sure this holds either. With such a black swan event, there would be a glut of second hand graphics cards on ebay etc.

Seems safer to me (if you're worried about a huge crash) to leave your principle investment equivalent amount on a good exchange with fiat support (e.g. Bitstamp) setup a sensible stop loss order and then, as soon as you've x2 your original investment, pull your initial stake out and leave the rest in crypto (on a Nano Ledger S or similar).


I think people are going to be increasingly wary of second hand graphics cards. How many of them will have been trashed by running in a poorly-cooled mining rig for months on end?


What could cause such an event? Would coinbase going insolvent cause everything to crash beyond repair?

What if satoshi appeared and dumped his entire stake? That is probably the worst case scenario I can think of.


Bug in crypto where every private key is revealed? Not likely, just saying.


108 days and afterwards you make $1,500 income per month and you could travel the world and never have to work again if you don't want to?

Sounds like a pretty good deal.

What you didn't take into you account as well was the fact that this is $3,000 if Ethereum doubles in price, $4,500 if it tripes like you specified.


That income is not coming from mining Ethereum and, as time goes on, the amount of any coin you can mine diminishes (sometimes rapidly).

The only way to avoid diminishing mining returns as difficulty increases is to swap to a new, lesser known coin. Eventually you run out of coins to swap to or the ones you are mining don't go up in value (because if they did, bigger miners would come in and knock you out of the game as the difficulty shoots up). All the time your GPUs are ageing too.

If you want a steady income with arguably a lesser risk profile and more staying power than personal mining offers, why not put some money in to coins that offer node payouts?


If you want a steady income with arguably a lesser risk profile why not simply invest in low risk stock market?

There's no way all these coins [1] retain proper value compared to NASDAQ [2]. Take AAPL for example: ~48% [3] in one year. GOOGL for example: ~36% [4] on one year.

[1] https://whattomine.com/calculators

[2] http://money.cnn.com/data/hotstocks/index.html

[3] http://money.cnn.com/quote/quote.html?symb=AAPL

[4] http://money.cnn.com/quote/quote.html?symb=GOOGL


It isn't really hard to mine profitably, you can look up which ones are profitable and choose out of over 1,000 coins, of which 100 are already above market cap of $500M, so that's not the bootleneck.


Yeah but you're forever capped at meager returns.

As soon as a coin's value increases, more mining hash power enters the scene and difficulty shoots up (ruining your profit margin). You then swap to another coin, eventually the same thing happens. Rinse, repeat.

During all of this, you still have to make back your initial investment on the GPUs and power, then you have usually another 6-9 months max before your entire rig is too outdated and you have to start again buying newer, faster cards (which will then take you another 3-5 months just to earn back your cost).

Just seems a very painful and slow way to cash in on the crypto bonanza (which isn't going to last forever).


> £6 per card

which cryptocurrency is this? I'm only getting <£3/day mining ETH on my 1080ti..


I am using simplemining os to mine ALT coins (mostly equihash based) to miningpoolhub which auto exchanges to LTC for me. From there I send to coinbase -> gdax -> trade for either GBP or ETH depending on my mood!


If you're buying stuff on darknet markets it's nice to be able to do it with freshly mined coins that don't have transaction histories associated with them.


This would only apply to solo-mined block rewards. If you use a mining pool, there is a coin trail through the pool. The pool likely has the IP address records of your miners and can link these to your payout transaction.

Mined coin is only just a little less traceable than exchange purchased coin.


Or use Monero which doesn't have transaction histories associated with it.


Why does it matter? Once you do the transfer, why would anyone refuse to send you the goods? It's not like they can reverse the transaction - only send back the equivalent amount in the best case.


Haha, hadn't thought of that :) This reason makes sense to me.


Buying and holding an asset requires that you accept the risk that the value could fall. Miners can profit while minimizing their risk exposure by selling whatever they mine immediately.


>by selling whatever they mine immediately.

In this market that just seems like the equivalent of burning your money in the street.


Its simple: The risk taken is completely different! Mining is a much lower risk that yields less benefits.


I'm not sure I agree. Depending on what you're mining and when you start, you may never make your costs back.

If anything, at this point (especially with more and more new coins adopting PoS rather than PoW) I'd say it's more risky than just buying a stable coin (ETH, BTC, LTC etc) and sitting on it for a year (and that's before factoring in the risk of lost potential earnings had you simply bought rather than mined or that your mining pool gets hacked).


I would argue mining is much lower risk but has much lower potential for reward.

After paying off the card (<=4 months of mining) all earnings from mining can be converted to USD for example on a monthly basis. The odds of even 1/10th of major coins switching to PoS in the near future is very low.

I completely agree that just owning coins has way more upside and I suspect you'll do very well! But I prefer the asymetrical mining returns - I have lots of upside and almost zero downside versus extreme upside and extreme downside (crash in coin prices, hacks, regulation, etc.) from owning coins. But to each their own!


Most people mine ETH, though.

So your options there are to either buy ETH on the market, or invest in a miner that will pay itself off in 3 months with ETH, then just provide pure profit for as long as it's, well, profitable.


> A GTX1070 costs about $800.

Where on earth are you getting that statistic? Newegg sells GTX 1070 ti's for ~500 when they are in stock. Same with bhphotovideo.

Depending on what coin you mine you can net $8-10 dollars a day - then exchange it to ETH/LTC/XMR/etc.

Also factoring in the growth rate of the exchanged currency the ROI on that is less than 3 months.


>Where on earth are you getting that statistic?

I just stuck "GTX1070" in Amazon and that's the rough price that came up.


GPUs are on backorder almost everywhere. So suppliers that still have them are all at 2-3x the price. When they are in stock they are ~$500.


How much money did you lose from the NiceHash 'hack' ? And are you still trusting them?


I lost about $20 in the hack. They claim they have a plan to pay me back, but we will see. Like I mentioned above they have paid me for my mining since the hack so I trust them enough. I would probably switch to a new service if there was one as easy to use as nicehash.


Are you mining independently? Or as part of a pool?


I use the nicehash pool


Care to share some insights into the economics of running it and how it became unprofitable?


The economics are simple - how much power do you use vs how much money you make per unit time. As a miner you're banking on the increase in difficulty correlating with an increase in price. Ethereum mining difficulty plummeted back in October, flatlined for a bit, and has been slowly on the rise since December.

There is limited resale value in the cards (depreciation etc), but even after PoS hits there will be enough mineable things that selling them off wouldn't be necessary. Love or hate it, you could use a service like Nicehash.

It becomes unprofitable if the difficulty spikes, but not the value, so your hardware takes a long time to mine little. Often this happens between new technology generations, like when ASIC miners made GPU miners unusable for Bitcoin.

Right now Ethereum is still quite profitable to mine. I have a bunch of GTX1060's with a combined hashrate of 100MH/s running on an EthOS system. That's enough to earn between 0.35-0.4 ETH a month at the moment. The power usage is around 300W with some twiddling - around £25-30 per month.

You also have to consider speculative value of the coin. Suppose you were mining 1ETH a month back in January '17. Your monthly payout (about $30) would have barely covered electricity, but now 1ETH a month is practically a minimum wage salary. You need to be honest with yourself why you're doing it - are you making money to spend today or are you holding?


I just exited when the calculator at mycryptobuddy.com (which calculates in difficulty increases) indicated that profitability would be miniscule and not much over electricity costs very soon. It cannot account for price increases in Ethereum, but if you are using that to stay profitable it is almost always better to invest in the coins themselves. I sold all my gear and cards while their price was high and invested all the money into cryptocurrency. The gamble has paid off handsomely, I make more from crypto investing than from my job now. It has allowed me access to things I never could have dreamed of, but I still miss walking in my Ethereum mine and feeling the over 100 deg. temps and the instant sweat and all the noise. I miss all the network cables and blinking lights and thinking about the new network I was helping to secure. Trading and investing can't hold a candle to it, but the money is better.


>"In this way, Proof of Work forces miners to constantly re-invest revenue." (the OP) //

Classic capitalist view. It's not that miners are forced to reinvest, if all miners were satisfied with the status quo then it could continue and each miner would get the same returns - depending on the structure of the system, greater demand could even drive hash value up.

But miners aren't satisfied, they want more, and new miners want a go at picking from the money tree. So the available pickings get higher up (require more resource expenditure). In theory, and often practically, it drives optimisation. Ultimately the return should be so low as to match safe investment returns.

It seems it should be possibly to design a system such the the coin holders can effectively own the means of hash production, which would keep value in the system.


> Classic capitalist view

I would consider myself center-left and I think you're confusing "capitalism" with "realism".

Any political system that requires altruism towards strangers is doomed. Altruism grows out of community - and requires consequences for "bad" behaviour to some degree. Tragedy of the Commons and all that.


Capitalism demands constant growth. His usage fits perfectly. Center-left means you are a capitalism supporter and makes no difference. Claiming the capitalist mode of production is "realism" is really you trying to say capitalism is natural.


Before I answer that, could you clarify your definition of "capitalism"?

(Genuine question)


I phrase this as "incentive alignment". Every stable system aligns incentives with its continuation.


Some of these issues do seem concerning, but most wouldn't be profitable unless every miner was doing it (because the impact on one of these malicious behaviors will be felt in a later block).

Unless you're lucky enough to mine two blocks in a row, I don't see how you can gain directly from malicious transaction reordering. You'll consume the first retrieve fee, but the second retrieve will be in a later block (which you probably won't mine).

I'm not saying this is ok, but I'm also not sure this particular situation is worth the effort to exercise.

Transaction insertion, however, sounds like it would be very effective for the case presented. On the other hand, how big a deal are "guessing game" dapps?

You can sum all this up by saying, "consolidation of mining power can be used to exploit the network at the cost of non-miners". But consolidation is a problem for reasons beyond just these examples.

Finally, if a network becomes so corrupt, people will move to a different cryptocurrency (which will lower the value of the corrupt network). Thus, the bad actors would be taking small short term gains at their own cost of long term survival (especially when considering sunk costs in hardware).


Full disclosure: tech lead on Keep (the project whose blog this is posted to), and the post is by one of our advisors.

It might not be worth the effort when volume is low, but if you have a highly-used set of contracts susceptible to this, there will be a stronger incentive to take advantage of them. With high volume, if you do it only occasionally, you can gain an edge without necessarily revealing network corruption (unless someone is looking for it). Additionally, this kind of careful misbehavior can lead to consolidation---by allowing some clever miners to gain enough of an advantage to continually grow their operation.

Note also that only the most basic transaction reordering gains solely from transaction fees. Transaction insertion requires no further blocks, and forced errors can be used to subsidize miner transactions (rather than simply to gain later on). Lastly, censorship has more than economic advantages, depending on the underlying application.

If the whole network becomes corrupt, people will move; however, there's a lot of room between "enough malicious transactions to cause a problem" and "network is so corrupt people are leaving", particularly if a chain is popular. Indeed, if a chain is popular, "just leaving" is not necessarily an immediate option. The important thing is that, as a developer for a given chain, you want to make sure you're aware of these pitfalls (whichever ones apply to your chain---many will apply across many chains) so you can design around them. More than many platforms, building for public chains require adversarial thinking. Or perhaps better put, they should require adversarial thinking. It's easy to forget that when you're getting started.

This is even more true when you're building components that you intend others to build on, which is what we're doing. That's what motivates the interest we have on our team in these kinds of concerns. We feel they're important to share as development on public blockchains gains greater visibility, interest, and therefore new developers.


> and forced errors can be used to subsidize miner transactions

Sure, you can error out a transaction but what gain is to be had over just being a 'rational actor' and collecting the transaction fee rather than giving your rivals a potential payday?

Unless they have an extremely high probability of mining the follow-on transactions this attack seems to have a very low (or even negative) benefit.

Though I would posit that if this attack were ever consistently profitable the system would have a much bigger problem to deal with.


Hi, author here. Look for part two for examples of how these attacks can siphon value from deployed contracts :)


Miners are surely not gamers’ friends. All high end cards have been sold out for weeks. They are now completely overpriced ($1300 for a GTX 1080 Ti).


By that same token, they're not other miners' friends, either. I own three 1070s and a 1060 which I purchased primarily for mining[0] but also because other things I do benefit from the added compute capability. I purchased the first 1070 for less than $350 right after release. I can't find them for less than $400, now.

The funny thing about that is I'm funding my other needs for graphics cards[1] by mining. I wouldn't say I've "paid" $400 for any of them past the first one since all of the others have been funded with mining profits. And I probably wouldn't own three graphics cards were it not for mining.

At some point, I firmly believe, the bubble will pop on all of this and those cards will come back down to earth (I've been saying this for over 4 years, though, and have been wrong for at least that long). Until then, mining to buy video cards is always an option. :)

[0] Mining is kind of a secondary reason. The primary reason is that I wanted to learn CUDA and I know myself well enough to know that if I don't have a project in mind, I will never take the time to learn it, so I set about optimizing an existing CUDA mining implementation and set about learning it successfully.

[1] I play computer games pretty rarely, but I like to fuss around with modeling programs and having a few of these really speeds up rendering in programs that support IRAY. I'm using it for playing with ML code, as well, which wasn't enough of a project to get me interested in learning CUDA, but is enough to keep me interested now that I know the language a bit.


Are people now moving on to nvidia cards for mining? I haven't followed closely for several years, but back in the day, it was all about AMD because nVidia's chips were much less efficient at this type of work.

If nvidia is now in demand for mining, are people going for that because AMD is nowhere to be found and they're just going for the next-best thing, or has nvidia gotten better at this?


The latter. Less efficient, but in the current market still pennies on the dollar as far as nVidia efficiency goes.


They are, on the second hand market.


So many false assumptions in this post. As if only 1 miner is trying to mine a block. There is simply no way to know whether you or someone else is going to mine that specific block, it's totally random.

> There are two ways to increase mining profitability: generate more revenue, or reduce expenses.

No. There are more ways. Mining the right coin at the right time and selling it at the right time for example.

Mining has a lot of common ground with investing in the stock market. It's not that simple.


It seems like a lot of these problems are due specifically to using proof of work. Do any of these problems go away with other consensus algorithms? I would at least expect that miners wouldn't have as much incentive to arbitrarily cause errors if they were using something like proof of stake.

Also, how easy is it to detect that miners are doing these things? If it's not terribly difficult, then maybe a federated system would iron out some of the wrinkles?


They do! But usually they get shifted elsewhere. While he was working on this post James and I discussed how PoS might yield stronger incentives to DoS rivals and get an advantage, since some of these other optimizations (attacks? Unclear) will be unavailable.

Edit: Regarding detection, of course- but I'm not sure detection lends itself to a general solution outside name-and-shame. Most of these are things developers should code defensively against.

Disclosure: lead at Keep, edited this piece


Hello, author here. I haven't put a lot of thought into this yet, but my first guess is that this could become more of a problem with staking. Stakers still need to optimize, but all the easy ways are gone. Can't build better ASICs for staking.

Detection is hard. Like with selfish mining, it looks just like normal network operation in most cases. Most obvious mitigations don't work well either. E.g. we could try to establish canonical tx ordering in the tx pool. But then we would have to come to consensus about what the txpool is. Which is a bit of a chicken/egg problem.


Can any explain how the economics of mining does not promote the creation of a miner monopoly, aka a "miner Amazon". Once a single entity controls mining, Game Over: the economy is owned.


You are answering your own question. Suppose someone would invest billions in obtaining a mining rig that single handedly achieves 51% of the mining power of the network, then he effectively kills that network, and makes his investment worthless.

There's a reason the valuations of Bitcoin and Ether waiver every time it seems a pool is coming close to 51% mining power, it's because everyone is scared of what happens when that happens.

In the real world, I think miners approaching 51% of mining power is an accidental and temporary thing. It means that the coin is overvalued, and investors are over investing in mining operations. As the article states, the amount of profit these operations turn really isn't that big. They're operating on thin margins, and operations going bankrupt is not unheard of.

There's simply no reason to go and "own" the network. Best case, you'll turn a loss, worst case, you destroy the network and lose your entire investment.


If you can keep your majority a secret, you can avoid the devaluing scenarios. The trick is to use the majority only when you need to, and to avoid detection.


Suppose someone would invest billions in obtaining a mining rig that single handedly achieves 20%, or 30% or whatever% of the mining power of the network, then they effectively use that advantage to achieve manipulation of the network or manipulation of the economy via their monopoly/large-entity level oversight of the economy. As you point out, there is no incentive to kill the network, but quite a bit of incentive to manipulate the network. Via modern corporate shells, no doubt people/groups are already trying to achieve this, they do in any market.


Isn't that incentive enough for any entity to deliberately stay below the threshold? Once they cross it, trust in the network, and thus price, plummets. That's reason enough for most to avoid getting that big.


How would you know though? IP addresses can be concealed by VPNs.


Anyone with compatible equipment can mine on the network; no permission needed.


Anyone who owns 99% of compute capacity can distribute a patch to the "distributed" network forbidding blocks mined by "unauthorized" or "unofficial" clients, and since that person's 99% of the compute power constitutes a majority, newcomers are effectively locked out.

Blockchain's dependency on distributed computation remaining democratic with a diverse range of self-interests is axiomatic to the model.


Another instance of this is if you managed to build a business around a particularly profitable contract or set of contracts, the nature of which requires you to regularly post maintenance transactions of some sort.

If you get big enough and profitable enough, the miners will have an incentive to specifically refuse to include your maintenance transactions unless you include a large transaction fee - in other words, market segmentation for transactions.


As someone who has a couple rigs mining 24/7 I would say he’s looking at the profitability of mining wrong. Personally I don't reinvest my mining profits in more mining equipment. There's a hard cap on how much amperage can be delivered to my house, and I have no interest in interfering with my daily appliances.

As far as when does it becomes profitable to play games with consensus? Never. Most miners mine using pools like suprnova, ethermine, and nanopool. I don't have control over whether we are appropriately confirming transactions or not, but it would be pretty unwise for my pool to start violating consensus.


To my limited understanding of Ethereum and Bitcoin, the network already has rules in place to punish nodes that misbehave or cheat. In the case of Bitcoin, that is part of layer 1 so it is independent of any application layers and thus it should always be at the core of the network.

With PoS cheating is likely to become a bigger issue [1], since with PoW the miners who get punished will have wasted their time and electricity.

Would be great to hear comments from more knowledgable people.

[1] https://twitter.com/hugohanoi/status/951762596255838209


Certain kinds of misbehavior are punished. If you mine an invalid block, everyone will reject it, and you won't get any reward (you burnt electricity and hardware time for nothing). It works the same in PoS -- if you mine an invalid block, then (depending on the protocol) either your entire security deposit will be destroyed (ouch!) or no one will build atop your fork and you won't have any mining reward (same as PoW).

Block validation can only enforce certain kinds of rules, such as:

* People can only spend outputs they have the private key for

* You can't spend an output that has already been spent

* The block reward has a predetermined size

There are other kinds of rules that we don't know how to enforce yet. For example, we might want the rule, "Always create blocks with the top n transactions that offer the highest fee per byte, out of all the new transactions you've learned about". The trouble is that we don't know how to prove that a miner has learned of a transaction over the network. (Maybe there was a network partition, or maybe their internet connection died for a minute-- how can we tell between those conditions, and the case where the miner learned of but ignored a transaction?)

The "misbehaviors" listed in the article fall into this category: things we might like to make rules against, but don't know how to (or know how to, but haven't bothered yet).


Proof of stake doesn't work in practice unless we can find a source of randomness that is globally available, non-influencable and everyone can agree on [1]. At the moment, that source of randomness is completely elusive. It might be possible to create a random source from some form of binary astronomical event which can be widely verified but it would have an incredibly low bit rate of new randomness. One possible candidate is randomly nulling pulsars [2]. Unfortunately, the equipment required to observe this phenomenon is probably not widely available outside of large observatories. Having said that the costs would still be lower than the energy costs of the Bitcoin network.

[1] http://www.truthcoin.info/blog/pos-still-pointless/

[2] https://arxiv.org/abs/1706.05407


Here is how I understand the argument made in the first link:

If you give people a certain block reward, say 1$ per year, then the capital they are willing to invest to gain that reward will be 1$ divided by the worldwide rate of capital returns at the given risk level.

The argument is that it doesn't matter if we are dealing with capital that is locked away in mining hardware + lost as electricity or in a smart contract. The total amount of "economic work" locked away will be the same.

I think that's correct. Proof of stake is not cheaper for the short-term economy than proof of work.

But what about the long term? 100 years? The kind of time frame that investors don't worry about, but we as mankind should?

I guess what I'm saying is that locking away capital today maybe has less long term damage than wasting extreme amounts of energy.


Can imagine a protocol for generating randomness to some arbitrary security level (at the expense of locking up security deposits):

(1) Anyone can decide to become a 'randomness provider' by putting up a large security depsoit

(2) Every epoch (some number of blocks), each provider chooses a private random number and commits to it by publishing its hash

(3) During the next epoch but, each provider publishes the random they committed to earlier.

(4) xor together all the random values. The result is a pseudorandom number everyone can agree on, and which should be sufficiently good for many applications include PoS selection

If any provider fails to publish the random number they committed to, they lose their security deposit and there is no random value provided for the associated epoch. The process starts over.

If you're worried about bribing attacks over all providers, recognize that all we need is a single altruistic provider to keep the system safe. Altruistic behavior may be rare compared to selfish behavior, but I think we can usually rely on its nonzero presence.

If you're still really worried that collusion could be going on amongst ALL randomness providers, just become a provider yourself.

It's possible for a provider to wait for all other providers to reveal their values, and then privately determine whether or not the final random value would be favorable to them; they then have the option of canceling the epoch by keeping their private value hidden and losing their security deposit. This option (in combination with a particular application, and the size of the security deposit of providers) puts a bound on what the random value can be safely used for (e.g., if it's for a lottery, the expected value of another truly random swing at the jackpot has to be lower than the value of a security deposit).


> If you're worried about bribing attacks over all providers, recognize that all we need is a single altruistic provider to keep the system safe. Altruistic behavior may be rare compared to selfish behavior, but I think we can usually rely on its nonzero presence.

You also need to be sure that the others don't ignore the single altruistic source.

In a byzantine system, you can't distinguish if somebody is offline or if the others are silencing him.


> You also need to be sure that the others don't ignore the single altruistic source.

Well sure, but the code people run listens to all the providers. Everyone is listened to automatically. That's part of the social consensus encoded in software. If you don't follow along, you end up on your own fork. That's how these systems work — e.g, you also need to make sure that people don't "ignore" the consequences of failed hash checks throughout a cryptocurrency codebase.

It would be quite possible to run your provider on a machine hidden somewhere, and inject your transactions to nodes at random points in the network. It'd be pretty tough to silence someone directly.

Miner censorship attacks, e.g. a 51% attack, are also possible (i.e., all miners, or a sufficient majority, refuse to mine your tx until the epoch ends). This kind of censorship threat is always present for all kinds of transactions; in theory they're particularly pernicious for protocols like this one that require a tx to be submitted by a deadline. But no one is claiming that these systems are completely invulnerable to a misbehaving majority of miners or validators.


I don't see any incentive to actually publish random values - wouldn't it be easier to just commit to and publish zero every time?


Altruism probably works here. It's cheap to pick a pseudorandom value. But if you didn't want to rely on altruism, the system could offer a reward to anyone who reveals the secret someone committed to early (half that provider's security deposit could be destroyed; the other half given over in reward to the reporter).


That's all well and good but who manages the security deposit?


The system itself, e.g. the code of a smart contract. Example implementation: https://github.com/randao/randao


So the randomness providers secure the deposit of their own randomness. The circularity of the system means it won't work in practice. RANDAO is secured by the proof of work miners.


Actually, this kind of "snake eating its own tail" loop is exactly how cryptocurrencies operate. For example, proof of work blockchains secure themselves by creating mining incentives with money that has value because it is secure.

It works because the system can regress over time, e.g. value at t=n can be used to secure a greater amount of value at t=n+1. (Although value needn't be strictly increasing for system to operate; if value decreases, so do the security requirements)


Publicly verifiable randomness is possible without relying on astronomical events. Check out threshold relay by the Dfinity team (which we're porting to Ethereum), or RandHound and RandHerd [1].

1 - https://eprint.iacr.org/2016/1067.pdf


That paper assumes that at most f out of at least 3f+1 participants are dishonest. In practice one can't make that assumption since sybil attacks are easy.


You can bootstrap a Sybil-resistant system using PoW or some other method. This is one building block.


How about using stock markets?

They are of course vulnerable to some amount of manipulation, but with a good algorithm that could be rendered sufficiently costly to become impractical.


They are probably as good as we have today but even they could be manipulated if large amounts of money was on the line. I can't see any way of introducing algorithms to make it more difficult to manipulate though.


> does this apply both to blockchain-style proof of stake and BFT - style proof of stake?


Both styles since both reward the creators of a block and both select the creators of a block through some form of randomness. So in both schemes there is an incentive to bias that randomness in your favour.


Doesn't BFT reward anyone that's validating a block? Meaning that everybody who validates the right block gets the same reward?

Or is there an extra reward for the creator?


Miners who cheat will be punished even more under PoS than under PoW, provided they are caught. If you get caught mining a "bad" block under PoW, you lose only the work that went into that block. If you get caught mining a "bad" block under PoS, you lose everything you staked on that block. It's almost as if you have mining hardware that doesn't use any electricity, but self-destructs if you misbehave.


The LeastAuthority audit of Ethereum gas economics in 2015 brought up this issue of transaction reordering: https://github.com/LeastAuthority/ethereum-analyses/blob/mas...

(They also pointed the issue that led to the DAO hack and recommended "value reverts to the sender upon exception".)


Miners have proven to be unreliable. F2pool has been accused of manipulating Status ICO:

https://steemit.com/ethereum/@dhumphrey/f2pool-manipulates-u...


Aren't all of those scenarios covered by fraud laws? Obviously one should be able to provide evidence that an actual miner willingly reordered transactions to get paid twice. I don't know if this is possible (gathering the evidence.)


Miners are not required to put anything into a block in any particular order. If you don't like what they are doing, stop paying them.


Do these vulnerabilities affect BTC? Is there any unbiased source of security reports on all the various coins?


Not exactly because bitcoin only supports a few simple transaction types -- Pay to Public Key, Pay to Public Key Hash ('standard tx'), Pay to Script Hash, Pay to Public Key Witness Hash, Pay to Script Witness Hash.

These are only serial dependent -- ie: A pays B, B pays C. You cannot reorder and still remain valid.

The security of the standard tx is the strength of the public key hash function RIPEMD-160. The security of Pay to Script Hash is finding a valid SHA256 collision with OPCODES.

The witness variants are a new tx format that uses less space (aka segwit).

The attack is simply a Denial of service, an attacker can block a tx. So if A pays B was never included in a block, B could never pay C.


Just a miner inconvenience.


Sounds like insider trading is built in fundamentally. Should help legitimize ETH on Wall Street.


COuld you elaborate on builtin insider trading?


Looks like the author of this piece is not aware that proof-of-work is antiquated and essentially obsolete.

There are way better methods to achieve distributed consensus, like Hashgraph or even proof-of-stake.

Edit: The critique that if the blockchain is slow, your Dapp will be slow is fallacious as well. You can mitigate that using side chains.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: