Zunächst nahm ich an, dass die Ausführung von Dusk’s Vertrag hauptsächlich vom Vertragscode und von der ihn aufrufenden Transaktion abhängt. Je genauer ich mir jedoch den Ausführungskontext der Rusk VM ansah, desto deutlicher trat der umgebende Blockzustand in den Vordergrund. Ein Zustandsübergang funktioniert nicht allein mit dem Vertragszustand. Er erhält außerdem die aktuelle Blockhöhe, den Zeitstempel, den Epoch-Seed, das Block-Gaslimit, das bereits verbrauchte Gas, die im Block erstellten Verträge sowie das eigene Gaslimit der Transaktion. Was mir auffiel, ist, dass die Vertragseausführung dadurch an den Zustand des Blocks gebunden ist, in dem sie ausgeführt wird. Der Vertrag arbeitet nicht isoliert vom aktuellen Kontext des Netzwerks. Das lässt eine kleine Abhängigkeit zurück, die ich bisher nicht wirklich berücksichtigt hatte: Allgemeine Berechnungen müssen sowohl mit dem Vertragszustand als auch mit den Grenzen des Blocks, in dem sie stattfinden, konsistent bleiben. Vielleicht ist das einfach notwendig für eine begrenzte Ausführung, aber es macht die Ausführungsgrenze der VM weniger in sich geschlossen, als ich zuerst angenommen hatte. Also stellt sich vielleicht die ruhigere Frage, von wie starkem Ausmaß das Verhalten eines Vertrags vom Blockkontext abhängen sollte, der eine Transaktion umgibt.

#dusk $DUSK @Dusk