abx.
Using ABXGuides

Operate a project

These commands run against a live project. Each command that writes to the chain uses a signing lane and accepts --dry-run.

Everything here is a power you keep after the sale, so it is also a power a collector can see you keep. What a project owner can do is the disclosure side of this page — worth reading once, and worth pointing buyers at.

Ownership and payouts

  • abx transfer <address> --to 0x... [--token <id>]: move a token to a new holder.
  • abx set-royalty <address> --bps <0-1000> [--receiver 0x...]: change the royalty.
  • abx set-transfer-validator <address> <0x...|none|recommended>: re-point or suspend an ERC-721C collection's transfer validator. Only for a collection that enrolled at deploy.
  • abx set-seed-source <address> <0x...|canonical|none>: re-point where a code project draws its mint seeds — the project's own IAbxSeedSource (commit-reveal, a VRF oracle), the shared canonical one, or none. Probed before any gas, and it applies to future mints only: seeds already assigned are settled. See seeds.
  • abx set-admin <address> --to 0x...: hand over contract ownership.

Metadata and hosting

  • abx set-token-uri <address> --uri <base>: re-point token metadata to a resolver base. Use --override <uri> --token <id> to pin one token to a fixed locator.
  • abx set-contract-uri <address> --uri <base>: re-point the collection metadata.
  • abx set-renderer <address>: toggle URI resolution between on-chain and off-chain. --off clears to off-chain.
  • abx refresh <address> [--token <id>]: ask marketplaces to re-index. ABX emits ERC-4906 on a metadata change on both lanes — an edition advertises 0x49064906 and pings it too — and this nudges a marketplace to read it. What an edition also has is ERC-1155's native URI event, which cannot express "every id may have changed", so after a contract-wide URI or renderer re-point also run abx ping-uri <address> --token-ids <ids> for consumers that honor only that event. (abx refresh's advisory was corrected to match the contracts — both lanes emit ERC-4906 on a URI change — and the ping-uri step below is still the one for consumers that honour only the native ERC-1155 event.)

Data plane

  • abx attach <address> <key> <uri>: attach a named, typed file to the token's data plane. --file <path> stores small bytes on-chain instead of a URI. Use --collection or --token <id>.
  • abx set-field <address> --field <name> ...: set an on-chain metadata field directly.

Freezing

  • abx lock-field <address> --field <name>: freeze a field permanently.
  • abx lock-uri <address>: freeze the URI configuration permanently. With the fields also locked, the stored metadata cannot change.
  • abx lock-script <address> / abx lock-dependencies <address>: on a code project, freeze the program and its library set — the two the metadata locks don't cover.

Every lock is one-way, so lock last: deploy, confirm it resolves in production, then freeze. And be careful with the word: these freeze what your contract stores, which is not always the same as what the token renders — no metadata lock reaches a parameter, and a Registry dependency's bytes live in the registry. "Locked metadata" is the honest claim to make to a buyer; see locked metadata does not always mean a locked output.

To freeze a parameter you weld its schema, per key, with a separate command: abx set-schema <address> --schema <key>:<Type>:<Auth>:lock=now (or abx retire-param <address> <key>). That is permanent in both halves — value writes and further schema edits both revert afterwards, so the type, authorization, bounds and Select options are frozen too — and the lock date can only ever move earlier, never back to open. A parameter with no schema has no lock at all; the owner's setter keeps working on it forever.

Editions

An edition (--copies) uses id-scoped variants of the commands above, plus two edition-only verbs:

  • abx mint <address> --token-id <n> --amount <n>: mint n copies of one id. --token-id defaults to 0 on a one-work edition; it's required on a multi-work edition (EditionImage/EditionCode).
  • abx transfer <address> --amount <n> --from 0x... --to 0x...: move n copies of an id between holders. --from is required — an id can have many concurrent holders, so there's no single on-chain "owner" to default from.
  • abx set-max-supply <address> --token-id <n> --cap <n>: lower one id's ERC-1155 supply cap — the per-id twin of set-max-invocations. Monotonic: the cap can only decrease, never below that id's current supply, and once set it can never return to open (--cap open is refused).
  • abx ping-uri <address> --token-ids <csv|range>: owner-only — re-emit the per-id refresh events for the given ids. A contract-wide re-point (set-token-uri/set-renderer) emits its own config event but not a per-id one, so a consumer that honors only the per-id event needs this nudge after a re-point. It emits ERC-4906 MetadataUpdate(id) for every id named, plus ERC-1155's native URI(uri(id), id) when no on-chain renderer is configured — with one, that event would have to carry the whole rendered document.

abx state <address> and abx tokens <address> both detect an edition automatically and report per-id supply/cap instead of a single owner — there is no whole-contract "supply" on an edition, since each id has its own. See Sales for per-id pricing.

Moving and removing

  • abx migrate <address> --from <url> --to <url>: move off-chain state to a new resolver, verifying parity first. See Self-hosting.
  • abx forget <address>: drop the local registration and projection. The chain is untouched.

On this page