
Learn Ethereum smart contract programming - ym705
https://ethereumdev.io/
======
kbody
The sad reality of Ethereum: 1\. Bitcoin is slow and expensive, Ethereum is
the future 2\. Ethereum software has security hole, gets hacked 3\. Ethereum
fans say it's an experiment there are lots of things that will transform
Ethereum (Casper/PoS, Raiden, zkSNARKs, Enterprise Alliance) 4\. Low price
getting pumped by Ethereum Foundation & big-holder affiliates 5\. Back to #1

We've seen it happen again (DAO) and again (Parity) and it will keep
happening, because it's broken by design. 90s cypherpunks that pioneered this
ideas had considered Turing complete design and discarded it for cryptographic
state-machines that allow for formal verification.

I appreciate the experimentation, but the takeover-the-world echo-chambers of
ethereum that don't focus at all on the real tech behind it and ignore
everything negative is pretty disappointing. Especially because we keep
getting new people buying this and becoming the greater fools.

When talking about engineering on such a critical subject, people should be
way more responsible. If Bitcoin had the same attitude regarding security like
Ethereum does, we wouldn't be here and cryptocurrencies would be a joke.

Lazy engineering comes at great cost as time goes by and the illusion of
security is unveiled.

~~~
ekidd
> 2\. Ethereum software has security hole, gets hacked

The last time this was discussed on Hacker News, I found this comment
particularly instructive:
[https://news.ycombinator.com/item?id=14810008](https://news.ycombinator.com/item?id=14810008)

It points out a great many fundamental issues with the Solidity contract
language. Basically, the language design sounds extremely amateurish and it
appears to have ignored everything we've learned about security in the last 30
years. Samples:

\- "Operators have different semantics depending on whether the operands are
literals or not. For example, 1/2 is 0.5, but x/y for x==1 and y==2 is 0."

\- "All state is mutable by default (this includes struct fields, array
elements, and locals). Functions can mutate state by default"

\- "Order of evaluation is not defined for expressions. This in a language
that has value-returning mutating operators like ++!"

I wouldn't trust a Solidity smart contract with $100.

~~~
pkulak
Does Solidity really matter, though? "How's the VM" is the real question. I
haven't spent more then 10 minutes looking into it, but it seemed reasonable
to me. No heap and 256(?)-bit addressing seem like good ideas to keep
execution complexity down.

~~~
UncleMeat
The VM is also fucked (or, at least it was in the recent past) because it
turns out that their semantics are a mess. For example, exception handling is
either implicit or explicit depending on how a method is invoked!

[https://eprint.iacr.org/2016/633](https://eprint.iacr.org/2016/633)

------
staticelf
The problem I see with Ethereum is that it is way too complex. I have read
perhaps at least 10 times on their home page without even understanding what
it does, what problems it solves etc.

This is the sole reason why I don't think it will be successful in it's
current state. With most successful tech or services or whatever the core idea
is often super simple to grasp and you can instantly see the benefit. I don't
see this with Ethereum.

Even with bitcoin which is complex the benefits are instantaneous for the
common man. Decentralized system, no single entity controls it. It is a fixed
amount of bitcoins so like a mineral it's value is probably going to be stable
in the long run and also each bitcoin will increase in value when more people
get interested. It's easy to send coins to anyone in the world, at any time.

What does Ethereum do? Smart contracts is probably the key word but I don't
understand how it works or how it will benefit me. Why bother?

~~~
BaronSamedi
Ethereum reminds me of what happened to the web: the desire to add code. The
blockchain by itself wasn't good enough so Ethereum added code to it, just
like HTML wasn't good enough so people added applets, Flash, and JavaScript.

I understand why they would want to do this but I think it gets the priorities
wrong. It prioritizes features and functionality over security and
reliability. Given how hostile the Internet has become I think this is a
mistake.

My guess is that Ethereum is only a couple of scandals away from being
perceived as a fundamentally insecure platform. Bitcoin has its own problems
and it may not survive either. Perhaps another cryoto currency can learn from
the mistakes of both and deliver something better?

~~~
kordless
Bitcoin has code. The language is called Script. It lacks loops, however.

~~~
woah
Dealing with the legwork around programming bitcoin script will always be at
least 10x more complex than whatever it was that you wanted to program.

------
hackermailman
If you are considering writing a smart contract, you should read this first
[https://github.com/ConsenSys/smart-contract-best-
practices](https://github.com/ConsenSys/smart-contract-best-practices) for
Solidity security pitfalls, and hopefully have some idea of
invariants/contracts to verify expected properties of your smart contract
[https://www.cs.cmu.edu/~rjsimmon/15122-s16/lec/01-contracts....](https://www.cs.cmu.edu/~rjsimmon/15122-s16/lec/01-contracts.pdf)
and additionally hope the EVM doesn't have unexpected behavior.

Anybody know if the legality of exploiting leaky smart contracts has been
tested? Since a lawyer can exploit a badly written contract I wonder if
somebody who finds a flaw in a smart contract can legally just jack all the
coins or alternatively, write purposely obfuscated contracts (underhanded
Solidity contest) to run a scam.

~~~
JackC
> I wonder if somebody who finds a flaw in a smart contract can legally just
> jack all the coins

One way to interpret this legally is to assume that smart contracts are in
fact enforceable legal contracts. (Most promises about exchanging stuff are
enforceable legal contracts, so this is plausible.) The general first-year-
contracts answer is then that it depends on the expressed intent of the
parties.

Take two extreme examples:

(1) I put an ether bounty in a smart contract and say anyone who can exploit
the contract can have it. Definitely legal to exploit (and I can be held to
the promise).

(2) I hire you to review my smart contract for exploitable flaws, and instead
you exploit the flaws. Definite breach of contract.

The real situation is neither of those, but you can see how expressed intent
matters.

So the question is what's the actual expressed exchange of promises between
the parties to a given smart contract? And here I think some of the code-is-
contract statements around Etherium tilt things toward my (1) example - the
text advertisements for the DAO have a bunch of stuff to set the expectation
that whatever the code says, goes. But that would be up for debate in court.

(And then there's lots of non-contract ways to slice this, from computer fraud
to gambling law to securities law to...)

------
hexhex
I didn't have high expectations for Solidity considering the recent
vulnerabilities, but even these were disappointed. If some guy writes this
kind of code at home, alright, but this as the alleged foundation for our
future financial system? Frightening.

Just one example: "Our function EndLottery() must be only accessible by the
owner of the lottery." [0]

function EndLottery() public { if (msg.sender == owner) { ... } }

What about code guards? Not to speak of decent typing, etc. etc.

[0] [https://ethereumdev.io/managing-multiple-users-a-simple-
lott...](https://ethereumdev.io/managing-multiple-users-a-simple-lottery/)

~~~
masklinn
I understand the eth VM is pretty limited and limiting, but Solidity is just
sad, it's like somebody saw Javascript and thought "ok that's a pretty
terrible basis for writing contracts, but surely we can make it _even worse_?"

And then they succeeded at failing.

~~~
dallashoxton
Can't remember where I read it, but someone put it best during the DAO fiasco
last year when they wrote "Imagine Javascript but your bank account accessible
through the Document Object Model."

~~~
masklinn
Even that's only scratching the surface of how awful Solidity is. An example
of _minor security detail_ straight from the documentation is this:

    
    
        for(var i=0; i<arr.length; ++i) {
    

Solidity is a "statically typed language" with "type inference". In most of
_these_ , you'd expect i to be typed as whatever the type of arr.length is,
but Solidity does not care, it sees `var i = 0`, 0 fits into a uint8 so a
uint8 i is, it'll get promoted during the comparison and if arr has more than
255 elements it'll overflow and the loop is infinite.

------
g00n
Maybe it's because I don't have a use for it yet, or at least don't know if I
have a use for it. But, the whole Ethereum universe seems vague and seems like
they could explain it more than they do. "Install Ethereum wallet, write a
contract, ..., Profit!" ?? Is there a better source that might explain what it
is, how it works (a glancing explanation not a full network inner workings)??

~~~
jwfxpr
I Am Not An Expert.

If I understand correctly, these are a way to automate the _execution_ of the
financial part of normal contracts without the need for undue trust between
parties. Some simple examples that might help (and I invite correction):

• I and a few investors agree to buy into an enterprise in several
installments. A contract can be written to the blockchain that automates these
payments. Should a majority of the investors decide to withdraw support, the
payments will cease, but while more than 50% wish to continue support,
everyone will continue.

• I have an enterprise that I am highly confident will generate profit. I can
establish a smart contact that guarantees my investors a minimum ROI at
specific intervals; should the balance fail to grow by the agreed margin, all
investors will instead be refunded (in full or part) based on a scheme agreed
_a priori_ to be fair — say, a function of shares owned for how long.

• I and several other Ethereum miners agree to develop a scheme built on top
of Ethereum for, say, a specific method of interoperability between the
Ethereum blockchain and traditional futures markets. We have a specific idea
for this, but agree we need to ensure that there is momentum in the project,
and want those participating to have 'skin in the game'. We build a tontine
such that all of us invest a non-trivial amount, and any investor becomes
ineligible for payout if their hash power abandons the protocol. If this falls
below a certain threshold, remaining investors can vote to continue or divide
the pot and abandon the project.

~~~
sjy
The problem with your first two examples is that the 'investment' locked up in
the smart contract can't be spent, which means the investors are not bearing
any risk, and therefore cannot enjoy a return. If the money could be spent on
capital and operating expenses, then the smart contract wouldn't be able to
refund it if the conditions of the investment failed.

It is possible to create a smart contract, like the DAO, which implements the
rules of a joint stock company. But stockholders are not concerned about the
risk that these rules will be broken. The risk is that the company fails and
there is nothing to distribute according to the rules. Replacing the general
meeting of stockholders with a smart contract doesn't change the economics of
collective investment – it just adds the risk of losing everything to a bug in
the contract.

------
kristianc
Does this not seem like the kind of area where you don't want people writing
hacky, proof of concept code?

The idea of people coding up weekend projects on Ethereum, putting them behind
flashy websites and encouraging large scale adoption terrifies me, to be
honest.

~~~
ym705
As the technology evolves you need more and more people fluent. Most people
will never write live code involving million of dollars but it might help
people understanding the techno and the code behind... This is an introduction
and as more and more article will be written the learners will be more skilled
and aware of security and good practices

------
omarforgotpwd
Programmable smart contracts are a great idea in a world where programmers
write bug free code. That world does not exist yet. Until we have near-perfect
code writing AIs every new smart contract is just a disaster waiting to
happen.

~~~
halflings
That's like saying legal contracts are a disaster because we do not live in an
ideal world where lawyers don't do mistakes, and there are no legal loopholes.

Granted, bugs are much more common than legal loopholes, but in the same way
an operating system's APIs and constraints are tested until it becomes
reliable enough for other people to rely on it, I can see some standard types
of contracts (in the same way as in the traditional legal system) becoming
recognized for their robustness and used for common operations.

~~~
simias
I think I'm going to end up pasting this link in all discussions surrounding
Ethereum:
[https://en.wikipedia.org/wiki/Letter_and_spirit_of_the_law](https://en.wikipedia.org/wiki/Letter_and_spirit_of_the_law)

>When one obeys the letter of the law but not the spirit, one is obeying the
literal interpretation of the words (the "letter") of the law, but not
necessarily the intent of those who wrote the law. Conversely, when one obeys
the spirit of the law but not the letter, one is doing what the authors of the
law intended, though not necessarily adhering to the literal wording.

This is a very ancient concept and like all ancient concepts it's bound to be
rediscovered every other decade on average.

"The code is law" is a wet dream for a dystopic authoritarian state and I
don't understand why anybody, much less actual coders, would think that's a
good idea.

"Thank you for subscribing to our contract for your $2 weekly subscription. By
the way through a clever loophole obfuscated in our code the amount actually
doubles every week. Freedom is Slavery, Ignorance is Strength, Code is Law.
Have a good day sir".

In the real world you have a safety net for these types of things, in many
case you can break an abusive contract because society has created regulations
that ban certain tactics. Ethereum has no such thing. A single mistake or
intentional deception and like that, you've lost all your money. The code is
law, nothing we can do sir. How is that a feature exactly?

Look at how dumb the average spam is, and yet there's no shortage of people
falling for them. Yet it seems like the ethereum crowd genuinely believes that
my mother is suddenly going to be able to proof Solidity scripts, something I
wouldn't even trust myself to do with decades of programming experience behind
me. I don't know if Ethereum is an economic bubble but it definitely is an
intellectual one.

~~~
patrickaljord
> "The code is law" is a wet dream for a dystopic authoritarian state and I
> don't understand why anybody, much less actual coders, would think that's a
> good idea.

How is that dystopic and authoritarian? Looks like you're throwing a bunch of
buzz words for shock value with little argument to back it up. We already
trust code as contract everyday every time you make a payment through SSL
(anyone who lived through the 90's and early 2000's remembers how people were
scared to death of online payment security and now it happens every
millisecond). Ethereum is just a distributed version of that with no middle
man, that is to say it can fail like SSL can when compromised but it doesn't
mean we should throw it out the window just because it could sometimes fail.
By that logic we should still be cavemen and forget about any technology ever.

> "Thank you for subscribing to our contract for your $2 weekly subscription.
> By the way through a clever loophole obfuscated in our code the amount
> actually doubles every week. "

I hope you're aware that the exact same thing happened with these indexed
loans where people weren't aware that interests could fluctuate with time,
right?

~~~
simias
I gave some examples (that you quickly dismissed). Having a recourse through
an other, hopefully compassionate and empathetic human being is not something
I'm willing to give up on. If things go awry to the point where I could go
bankrupt because of a small lapse in judgment I want to have recourses. That's
why we have we have consumer laws. That's why we have the notion of abusive
contracts.

SSL is hardly related. It's just a mean to secure a transaction and that's it.
There's no contract involved. It's a tunnel for some data. A more apt
comparison would be to say that I trust, say, Amazon's website to do the right
thing when I give them my credit card infos. But the truth is that I don't
even trust them that much, if they abuse it or get compromised I'll just
notify my bank (if they don't notice it before I do) and I'm good to go.

If I buy a laptop on amazon and they sneakily bill me for two tons of whole
grain rice flour and when I complain they said "but it was in the terms and
conditions", do you think it would hold up in court?

>I hope you're aware that the exact same thing happened with these indexed
loans where people weren't aware that interests could fluctuate with time,
right?

Ah, and it's clearly something we aim to emulate, right?

If anything that's a very good example about how the average person can be
tricked into accepting a terrible contract if they don't know any better. Do
you think it would've worked better if the loan was expressed in Solidity
code?

~~~
patrickaljord
> hopefully compassionate and empathetic human

Hopefully after said compassionate human had their lunch break.

[http://blogs.discovermagazine.com/notrocketscience/2011/04/1...](http://blogs.discovermagazine.com/notrocketscience/2011/04/11/justice-
is-served-but-more-so-after-lunch-how-food-breaks-sway-the-decisions-of-
judges/#.WXYcztOGMcg)

> That's why we have we have consumer laws. That's why we have the notion of
> abusive contracts.

That could still exist with Ethereum.

> SSL is hardly related. It's just a mean to secure a transaction and that's
> it.

Your browser's code trust the code on the server hosting the SSL cert and
authority server. So, it's just code involved here.

> If I buy a laptop on amazon and they sneakily bill me for two tons of whole
> grain rice flour and when I complain they said "but it was in the terms and
> conditions", do you think it would hold up in court

Again, you could also sue someone for tricking you into a bad ethereum
contract and it would not hold in court either. Not sure what your point is
here.

> Ah, and it's clearly something we aim to emulate, right?

No it is not, my point is that bad things happen no matter who's involved
(humans or code) and just because some bad things may happen doesn't mean we
should stop using it, but we should go with the most efficient and secure one,
which for now is probably humans of course. See also plane crashes.

~~~
simias
>Your browser's code trust the code on the server hosting the SSL cert and
authority server. So, it's just code involved here.

Yes, but "there" is only a small part of the full story. When I make a payment
over SSL I don't make an immutable, untraceable and irreversible transaction.
In order to be able to receive the payment the other party has to register
with a bank and other legal entities etc... Putting money to an ethereum
contract is closer to sending cash in an envelope to some PO box in a foreign
country. Good luck getting it back if something goes wrong.

>Hopefully after said compassionate human had their lunch break.

Humans make mistakes, humans are unreliable. That's why we have a bunch of
checks and balances in any decent justice systems to avoid miscarriages of
justice. They're still possible, doesn't mean that the right solution is to
get rid of it altogether.

>Again, you could also sue someone for tricking you into a bad ethereum
contract and it would not hold in court either. Not sure what your point is
here.

So code isn't law, law is law? I think my point is perfectly clear, you just
keep moving the goalpost. My point is that those "smart" contracts are great
for thieves but of dubious values

Regardless, do you think those people whose wallet was compromised because of
the faulty contract will manage to get their money back? Who are they suing,
the thieves? The wallet company who wrote the faulty contract? How you do get
the money back? Can you freeze the account? Reverse the transactions?
Blacklist the coins? The whole cryptocurrency system is _designed_ to make
those things impractical, if not downright impossible.

Again, great for thieves and black market sellers but if I just want to buy a
laptop on amazon why would I ever bother with this? What's the use case?

~~~
patrickaljord
> In order to be able to receive the payment the other party has to register
> with a bank and other legal entities etc... Putting money to an ethereum
> contract is closer to sending cash in an envelope to some PO box in a
> foreign country

This shows either little understanding of smart contracts or little
imagination. Retailers could make each of their sells contract a 3 party
multi-sig contract where the three parties would be you, the retailer and your
bank and if you complain to your bank and your bank accepts your request after
reviewing the retailer's claim then the money would go back to your account.
There could also be other legal entities in the multi-sig contracts such as
insurances or others.

> My point is that those "smart" contracts are great for thieves but of
> dubious values

See my previous point and why this is not correct.

> Regardless, do you think those people whose wallet was compromised because
> of the faulty contract will manage to get their money back? Who are they
> suing, the thieves? The wallet company who wrote the faulty contract? How
> you do get the money back? Can you freeze the account? Reverse the
> transactions? Blacklist the coins? The whole cryptocurrency system is
> designed to make those things impractical, if not downright impossible.

They won't get their money back because they didn't pay for an insurance.
Coinbase for example guaranties US$ 100k in case of theft. If Ethereum becomes
a thing, there would be a whole market of insurances offering what Visa or
Coinbase or your local bank offers today.

Last but not least, you're getting robbed every day with fiat money with
inflation policies, only you don't see it but it is happening. Inflation
lowers the value of your fiat money and that's like robbing you a part of your
money without your consent. And you pay a fee for that insurance you mention
every time you use your credit card, so not free either and again, any
ethereum or bitcoin provider could offer the same insurance for a fee (and
coinbase already does to some extend).

------
throw2016
The problem with crypto coins is some have bought in and thus are vested
making balanced discussion impossible. We see even with something as trivial
as choice of programming language some can become very religious in their
support. When money becomes involved expecting rational discussion is perhaps
naive.

Money is a social construct that needs societal consent and a framework to
manage it that is accountable to the societies rules and regulations. So a
random person can't just create money or value out of thin air. There is no
value being created here.

They can make a private coin, and convince others to use it between
themselves, there were and still exist many such private arrangements in
traditional economies, but the value only exists for those who choose to trust
this system, and can never hope to replace the main economic currency.

Bitcoin and other coins exists in this space of a private coin based on mutual
trust and of no real value to the main economy. Holders of such coins would of
course love for it to become a real currency and continue making outlandishly
self serving arguments about the economy so they can gain something out of
nothing. But that begins to resemble a pyramid scheme powered exclusively by
greed and self interest to the exclusion of that society's interests.

~~~
justadeveloper2
Not only is it a social construct, but the concept of money took thousands of
years to evolve, with fits and starts, to what it is today. No matter what,
some new technology isn't going to just show up all of a sudden and completely
revolutionize what is an intrinsic component of human civilization. To think
otherwise is to be taken in by scammers.

I know that current money systems have flaws and are manipulated by the
elites. Crypto won't end up being any different in that regard, however.
Inflation is a tactic utilized within the current flawed system to move wealth
to the top without your bank balance displaying the change. Cryptos will end
up having their own flaws to be exploited.

~~~
Jabanga
I think you're underestimating the impact of a durable and formal consensus
mechanism that can be run by machines and can operate efficiently at a global
scale by utilising telecommunication networks. This is orders of magnitude
more efficient than traditional governing structures and will displace several
core industries over the next few decades in my opinion.

------
dullgiulio
I know this might sound like a joke, but it is not: how about documenting how
to actually test and debug smart contracts? Is there even a way to do so? How
about fuzzying?

~~~
cdetrio
The best tool for debugging is
[http://remix.ethereum.org/](http://remix.ethereum.org/). It lets you step
through the compiled EVM bytecode, while highlighting the solidity source
mapping.

------
JustNothing
Am I misreading the code? Isn't the EndLottery function completely broken? It
looks like it finds the first user who bet less than the winning number. So,
in order to win you should play ASAP and bet epsilon > 0, right?.

~~~
justinfrankel
yeah, it's completely broken. which normally you would fix, but oh look too
late!

~~~
ym705
Thanks for your comment and it's fixed thanks to a hard fork ;)

~~~
justinfrankel
right on, the tutorial was interesting (even for someone with little interest
in all things blockchain :)

------
anilshanbhag
Here is a cool application -
[https://predictiontoken.github.io/#TRMP](https://predictiontoken.github.io/#TRMP).
It lets people bet on outcomes and bets be settled in a decentralized manner.
There is a video in the link if you want to understand how it is accomplished.

~~~
justadeveloper2
Are you familiar with Assassination Politics?

------
Keeeeeeeks
I think we need an Etudes for Ethereum contract development and best
practices; there are like 4 different "make a smart contract that juggles
millions of assets on the shutter" tokens and sites, but few that focus on
security and how to vigorously remind people that mistakes are worth millions
of dollars

------
pknerd
Is there any other crypto platform allow to write dApps for blockchain?

~~~
skeebuzz
Not out yet, but Filecoin: [https://filecoin.io/](https://filecoin.io/). It's
like Ethereum but with file storage capabilities + built-in bridges to other
cryptocurrencies.

~~~
teod
Filecoin doesn't have any smart contracts as far as I'm aware, so it's limited
to use as a decentralized storage network. I believe it would be possible to
build something very similar to Filecoin on the Ethereum platform. Storj
([https://storj.io/](https://storj.io/)) may be trying to do that.

~~~
teod
Edit: Filecoin does mention smart contracts in its white paper.

------
k__
They talk about storing money in the contract.

Does this mean I will be "charged" right in the moment I "store" money in the
contract?

Or does it mean I'll be charged when the contract gets "destroyed" and the
money "in the contract" is sent to some address?

I'm asking because both sides have problems.

If I don't get charged when storing money in the cotract, I could spend it
elsewhere until the contract resolves.

If I get charged when storing money, someone could write contracts that never
resolve to purge money.

~~~
anilshanbhag
I would suggest you read the white paper
([https://github.com/ethereum/wiki/wiki/White-
Paper](https://github.com/ethereum/wiki/wiki/White-Paper))

The short answer is contracts are accounts. Just like your normal ethereum
accounts. When you invoke a method marked as payment, you are essentially
transferring some ether from your account to the contract. If someone wrote
contract from which you can't withdraw and you send ether to it, thats
stupidity - even fiat can be destroyed by stupidity.

~~~
k__
I see, thank you :)

Stupidity? Doesn't Ethereum want to prevent all money getting locked up
somewhere?

~~~
teod
I believe there are times when it is favorable to "burn" ether or another
cryptocurrency, i.e. lock up the money in an unowned account. For example, the
decentralized market place OpenBazaar discusses proof-of-burn to establish a
user's reputation ([https://blog.openbazaar.org/proof-of-burn-and-reputation-
ple...](https://blog.openbazaar.org/proof-of-burn-and-reputation-pledges/)).
Burning coins allows a user to show they are invested in their reputation on
the platform, without being forced to pay money to a central party.

------
rmetzler
I took a glance at the lottery example [1] and I wonder: isn't the owner of
the lottery able to change the outcome so the winningNumber is always in his
favor?

[1]: [https://ethereumdev.io/managing-multiple-users-a-simple-
lott...](https://ethereumdev.io/managing-multiple-users-a-simple-lottery/)

~~~
ym705
Could you explain more how would it be possible?

~~~
jsnathan
In the example code used, the random number which determines the winner is
derived from the previous block hash. Since the lottery-owner determines when
the function is run, they could call the function when the previous block hash
favors their own bet, or else modify their bet before calling the function.

~~~
ym705
Yep that is why there is a notice and link about random number generation in
the tutorial.

~~~
renas
try this lottery code instead
[https://github.com/renasboy/ETHLottery](https://github.com/renasboy/ETHLottery)

~~~
rmetzler
Is it correct that the betted value doesn't influence any winning chances?

Also, is the last byte of the blockhash function return value guaranteed to be
equidistributed?

------
andreasgonewild
Please, enough with the JavaScript already; there are thousands of saner means
of expression already existing or waiting to be discovered. Writing flawless,
verifiable contracts is the worst use-case ever for that stinking pile of a
language. I wonder how many missing bazillions it's going to take for the
world to wake up and move on.

------
EternalData
There needs to be a separation of the underlying technological fundamentals of
ETH and its economic reality -- which is, like anything else, likely to go
through bubble phases.

------
theptip
Pretty much sums up the state of Ethereum/Solidity development right now;

Step 1, install wallet. Step 2, deploy contract. Step 3, learn about Solidity.
... Testing? Nah.

------
rdiddly
Thread warning: I'm actively downvoting any argument that tries to address
(read: not address) a cryptocurrency's flaws by changing the subject. Example:

Person A: Cryptocurrency X is insecure isn't it.

Person B: So is { the dollar | driving | flying | the internet | * }.

~~~
ym705
Don't you have anything else to do?

~~~
rdiddly
What could be more important than discouraging faulty argumentation techniques
on the internet?

