Hi @wjmelements
I like the idea of having a minimal base standard for this type of architecture.
In general, I appreciate the flexibility it provides, and I agree that ERC-8110 can be seen as a compatible extension of ERC-8167 from a storage organization perspective.
However, I have a couple of concerns.
1. On removing Diamond terminology
Iām not entirely sure that removing the Diamond terminology is necessary.
In the smart contract context, the term āDiamondā has become a widely recognized architectural concept.
When developers hear āDiamondā, they immediately associate it with a proxy that routes transactions to multiple facets. Even though the proxy and facets are separate units, together they behave as a single unified smart contract from an external perspective.
By contrast, the terms ādispatchā and ādelegateā are more generic and may not clearly convey this architectural property. In fact, dispatch and delegate patterns can also describe other designs, such as hook-based systems or even monolithic proxies with a single implementation.
It might be worth considering retaining terms such as Diamond and Facet to preserve compatibility and conceptual continuity within the ecosystem.
2. On introspection flexibility
While upgradeability is intentionally flexible in this standard, I believe introspection mechanisms such as selectors() and implementation(bytes4) should also remain flexible.
Depending on the chosen upgrade mechanism or extension framework, there may be more efficient or context-aware ways to implement introspection.
Providing a function-based reference implementation is helpful. However, it may be beneficial to explicitly state that these introspection methods can be implemented differently depending on the extension standard being used, as long as they conform to the ERC-8167 interface.