Handler not executing
- Verify
discriminator = &EXTERNAL_CALL_HANDLER_DISCRIMINATOR
- Allocate sufficient
compute_units
Deserialization errors
- Use
UncheckedAccount
for committed accounts in handler context - Manually deserialize via
try_deserialize
on borrowed data - Check account discriminator matches expected type
Transaction failures
- Ensure all handler accounts are listed in
ShortAccountMeta
- Match
is_writable
flags to actual usage - Increase compute budget for all handlers in the commit
Limitations & considerations
- Handlers execute on base layer and consume base-layer fees
- Standard Solana limits apply (compute, account locks)
- Atomicity: any handler failure reverts the commit
- First two handler accounts are injected (
escrow
,escrow_auth
)