跳转到内容

本页面的来源

本页面的每条论断都对应固定的修订版本。打开路径即可查看验证所依据的确切来源。

universe-index-atomicals

Universe ARC-20 index and Marketplace v1 authority

修订 670030e50071

Universe ARC-20 token explorer feed and the durable Marketplace v1 protocol authority.

atomicals-electrumx-1.5.2.0

Atomicals ElectrumX

修订 v1.5.2.0 (2025-03-27)

Version-sensitive ARC-20 and Atomicals validation behavior used as the pinned reference baseline.

Workflows

Raw

Machine-readable Arazzo workflows with generated curl, TypeScript, and JavaScript examples for every step.

Universe implementation Verified 2026-09-02 Metadata & Sources

Describes what a Bitcoin Universe service actually does today. It is not a statement about the protocol in general.

Page ID
workflows
Normative authority
Universe implementation documentation
Networks
mainnet, regtest
Documentation version
2026.08
Audience
developer, integrator
Owner
bitcoin-universe-docs
Sources
Known limitations
  • Every workflow here is read-only or explicitly local. No hosted mainnet signing or broadcast workflow exists.
  • Steps that execute against the Regtest Lab require the lab to be running locally.

此内容尚不支持你的语言。

The workflow layer is a single Arazzo 1.1.0 document under contracts/workflows/, validated against the specification schema in CI with every referenced OpenAPI operation ID resolved. The page below, the curl examples, the TypeScript and JavaScript snippets, the MCP tool metadata, and the conformance tests all generate from that one document.

The machine-readable sources are the Arazzo document and the generated summary.

1. Resolve an Atomical and inspect its current ownership

Resolve a Realm or NFT identifier and fetch the asset, its holders, and its history.

fetch-asset - GET /v1/atomicals/assets/{atomicalId}

Operation nftrealms.getAsset. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals/assets/REPLACE_ME

TypeScript

const response = await client.get_asset(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals/assets/{atomicalId}', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step fetch-asset failed')
fetch-holders - GET /v1/atomicals/assets/{atomicalId}/holders

Operation nftrealms.getAssetHolders. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals/assets/REPLACE_ME/holders

TypeScript

const response = await client.get_asset_holders(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals/assets/{atomicalId}/holders', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step fetch-holders failed')

2. Inspect an ARC-20 ticker and its metadata

feed-first-page - GET /token-explorer/arc20

Operation arc20.arc20GetFeedPage. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/token-explorer/arc20

TypeScript

const response = await client.arc20_get_feed_page(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/token-explorer/arc20', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step feed-first-page failed')

3. Inspect ARC-20 balance and allocation through the indexed feed

Read the feed page and status so a caller can see allocation state and endpoint freshness together.

read-status - GET /token-explorer/status

Operation arc20.arc20GetStatus. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/token-explorer/status

TypeScript

const response = await client.arc20_get_status(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/token-explorer/status', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step read-status failed')
read-feed - GET /token-explorer/arc20

Operation arc20.arc20GetFeedPage. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/token-explorer/arc20

TypeScript

const response = await client.arc20_get_feed_page(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/token-explorer/arc20', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step read-feed failed')

4. Verify a Container and DMINT item

Fetch the NFT asset and its metadata, then validate the DMINT proof for an item locally.

fetch-nft - GET /v1/atomicals-nfts/assets/{atomicalId}

Operation nftrealms.getNft. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals-nfts/assets/REPLACE_ME

TypeScript

const response = await client.get_nft(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals-nfts/assets/{atomicalId}', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step fetch-nft failed')
fetch-metadata - GET /v1/atomicals-nfts/assets/{atomicalId}/metadata

Operation nftrealms.getNftMetadata. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals-nfts/assets/REPLACE_ME/metadata

TypeScript

const response = await client.get_nft_metadata(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals-nfts/assets/{atomicalId}/metadata', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step fetch-metadata failed')

5. Resolve a Realm and its Subrealms

resolve - GET /v1/atomicals-realms/resolve

Operation nftrealms.resolveRealm. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals-realms/resolve

TypeScript

const response = await client.resolve_realm(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals-realms/resolve', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step resolve failed')
subrealms - GET /v1/atomicals-realms/subrealms

Operation nftrealms.getSubrealms. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals-realms/subrealms

TypeScript

const response = await client.get_subrealms(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals-realms/subrealms', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step subrealms failed')

6. Diagnose endpoint identity, height, and freshness

The exact sequence the Conformance Workbench runs - liveness, readiness, and status with the indexed lag.

liveness - GET /live

Operation arc20.arc20GetLive. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/live

TypeScript

const response = await client.arc20_get_live(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/live', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step liveness failed')
readiness - GET /ready

Operation arc20.arc20GetReady. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/ready

TypeScript

const response = await client.arc20_get_ready(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/ready', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step readiness failed')
status - GET /token-explorer/status

Operation arc20.arc20GetStatus. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/token-explorer/status

TypeScript

const response = await client.arc20_get_status(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/token-explorer/status', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step status failed')

7. Build and validate a safe ARC-20 transfer plan locally

Entirely local. Uses the UTXO Safety Planner to generate candidate plans and the Protocol Lab to replay the winning plan before anything is signed. No OpenAPI call moves funds.

plan-locally - GET /v1/atomicals/utxos/{txid}/{vout}

Operation nftrealms.getByOutpoint. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/v1/atomicals/utxos/REPLACE_ME/REPLACE_ME

TypeScript

const response = await client.get_by_outpoint(/* parameters per atomicals-nfts-realms contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/v1/atomicals/utxos/{txid}/{vout}', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step plan-locally failed')

8. Execute the safe-transfer scenario against the local Regtest Lab

Requires npm run lab:up and lab:seed. Broadcasts only to the disposable regtest chain.

lab-health - GET /live

Operation arc20.arc20GetLive. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/live

TypeScript

const response = await client.arc20_get_live(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/live', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step lab-health failed')

9. Replay an ARC-20 allocation conformance vector

Local execution of conformance vectors through the shared allocation engine. No network at all.

freshness-check - GET /token-explorer/status

Operation arc20.arc20GetStatus. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/token-explorer/status

TypeScript

const response = await client.arc20_get_status(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/token-explorer/status', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step freshness-check failed')

10. Execute and inspect an AVM beta sample locally

Runs the pinned beta interpreter in the AVM Workbench. Experimental layer, never a deployment claim.

liveness-only - GET /live

Operation arc20.arc20GetLive. Parameters come from the workflow inputs; see the Arazzo document in contracts/workflows for the exact mappings.

curl

curl -sS -H 'accept: application/json' http://127.0.0.1:3043/live

TypeScript

const response = await client.arc20_get_live(/* parameters per arc20 contract */)
assert(response.ok)

JavaScript

const response = await fetch('http://127.0.0.1:3043/live', { headers: { accept: 'application/json' } })
if (!response.ok) throw new Error('step liveness-only failed')

The Regtest Lab workflows need the lab running:

npm run lab:up
npm run lab:seed
npm run lab:test

Everything else runs against any endpoint you choose in the Conformance Workbench, which never sends a mutation.