Envío de ether a una cuenta desde un contrato inteligente

Recién comencé a aprender sobre Smart Contracts y Ethereum, y me encontré con el ejemplo clásico de FoundRaising. (por ejemplo, https://developer.ibm.com/clouddataservices/2016/05/19/block-chain-technology-smart-contracts-and-ethereum/ )

Dado que la buena práctica de un contrato inteligente implica que el resultado del contrato debe ser el mismo en todos los nodos, tengo un problema para comprender la funcionalidad drawdown() del contrato inteligente presentado en la URL proporcionada.

Concretamente, al llamar:

benefactor.send(este.saldo);

  1. ¿Cómo ocurre el proceso de envío real? ¿Se cambia el saldo del benefactor localmente en cada nodo que ejecuta el contrato inteligente? Y de ser así...

  2. ¿Cómo se logra el consenso?

Respuestas (1)

Todos los nodos tienen una copia del mismo libro mayor de solo anexar (llamado blockchain) que almacena el estado en el momento en que se extrae el bloque. Los mineros y la minería se explican muy bien en el documento técnico de Ethereum .

El equilibrio se cambia localmente en cada nodo, sí, pero los nodos no llegan a un consenso sobre cada ejecución de contrato individual/cambio de estado en tiempo real a medida que ocurren, es simplemente el minero que extrae con éxito el bloque el que elige qué cambios de estado y las llamadas a funciones están incluidas. Esta pregunta analiza más a fondo cuándo cada nodo ejecuta realmente el código de cada transacción/llamada de contrato.

Este bloque recién extraído se agrega a la cadena de bloques, y la cadena de bloques con la mayor cantidad de trabajo detrás se acepta como la cadena "correcta", por lo que todos los nodos están de acuerdo en que todos los estados en ese bloque son los estados correctos por ahora.

Como ejemplo, imagina que benefactor.send(this.balance);llamaste con el valor de saldo 294820984 y yo lo llamé con el valor de saldo 7429847298. Si enviamos estas llamadas de contrato a la red al mismo tiempo, algunos mineros podrían incluir tu llamada y actualizar su registro de estado en consecuencia. , pero algunos podrían incluir el mío. Sin embargo, solo llegarían a un consenso sobre el que se extrae en un bloque. Esta respuesta explora con más detalle qué nodos están de acuerdo cuando se alcanza el consenso.