Synthetic Transactions on Sei
Sei supports synthetic transactions—Cosmos-originated operations that are wrapped and surfaced through the EVM RPC layer. These include association flows, governance events, and distribution payouts. This guide explains how they appear through JSON-RPC and how to index them correctly after v6.1.11
.
Key Properties
Definition | Cosmos-originated transactions emitted through the EVM log interface (associations, governance, distribution). |
Flag | synthetic: true in log metadata (v6.1.11 ). |
Gas accounting | Excluded from block/receipt gasUsed ; costs settle in the Cosmos ante handler. |
Association method | sei_associate handles signature-based link between Sei and EVM addresses. |
Indexing | Use the sei_ namespace to stream synthetic logs alongside EVM logs. |
Association Flow (sei_associate
)
{
"jsonrpc": "2.0",
"id": 1,
"method": "sei_associate",
"params": [
{
"custom_message": "Link my account",
"r": "0x...",
"s": "0x...",
"v": "0x1c"
}
]
}
- Sends a synthetic transaction without gas fees; verification happens in the Cosmos ante handler.
- Resulting logs appear under
sei_seiAssociation
withsynthetic: true
. - Indexers should persist the association tuple
(seiAddress, evmAddress)
and treat the event as finalized once included in a block.
Indexing Strategy
Dual namespace polling
Query both
eth_getLogs
and sei_getLogs
(or sei_subscribe
) to capture synthetic envelopes alongside EVM events.Synthetic segregation
Store synthetic logs in a dedicated table keyed by
{tx_hash, module}
for downstream reconciliation.Cosmos cross-reference
If enrichment is needed, join against module-specific gRPC queries (e.g., distribution rewards) using the event payload.
Interaction With Gas Accounting
- Synthetic envelopes do not alter receipt
gasUsed
(seerpc-gas-accounting
). - When computing block-level gas metrics, exclude synthetic logs entirely; they are informational signals only.
- Estimating gas for synthetic flows is unnecessary—
sei_associate
and similar methods are processed outside the EVM gas model.
Troubleshooting
Error | Cause | Fix |
---|---|---|
Missing synthetic flag | Node running pre-v6.1.11 binary. | Upgrade to v6.1.11 or later; the flag is added at log emission time. |
Association not visible via eth_getLogs | Querying eth_ namespace only. | Switch to sei_getLogs or include the sei_ namespace to fetch synthetic events. |
Duplicate association events | Client resubmitted association payload. | Treat the first inclusion as canonical; later duplicates can be ignored. |
Last updated on