This brings me back to my main point. You clearly have not implemented a smart contact and have misconceptions about what it does. I suggest you implement one first. You can still think the idea is stupid afterwards. That’s fine. But right now, it seems like you are arguing about how you think the blockchain works, which doesn’t necessarily match how actually works.
So this:
> Yes, the output is guaranteed to be correct.
is provably wrong and you either know it and are malicious or you don't know it and this discussion is useless.
I think what everyone is quibbling with is the assertion that this is the same as "correctness", which is (by and large) considered a different property that relates user expectations to actual runtime behavior.
In CS, correctness means with “behaves in a consistent manner with respect to a specification”. The smart contract is the specification, so yes the output of the smart contract is guaranteed to be correct with respect to the specification. Of course, there can always be be errors in the specification. If you have another definition of “correct”, let me know.
Canonically, within the industrial context, there are two processes for achieving compliance of implementation with specification ("correctness"). The first is testing, the second is formal verification. In either case, you need an artifact at a higher level of abstraction (the specification) and one at a lower level (the implementation).
In testing, someone who has access to the specification can evaluate the dynamic behavior of the implementation and determine whether it matches. In formal verification, you can do the same by static analysis and proof.
If you say "the code is the specification" then correctness becomes completely vacuous. The code is correct because it runs. Great. So what? If the implementation results in behavior that is completely unintended by the author (e.g. your smart contract contains a re-entrancy problem: a notorious source of bugs, or isn't robust to EVM stack exhaustion) and you still want to claim it's "correct" then I just don't know what to suggest - we're never going to agree, and I don't think your usage is anything like standard.
The contracts were verifiable and correct enough, it seems, but some of the infrastructure turned out to be faulty, leading to a platform that was not trustworthy.
If your code has bugs or errors or security vulnerabilities, those will all lead to incorrect behavior.
That's why smart contracts aren't useful.
Most contracts end in the happy case 99% of the time, it seems very worthwhile to automate that happy case and fall back to the traditional legal system in the failure case where either party isn't happy with the outcome.
It's just as true to say contacts aren't "necessary" 99% of the time, because people follow through on the agreement.
The name likely comes from options contracts, which are technically contracts but traded like equities. Most options are very simple tuple: (equity, strike price, call / put). The smart in smart contract can mean writing a smarter option contract.
I think they can be, I am not a lawyer.
But if our "legal contract" is "do what the code says" then the smart contract is a legal contract. Is it not?
If you just want to trigger actions based on something and then store it, you don't need the machinery of the blockchain.
Just like Tesla's AutoPilot, smart contracts were named that for a reason, to mislead (and make money along the way).