Hello! Ivan M (Kiwi) from NFTX here.
We are currently working on NFTX V2 and have decided to implement beacon proxies into our system with a our vault factory serving as a beacon for the proxies.
However, we have encountered problems with etherscan detecting the implementation, because of a function conflict.
UpgradeableBeacon.sol and TransparentUpgradeableProxy.sol both use the function
implementation(), however, this functions naming on
UpgradeableBeacon.sol may be misleading.
For example, on
TransparentUpgradeableProxy.sol and most other proxies, the
implementation() function returns the implementation address that the proxy uses. But, in
UpgradeableBeacon.sol, this function returns the implementation of the
BeaconProxys that follow the Beacon.
This seems to me as an unintended difference between the two, and I propose renaming the
implementation() function in
UpgradeableBeacon.sol to something that fits its usage better. Such as
childImplementation(). This way it no longer conflicts with other proxies, and the usage is quite clear.
- Use a contract with
- Deploy an
- Call the
- Notice the returned result is the implementation for the
BeaconProxy, not the
I hope this post details the problem clearly and that a solution is considered