I am a newbie here, and I have a question (that might be trivial) concerning the definition of smart contracts. As far as I understand, people write these contracts in the form of EVM bytecode which is then posted to the blockchain and later executed by miners.
My doubt is: if my counterparty posts some bytecode for a contract that we previously agreed about, how am I supposed to verify that his code will actually perform the "right" actions, and he's not trying to cheat somehow? Should I learn to read bytecode in order to fully trust a contract?
I see that there are scripting languages (like Solidity) that allow you to write contracts in a readable way, but if I understood correctly those are all external to Ethereum, and are only there to help you write the final bytecode. So in the end it seems to me that people have no guarantee whatsoever that a given contract on the blockchain actually refers to a specific readable script/description. So how can they fully trust it?
Would it be feasible/reasonable to build a scripting language that is integrated to Ethereum, so that people can actually post a contract script instead of machine code? It wouldn't need to be a general purpose language, but just include few keywords allowing the definition of basic conditional payments that make up for most financial transactions.
I suspect this has already been discussed somewhere but I couldn't find it, so again sorry if I'm asking trivial stuff.