Sind smart contracts während der Ausführung unveränderlich?

Von welchem Node im Ethereum Netzwerk wird ein smart contract ausgeführt wenn es durch eine Transaktion angestoßen wird? Etwa von dem Miner der erfolgreich ein Block verifiziert und an die Blockchain anhängt?

Und inwiefern ist ein smart contract gegen Veränderungen während der Ausführung geschützt? Könnte der Node, der für die Ausführung des smart contracts qualifiziert ist, den Code des smart contracts verändert ausführen? Beispielsweise könnte man Variablen während es in der Ethereum Virtual Machine ausgeführt wird verändern oder auch ganz andere Befehle ausführen.

Ist von Außen irgendwie verifizierbar das ein smart contract so ausgeführt wurde wie der Code in der Blockchain es erwarten lässt?