How wrong am I to equate "smart contracts" with a general purpose protocol negotiation thingie? Like TLS handshakes, but with code vs a spec? Or like a two party constraint satisfaction solver?
A smart contract can have persistent state, so it's more than just code it's also data. You can have a notion of users and privileges baked in the contract for example.