fip | title | author | discussions-to | status | type | created | spec-sections | requires |
---|---|---|---|---|---|---|---|---|
0062 |
Fallback Method Handler for the Multisig Actor |
Dimitris Vyzovitis (@vyzo), Raúl Kripalani (@raulk) |
Final |
Technical Core |
2023-03-20 |
FIP-0050 |
Adds a no-op handler for method numbers higher or equal to 2^24 (the first exported method as per FRC-0042) to the multisig actor. This change enables the built-in multisig actor to receive value from EVM runtime actors (i.e. smart contracts), Eth accounts, and placeholders. It also brings them in line with the equivalent behaviour of account actors, as of FIP-0050.
We introduce a no-op handler in the built-in multisig actor for calls where MethodNum >= 2^24
.
Such calls are now no longer rejected, and instead return successfully.
This change is needed to normalise interactions from EVM runtime actors (i.e. smart contracts), Eth accounts, and placeholders with the multisig actor.
These actors set MethodNum = FRC-42("InvokeEVM")
by default when performing outbound calls, including simple value transfers.
Refer to FIP-0054 and FIP-0055 for background.
Prior to this FIP, built-in multisig actor would reject such calls, causing the immediate reversal of a value transfer.
This limitation was first encountered in the wild when deploying a Wrapped FIL (WFIL) token. While a multisig can hold WFIL tokens, unwrapping them into the native FIL coin causes a value transfer to the multisig, carrying the above method number. This would be rejected unconditionally.
This change also brings multisigs in line with the equivalent no-op behaviour implemented for account actors in FIP-0050.
Given:
pub const FIRST_EXPORTED_METHOD_NUMBER: MethodNum = 1 << 24;
Augment the built-in multisig actor to handle calls on method numbers higher or equal to FIRST_EXPORTED_METHOD_NUMBER
by immediately returning exit code 0 (Ok) and no return value, independently of the sender, origin, or call parameters.
Methods below FIRST_EXPORTED_METHOD_NUMBER
continue to be handled as-is.
We adopt the simplest solution possible to achieve the goal. Precedent exists in the account actor as of network version 18.
A previous version of this FIP included payment channels in scope. However, this conflicted with their deliberate non-implementation of the Universal Receiver Hook, specified in [FIP-0053], motivated by their inability to manage such tokens if received. Given the prevalent disuse of the payment channel actor on mainnet, we do not see immediate justification to resolve that conflict, and therefore choose to descope the payment channel implementation in this FIP.
While this is a change in behaviour and interface, it is strictly expansive and no backwards compatibility issues are expected.
- Send an arbitrary message, with method number equal to the minimum exported method number, which should be accepted returning an empty value.
- Send an arbitrary message, with method number over the minimum exported method number, which should be accepted returning an empty value.
- Send an arbitrary message, with method number below the minimum exported method number, which should be rejected.
None.
None.
Improves the interoperability of multisigs actors with Filecoin EVM runtime actors (i.e. smart contracts), Eth accounts, and placeholders.
filecoin-project/builtin-actors#1252
Copyright and related rights waived via CC0.