docs: add missing storage interface declarations#799
Conversation
Thanks for pointing this. I understand the same happens for other interfaces that already support the interfaceId, but should not be an error for integrators. Our methods that check the interfaceId are already compiled.
I think that could not be fully true, from a hook, you could read those values != 0 inside of a transaction.
Also good point. Not sure if adding an inheritance in the contract to a possible new interface modifies the bytecode, maybe not, and this can be added. Although this contract will never be used directly by externals |
|
To avoid the Tag Env CI issue, I think we just need to set in the pharos env the commit |
|
Coverage after merging docs_add-storage-interface-abi into main will be
Coverage Report
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Product requirements
src/were missing declarations for public state variable getters and explicit view/pure functions that exist on the implementing contractsDesign notes
IBatchRequestManagerchanged its ERC-165 interface ID from0xaf00afbdto0x5cdb8e3cIRoot,IHub,IGateway).Intentionally excluded (reviewers: speak up if you disagree)
BATCH_LOCATORS_SLOT(),GLOBAL_POOL()(x3),MAINNET_CENTRIFUGE_ID(),BASE_COST(),RECOVERY_TOKEN_EXTRA_COST(),DEFAULT_SUPPORTED_TX_LIMIT(),RECEIVE_COST()(x4),FREEZE_BIT(). These are internal tuning knobs and sentinel values that integrators should not depend on. They can change between versions without notice and exposing them in interfaces suggests they are part of the contract's public API.debited()andcredited()onIAccounting. These areuint128 public transientvariables that always return 0 when read externally (transient storage is cleared after each transaction). Declaring them in the interface would mislead integrators into thinking they carry meaningful state.IVaultFactoryis shared acrossAsyncVaultFactoryandSyncDepositVaultFactory. Factory-specific public variables likeasyncRequestManager()orsyncDepositManager()were not added to avoid breaking the shared interface.