Esta pregunta se hizo en Reddit hace un tiempo:
Cuando un nodo envía una transacción a la red y tiene el receptor como contrato, ¿cada nodo ejecuta el bytecode del contrato con las entradas para confirmar el hash? ¿O el primer nodo que recibe la transacción ejecuta y crea el hash de la transacción que luego se distribuye y es lo que se usa para el consenso? Básicamente, ¿el código del contrato se ejecuta una o varias veces para cada transacción? Supongo que es lo primero si cada nodo ejecuta EVM. — Reddit: Preguntas básicas sobre Ethereum EVM y State Storage
Sí, la respuesta es bastante lógica. Cada nodo tiene que verificar los resultados de una transacción que invoca un contrato inteligente. El resultado es que al menos cada nodo completo ejecutará el código.
El hash de la transacción no es relevante hasta que se inserta en un árbol merkle. Al ejecutar la ejecución, lo único que nos importa es la cantidad de gas, los datos que se pasan y el código del contrato que se llama. Cuando se completa la ejecución, el árbol de almacenamiento del contrato puede actualizarse, por lo que volvemos a calcular el hash raíz de merkle de ese árbol (¡y cualquier otro contrato que pueda haber sido llamado por ese!)
fuente _
Cada nodo completo procesa cada transacción. Los mineros eligen qué transacciones ejecutar, según el precio del gas. Una vez que se extrae un bloque, cada nodo debe volver a ejecutar todas las ejecuciones del contrato para verificar el bloque.
Sí, cada nodo (completo) ejecuta el código de contrato para cada transacción.
Dado que ejecutar el código del contrato es relativamente costoso, los nodos solo lo hacen cuando lo necesitan. Cuando un nodo recibe una transacción, primero solo realiza algunas comprobaciones básicas, como:
Si pasan las comprobaciones básicas, el nodo transmite la transacción. Luego, los nodos mineros realizan el trabajo relativamente costoso de ejecutar la transacción, incluirla en un bloque y cobrar la tarifa de transacción. Cuando un nodo (completo) obtiene el bloque, ejecuta las transacciones en el bloque para verificar de forma independiente la seguridad y la integridad de la cadena de bloques que construye.
En la versión actual, cada nodo ejecuta todos los contratos. Dado que esto no es escalable, es muy probable que se implemente "fragmentación", donde algunos estados están solo en ciertos nodos. A continuación, se accederá a ellos según sea necesario de forma asincrónica. Esto es en lo que Vitalik está trabajando actualmente
zanzú
cerebro2000
ética
maestro astral