Several users have expressed the desire to add support for dynamic Wasm actor upgrades. EVM smart contract upgrades are already well-supported by implementing standardised Solidity mechanisms (e.g. proxy, diamond pattern, etc.) But upgrading Wasm actor currently requires rolling out network upgrade (hard fork) via the UpgradeScheduler, and coordinating amongst validators to run it in lockstep at a designated height.
Instead, users should be able to schedule an upgrade at runtime through on-chain interactions. Considerations:
Unopinionated governance, enabling every IPC adopter to determine how the ecosystem will decide on the contents and timing of an upgrade. Whether to use multisigs, DAO voting, authority, etc. should be left up to the user. Our dynamic upgrade mechanisms should expose hooks to record definitive commands (e.g. schedule this upgrade for epoch N, perform this upgrade now, cancel this upgrade, etc).
No binary rollout required. The upgrade logic and definition should be fully expressable in metadata and/or Wasm, such that it can be staged by downloading content addressed artifacts at runtime (or even placing them on chain).
There may be some FVM support on the way, but this will likely require our push as it's not a priority for Filecoin Core Devs AFAIK.
A simple first implementation could consist of Wasm contract/bindings for the MigrationFunc, together with special privileged syscalls to manage upgrades from Wasm actors.
Several users have expressed the desire to add support for dynamic Wasm actor upgrades. EVM smart contract upgrades are already well-supported by implementing standardised Solidity mechanisms (e.g. proxy, diamond pattern, etc.) But upgrading Wasm actor currently requires rolling out network upgrade (hard fork) via the
UpgradeScheduler
, and coordinating amongst validators to run it in lockstep at a designated height.Instead, users should be able to schedule an upgrade at runtime through on-chain interactions. Considerations:
MigrationFunc
, together with special privileged syscalls to manage upgrades from Wasm actors.