We need to compare our Arbitrum Stylus AMM against other chains AMMs.
We think that we’re the cheapest AMM in the world! We need the data to prove it.
We can make this comparison by randomly fuzzing our AMM, and by collecting transactions from other offerings.
Language glossary:
Name
Description
Stylus
Arbitrum’s new Rust/WASM frontend stack for the EVM.
Backdata
All the transactions, and their receipts
What are some validation milestones as UX constraints?
Milestone 1
Backdata collected from ZkSync’s AMM offerings, and the median gas cost collected.
Controlling to avoid:
Routers
Multiple hops that aren’t 1 to 1 base/quote asset.
ERC20 token that mints anything transferred is created. Existing code in Q that generates the delta is removed, and the Go code that executes the calldata is used against the contract.
Run against the Arbitrum Stylus nitro testnode.
State in the contract is snapshotted and ready to be reproduced offline.
Milestone 2
Building on the position creation, ERC20 token/contract is written to fuzztest the contract with hundreds of swaps.
Whether these work or not is not a big issue!
Gas profile is collected for this.
Milestone 3
Backdata from the following chains is collected with whatever native AMMs they have. In the same way as the other collection.
Scroll
Berachain
Optimism
Solana
What could the architecture look like?
What're some example test user stories that would be suitable for integration tests?
If there’s math, what are some inputs and outputs that would be suitable for a unit test?
What are some readings and comparable products?
Past efforts, including the program that generated the data for the Go position creation: