Event handler event
Event handler functions receive two arguments: event
and context
.
The event
object contains the event params, the transaction that produced the event, and the block containing that transaction. These types are based on the corresponding types from viem
, but represent only the finalized blockchain state.
Event
The event being processed. This is the object passed as the first argument to every event handler function.
type ExampleEvent = {
name: string;
params: {
/* ExampleEvent-specific parameters */
};
log: Log;
block: Block;
transaction: Transaction;
};
Log
The log associated with this event.
type Log = {
/** Globally unique identifier for this log */
logId: `${Hash}-${number}`;
/** Value used internally by Ponder to sort logs across networks */
logSortKey: bigint;
/** Unix timestamp of when the block containing this log was collated */
blockTimestamp: bigint;
/** The address from which this log originated */
address: Address;
/** Hash of block containing this log */
blockHash: Hash;
/** Number of block containing this log */
blockNumber: bigint;
/** Contains the non-indexed arguments of the log */
data: Hex;
/** Index of this log within its block */
logIndex: number;
/** Hash of the transaction that created this log */
transactionHash: Hash;
/** Index of the transaction that created this log */
transactionIndex: number;
/** List of order-dependent topics */
topics: string[];
/** `true` if this filter has been destroyed and is invalid */
removed: boolean;
};
Block
The block containing the transaction that emitted this event.
type Block = {
/** Base fee per gas */
baseFeePerGas: bigint | null;
/** "Extra data" field of this block */
extraData: Hex;
/** Maximum gas allowed in this block */
gasLimit: bigint;
/** Total used gas by all transactions in this block */
gasUsed: bigint;
/** Block hash */
hash: Hash;
/** Logs bloom filter */
logsBloom: Hex;
/** Address that received this block’s mining rewards */
miner: Address;
/** Block number */
number: bigint;
/** Parent block hash */
parentHash: Hash;
/** Root of the this block’s receipts trie */
receiptsRoot: Hex;
/** Size of this block in bytes */
size: bigint;
/** Root of this block’s final state trie */
stateRoot: Hash;
/** Unix timestamp of when this block was collated */
timestamp: bigint;
/** Total difficulty of the chain until this block */
totalDifficulty: bigint | null;
/** Root of this block’s transaction trie */
transactionsRoot: Hash;
};
Transaction
The transaction that emitted this event.
type Transaction = {
/** Hash of block containing this transaction */
blockHash: Hash;
/** Number of block containing this transaction */
blockNumber: bigint;
/** Chain ID. */
chainId: number;
/** Transaction sender */
from: Address;
/** Gas provided for transaction execution */
gas: bigint;
/** Base fee per gas. */
gasPrice?: bigint | undefined;
/** Hash of this transaction */
hash: Hash;
/** Contract code or a hashed method call */
input: Hex;
/** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */
maxFeePerGas?: bigint | undefined;
/** Max priority fee per gas (in wei). */
maxPriorityFeePerGas?: bigint | undefined;
/** Unique number identifying this transaction */
nonce: number;
/** Transaction recipient or `null` if deploying a contract */
to: Address | null;
/** Index of this transaction in the block */
transactionIndex: number;
/** Value in wei sent with this transaction */
value: bigint;
};
Last updated on March 8, 2023