AIP-88 - Transacciones de Epílogo de Bloque
AIP-88 cubre transacciones de epílogo de bloque, que son un nuevo tipo de transacción que dan información sobre el bloque después de que ha sido ejecutado. Estas transacciones solo pueden ser creadas por el consenso y no son iniciadas por usuarios. Contienen información sobre el uso de gas en el bloque y contendrán más información en el futuro.
Reemplaza el tipo de transacción anterior StateCheckpoint
, que se usaba para
“a veces” señalar el final de un bloque. La nueva transacción BlockEpilogue
es
ahora a veces creada al final de un bloque en su lugar, y está garantizado que sea
la última transacción en el bloque. El único caso en que esto no se aplica es el
último bloque de una época, que no tendrá transacción BlockEpilogue
.
FAQ General
Sección titulada «FAQ General»¿Qué hay en la Transacción de Epílogo de Bloque?
Sección titulada «¿Qué hay en la Transacción de Epílogo de Bloque?»La transacción de epílogo de bloque contiene un enum BlockEndInfo
. Está diseñado
deliberadamente como un enum para que pueda ser extendido en el futuro sin romper
código existente. La versión actual es V0
y contiene los siguientes campos:
module 0x1::epilogue { enum BlockEndInfo { V0 { /// Whether block gas limit was reached block_gas_limit_reached: bool, /// Whether block output limit was reached block_output_limit_reached: bool, /// Total gas_units block consumed block_effective_block_gas_units: u64, /// Total output size block produced block_approx_output_size: u64, }, }}
Estos principalmente contienen información sobre el uso de gas en el bloque para propósitos de depuración.
La salida JSON se verá así:
{ "version":"1912", "hash":"0x54a8efc93fc94f5b545dadb63da3d4dc192125c717b336dc446d55a5b553913f", "state_change_hash":"0xafb6e14fe47d850fd0a7395bcfb997ffacf4715e0f895cc162c218e4a7564bc6", "event_root_hash":"0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000", "state_checkpoint_hash":"0x841a43956ca09a02b1c1cdadc65f24c390170aa666015a2e8f7ec5c9d6a3875f", "gas_used":"0", "success":true, "vm_status":"Executed successfully", "accumulator_root_hash":"0x6561976b4560ff25239dffc6cada70e7008dd42fc4d3df2eca6a86b6d2ec384d", "changes":[], "timestamp":"1719263322836578", "block_end_info": { "block_gas_limit_reached":false, "block_output_limit_reached":false, "block_effective_block_gas_units":0, "block_approx_output_size":1163 }, "type":"block_epilogue_transaction"}
FAQ de Compatibilidad
Sección titulada «FAQ de Compatibilidad»¿Qué significa esto para mi dApp?
Sección titulada «¿Qué significa esto para mi dApp?»Si procesas transacciones en tu dApp, y esperas que la última transacción en un
bloque sea una StateCheckpoint
, necesitarás actualizar tu código para manejar la
transacción BlockEpilogue
en su lugar.
Ten en cuenta que, la transacción BlockEpilogue
está garantizada que sea la última
transacción de un bloque excepto para el último bloque de una época, que no
tendrá una transacción BlockEpilogue
.
¿Qué aplicaciones probablemente se vean afectadas?
Sección titulada «¿Qué aplicaciones probablemente se vean afectadas?»Las aplicaciones que indexan todas las transacciones como exploradores de bloques y procesadores de indexación de exchanges centralizados pueden verse afectadas. Sin embargo, la mayoría de estas son informativas y no afectan la funcionalidad core de la dApp.
¿Qué puedo hacer para procesar el nuevo tipo de transacción?
Sección titulada «¿Qué puedo hacer para procesar el nuevo tipo de transacción?»Si estás usando el SDK de Go de Aptos o el SDK de TypeScript de Aptos, puedes actualizar a la última versión, que automáticamente manejará el nuevo tipo de transacción.