People using smart contracts when that's not what they really want are going to cause damage to the ecosystem that will take years to undo.
People using smart contracts when that's not what they really want are going to cause damage to the ecosystem that will take years to undo.
Since smart contracts are software, and all software has bugs, and to a first approximation nobody is interested in having a significant amount of their money, time, or goods erased by a software bug, of what use are these things other than as a curiosity?
I personally would much rather use smart contracts for making deals with employers, the overlords of the marketplaces, foreign clients, etc. Maybe it's just because I'm a programmer, but I would rather fail because of my own bug, than get screwed over and Nelson-laughed at by a bunch of powerful people. I can improve my contract-coding methodology, but I can't do much about other people's shadiness.
The odds that you can improve your contract-coding methodology to such a degree that you write no bugs is most likely nil. You haven't been able to do that in your non-contract code, and the stakes there are much lower.
Besides, how many mistakes will you be able to afford to learn from while avoiding complete financial ruin?
Edit: you've also got the threat model wrong. With a traditional contract, your only concern is the other party (your employer, say). With a "smart" contract, you also have to worry about any 3rd party who can wander by, notice a bug in your contract, and use it to avail themselves to your income.
You've got all the same second-party worries (my employer will use their resources to find a way to screw me) plus a whole new 3rd party attack surface.
As a programmer, imagine the complexity of the smart contract required to make this sort of transaction work when things go smoothly (including getting information about what has happened in the physical world.) Now imagine proofing it against this scam. Now imagine proofing it against scams in general, including ones you have not thought of yet...
Either you are going to spend a lot of time verifying the contracts you participate in, or you are going to take someone's word for it that it is OK.
a) Does something useful...
b) ...in a way that's somehow significantly preferable to "dumb" alternatives;
c) gets adequately battle-tested in the real world;
d) can be reused ad infinitum, maybe with trivial variations
It seems to me that it's not out of the question that that will happen, but it's also by no means certain. It seems to me that once you get far beyond simple remittances it becomes extremely difficult to reliably codify intent.
I'm not convinced powerful languages will ever be suitable for this - the language used for contracts should be less flexible and powerful than human languages, not more - we attempt this with legalese and conventions associated with contracts already (they don't really use english say but a limited subset of it), why not take it a step further and define specific and incredibly limited axioms which can be connected to form immutable contracts with limited ambiguity and no room for error.
Smart contracts assume that incredibly difficult problem is already solved and then start attaching money directly to the contract (why!), that in my view is far too optimistic about the state of software and the capability of humans to manage it.