Auto-verification on etherscan and family requires that the init code and the contract code be constant. When you use immutables it embeds the immutables directly into the deployed bytecode, and initcode has the constructor args, so neither of those things are constants anymore. As a result auto-verification doesn't work. For making the auto verification work people usually refrain from using immutables and instead have a oneoff
initiatlize
function call that initializes the constants in the storage after the deployment. BUT, in doing so they are paying a huge gas cost of extra SLOAD(2100) instead of just a PUSH(3) instruction. 700x more expensive for that one operation.ExEx is ran by reth right from the syncing stage, so it is not very easy to demo, but I have written tests to verify the exex logic instead.
Tracks Applied (2)
BNB Chain
privacy + scaling explorations
Discussion