Every contract is placed through CreateX from one deploying key under one salt, so its address depends on those two and on nothing else — not on the code, not on the order of the deployment. These are also the addresses Lunya will have on any other chain it is deployed to from the same key.
Exchange
Deployed at start block 21067506.
Pool addresses are derived, not listed. Every pool’s address comes from the deployer:
computePoolAddress(token0, token1, poolType). Read the init code hash from the chain rather than hardcoding it — see Uniswap V3 Compatibility.
Pools are listed through lister contracts holding the factory’s creator role — anyone can list a concentrated pool through the Public Lister, while the Terms Lister lists on terms governance has registered. The role holders are also enumerable on the factory; see Listing a pool.
Launchpad
Deployed at start block 21067677.
The factory is the only launchpad address to hardcode. Launches are clones, discovered from
LaunchCreated or launchOf(token) — and predictable before they exist. The factory’s locker() getter returns the same Liquidity Locker, so an integration can always follow the deployment it is talking to.