Skip to content

v1.2.0 Andromeda

Latest

Choose a tag to compare

@0xpApaSmURf 0xpApaSmURf released this 26 Aug 13:27
· 19 commits to main since this release
2e9b90f

v1.2.0 Andromeda Release

Changelog

Major changes to the Extendable pattern to improve gas cost efficiency and better runtime introspection. Solves problem of function shadowing and refactored ERC165 implementation away from Extension.
Extension implementation now slightly changed.
Some bug fixes.
Implemented enhancements and fixes as suggested by auditors.

Added

  • Extensions now implicitly implement ERC165 by calling a singleton contract that contains the logic, to prevent redeployment
  • ERC165Logic singleton exists at static address on all EVM chains
  • Comprehensive event emissions for all base Extensions (Extend, Retract, Replace, Permissioning)
  • Interface struct type that is used to describe Extension implementations
  • PermissioningLogic: renounceOwnership function

Changed

  • Storage libraries function to return state struct renamed _getStorage => _getState
  • Extendable no longer cycles through Extensions to try/catch calls
  • Extensions now must implement a new IExtension interface consisting of getInterface and getSolidityInterface functions.
  • ExtendableStorage changed to support new introspection routines
  • Introspection now allows clearer viewing of interfaces and functions implemented by an Extension or an Extendable
  • _beforeFallback and afterFallback are now correctly placed to avoid certain conditions where they were not atomic
  • ExtendLogic function renamed from getCurrentInterface => getFullInterface
  • ExtendLogic now extends the contract with the Extension using its interface and all function selectors, and will revert if any are already extended
  • RetractLogic now retracts an Extension by removing all references to the Extension address by interfaceId and function selector
  • ReplaceLogic now checks if an Extension that implements multiple interfaces matches that of the old Extension before performing the replacement
  • PermissioningLogic: owner can now no longer be set to the zero address to avoid cases where any user could become owner after setting to address zero by calling init

Removed