Events and receipts
ImplementedThe events the protocol emits, and how a receipt attributes an outcome to one transaction.
#Vault events
| Event | Emitted when |
|---|---|
Deposited(caller, receiver, assets, shares) | Shares minted against a deposit |
RedeemedInKind(owner, receiver, shares) | Shares burned for a pro-rata basket |
InKindAssetSent(receiver, token, amount) | One asset transferred as part of that basket |
RedemptionRequested(requestId, owner, shares, epoch) | Base-asset exit requested, shares escrowed |
EpochSettled(epoch, shares, assetsReserved) | An epoch closed and reserved base asset |
RedemptionClaimed(requestId, receiver, assets) | A settled redemption collected |
Synced(...) | A mirror executed |
SyncSkipped(...) | A mirror was evaluated and declined |
KeeperBountyPaid(keeper, amount) | A capped bounty paid for calling sync |
PerformanceFeeCrystallised(sharesMinted, newHighWaterMark) | Performance fee taken above the mark |
AssetTracked(token) / AssetUntracked(token) | An asset entered or left the tracked set |
InKindAssetSent is emitted once per asset rather than folded into RedeemedInKind, so an in-kind exit is fully reconstructible from logs without reading state.
#Receipts
A receipt is one sync outcome attributed to one transaction. Executions and skips produce receipts equally — that symmetry is the point.
| Field | Meaning |
|---|---|
vault, token, keeper | Who and what |
blockNumber, blockTimestamp, txHash, logIndex | Where onchain |
executed | Whether a trade happened |
kind | buy, sell or skip |
amount | Amount traded, or null |
previousSourceBalance, newSourceBalance | The source movement being mirrored |
skipReason | The verbatim contract enum name, never paraphrased |
divergenceValue | Desired size minus capped size |
snapshotAccepted | Whether the vault accepted the new snapshot |
finality | soft or final |
Without recorded skips, a vault that mirrored nothing for a week would look identical to one that had nothing to mirror. Receipts make those two states distinguishable.
#Finality
finality is soft until a row is deeper than the configured confirmation depth. Robinhood Chain is an Orbit chain: the sequencer confirms quickly, but an L1 reorganisation can still reorganise unfinalised L2 blocks.
Soft rows are shown and labelled. Hiding them would be misleading; presenting them as settled would be worse.