anyFallback
If the anyExec contract execution failed on Chain B, it can call _fallback function to send messages back to Chain A.
anyExecute DAPP receiver contract(Chain B failed) -> anyCall(Chain B) -> SMPC Network -> anyExec(Chain A) -> anyExecute (DAPP sender contract(Chain A))
->anyFallback
Format of the fallback function needs to be:
function anyFallback(address _to, bytes calldata _data) external;
Logic
When anyExecute fails on Chain B, the anycall contract would issue another call back to chain A with data including the anyFallback selector.
Hence the anyExecute execute normal function or fallback function based on the selector.
emit LogAnyCall(
_from,
_fallback,
abi.encodeWithSelector(IApp.anyFallback.selector, _to, _data),
address(0),
_ctx.fromChainID,
0, // pay fee on dest chain
_appID,
nonce);Example
Example Contract Code:https://ftmscan.com/address/0x2b6fbe2a08491130dcc2fe13f0e60b3540d92a55#code
2. Chain B issued callback: https://bscscan.com/tx/0x3ccb1f91ad66348ec5dd8676d1dd59372fd37bca4e202982b582cd8d4e5c582c#eventlog
3. anyFallback executing: https://ftmscan.com/tx/0x215002fb282c630dada2ebeb56ea605ae6c24df8a52db46b977e9c081893d061#eventlog
anyExecute function:
When executing, anyExecute first look at the selector of the calldata passed in to determine if it should execute normal flow or fallback function.
Last updated