Я создал простой контракт, который имеет простое состояние с одним целым.
Я дал ему значение 90 во время развертывания (конструктор).
Теперь я пошел к определенному блоку в Ринкеби и увидел байт-код моего кода контракта.
Но я не уверен, увидят ли другие узлы, что я установил значение 90.
Или его можно увидеть, только если для него есть геттер?
Извините, если мой вопрос очень простой. Я только что посмотрел на Ethereum.
Чтобы добавить к ответу @Andrey, ваш контракт делает неудобным доступ к данным. Если вы намерены сделать это легко доступным для других контрактов и наблюдателей, вы можете сделать видимость public
с помощью
uint public value
Это даст всем полезную функцию, которая функционально эквивалентна:
function value() public view returns(uint) { return value; }
Когда этого не делаешь, наблюдателям тяжелее, но...
Все данные доступны всем полным узлам, которые независимо проверяют транзакции, отправленные в ваш контракт. Все они делают независимое заключение 90
. Подразумевается, что любой, у кого есть ноу-хау для работы на уровне программного обеспечения майнера/узла или как рыться в необработанном хранилище в Solidity, может найти свой путь к этому числу.
Кроме того, полезные данные для транзакции, которая установила значение 90
, навсегда видны всем через обозреватель блоков. Каждый может увидеть 90
на пути к функциям сеттера.
Главный вывод? Очень сложно сохранить секрет в блокчейне. private
может ввести в заблуждение.
Надеюсь, поможет.
Все данные блокчейна являются общедоступными. Поскольку ваш контракт (и его состояние) хранится в блокчейне, переменные также общедоступны.