Public API
Free, keyless access to all Nockchain data powering this explorer — blocks, transactions with resolved senders and recipients, address ledgers, holders, chain-canonical mining statistics and the on-chain supply audit. Served directly from nockscan's self-hosted indexer; no third-party APIs involved.
https://nockscan.com/api/v1RESTful paths (/api/v1/block/112500). The legacy form /api/data?endpoint=… remains supported. CORS is enabled (*).
Per IP, no key required. Exceeding it returns 429 with Retry-After; X-RateLimit-Limit / -Remaining / -Reset headers are set on every response.
All amounts are in nicks (65,536 nicks = 1 NOCK). Timestamps are unix seconds. Responses are cached per endpoint (see below).
curl "https://nockscan.com/api/v1/tip" curl "https://nockscan.com/api/v1/block/112500" curl "https://nockscan.com/api/v1/address/<addr>?limit=20"
Data API#
REST over HTTPS, JSON responses, no key required. Every endpoint below is reachable at https://nockscan.com/api/v1/<endpoint>.
Chain#
Current chain tip
Latest block hash, height and timestamp.
curl "https://nockscan.com/api/v1/tip"
{
"hash": "5WzYgcpE…7gWVkB",
"height": 112697,
"timestamp": 1785069858
}Live tip stream (SSE)
Server-Sent Events stream. Emits a `tip` event with the current tip on connect and whenever a new block is indexed (~1s latency). Connect with EventSource; the connection counts once against the rate limit.
curl "https://nockscan.com/api/v1/stream"
event: tip
data: {"hash":"6YBKz4yw…ivvPm","height":119492,"timestamp":1785820352}Most recent blocks
| Parameter | Type | Default | Description |
|---|---|---|---|
| count | integer | 5 (max 200) | Number of blocks, newest last. |
curl "https://nockscan.com/api/v1/recent-blocks?count=3"
{
"blocks": [
{
"hash": "…", "height": 112695, "timestamp": 1785069788, "parent": "…",
"transactions": [], "transactionCount": 0,
"coinbase": [ { "address": "5aSmA4…", "nicks": 107374183 }, … ]
}, …
],
"tipHeight": 112697
}Blocks in a height range
| Parameter | Type | Default | Description |
|---|---|---|---|
| startHeight * | integer | — | First height (inclusive). |
| endHeight * | integer | — (max startHeight + 2500) | Last height (inclusive). |
curl "https://nockscan.com/api/v1/blocks-range?startHeight=100000&endHeight=100010"
{ "blocks": [ … ], "totalBlocks": 112698 }Single block with PoW stats
Block by height or hash, including chain-canonical PoW stats decoded from the block header: difficulty (2^n of expected proof attempts), proofs/sec, epoch counter, target and accumulated work.
| Parameter | Type | Default | Description |
|---|---|---|---|
| id * | string | — | Block height (numeric) or block hash. |
curl "https://nockscan.com/api/v1/block/112500"
{
"block": {
"hash": "6bEGNU…E7SWHP", "height": 112500, "timestamp": 1785033007,
"parent": "…", "transactionCount": 2, "coinbase": [ … ],
"difficulty": "2^33.571", "proofsPerSecond": 85074061.6,
"epochCounter": 1620, "target": "16738255…", "accumulatedWork": 70158453637520
},
"tipHeight": 112697
}Transactions of a block, with resolved parties
| Parameter | Type | Default | Description |
|---|---|---|---|
| id * | string | — | Block height (numeric) or block hash. |
curl "https://nockscan.com/api/v1/block-transactions/112500"
{
"transactions": [
{
"txId": "3rKip2…", "blockHeight": 112500, "version": 1,
"timestamp": 1785033007, "totalFees": 16146432,
"parties": {
"senders": ["2RjfTi…"],
"outputs": [ { "address": "5NFsB2…", "nicks": 6554058752, "isCoinbase": false } ]
}
}, …
]
}Historic block data (CSV)
CSV export of block history: hash, timestamps, transaction count, fees, coinbase reward, difficulty, proof rate and ASERT epoch per block. Max 25,000 blocks per request — page the full chain with from/to.
| Parameter | Type | Default | Description |
|---|---|---|---|
| from | integer | to − 9999 | Start block height (inclusive). |
| to | integer | tip | End block height (inclusive). |
curl "https://nockscan.com/api/v1/export-blocks?from=119398&to=119402"
height,hash,time_utc,timestamp,parent,tx_count,fees_nicks,reward_nicks,log2_difficulty,proofs_per_second,epoch_counter 119400,2tRPPd39…xwgvGwv,2026-08-04T01:39:44.000Z,1785807584,BfvmZiUn…1pfTRU,0,0,134217728,28.745350,3000000,456
Transactions#
Paginated list of latest transactions
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 30 (max 100) | Page size. |
| offset | integer | 0 | Pagination offset (newest first). |
curl "https://nockscan.com/api/v1/latest-transactions?limit=2&offset=0"
{
"transactions": [
{
"layer": "l1", "txId": "3rKip2…", "blockId": "6bEGNU…",
"blockHeight": 112500, "timestamp": 1785033007,
"transaction": { "totalFees": 16146432 },
"parties": { "senders": [ … ], "outputs": [ … ] }
}, …
],
"totalCount": 74742,
"pagination": { "limit": 2, "offset": 0, "hasMore": true },
"tipHeight": 112697
}Full transaction drilldown
Spends (with sender addresses, spent-note values, coinbase flags and the creating transaction for tracing), outputs (with resolved owner, owner type, spend status) and fees.
| Parameter | Type | Default | Description |
|---|---|---|---|
| txId * | string | — | Transaction id. |
curl "https://nockscan.com/api/v1/transaction-details/3rKip2…"
{
"version": "v1",
"data": {
"id": "3rKip2…", "blockId": "…", "blockHeight": 112500,
"timestamp": 1785033007, "totalFees": 16146432,
"spends": [
{ "sender": "5xeqjT…", "inputAssets": 107374183, "inputCoinbase": true,
"fee": 260823, "createdByTx": null, … }
],
"outputs": [
{ "owner": "5NFsB2…", "ownerType": "pkh", "assets": 6554058752,
"isCoinbase": false, "spentByTx": "7vr7Zc…" }
]
}
}Universal search
Resolves a query as block height, block hash, transaction id and/or address in one call.
| Parameter | Type | Default | Description |
|---|---|---|---|
| q * | string | — | Height, block hash, tx id or address. |
curl "https://nockscan.com/api/v1/search/112500"
{
"block": { "hash": "6bEGNU…", "height": 112500, "timestamp": 1785033007, "transactionCount": 2 }
}Addresses & Holders#
Address balance, stats and ledger
Double-entry ledger per address: current balance (sum of unspent notes), totals, and a paginated transaction list with counterparties. Coinbase rows use synthetic ids (coinbase-<blockId>).
| Parameter | Type | Default | Description |
|---|---|---|---|
| address * | string | — | Address (pkh, or v0 public key). |
| limit | integer | 20 (max 200) | Ledger page size. |
| offset | integer | 0 | Ledger offset (newest first). |
curl "https://nockscan.com/api/v1/address/5NFsB2…?limit=2"
{
"address": "5NFsB2…", "currentBalance": 6554058752,
"totalReceived": 329824272384, "totalSent": 323270213632,
"totalTransactions": 113,
"transactions": [
{ "txId": "3rKip2…", "blockHeight": 112500, "timestamp": 1785033007,
"type": "received", "amount": 6554058752, "fee": 0,
"counterparties": ["7e4dwF…"], "isCoinbase": false }
],
"pagination": { "limit": 2, "offset": 0, "hasMore": true },
"ownedFirstNames": [ … ]
}Daily in/out flows for an address
| Parameter | Type | Default | Description |
|---|---|---|---|
| address * | string | — | Address. |
| days | integer | 90 (max 3650) | Window in days (anchored to chain tip). |
curl "https://nockscan.com/api/v1/address-flows/5NFsB2…?days=7"
{
"address": "5NFsB2…", "days": 7,
"flows": [ { "date": "2026-07-25", "inNicks": 49809063936, "outNicks": 49809063936 }, … ]
}Top holders by balance
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 50 (max 1000) | Page size. |
| offset | integer | 0 | Offset. |
curl "https://nockscan.com/api/v1/holders?limit=2"
{
"items": [ { "address": "AcsPku…", "balance": 83245799194721, "notes": 424 }, … ],
"totalCount": 6640,
"pagination": { "limit": 2, "offset": 0, "hasMore": true }
}Holder distribution statistics
Average and median holding over ordinary holders: wallets with at least 100 NOCK, leaving out the Base bridge lock, NCC's community wallet, Zorp treasury wallets and exchange wallets (named in excludedWallets). Also the holder count and schedule-derived supply figures.
curl "https://nockscan.com/api/v1/holder-stats"
{
"averageHolding": 333141.71, "medianHolding": 870,
"countedHolders": 2243, "minHolding": 100,
"excludedWallets": ["Base Bridge Multisig", "NCC", "SafeTrade", "Zorp 2"],
"totalHolders": 7557, "currentHeight": 152740,
"totalSupply": 4294967296, "circulatingSupply": 2247026688
}Cumulative unique addresses over time
| Parameter | Type | Default | Description |
|---|---|---|---|
| dataPoints | integer | 50 (max 200) | Number of sample points. |
| windowSize | integer | 30572 | Window size in blocks (informational). |
curl "https://nockscan.com/api/v1/address-growth?dataPoints=4"
{
"startHeight": 0, "endHeight": 112697, "windowSize": 30572,
"windows": [ { "endHeight": 28174, "timestamp": 1756871413, "totalUniqueAddresses": 1892, … }, … ]
}Address transaction history (CSV)
Accounting-style CSV export of an address's full history — one row per transaction or coinbase with credit/debit/fee amounts and a running balance, modeled on the iris-blocks audit ledger. Fees are included in debit amounts (informational column). Capped at 50,000 rows; page longer histories with from/to height bounds.
| Parameter | Type | Default | Description |
|---|---|---|---|
| address | string | — | Address (pkh) to export. |
| from | integer | 0 | Start block height (inclusive). |
| to | integer | tip | End block height (inclusive). |
curl "https://nockscan.com/api/v1/export-transactions/5NFsB2cW…24igt6X"
block_height,time_utc,type,txid,credit_nicks,debit_nicks,fee_nicks,net_nicks,running_balance_nicks,running_balance_nock 107551,2026-07-19T13:27:31.000Z,in,CRo8TdKs…Diq15fL,32768000,0,0,32768000,32768000,500.00000000
Mining & Network#
Peers of nockscan's nodes, by area
Who nockscan's own nodes are connected to over p2p, refreshed every five minutes: areas with at least three peers (smaller groups join their country or continent), countries, hosting networks, and round-trip and block-propagation medians. A sample of the network, not a census. No IP address is ever published. IP geolocation by DB-IP (CC BY 4.0).
curl "https://nockscan.com/api/v1/network"
{
"nodes": [ { "id": "nockscan-de", "name": "nockscan · Germany", "peers": 62, "medianRttMs": 526, … } ],
"areas": [ { "kind": "place", "name": "Tokyo", "countries": ["Japan"], "lat": 35.68, "lon": 139.65, "peers": 6, "nodes": [ … ] }, … ],
"countries": [ { "name": "United States", "peers": 20 }, … ],
"networks": [ { "name": "OVHcloud", "peers": 5 }, … ],
"summary": { "peers": 66, "countries": 15, "areas": 14, "unplaced": 1, "medianRttMs": 523, … }
}ZK proof-rate history
Realized ZK proof rate (ZK puzzle only — AI-PoW is reported separately by `ai-pow-rate`): ZK work summed over a trailing 100-ZK-block window ÷ the wall time it took. `latest` carries the current realized rate plus the ZK target rate (work ÷ the height-selected ZK ideal: 500s from 147500, 214s from Logos, 150s before Logos), its own height, and the average ZK block interval. Rates are raw: post-147500 Tip5 attempts/s must be divided by 10,000 for display as ZK proof equivalents. Rolling windows reset at that boundary. Downsampled for charting.
curl "https://nockscan.com/api/v1/proof-rate"
{
"data": [ { "height": 119820, "proofrate": 7011233.4, "timestamp": 1785858360 }, … ],
"latest": { "realized": 7011233.4, "target": 3672041.5, "avgBlockTime": 78.1 },
"tipHeight": 119826
}ZK proof rate, rolling 2,016-block window
curl "https://nockscan.com/api/v1/epoch-proof-rate"
{
"data": [ { "height": 110682, "proofrate": 79916013.2, "timestamp": 1784859164 }, … ],
"epochStart": 110682,
"tipHeight": 112697
}Prover leaderboard
Blocks mined, rewards and share per prover group over a period (anchored to the chain tip). Fixed protocol cuts (NCC) are listed after the prover.
| Parameter | Type | Default | Description |
|---|---|---|---|
| period | string | 24h | One of 24h, 7d, 30d. |
curl "https://nockscan.com/api/v1/prover-stats?period=24h"
{
"period": "24h", "totalBlocks": 864, "totalRewards": 116017816928,
"provers": [
{ "addresses": ["27YaGW…", "9EhcJi…"], "blocksMined": 398,
"totalRewards": 53418655744, "sharePercentage": 46.06 }, …
],
"fromTimestamp": 1784983499, "toTimestamp": 1785069858
}Average block times
epochAvg is a rolling 24h window (576 blocks at the 150s target); last100Avg covers the last 100 blocks.
curl "https://nockscan.com/api/v1/block-time-stats"
{
"epochAvg": 115.2, "last100Avg": 108.41,
"epochStart": 112122, "tipHeight": 112697
}Emission era progress
Progress through the current emission era (eon) with an ETA to the next reward drop.
curl "https://nockscan.com/api/v1/epoch-progress"
{
"epoch": 3, "epochStart": 65501, "epochSize": 105000,
"blocksInEpoch": 47197, "remainingBlocks": 57803, "progress": 44.95,
"avgBlockTime": 115.2, "eta": 6659006.1, "tipHeight": 112697
}One-call mining dashboard
Current difficulty, target and realized proof rate (difficulty ÷ actual avg block time over the last 100 blocks), block cadence vs the 150s ASERT target, current block reward and legacy epoch counter. `puzzles` splits the last 100 blocks by puzzle: block share, and work share in normalized work — ZK in Tip5 hashes, AI in MACs ÷ the network's normalized work rate (`workNormalization`: 14,285,714 MAC per hash from block 154500). Ideal for bots and status pages.
curl "https://nockscan.com/api/v1/mining-metrics"
{
"latestBlock": 112697,
"latestBlockHash": "5WzYgcpE…7gWVkB",
"latestBlockTimestamp": 1785069858,
"difficulty": "2^33.396",
"log2Difficulty": 33.396,
"proofsPerSecondTarget": 75341016,
"proofsPerSecondRealized": 104246041,
"avgBlockTime100": 108.41,
"targetBlockTime": 150,
"cadence": 1.38,
"epochCounter": 1817,
"blockRewardNock": 2048
}On-chain supply audit
Ground truth: the sum of all unspent notes. Matching the emission schedule proves no NOCK exists outside consensus.
curl "https://nockscan.com/api/v1/supply-audit"
{
"unspentNicks": 147261141024768,
"utxoCount": 93249,
"tipHeight": 112697
}Raw block STARK proof (.jam)
The block's full zero-knowledge proof of work as a jammed noun. Verify it independently with vanilla nockchain tooling: `cargo build --release -p roswell` in the nockchain repo, then `roswell check-proof --proof <file>` — exit code 0 means the STARK proof is valid. Recent proofs are served from storage; older ones are fetched from the node on demand. ~90–120 KB binary.
| Parameter | Type | Default | Description |
|---|---|---|---|
| id | string | — | Block hash or height. |
curl "https://nockscan.com/api/v1/block-proof/119400"
(binary application/octet-stream, Content-Disposition: nockchain-proof-119400.jam)
AI-PoW work-rate history (MAC/s)
Realized AI-PoW work rate in multiply-accumulates per second: the MAC work of the AI blocks stamped within a trailing window of time ÷ that window (AI blocks only; the ZK puzzle is `proof-rate`). `window` is 3h, 12h (the protocol's 43,200 s ASERT half-life, what the site shows), 24h or 7d (the default, as before); the response names it (`window`, `windowSeconds`, `windowHours`; `windowDays` kept for older clients). The series restarts at block 154500, Nockchain's balance upgrade (both difficulty lanes restarted from their anchors, AI from 10 ExaMAC/s, and AI work was repriced against ZK work; MACs are counted as before), so no average mixes blocks from both sides; `since` (a height) returns the series from that height on at full chart resolution, its `ath` and `first` included, and `last` (a block count) the trailing blocks. `latest` carries realized, the difficulty-implied target (work ÷ the AI ideal: 500s before 147500, 214s from that height), data and target heights, and the mean AI block interval over the window; `ath` and `first` are the exact maximum and first reading of the full series; `firstAiBlock` is the first AI-PoW block. Downsampled for charting.
| Parameter | Type | Default | Description |
|---|---|---|---|
| window | string | 7d | Smoothing window: 3h, 12h, 24h or 7d. |
| since | integer | — | Only points from this height on (e.g. 154500), downsampled within that range. |
| last | integer | — | Only the trailing blocks (e.g. 2016): since = tip − last. |
curl "https://nockscan.com/api/v1/ai-pow-rate"
{ "data": [ { "height": 154765, "macPerSecond": 1.85e19, "targetMacPerSecond": 1.24e19, "timestamp": 1790439500 }, … ], "window": "12h", "windowSeconds": 43200, "windowHours": 12, "windowDays": 0.5, "windows": ["3h", "12h", "24h", "7d"], "latest": { "realized": 1.85e19, "target": 1.24e19, "avgBlockTime": 130 }, "ath": { … }, "first": { … }, "firstAiBlock": { "height": 126859, "timestamp": 1786805223 } }Pearl merge-mining forensics
AI-PoW blocks can be merge-mined with the Pearl chain. `declared` counts AI blocks whose consensus cert embeds a Pearl coinbase committing to this exact Nockchain block (verified by nockchain consensus itself); `pearl` counts Pearl chain blocks carrying the NOCKCHAIN-AI-POW-AUX commitment and how many are matched to their Nockchain AI block by exact 32-byte commitment equality. `recentPairs` lists the latest matched pairs.
curl "https://nockscan.com/api/v1/merge-mining"
{ "declared": { "totalAi": 3242, "declaredAi": 2178, "share": 0.67 }, "pearl": { "taggedBlocks": 320, "matchedPairs": 300 }, "recentPairs": [ … ] }Mining forensics aggregates
Proof-level forensic data across the chain: an independent digest≤target integrity re-check of every indexed proof, proof-version eras, trace-commitment reuse (grinding fingerprint), timestamp anomalies, and per-prover proof behavior (average luck, near-target share).
curl "https://nockscan.com/api/v1/forensics"
{
"tipHeight": 119721,
"coverage": 119722,
"integrity": { "checked": 119722, "violations": 0 },
"binding": { "checked": 54222, "violations": 0 },
"stark": { "verified": 8120, "failed": 0 },
"versions": [{ "version": 3, "blocks": 322, "fromHeight": 119400, "toHeight": 119721 }],
"commitmentReuse": [],
"timestampAnomalies": { "total": 119, "recent": [] },
"provers": [{ "address": "3fCa…", "blocks": 40213, "avgLuck": 0.497, "nearTargetShare": 0.101 }]
}Node gRPC API#
The vanilla Nockchain public gRPC surface, served straight from our own fully-synced node — the same protos as any Nockchain node, so wallets and tools can point at it as a drop-in endpoint. TLS on port 443, HTTP/2, gRPC reflection enabled (tooling auto-discovers every method). No key required; 120 req/min per IP — the same limit as the Data API. The node's private API (Peek/Poke/WatchEffects) is not served here — it stays bound to localhost.
grpcurl api.nockscan.com:443 list grpcurl api.nockscan.com:443 nockchain.public.v2.NockchainMetricsService/GetExplorerMetrics
From the Logos activation, blocks may be mined by AI-PoW as well as ZK-PoW, and AI-PoW blocks carry their proof as a structured noun rather than a bare atom or byte list. Clients decoding pages with a nockchain-types build older than 3e72d53f will fail to decode those proofs. Legacy atom and byte-list proofs still decode unchanged, so pre-Logos history is unaffected — only newly mined AI-PoW blocks require the updated decoder. Our node already runs that commit (see above); this is a client-side upgrade.
grpcurl -d '{}' \
api.nockscan.com:443 nockchain.public.v2.NockchainMetricsService/GetExplorerMetricsgrpcurl -d '{}' \
api.nockscan.com:443 nockchain.public.v2.NockchainMetricsService/GetPeerStatsgrpcurl -d '{}' \
api.nockscan.com:443 nockchain.public.v2.NockchainMetricsService/GetReqResMetricsgrpcurl -d '{"page":{"client_page_items_limit":10}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainBlockService/GetBlocksgrpcurl -d '{"height":120500}' \
api.nockscan.com:443 nockchain.public.v2.NockchainBlockService/GetBlockDetailsgrpcurl -d '{"tx_id":{"hash":"<base58 tx id>"}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainBlockService/GetTransactionDetailsgrpcurl -d '{"tx_id":{"hash":"<base58 tx id>"}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainBlockService/GetTransactionBlockgrpcurl -d '{"address":{"key":"<base58 public key>"},"page":{"client_page_items_limit":50}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainService/WalletGetBalancegrpcurl -d '{"tx_id":{...},"raw_tx":{...}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainService/WalletSendTransactiongrpcurl -d '{"tx_id":{"hash":"<base58 tx id>"}}' \
api.nockscan.com:443 nockchain.public.v2.NockchainService/TransactionAcceptedFair use
This API is free and requires no key. Respect the 120 req/min limit, honor Cache-Control headers, and prefer paginated requests. If you are building something that needs more, reach out — we're happy to help.