Signature
IB20Asset.sol
Description
EmitsAnnouncement(caller, id, description, uri), executes every entry in internalCalls atomically via self-delegatecall (preserving msg.sender), then emits EndAnnouncement(id). Pass an empty internalCalls array for a notice with no on-chain effect; both events still fire and id is consumed.
Indexers pair open and close brackets by id. Every event emitted between the two logs belongs to the announced action. A state-changing call that appears outside this bracket was invoked directly, not through announce.
- Execution order: emit
Announcement→ run inner calls → emitEndAnnouncement. If any inner call fails, the whole transaction reverts andidis not consumed. - After a successful call,
isAnnouncementIdUsed(id)returnstrue. announceis defined on B20 Asset only. Stablecoin has no announcements.- Typical inner calls:
updateUIMultiplier,cancelUIMultiplierUpdate,batchMint,mintWithMemo,burnWithMemo.
Parameters
Reverts
A Solidity
Panic inside an inner call (for example arithmetic overflow) propagates raw and is not wrapped as InternalCallFailed.
Access Control
OPERATOR_ROLE gates this call. Any other caller reverts AccessControlUnauthorizedAccount. Inner calls keep their own role gates; the operator must hold every role the inner calls require (for example MINT_ROLE for batchMint, BURN_ROLE for burnWithMemo).
Example
Scheduled split wrapped in an announcement
Notice with no inner calls