Skip to content
IceRootDocs

Snapshot Builder

The Snapshot Builder is planned tooling for projects. It is designed to turn a source chain’s ledger into a canonical migration list that validators can reproduce and certify. It is planned to run outside consensus and changes no protocol rule.

One implementation for projects and validators

Section titled “One implementation for projects and validators”

The builder is planned to share its deterministic code with the IceRoot Connector that each validator runs. A project and every certifying validator then build the list with the same implementation, and a list that one of them builds can be rebuilt byte for byte by the others.

A command-line tool is planned underneath any web interface, so that a website never becomes the trusted source of a list: anyone could run the tool on the same inputs and get the same result.

  1. Source chain. Read the asset’s ledger at an exact, finalized source block, or at a declared recovery point.
  2. Holder reconstruction. Rebuild every holding deterministically.
  3. Reconciliation. Check the reconstructed holdings against the source supply.
  4. Canonical migration list. Produce the list in its one canonical form.
  5. Reproduction and certification. Validators rebuild the list independently and certify it.
RuleWhat it requires
Integer base unitsAmounts are integers in the source asset’s base units, never floating-point values
Canonical addressesEach address has one accepted encoding
Canonical ordering and serializationThe same holdings always produce the same bytes
Exact source blockThe list names its source block by height and block hash
Versioned policyThe policy is a versioned file with a hash
Reproducible list hashThe same inputs always produce the same list hash

Nothing in a list may depend on floating-point arithmetic, timestamps, locale settings, a central API, spreadsheet edits, or undocumented exclusions.

  • Strict ledger reconstruction: every holding as the source ledger records it at the chosen block.
  • Policy-adjusted reconstruction: the same reconstruction with items from a small, fixed menu: a declared recovery point, excluded addresses, and the treatment of escrow and contract holdings.

The policy is explicit, versioned, and hashed, and its hash is committed in the certified list. What cannot be reproduced is not certified. See Recover after an incident for how recovery policies are used.

  1. Select the source network, the asset, and a finalized block, or a declared recovery point.
  2. Choose the policy.
  3. Build the holder set.
  4. Reconcile the result against the source supply.
  5. Review the exceptions.
  6. Generate the migration list.
  7. Publish the list and its report.
  8. Validators reproduce and certify the list.

An illustrative command, which may change before release:

Terminal window
iceroot-snapshot build --network ethereum --asset <asset> --block <height> --policy <policy>

The builder is planned to produce a report for every migration or recovery it prepares, stating:

  • the source network, asset, block, and block hash, and the declared recovery point where there is one;
  • the source supply, the included supply, and the holder count;
  • the excluded and system addresses;
  • the policy and its hash.

Adapters are planned as projects need them. Candidates include:

AdapterNetworks
EVMEthereum, BNB Smart Chain, Polygon, Base, Arbitrum, Optimism, and Avalanche C-Chain, through one adapter
Solana SPLSPL tokens on Solana
Cosmos SDKChains built with the Cosmos SDK
ARKThe ARK network

An adapter makes a network’s ledger readable. It does not make the network a certified source: the validator quorum must also register the network, and each certifying validator must run the adapter in its own Connector, with its own access to that network. At mainnet launch, Ethereum (ERC-20 tokens) is the supported source network for certified migration. It is registered as classical, so a snapshot of it must be taken at or before its cut-off block, and no snapshot list of it is certified after the cut-off, whatever its snapshot block. Connector adapters describes what an adapter must provide and how to propose a new network.

Migration guide → · Connector adapters →