Skip to content

feat: add uniV4 deployments to supersim #397

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

hamdiallam
Copy link
Contributor

@hamdiallam hamdiallam commented Jun 10, 2025

not logging the addresses for now on startup. But will available as apart of the chain addresses in viem

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@hamdiallam hamdiallam changed the title supersim.uniswap feat: add uniswapv4 deployment to supersim l2s Jun 10, 2025
Copy link

cloudflare-workers-and-pages bot commented Jun 10, 2025

Deploying supersim with  Cloudflare Pages  Cloudflare Pages

Latest commit: ffea9c3
Status: ✅  Deploy successful!
Preview URL: https://69535344.supersim.pages.dev
Branch Preview URL: https://06-09-supersim-uniswap.supersim.pages.dev

View logs

@hamdiallam hamdiallam marked this pull request as ready for review June 10, 2025 22:24
@hamdiallam hamdiallam requested a review from a team as a code owner June 10, 2025 22:24
Comment on lines +4 to +5
optimizer_runs = 1
via_ir = true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why did you add these? just curious for my own learning

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the v4 contracts are pretty huge. and our genesis script fails since it enforces limits via --sizes. So without optimization, v4 isn't straight up deployable. So they tinkered with the optimizations to just get the bytecode to the right size.

We could remove the limits in our scripts so that we don't need any of this

ICreate2Deployer internal constant _deployer = ICreate2Deployer(0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2);

/// @notice Create2Deployer creationCode.
bytes internal constant _deployerCode = hex"6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e61461007157806356299481146100ba57806366cfa057146100da57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5061006f61006a366004610327565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610327565b61014a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c657600080fd5b506100916100d5366004610349565b61015d565b3480156100e657600080fd5b5061006f6100f53660046103ca565b610172565b61014582826040518060200161010f9061031a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052610183565b505050565b600061015683836102e7565b9392505050565b600061016a8484846102f0565b949350505050565b61017d838383610183565b50505050565b6000834710156101f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016101eb565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016101eb565b60006101568383305b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b61014e806104ad83390190565b6000806040838503121561033a57600080fd5b50508035926020909101359150565b60008060006060848603121561035e57600080fd5b8335925060208401359150604084013573ffffffffffffffffffffffffffffffffffffffff8116811461039057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156103df57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561040557600080fd5b818601915086601f83011261041957600080fd5b81358181111561042b5761042b61039b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104715761047161039b565b8160405282815289602084870101111561048a57600080fd5b826020860160208301376000602084830101528095505050505050925092509256fe608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460b1565b604e565b60405190815260200160405180910390f35b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16608857600060aa565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560c357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811460ed57600080fd5b80915050925092905056fea26469706673582212205ffd4e6cede7d06a5daf93d48d0541fc68189eeb16608c1999a82063b666eb1164736f6c63430008130033a2646970667358221220fdc4a0fe96e3b21c108ca155438d37c9143fb01278a3c1d274948bad89c564ba64736f6c63430008130033";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh does the supersim genesis not include preinstalls? do you know how preinstalls are installed on op stack chains? no need to do it in this pr, but we might want to consider creating a ticket so all preinstalls come automatically on all supersim chains. This bytecode is also here: https://github.com/ethereum-optimism/optimism/blob/555a5d13a14d040d6ea84964e93172c24bb11ac1/packages/contracts-bedrock/src/libraries/Preinstalls.sol#L82-L83

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The supersim L2s do have the preinstalls. The forge script is run on against vanilla anvil and not vanilla supersim state.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kinda annoying. Would be great to figure out how to do have them available though

@@ -57,7 +57,23 @@ func deployPeripheryContracts(logger log.Logger, l2Host *script.Host, peripheryA
return fmt.Errorf("failed to dump state after deploying periphery contracts: %w", err)
}

deployL2AuxilliaryContractsScript, cleanup, err := script.WithScript[DeployL2PeripheryContractsScript](l2PeripheryHost, "DeployL2AuxilliaryContracts.s.sol", "DeployL2AuxilliaryContracts")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it ok for this to be sharing l2PeripheryHost across both the deployL2AuxilliaryContractsScript and the deployL2PeripheryContractsScript or should each have its own dedicated host?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea it should be fine but i do want to split them later into separate steps. Gonna do that in a followup PR

@hamdiallam hamdiallam force-pushed the 06-09-supersim.uniswap branch from 693df55 to be615ee Compare June 24, 2025 14:37
@hamdiallam hamdiallam requested a review from a team as a code owner June 24, 2025 14:37
@hamdiallam hamdiallam changed the title feat: add uniswapv4 deployment to supersim l2s feat: add uniV4 deployments to supersim Jun 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants