¿Pueden otros nodos en el sistema ver el estado de mi contrato?

Creé un contrato simple que tiene un estado simple con un solo int.

ingrese la descripción de la imagen aquí

Le di un valor de 90 en el momento del despliegue (constructor).

Ahora fui al bloque particular en Rinkeby, y pude ver el Bytecode de mi código de contrato.

Pero no estoy seguro de si otros nodos pueden ver que establecí el valor en 90.

¿O uno puede verlo solo si hay un captador para ello?

Lo siento si mi pregunta es muy básica. Acabo de empezar con Ethereum.

Respuestas (2)

Para agregar a la respuesta de @ Andrey, su contrato hace que sea un inconveniente acceder a los datos. Si tiene la intención de que sea fácilmente accesible para otros contratos y observadores, puede hacer la visibilidad publiccon

uint public value

Eso les dará a todos una función útil que es funcionalmente equivalente a:

function value() public view returns(uint) { return value; }

Cuando no haces eso, es más difícil para los observadores, pero...

Todos los datos están disponibles para todos los nodos completos que validan de forma independiente las transacciones enviadas a su contrato. Todos concluyen de forma independiente 90. Implícitamente, cualquier persona con los conocimientos para trabajar en el nivel de software de minero/nodo o cómo hurgar en el almacenamiento sin procesar en Solidity puede encontrar el camino hacia ese número.

Además, la carga útil de datos para la transacción que estableció el valor 90es siempre visible para todos a través de un explorador de bloques. Todo el mundo puede ver 90en su camino a las funciones de colocador.

comida para llevar principal? Es muy complicado mantener un secreto en la cadena de bloques. privatepuede ser algo engañoso.

Espero eso ayude.

Todos los datos de blockchain son públicos. Dado que su contrato (y su estado) se almacena en la cadena de bloques, las variables también son públicas.