Only EXTDELEGATECALL
from EOF1 to legacy contract is prohibited, per today’s spec. EXTCALL
and EXTSTATICCALL
are unrestricted. Also legacy can *CALL
EOF1 contracts without restrictions.
Thank you for the clarification. It would be better if such statement was made in full in the EIP.
I.e. we will be able to upgrade the implementation contracts behind UUPS and other proxies (and Diamond libraries), is that correct?
To understand - such stablecoins need to keep the same entrypoint address (mostly proxy now) and basically the storage layout. Implementation contracts can be replaced.
If stablecoins depend on delegatecalling arbitrary adresses not under control of the stablecoin contract then they will not be able to upgrade. Note that this is widely considered to be a security risk.
If however it is delegate calling to contracts controlled by the stablecoin, those addresses need to be EOF contracts. I expect that any such upgrade would deploy the new delegate contracts and then upgrade the core contract, where the core contract is the single switching point for new logic.
Solidity is running a service for source code verification and matadata: https://sourcify.dev
It publishes the ABI/metadata of a contract e.g. on IPFS.
In EOF an anchor to such data may be potentially stored in the metadata section: EIP-7834: Separate Metadata Section for EOF.
A blog post on why we should reconsider EOF: Ethereum is turning into a labyrinth of unnecessary complexity with EOF - Let’s reconsider EOF.