I'm looking at using Clone on top of a beacon proxy for consistent cross chain addresses regardless of bytecode and making it upgradable. I've searched everywhere and I can't find more conversations about this other than Create3 which seems to have stagnated.
Transparent proxy is the CloneDeterministic logic from OZ. The Beacon proxy is from Proxy.sol
The beacon proxy and the contacts down-stream are using storage slots.
- Beacon proxy deployed (implementation)
- Clone beacon proxy and init with beacon address for Proxy delegate address resolution
Transparent Proxy -> Beacon Proxy -> Business Logic (with slot storage)
|
|---> Beacon Resolve Address
I'm wondering what the gotcha's are or if someone has a better approach to get deterministic addresses with upgradability that isn't based on bytecode? And generally speaking, what are consequences of risks of delegatecall depth, that is, one delegatecall on top of another.