Saltearse al contenido

emit

Transacciones Emitidas prepare()
  • Lee una transacción de read_ptr
  • Valida la transacción contra las reglas de emisión
  • Emite la transacción al consenso cuando es válida
  • Escribe el hash canónico de la transacción en write_ptr

Con la enmienda HooksUpdate2, usa prepare() antes de emit() para inyectar automáticamente todos los campos de emisión requeridos (Account, Sequence, SigningPubKey, Fee, EmitDetails, etc.) a partir de una transacción parcial.

int64_t emit (
uint32_t write_ptr,
uint32_t write_len,
uint32_t read_ptr,
uint32_t read_len
);
uint8_t emithash[32];
if (emit(SBUF(emithash), SBUF(tx)) < 0)
rollback(SBUF("hook: emit failed"), __LINE__);
NombreTipoDescripción
write_ptruint32_tPuntero a un buffer donde escribir el hash de la transacción
write_lenuint32_tEl tamaño del buffer para escribir el hash de la transacción (debe ser 32)
read_ptruint32_tPuntero a la transacción a emitir
read_lenuint32_tLa longitud de la transacción
TipoDescripción
int64_tEn caso de éxito, el número de bytes del hash de transacción escritos (32), o:

Si es negativo, un error:
OUT_OF_BOUNDS
- punteros/longitudes especificados fuera de la memoria del hook.

PREREQUISITE_NOT_MET
- se debe llamar primero a etxn_reserve

TOO_MANY_EMITTED_TXN
- el número de transacciones emitidas es ahora mayor que la promesa hecha cuando se llamó a etxn_reserve

EMISSION_FAILURE
- la transacción estaba malformada según las reglas de emisión.