Deployments
The canonical, shared ABX infrastructure — the clone factories (trust anchors) and the stateless singletons every project reuses, deployed as public goods.
The machine-readable source of truth is packages/sdk/src/deployments.ts (keyed by EIP-155 chainId). This page mirrors it for humans — if the two ever disagree, the manifest wins, and the drift is a bug. The toolkit resolves every address by override → env → manifest: a --factory/--renderer/… flag, then the matching ABX_* env var, then the manifest below.
Same address on every chain
Every contract below except the generator is deployed through the keyless CREATE2 proxy
(, present on every EVM chain) with a canonical salt
(contracts/script/AbxSalts.sol).
Identical salt + identical initcode ⇒ the same address on every chain — so the whole infra set is
one address list, and a new chain deploys to the same addresses (computable before the first
transaction). The factory implementations are cross-chain-identical too: a factory does exactly one
CREATE at nonce 1 from its own (identical) address.
Production (mainnet)
None yet. ABX is in a testnet-only alpha — the supported chain targets today are sepolia and
base-sepolia (see SDK → Chains). Mainnet and L2 production entries are intentionally
absent until the canonical set is deployed and funded on those chains (Distribution roadmap). When they
are, these addresses are the same there too.
Canonical infrastructure (Sepolia · Base Sepolia — identical)
| Contract | Env override | Address (all chains) |
|---|---|---|
OneOfOneImageFactory (1/1 anchor) | ABX_FACTORY | |
SeriesImageFactory (Series anchor) | ABX_SERIES_FACTORY | |
SeriesCodeFactory (code anchor) | ABX_SERIES_CODE_FACTORY | |
AbxMetadataRenderer (spec v4) | ABX_RENDERER | |
AbxChunkStore (SSTORE2 reader) | ABX_CHUNK_STORE | |
AbxFixedPriceMinter (shared sale) | ABX_FIXED_PRICE_MINTER | |
AbxSeedSource (mint-time randomness) | ABX_SEED_SOURCE | |
OneOfOneEditionFactory (1/1-edition anchor) | ABX_ONE_OF_ONE_EDITION_FACTORY | |
EditionImageFactory (edition anchor) | ABX_EDITION_FACTORY | |
EditionCodeFactory (code-edition anchor) | ABX_EDITION_CODE_FACTORY | |
AbxFixedPriceMinter1155 (per-id edition sale) | ABX_FIXED_PRICE_MINTER_1155 |
Factory EIP-1167 implementations (also identical on every chain): OneOfOneImage
· SeriesImage
· SeriesCode
· OneOfOneEdition
· EditionImage
· EditionCode
.
The ERC-1155 editions unit (the three edition factories, their implementations, and
AbxFixedPriceMinter1155) deployed 2026-08-05 — the strict twins of the 721 lineup
(see Contracts). Nothing 721-side moved: the editions are additive,
and the shared renderer/chunk-store/seed-source singletons serve both standards unchanged.
All three factories (and their implementations, plus AbxParamsLib) were redeployed 2026-08-04 for
opt-in ERC-721C creator-token support: InitParams gained a transferValidator field and every
token type composes the CreatorToken mixin. Projects deployed from the previous anchors —
OneOfOneImageFactory 0xB9eEE39D…5F134Ca, SeriesImageFactory 0x9d97C001…E60639A,
SeriesCodeFactory 0xADE45e2D…100F5503 — keep working on their frozen implementations.
The SeriesCode unit (factory, implementation, AbxParamsLib, both generators, the renderer) had
previously been redeployed 2026-08-03 for on-chain param enumeration (renderer spec v4). Projects
deployed from those earlier anchors — factory 0x77f61Ead…5a73Bd87, impl 0xfd2034B6…358D4053 —
keep working against the generator and renderer they were deployed with; the pre-enumeration
generator still reads their params.keys list.
The factory address is the trust anchor: a contract is canonical when the chain's factory
deployed it (verified via isAbxClone, not the spoofable AbxDeployed beacon — see
Authenticity). The rest are stateless, ownerless singletons
referenced by address.
Per-chain (the generator)
AbxGenerator (ABX_GENERATOR) — the animation_url field renderer for code projects — bakes
chain-specific immutables (per-chain runtime-asset pointers and the dependency registry), so its
address differs per chain:
| Chain | AbxGenerator |
|---|---|
Sepolia (11155111) | |
Base Sepolia (84532) |
Linked libraries and external pointers
SeriesCodewrite-path libraries (delegatecalled by the implementation, never called directly; CREATE2-deterministic, so identical on both chains):AbxParamsLib,AbxCodeLib.EditionCodewrite-path libraries (same pattern; identical on both chains):AbxEditionLib(new),AbxParamsLib(new bytecode — the adaptive any-holder TokenOwner leg;SeriesCodekeeps its original lib above), and the shared, unchangedAbxCodeLib.- Art Blocks
DependencyRegistryV0(ABX_DEPENDENCY_REGISTRY) — thename@versionresolution root ABX reads but never deploys: Sepolia ; Base Sepolia has none (collections point at their own, or the resolver's built-in CDN map).
Verifying an address
Every contract on this page is source-verified on both chains — open any address in the explorer (Etherscan for Sepolia, Basescan for Base Sepolia) and you can read the exact Solidity it runs, rather than taking our word for it. The trust anchors are meant to be audited, so a canonical address that shows up unverified is a bug worth reporting.
Any address here is also checkable on-chain — the renderer, for example, reports its spec:
cast call <renderer> "specVersion()(uint256)" --rpc-url <rpc> # → 4Adding or updating a chain
Standing up a new chain runs the same script/Deploy*.s.sol with the same salts → the same
addresses as above (the canonical set), so you can publish them before the first transaction.
Deploying a fresh singleton (or a new contract revision) is an owner op that ends in a manifest edit.
See the contract-change checklist,
the authoritative workflow (redeploy → verify → update deployments.ts and this page).