Emit a new transaction from the hook
Concepts
Behaviour
- Read a transaction from read_ptr
- Validate the transaction against the emission rules
- Emit the transaction into consensus when valid
- Write canonical transaction hash to write_ptr
Definition
int64_t emit (
    uint32_t write_ptr,
  	uint32_t write_len,
    uint32_t read_ptr,
    uint32_t read_len
);
Example
if (emit(tx, tx_len) < 0)
    rollback("Failed to emit!", 15, 1);
Parameters
| Name | Type | Description | 
|---|---|---|
| write_ptr | uint32_t | Pointer to a buffer to write the transaction hash to | 
| write_len | uint32_t | The size of the buffer to write the transaction hash to (should be 32.) | 
| read_ptr | uint32_t | Pointer to the transaction to emit | 
| read_len | uint32_t | The length of the transaction | 
Return Code
| Type | Description | 
|---|---|
| int64_t | On success, the number of bytes of transaction hash written (32), or: If negative, an error: OUT_OF_BOUNDS- pointers/lengths specified outside of hook memory. PREREQUISITE_NOT_MET- emit_reservemust be called firstTOO_MANY_EMITTED_TXN- the number of emitted transactions is now greater than the promise made when emit_reservewas called earlierEMISSION_FAILURE- the transaction was malformed according to the emission rules. |