testnet
GitHub

How to Emit Events from Precompiles

integration intermediate

A quick guide on using the utils.EmitEvent helper to generate EVM logs.

Prerequisites

  • Go
  • Maroo Precompile Architecture

Understanding Arguments

The args variadic parameter in EmitEvent must contain both indexed (topics) and non-indexed (data) arguments in the exact order they appear in the Solidity event definition.
event MyEvent(uint256 indexed id, string name);
Note: For the event above, you must pass `id` (uint256) first, then `name` (string).

Handling Errors

Always check the returned error. Common errors include EventNotFound (typo in name) or ArgCountMismatch.
if err := utils.EmitEvent(...); err != nil {
    // Log internal error, but maybe return a generic error to EVM to avoid leaking implementation details
    return nil, err
}
Source: maroo
ESC
Type to search