Allen ist bekannt, dass der Smart Contract, sobald er im Ethereum-Netzwerk bereitgestellt wird, nicht mehr geändert wird. Aber was ist mit dem Wert der Variante eines Kontakts? Angenommen, ein intelligenter Vertrag sieht so aus:
...
contract Hello{
uint256 var1 = 10;
function changeVar1() public{
var1 = 100;
}
}
...
Meine Frage ist also, wo ist die Variante var1 in Ethereum gespeichert? Ist es ein Teil-Bytecode des Smart Contract? (Ich denke, es wird auf diese Weise gespeichert) Wenn ja, ist sein Wert im Speicher von EVM vorhanden, wenn Sie den Vertrag ausführen, und jedes Mal, wenn Sie den Smart Contract erneut ausführen, wird der Wert von var1 als initialisiert 10. Wenn nicht, wo wird es genau gespeichert? Und kann ich den Wert von var1 sehen, der durch die vorherige Transaktion geändert wurde, die die Funktion changeVar1() aufgerufen hat?
Das Node-Speichersystem von Ethereum hängt davon ab, welche Node-Software Sie ausführen. Es ist ein Implementierungsdetail.
Beispielsweise verwendet Parity RocksDB und Sie können diese Dateien auf Ihrer Festplatte finden, wenn Sie einen Parity-Knoten ausführen.
Darüber hinaus können Sie Ihren Knoten im vollständigen Archivmodus ausführen und er speichert alle historischen Zustände auf der Festplatte. Derzeit sind es etwa 2 TB.
Shuai Xu
Mikko Ohtamaa
Shuai Xu
Mikko Ohtamaa