Maybe referencing the Dropbox comment is unfair. I know it gets widely over-referenced to begin with. I mostly just mean, I could always be wrong.
This is why these discussions of blockchains are so frustrating to me. Do you think your bank couldn't allow you to upload random code into their internal database? On a purely technical level of course they could, it wouldn't even be that hard. But there are many, many reasons why they shouldn't and they don't.
Smart Contracts were mentioned by Nick Szabo in 1997 (https://journals.uic.edu/ojs/index.php/fm/article/view/548). Satoshi literally added a scripting language to Bitcoin (https://en.bitcoin.it/wiki/Script).
> Do you think your bank couldn't allow you to upload random code into their internal database? But there are many, many reasons why they shouldn't and they don't.
Yes I would like that ability please. What are the reasons they don't?
Also, you are seemingly making the mistake of getting lost in technological minutiae; yes, you can call it a stored procedure. In the end, it is all just zeros and ones being shifted around anyway. The financial network created on Ethereum is in key ways, in its /outcome/, fundamentally different from the existing bank network. It is one where an Iranian teenager can design a financial protocol on equal terms to Goldman Sachs. This is a desirable feature.
This design brings with it other consequences. Transfers are hard to reverse; you can consider that a benefit or a flaw, or either at different times. It is simply part of the the nature of the thing.
And the term and concept were not popularized until Ethereum in 2014. I never heard anyone commonly refer to bitcoin scripting as smart contracts.
>Yes I would like that ability please. What are the reasons they don't?
There are some already mentioned in other comments here so I won't repeat them. If you want a full response, you should ask them. But if you must know, a lot of existing trading platforms and payment systems do already give you this ability in some form, no blockchains are required at all.
>in its /outcome/, fundamentally different from the existing bank network. It is one where an Iranian teenager can design a financial protocol on equal terms to Goldman Sachs. This is a desirable feature.
I'm sorry but no, this also doesn't make any sense and there are no desirable features or different outcomes here. From a starting position the main difference between the teenager and Goldman Sachs is the teenager doesn't have billions of dollars in capital. Everything else is technical minutiae. If the suggestion here is that the teenager can somehow take out an unsecured billion dollar loan in ETH, that's not a desirable or even functional financial system at all.
I mean seriously here. If you want to make real investments in businesses run by teenagers and other young entrepreneurs I think that's great. You don't need to blockchains to do that. They provide no useful features. I could go into extreme detail here as to why this is the case.
>This design brings with it other consequences. It is simply part of the the nature of the thing.
No it does not and no it is not, this is more terribly wrong mythical thinking that I hear people repeating. The design is not set in stone and there is no "nature" to it. Like any money system, it is designed by humans to further a certain goal and it absolutely does not have to have any particular consequences. It doesn't have to make fraud as easy as it does, but it was purposely designed to be that way because the goal is explicitly to avoid regulations.
We are not talking about capital; we are talking about access. It is undeniably true that access to the legacy financial network is permissioned. But your Ethereum transactions and your smart contracts are no less privileged than those of Goldman Sachs. And if you can create a protocol that generates interest on your users capital, they just might entrust your smart contracts with a billion dollars worth of assets.
This is not speculative; it's the reality today. The reason why you keep hearing about all those DeFi hacks is because random people are building financial infrastructure (interacting with financial protocols built by other random people) without having to ask for anyone's consent or approval, and anyone in the world can use these products.
You can say that this is a terrible idea, but to say that it isn't something new that blockchain has enabled is simply denial.
(Crazy but true: under the EU's "Open Banking" API initiative, you are not even able to access your own account data in read-only mode, without going through a third party provider; it's only "open" to regulated entities.)
> No it does not and no it is not, this is more terribly wrong mythical thinking that I hear people repeating. The design is not set in stone and there is no "nature" to it.
The claim is not that there is no design space; the claim is that you are bounded by what we simply might call physical reality. You can design your messenger with end to end encryption, or without it, and that decision may be influenced by your value system. However, the decision might impose restrictions on how you can approach the problem of making multiple devices work, or a chat history, or interoperability.
If you want to make it impossible for regulators to censors the financial protocols written by random teenagers (the design requirement), but you also want certain actors to be able to revert transactions, then you may find that those two goals are in tension with each other.
They are the same thing. It's true of any proof-of-work system and proof-of-stake only makes it worse.
>without having to ask for anyone's consent or approval
No. This is absolutely and completely wrong. Realistically you need consent of several intermediaries if you're doing business on a blockchain. The bare minimum you need is consent from the miners or stakeholders to accept your transactions. It's the same as any other financial system. What you are describing is so far from reality that it's baffling to me.
>You can say that this is a terrible idea, but to say that it isn't something new that blockchain has enabled is simply denial.
No I'm sorry but there's no denial. Unregulated finance isn't new. Blockchain didn't invent it at all. It is actually the default state of any finance without the proper infrastructure around it. It's extremely frustrating that anyone tries to present this as some kind of technological advance. It's not.
>you are not even able to access your own account data in read-only mode, without going through a third party provider
Which is exactly the same as blockchains, you need to go through a large third party network of mining pools and exchanges to access your funds.
>If you want to make it impossible for regulators to censors the financial protocols written by random teenagers (the design requirement)
I don't want that. That's a terrible design requirement. There is no explanation for why that is a design requirement. I'm sorry but I don't want to make it impossible to censor random teenagers (or anybody of any age) who is engaging in fraud. And no cryptocurrency can do that anyway because none of them are immune to regulation.
>but you also want certain actors to be able to revert transactions, then you may find that those two goals are in tension with each other.
No they are not. You seem to be suggesting that from the point of view of a financial system, all teenagers are indistinguishable from scammers. I don't know where this idea comes from. It's complete and utter nonsense.
- Which code you can run on your own funds
- Decide which interfaces you can use to manage your funds
- Where you are allowed to send it
I'm quite ok with extended checks with crypto on/off ramps, but once it is in the network, I want control of my funds.[I say this as someone that has spent the last decade working in finance]
I am happy for the bank to control the code which determines how my money moves, because bugs are a thing, all code has bugs, and if the code that moves my money has bugs, the bank is responsible and I get my money back.
I’m happy for my bank to control the interface, because fraud is a thing and the interfaces they offer are sufficient for my needs. Besides, my real money management is in financial planning, and I have spreadsheets under my own control for that.
I’m happy for the bank to enact restrictions (imposed by my government) on where I send my money because global politics are a thing and monetary sanctions are a powerful alternative to war.
In short, the benefits of centralized control have far outweighed the negatives.
And even if you disagree with that premise, the solution is still not smart contracts because you also don't control those. This is more of the same frustrating conversation. You've named a problem and the solution is assumed to be blockchains but the dots don't connect at all. Don't think that finance companies can't get caught up in a market mania, because we know by now that they're often the worst victims.
No, you don't. This is egregiously wrong and is a blatant misunderstanding of distributed systems. In a typical cryptocurrency blockchain, it's the miners that have control over which smart contracts you interact with.
>if you want that product (and don't want the control)
This is also a bad assumption. I actually do want this product and the control. However cryptocurrency and defi can never actually provide it because the entire concept and marketing of it is flawed from the beginning. Yes, it's that bad. That's why it's so disappointing to me to see finance people get caught up with it. There is a comment below about "people are trying to figure out what works" when the reality is that it will never work. You fundamentally can't do these things with a distributed system built this way.
The match your rhetoric, this is a best an outrageous slight of hand playing with semantics, at worst you are the one not understanding how they work.
/I/ have control which smart contracts I interact with - no one else.
Number one, the miners cannot force me to interact with anything. It is a common source of confusion - miners cannot force invalid transactions, not even if 100% of them work together. The users of the chain (and their delegates, i.e. exchanges) make the rules, not the miners.
The miners have a single job, for which they get paid: to order transactions. And with that job comes the the power to /not/ pick a transaction. Miners could possible /prevent/ me from interacting with a smart contract.
A large point of blockchain design is to ensure that this will not happen in practice, i.e. the censoring miners are in the minority.
It's neither. Sorry. This is literally how a distributed system works. There are always other people along the line that hold responsibility to keep the system running. That's the whole point of it being distributed. Nothing about this changes if you decide you want to run code on that system or use it to manage your finances. I don't want to talk about semantics either, this is usually the point where someone starts nit picking about the meaning of "distributed" versus "decentralized" or something like that. I don't care what term it is, use whichever you want. The limits are still the same.
>/I/ have control which smart contracts I interact with - no one else.
No, you don't. Again this is absurdly wrong. The blockchain controls which smart contracts you interact with, and the blockchain is controlled by its miners and its whales.
>Number one, the miners cannot force me to interact with anything
>miners cannot force invalid transactions, not even if 100% of them work together
Actually they can, by blackmailing you and threatening to remove your transactions from the blockchain. You don't seem to understand what the point here is. If bad actors are intent on doing this they won't care if you lose other money in the process or if you have to destroy your keys to stop them. In some ways this type of distributed system is actually more vulnerable to these attacks than other systems. And of course there is always the classic $5 wrench attack, which no amount of blockchain engineering can stop: https://xkcd.com/538/
You're making the same mistake that a lot of system designers make. If you look at the system in a vacuum then yes those claims are true. In practice, they aren't true at all.
>A large point of blockchain design is to ensure that this will not happen in practice
No it isn't. There is absolutely no reason to believe that this would continue to be the case, any more than you would expect a bank to do the same. The answer always comes back to the same thing.
The whole premise of blockchain is execution of intent, in an untrusted environment. The threat you are concerned about is collusion, and the best control against this is further decentralization and scale. Proof-of-Stake (and many DAO's), do provide more assurance against malicious actors by validators risking their own stake if they try malicious activity.
Ultimately, I am confident that the "dark forest" will give us much more security and transparency than the current closed/centralised system.
You seem quite entrenched in your view, but I'd like to ask. What would it take to change your view? If the answer is nothing, can you really claim to be thinking about this critically?
That to me is another really awful thing about blockchains. They're like candy for academics. It's very easy to get sucked into the illusion as well because if you take it at face value there are a lot of things to study and write about, the algorithms seem complicated and interesting. And they are, if you ignore the rest of the effects. I'm sure you could write 100 doctoral theses on smart contracts. I'm sure companies would pay you to do a lot of things with them. They are still an extremely bad and broken concept.
Edit: I'm at the point where academics have sent me so many papers on blockchains. I would go as far as to say the entire point of the "defi industry" is not to produce useful products, but to produce research papers. But I don't even know if I could say that because a lot of the papers aren't even good! It's so common for a blockchain paper to launch into a lot of math and algorithms without even trying to make a problem statement or explain what purpose it actually has. Please don't let your thesis be like this. If all you're writing about is how existing users of smart contracts are avoiding getting hacked then you've been dragged into the same trap.
>The whole premise of blockchain is execution of intent, in an untrusted environment.
The issue here is that this is a completely nonsense premise. There is no such thing as finance in an "untrusted environment". If you aren't planning to live alone in a bunker, then somewhere along the line you need to have trusted intermediaries. Decentralization does not and cannot ever fulfill this premise, it actually increases the amount of trusted intermediaries you need to deal with.
>The threat you are concerned about is collusion, and the best control against this is further decentralization and scale.
No, this is also incredibly wrong. When it comes to market manipulation, further decentralization does nothing to reduce collusion. It is already hard enough to track the source of bad behavior in the market without people intentionally designing algorithms to do that, we don't need to make it even harder.
>Proof-of-Stake (and many DAO's), do provide more assurance against malicious actors by validators risking their own stake if they try malicious activity
This conversation again is veering into territory where it has nothing to do with blockchains or smart contracts at all. You can rephrase this as "people are less likely to engage in bad behavior when they are invested and hold stake in something".
>Ultimately, I am confident that the "dark forest" will give us much more security and transparency than the current closed/centralised system.
As someone who has been doing open source for the last 20 years, I am not. Much like the Linux desktop mentioned in a parent comment, pretty much every blockchain is just a random open source project that is accountable to nobody. People remain interested as long as there is profit and hype in it, when that dries up they will disappear and any illusion of security and transparency will fade away. This doesn't change because it was applied to finance instead of OS kernels or whatever.
>What would it take to change your view? If the answer is nothing, can you really claim to be thinking about this critically?
Actually my view is the result of thinking about this critically for the last 10 years. I was like you at one point and I would have made the exact same comments that you're making now. But sometimes a spade is just a spade and we gain nothing from pretending it's not. If you want to change my view, it would help to think about how to bring smart contracts into traditional banking systems. Look at all the reasons why it won't work. Then go forwards from there instead of working backwards from blockchains and "decentralization" because those are held as some kind of panacea.
Humans a worse at writing code that does what it should and only what it should then they are at writing thing in their native languages.
It's not. Cryptocurrency has been around for over a decade at this point, suffice to say that it doesn't work. And why should it? The stated purpose of it is to be another form of unregulated private money, which we already knew was a bad idea hundreds of years ago. Wrapping it up in layers and layers of confusing (and pointless) technology doesn't make it any less of a bad idea.