Sierpe 1.1.0 — token transfers and trustlines

August 20, 2026

Sierpe 1.1.0 adds two data kinds beyond events and contract state, both under the same honesty contract as the rest of the API.

Token transfers

SEP-41 movement events — transfer, mint, burn, clawback — now decode into structured rows: from/to addresses, the exact i128 amount, the SEP-0011 asset, and the CAP-67 muxed destination id. They are written in the same atomic commit as events and state, and served at GET /v1/contracts/:id/transfers with account/from/to/type filters.

SAC registrations derive transfers by default; custom SEP-41 tokens opt in through kinds. An event that names a movement but fails to decode is counted in sierpe_suppressed_transfers_total — alertable — while its raw event row still lands. The decoder never quietly swallows what it does not understand.

Classic trustlines

For a registered SAC, the trustline changes of the asset it wraps are now attributed to that contract — with the contract id derived locally, so this costs zero extra RPC calls. Stored as full history plus a convergence-safe holder snapshot with tombstones, and served at GET /v1/contracts/:id/trustlines (live holders) and /trustlines/history (chain-order changes with before and after balances).

The kind is opt-in through kinds, and observes issued assets only — native XLM has no trustlines.