Всем известно, что после развертывания смарт-контракта в сети Ethereum он не будет изменен. Но как насчет значения варианта контакта? Скажем, смарт-контракт выглядит так:
...
contract Hello{
uint256 var1 = 10;
function changeVar1() public{
var1 = 100;
}
}
...
Итак, мой вопрос: где вариант var1 хранится в Ethereum? Является ли это частью байт-кода смарт-контракта? (Я думаю, он хранится таким образом). Если это так, его значение существует в памяти EVM, когда вы запускаете контракт, и каждый раз, когда вы снова запускаете смарт-контракт, значение var1 инициализируется как 10. Если нет, то где именно он хранится? И могу ли я увидеть значение var1, измененное предыдущей транзакцией, вызвавшей функцию changeVar1()?
Система хранения узлов Ethereum зависит от того, какое программное обеспечение узла вы используете. Это деталь реализации.
Например, Parity использует RocksDB , и вы можете найти эти файлы на своем диске при запуске узла Parity.
Кроме того, вы можете запустить свой узел в режиме полного архива , и он хранит все исторические состояния на диске. На данный момент это около 2 ТБ.
Шуай Сюй
Микко Отамаа
Шуай Сюй
Микко Отамаа