Si tomamos el algoritmo de validación de bloques descrito en el libro blanco (Sección Blockchain y Minería), dice en el punto 6:
Sea
TX
la lista de transacciones del bloque, conn
transacciones. Para todoi
adentro0...n-1
, listoS[i+1] = APPLY(S[i],TX[i])
. Si alguna aplicación devuelve un error , o si el gas total consumido en el bloque hasta este punto supera el GASLIMIT, devuelve un error .
¿Es cierta la audaz afirmación? Quiero decir, si la parte en negrita fuera cierta, ¿implicaría que los bloques válidos no pueden contener transacciones con errores? ¿O es simplemente un algoritmo de validación genérico que no se corresponde con el real?
(Sé con certeza que hay bloques válidos con transacciones fallidas, por ejemplo, excepción de falta de gas, desbordamiento de la pila de llamadas, etc., por ejemplo, https://etherscan.io/tx/0x3967f859c56c61f3365f6873ea001985e4e694952a9c22b68be731132c8e3e77 )
Es importante entender que este es un algoritmo de validación de bloques. Cuando esta sección del documento técnico habla sobre la devolución de un error, se trata de la capa de bloque en lugar de la capa de transacción. Un error en el nivel de validación del bloque no permitirá que un bloque se propague a la red, a diferencia de un error en la capa de transacción, que se transmitirá a la red, como se muestra en el enlace de ejemplo.
si el total de gas consumido en el bloque hasta este punto excede el GASLIMIT, devuelve un error
Al pensar en esto desde una perspectiva de validación de bloques, esto tiene mucho sentido. Si un minero intenta incluir transacciones en su bloque cuyo total gas
es mayor que el GASLIMIT
, el bloque no será válido y, por lo tanto, nunca verá la red. Si este no fuera el caso, los mineros incluirían cada transacción en su bloque para recibir todas las tarifas de transacción.
Si alguna aplicación devuelve un error... devuelve un error.
La clave para esto es entender que se trata de una aplicación y no de una transacción específica. En esta declaración, una aplicación se refiere a un cliente de minería o alguien que está validando los bloques. Con este entendimiento, es más claro que esta afirmación es verdadera: si la aplicación de validación de bloques devuelve un error, devuelve un error.
error de corrección:
o si el gas total consumido en el bloque
=> o si el gas total consumido en la transacción
En el caso de bloque, el gasLimit del encabezado del bloque debe ser mayor que la suma de gasLimit de las transacciones.
Briomkez
APPLY
. Entonces, ¿te refieres literalmente a una excepción en el programa en ejecución (y no en el nivel de EVM) o me equivoqué? (Lo siento, pero para mí sigue siendo un poco confuso)shane fontaine
Briomkez
shane fontaine
timestamp
en el bloque, y en realidad no incluye uno en el bloque cuando lo envía a la red, será rechazado a nivel de aplicación. Para el total de gas consumido, eso es simplemente si usted (un minero) intenta incluir transacciones cuya combinacióngas
es superior agasLimit
.Briomkez
shane fontaine