Думайте об Ethereum как о процессе, запущенном на вашей машине или удаленно.Используя web3.eth.getStorageAt
, вы читаете данные из памяти процесса.Таким же образом вы можете читать данные каждой программы на вашем компьютере.
С другой стороны, языки программирования высокого уровня, такие как Java, C ++ или Solidity, часто определяют правила доступа к переменным и функциям (приватным, защищенным и т. Д.).).Но эти правила действуют только в контексте выполнения программы.Для Solidity этот контекст является выполнением транзакции.
Это означает, что приватное поле является приватным только для других контрактов, пытающихся его прочитать.Но может читаться внешними (и довольно низкоуровневыми) API, такими как web3.eth.getStorageAt
.