# The Protocol

ABX is a protocol for storing general data on EVM chains as digital assets. A token is the anchor for a
set of named, typed pieces of data. Each piece is stored on-chain or off-chain.

The protocol is two things: an [event spine](event-spine.md) and a set of [read
interfaces](interfaces.md). Concrete contracts implement them, and services such as indexers and
resolvers read them to track and serve a project. The protocol defines the events and interfaces, not
the services or any single implementation. The canonical factory for each chain is the trust anchor: a
contract is a canonical ABX contract when that factory deployed it.

## The extensions

The event spine and interfaces drive the rest of the protocol:

- [Metadata](metadata.md): a field-and-representation model. Each field is stored on-chain, points
  off-chain, or is committed on-chain by hash. `tokenURI` resolves from a stored pointer or an on-chain
  renderer.
- [Code projects](code-projects.md): a program stored on-chain as content, with declared dependencies
  and mint-time seeds.
- [Parameters](params.md): named values at token or contract scope, optionally governed by an on-chain
  schema and hooks that fold in live chain state.
- [Data plane](data-plane.md): the full set of named, typed data a token anchors. The ERC-721 metadata
  JSON is but a projection of this broader spec.
- [Effects](effects.md): off-chain processes that read the spine and produce derived output at a
  deterministic address.
- [Minting](minting.md): the events a minter emits during a sale.

## Core and extensions

The required core is an ERC-165-discoverable ERC-721 contract that emits one event, `AbxDeployed`, used
for identity and discovery. Everything else is an opt-in extension: royalties, a primary payee, an
external minter, a supply cap, a pause gate, on-chain script, dependencies, and params. A contract
enables the extensions its project uses.

## Standard events

ABX emits the standard ERC events with their canonical signatures: ERC-721 ownership, ERC-4906 metadata
updates, ERC-7572 contract metadata, and ERC-2981 royalties. Existing indexers and marketplaces read
ABX contracts through these events without modification. The native ABX events are emitted alongside
them, and are described in [the event spine](event-spine.md).
