Files
Kevin Codex 06e598591b arc: unconditional guard in LaunchFactoryArc; second review round
LaunchFactoryArc is only ever deployed on Arc, so its native-quote refusal no
longer switches on the chain id: the diff to LaunchFactory.sol is now the
contract note, the name, the error and one revert line. The sweep demo in the
fork suite deploys the plain LaunchFactory on the Arc fork instead of cheating
the chain id.

App: the wallet switcher and the list/feed chain filters offer configured
chains only (all chains in development), the stock USD and decimals arms in the
list query are scoped by chain like every other arm, the indexer skips a
single token's holder update for a block whose Transfer logs exceed the node's
cap instead of wedging, blank confirmation env values read as unset, the
insufficient-funds error no longer says ETH, and the last two-chain strings
are gone. verify.sh scopes address overrides to Arc; the drift check ignores
trailing whitespace.
2026-09-16 21:26:04 +08:00

22 lines
1.1 KiB
Diff

18c18,27
< /// @title LaunchFactory
---
> /// @title LaunchFactoryArc
> /// @dev The Arc (chain 5042) deployment of LaunchFactory: a verbatim copy of src/LaunchFactory.sol plus ONE guard.
> /// On Arc the native asset is USDC, and the same balance is also the ERC-20 at 0x3600…0000. LaunchLocker keeps
> /// one ledger per currency (`reserved`, `claimable`), so a native-quoted position there would let a credited
> /// ERC-20 share (a payout on Circle's blocklist) be read as native surplus by another launch's `collect` and
> /// swept. `launch` therefore refuses `quote = address(0)`, unconditionally: this contract is only ever deployed on
> /// Arc. USDC pools use the ERC-20 face. Everything else,
> /// and the locker it deploys, is byte-for-byte the Base / Robinhood Chain code. script/check-arc-factory.sh keeps
> /// the two files in sync.
> ///
51c60
< contract LaunchFactory {
---
> contract LaunchFactoryArc {
105a115
> error NativeQuoteUnsupported();
118a129
> if (p.quote == address(0)) revert NativeQuoteUnsupported(); // Arc: see the contract note