I'd view smart contracts as fundamentally unethical.
Smart contracts aren't merely ways to allow one individual or company's action to automatically trigger the actions of another. There are lots of to do that already.
To call a mechanism a "smart contract" is to say that this mechanism contains both an agreement between parties and mechanism for the enforcement of that agreement - essentially one step beyond binding arbitration to automatic arbitration, by-passing courts in more complete basis.
There's a reason that courts exist as the enforcement mechanism for contracts. There are many the terms or implications of a contract can different from what a reasonable person would expect and courts, with humans, are the machinery for preventing the multitude of ways this happens (and even these are far from perfect).
The DAO event illustrates this but even more, the real ugly will rise when smart contracts are used for all of the really abuse which normal contracts have facilitated - usury, debt-peonage, sex-trafficking and so-forth. Basically, it facilitates putting the weak at the mercy of the strong in uncontestable fashion.
I'd like to know how you can justify taking part in this.
I've always hated the term contract in this context because it's overloaded. These are mathematical contracts, not legal contracts. The underlying math enforces the outcomes.
Anyway, I think the tech is agnostic. It can be used for good or evil, just like a knife. It's just a tool.
Bear in mind some knives are designed for slicing vegetables and some knives are designed for stabbing humans, and whenever you design a tool, you are making a certain action easier to accomplish.
I think the analog to that would be that some smart contracts can be designed to do benign things like trade cats and some can be designed to do malicious things, like assassinate someone for money.
Smart contract are effects that automatically happen to accounts using tokens that aspire to be currency.
So the scenario - a person works for etherium tokens (or whatever equilivalent), a person has certain number of tokens accumulated as their savings. A person violates whatever smart contract they have agreed to and they're automatically penalized, with courts or anyone else being unable to undo this - even if the contract was for, say, illegal activity. If the entire economy of any area runs on whatever crypto tokens, a person could have no choice but to agree to one of these contracts.
It's fairly unlikely to happen, admittedly, but the point is the entire exercise is a blue print for a Libertarian Party Utopia/Dystopia, depending on one's interpretation of the situation. My interpretation is extreme dystopia.
How are the courts unable to undo a smart contract? Just like with cash, a victim of fraud can still win in court versus the perpetrator, and the court can order restitution and if that's not possible, garnishment.
Just because something is digitally irreversible doesn't mean it can't be undone the traditional way.
It's always fair to call someone out on the ethics of their work, but I don't think this is a particularly effective or positive way of engaging the creator.
I can't see my comment violating the linked guidelines.
My comment on smart contracts is detailed and well supported.
Of course it's an ethical critique. Ethical criticism can't be "positive" in some feel-good sense. All you can say if you think X is wrong is "Don't do X, please" or "how do you justify X".
Edit: the parent said "I would be more than happy to answer any questions here" and I asked a question. Now, the unstated assumption might have been technical questions about the project. But if we were operating by smart contracts and the overt request was "any questions", then the system would have to accept the comment. Something to thing about.
I think problem is that your argument seems to come from a prior point of view, and doesn't assume good faith on the behalf of people working on smart contract problems (declaring them in whole fundamentally unethical). I would suggest that a better way to pose your point of view would be to ask, "Are there ways to mitigate the automatic triggering of actions in smart contracts?" Posing your point of view as a question like this would be more likely to foster a healthy discussion because there are certainly ways to mitigate the extent of automatic actions (multisigs etc...). And who knows, everyone might learn something as a result of the discussion!
Disclosure: I work in the cryptocurrency space and generally think hackernews doesn't know how to have productive discussions about cryptocurrency.
I should add, because it just occurred to me, that my question was clearly answerable - if smart contracts could be done ethically.
The GP or anyone could say, "glad you asked about ethics, here is how I think you can do smart contract ethically; [insert explanation for how to do this]". I mean, "How do you justify X" is calling for an answer, right? Some things even have good justifications.
I disagree with this 100%. Smart contracts are the most ethical contracts possible.
The DAO was just poorly coded, there is nothing wrong with Ethereum itself. It's the smart contract developer's fault if they can't test their contracts properly. It doesn't facilitate abuse of any kind, this is not a good argument. Ethereum is the second most valuable cryptocurrency for a good reason.
Also, your comment was heavily downvoted, thus proving by consensus that it is incorrect.
>>The DAO event illustrates this but even more, the real ugly will rise when smart contracts are used for all of the really abuse which normal contracts have facilitated - usury, debt-peonage, sex-trafficking and so-forth. Basically, it facilitates putting the weak at the mercy of the strong in uncontestable fashion.
If certain voluntary interactions between consenting adults with different levels of power are "abuse", according to you, then I'd argue there are far more fruitful ways of addressing the problem, that are less disruptive to non-abusive interactions, than indiscriminately forbidding people from utilitizing smart contracts to interact, or trying to discourage people from developing smart contract technology. The latter is profoundly unethical in its lack of consideration for others' rights.
As an example of one of these better ways, those in vulnerable circumstances, who could be exploited in ostensibly voluntary interactions, could be put under the guardianship of a competent authority, and have restrictions placed on them to prevent them from entering into abusive situations.
This is a more sensible approach than attempting to turn the entire world into a safe space for adults who are not capable of wielding the freedom to choose what agreements they enter into.
While on this track, you may also want to consider restricting the right of these vulnerable people on who they may vote for, as obviously the state will know better than them as to which political candidates seek to abuse them.
Just as a curiousity: what is your profession? Might you have some financial conflict of interest in the dilemma of whether people at large will be able to interact without centralized intermediaries like regulators and lawyers as acting as gatekeepers?
Are the different versions of solc really that different? I saw that was mentioned as a data cleaning difficulty and it has me wondering what the changes between solc revisions are like.
Very much so. Even between minor versions, if you want to have the same behavior (which can have practical difference), you want to ensure you use the same solc version.
Syntax and functionality has also been changing quite a bit between versions (at least until 0.7). Solidity is not yet 1.0.
An interesting amount of the contracts from the blockchain (with source code) are using ancient versions of solc. The compiler changed (e.g. improved) a lot in terms of code generation during versions 0.4 to 0.7. In short snippets of code, it does not produce wildly different results but you need to be aware of this changes when handling this kind of data.
I'm not involved in smart contract development, but my understanding is that Vyper and its offshot Fe, are more amenable to formal verification on the Ethereum Virtual Machine.
And there's VeriSol, which allows for formal verification of Solidity smart contracts:
Anyway, FV doesn't guarantee secure smart contracts, because it doesn't guarantee that the claims that a team sets out to formally prove are themselves correct, or sufficient.
This feature will be integrated into Slither[1], one of the open-source tools to find bugs in smart contracts the company uses. AFAIK, clients do not pay for specific features, they pay to get efficient security reviews where the company finds bugs in their code and this feature can help to find issues faster.
I’m really surprised that some people here don’t understand the value of smart contracts.
Contracts and rules and regulations are made by humans. Humans can sometimes be unfair and biased and error-prone.
Code on the other hand does not discriminate. Ethereum smart contracts are open source and auditable.
Technology can be used for good or bad. But I would much rather an industry be run by fair, auditable code than (unfortunately faulty) humans.
If I apply for a mortgage, I would like to know the process if driven by code which is applied transparently and equally to everyone, so things like skin colour isn’t a factor.
Competition will always remain. If a company uses unfair smart contracts, there will always be alternatives.
But I would much rather an industry be run by fair, auditable code than (unfortunately faulty) humans.
The only thing "auditable" gets you is "certain to have the intended outcome". It doesn't make the intended outcome good or ... uh, fair.
If a company uses unfair smart contracts, there will always be alternatives.
Why would that be? You have plenty of situations right now where a given company will offer you an ordinary contracts where there are no alternatives. Google's monopoly on Internet advertising has gotten a lot of press, there are plenty of places where a single ISP is all that's possible. What kind of contract would hospitals offer a person right before surgery?
I find it remarkable someone would make this sort of statement.
"Certain to have the intended outcome" goes a long way in aligning people's expectations with outcomes, and removing sources of unfairness.
>>Why would that be? You have plenty of situations right now where a given company will offer you an ordinary contracts where there are no alternatives. Google's monopoly on Internet advertising has gotten a lot of press, there are plenty of places where a single ISP is all that's possible.
That's not the fault of the provider who steps in to provide the service. If there is a natural monopoly, it's the public's job to come together and collectively fund a public option to ensure that the economic rent from being the monopolistic provider is distributed to the public rather than captured by a private party.
The solution is not to restrict people's right to engage in mutually voluntary private interactions.