oss-directory: handle contracts from a deterministic deployer
There are some contracts (esp in DeFi) that are deployed across multiple chains from a deterministic deployer. The most popular protocol appears to be this one: https://github.com/Arachnid/deterministic-deployment-proxy
You can see this activity across multiple chains, eg, Mainnet, Optimism, and Base
Proxy Address
0x4e59b44847b379578588920ca78fbf26c0b4956c
Deployment Transaction
0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222
Deployment Signer Address
0x3fab184622dc19b6109349b94811493bf2a45362
Our working assumption is that you can identify the actual deployer as the address that interacts with the proxy contract address, but this needs to be verified.
In any case, the correct behavior is to trace the contracts that are created as result of a deployer interacting a deterministic deployer contract.
@ravenac95 check out this implementation from the Agora team:
https://github.com/voteagora/op-atlas/blob/main/src/lib/actions/contracts.ts
Remaining work to get proxy deployments handled will continue in #1554