Network difficulty
{{ difficultyChart ? 'Recent ' + difficultyChart.points.length + ' blocks' : 'Recent blocks' }}
Click any point to open that block and inspect its details.
Load recent blocks to draw the chart.
Transactions pool
Pending mempool {{ formatNumber(home.mempool.length) }}
Loading mempool...
No pending transactions.
| Received | Amount | Fee | Size | Hash |
|---|---|---|---|---|
|
{{ formatDateTime(tx.receive_time) }}
{{ formatRelativeTime(tx.receive_time) }}
|
{{ formatCoins(tx.amount_out, false) }} | {{ formatCoins(tx.fee, false) }} | {{ formatBytes(tx.size) }} | {{ tx.hash }} |
Recent transactions
Latest confirmed transactions
Loading recent transactions...
{{ home.recentTransactionsError }}
No confirmed transactions in the current block window.
| Confirmed | Amount | Fee | Size | Block | Hash |
|---|---|---|---|---|---|
|
{{ formatDateTime(tx.timestamp) }}
{{ formatRelativeTime(tx.timestamp) }}
|
{{ formatCoins(tx.totalOutputsAmount, false) }} | {{ formatCoins(tx.fee, false) }} | {{ formatBytes(tx.size) }} | #{{ formatNumber(tx.blockIndex) }} | {{ tx.hash }} |
Recent blocks
Latest chain activity
Loading blocks...
{{ home.error }}
| Height | Time | Interval | Hash | Size | Difficulty | Txs |
|---|---|---|---|---|---|---|
| #{{ formatNumber(block.height) }} |
{{ formatDateTime(block.timestamp) }}
{{ formatRelativeTime(block.timestamp) }}
|
{{ block.lapse ? formatDuration(block.lapse) : '--' }} | {{ block.hash }} | {{ formatBytes(block.cumulative_size) }} | {{ formatDifficulty(block.difficulty) }} | {{ formatNumber(block.transactions_count) }} |
Historical charts
Network stats
{{ historicStatsChart.sourceLabel }} · {{ historicStatsChart.rangeLabel }} · {{ formatNumber(historicStatsChart.points.length) }} points
Block stats from the connected RPC node.
Stats RPC
{{ historicStatsChart ? historicStatsChart.metric.label : 'Historical series' }}
Loading historical stats...
{{ historicStats.error }}
Loading block...
{{ blockView.error }}
Block detail
{{ blockView.block.hash }}
Height #{{ formatNumber(blockView.block.index) }} · {{ blockView.block.isOrphaned ? 'Alternative chain block' : 'Main chain block' }} · {{ formatNumber(blockView.block.transactions.length) }} transactions
Header
Chain context
ML-DSA-65 ({{ formatNumber(blockMinerSignatureHex.length / 2) }} bytes)
{{ blockMinerSignatureHex }}
Economics
Reward breakdown
Transactions
Block contents
| # | Hash | Type | Fee | Total amount | Size |
|---|---|---|---|---|---|
| {{ index }} | {{ transaction.hash }} | {{ txTypeName(transaction.txType) }} | {{ transactionFeeCell(transaction) }} | {{ formatCoins(transaction.totalOutputsAmount, false) }} | {{ formatBytes(transaction.size) }} |
Loading transaction...
{{ txView.error }}
Transaction detail
{{ txView.tx.hash }}
{{ txView.tx.inBlockchain ? 'Confirmed' : 'Unconfirmed' }} · {{ txView.tx.inBlockchain ? transactionConfirmations + ' confirmations' : 'Waiting for inclusion' }}
Overview
Transaction payload
Extra data
{{ formatNumber(transactionRawExtra.length / 2) }} bytes
{{ transactionRawExtra }}
ML-DSA-65 ({{ formatNumber(transactionMinerSpendPub.length / 2) }} bytes)
{{ transactionMinerSpendPub }}
Account registration
Registry details
ML-KEM-768 ({{ formatNumber(txView.tx.accountRegistration.viewPublicKey.length / 2) }} bytes)
{{ txView.tx.accountRegistration.viewPublicKey }}
ML-DSA-65 ({{ formatNumber(txView.tx.accountRegistration.spendPublicKey.length / 2) }} bytes)
{{ txView.tx.accountRegistration.spendPublicKey }}
Payment verification
Check payment proof
{{ formatNumber(txProofVerifier.result.outputIndices.length) }} matching output{{ txProofVerifier.result.outputIndices.length === 1 ? '' : 's' }} highlighted below. {{ formatNumber(txProofVerifier.result.confirmations) }} confirmation{{ txProofVerifier.result.confirmations === 1 ? '' : 's' }}.
This transaction type carries no inputs.
| # | Amount | Nullifier | Spent output | ||||||
|---|---|---|---|---|---|---|---|---|---|
| {{ index }} | {{ formatCoins(input.data.amount, false) }} | Coinbase — newly minted coins | {{ formatCoins(input.data.amount, false) }} | {{ input.data.nullifier }} |
output {{ formatNumber(input.data.output.number) }} in {{ shortHash(input.data.output.transactionHash) }}
Authorization key, ML-DSA-65 ({{ formatNumber(input.data.input.auth_pub.length / 2) }} bytes){{ input.data.input.auth_pub }} |
Unsupported input type {{ input.type }} | |||
This transaction type carries no outputs.
| # | Amount | Output target | Global index | Spend lock |
|---|---|---|---|---|
| {{ index }} | {{ formatCoins(output.output.amount, false) }} |
{{ output.output.target.data.spend_commit }}
Spend commitment
Key encapsulation, ML-KEM-768 ({{ formatNumber(output.output.target.data.kem_ct.length / 2) }} bytes){{ output.output.target.data.kem_ct }} Encrypted payload ({{ formatNumber(output.output.target.data.enc_payload.length / 2) }} bytes){{ output.output.target.data.enc_payload }} |
{{ formatNumber(output.globalIndex) }} | {{ coerceNumber(output.output.unlock_height) ? 'until height ' + formatNumber(output.output.unlock_height) : '—' }} |
{{ transactionSignatureSummary }}
This transaction type carries no spend signatures.
Payment ID
{{ route.params.hash }}
Transactions found for this payment identifier.
Loading transactions...
{{ paymentView.error }}
No transactions found for this payment ID.
| Hash | Fee | Total amount | Size |
|---|---|---|---|
| {{ transaction.hash }} | {{ formatCoins(transaction.fee, false) }} | {{ formatCoins(transaction.amount_out || transaction.totalOutputsAmount, false) }} | {{ formatBytes(transaction.size) }} |
Address
{{ route.params.address }}
Bech32m decoding, post-quantum key inspection, and registered account-number lookup.
Validating address...
{{ addressView.error }}
Validation
Address status
Bech32m checksum verified — {{ addressView.result.network }} address{{ addressView.result.nodeConfirmed === false ? ' (the connected node runs the other network)' : '' }}.
ML-KEM-768 ({{ formatNumber(addressView.result.viewPublicKey.length / 2) }} bytes)
{{ addressView.result.viewPublicKey }}
ML-DSA-65 ({{ formatNumber(addressView.result.spendPublicKey.length / 2) }} bytes)
{{ addressView.result.spendPublicKey }}
Privacy note
Why balances stay hidden
This explorer cannot show a Discrete address balance or its full history. Every payment is delivered to a one-time stealth output: the sender encapsulates a secret to the recipient's ML-KEM-768 view key, so only the recipient can recognize which outputs are theirs. Observers cannot map funds back to a public address the way they can on transparent chains.
Account number
Registered alias
No canonical account number is registered for this address.
Account number
{{ route.params.accountNumber }}
Resolve a registered account number to its on-chain post-quantum identity keys.
Resolving account number...
{{ accountNumberView.error }}
Resolution
Full bech32m address
{{ accountNumberView.result.address }}
Identity
Registered identity keys
No account is registered at these coordinates.
ML-KEM-768 ({{ formatNumber(accountNumberView.result.viewPublicKey.length / 2) }} bytes)
{{ accountNumberView.result.viewPublicKey }}
ML-DSA-65 ({{ formatNumber(accountNumberView.result.spendPublicKey.length / 2) }} bytes)
{{ accountNumberView.result.spendPublicKey }}
Lookup note
What this identifier means
Account numbers are compact on-chain aliases: block height, transaction index, and a Luhn mod-36 check character. The keys stored at those coordinates form a full, payable Discrete identity — wallets can send to the account number directly. An H-I-T-C form adds a subaddress index that routes deposits without changing the keys.
Node monitor
Public network nodes
Live node health and common chain data from the published HTTPS list.
Loading nodes...
{{ nodesView.error }}
{{ node.name }}
{{ node.url }}This node did not respond to `getinfo` during the last refresh.
Alternative blocks
Competing chain tips
Alternative blocks currently visible from the connected node.
Loading alt blocks...
{{ altView.error }}
No alternative blocks reported by this node.
| Height | Time | Hash | Size | Difficulty | Txs |
|---|---|---|---|---|---|
| {{ formatNumber(block.height) }} |
{{ formatDateTime(block.timestamp) }}
{{ formatRelativeTime(block.timestamp) }}
|
{{ block.hash }} | {{ formatBytes(block.cumulative_size) }} | {{ formatDifficulty(block.difficulty) }} | {{ formatNumber(block.transactions_count) }} |
Tools
Explorer utilities
A collection of useful tools for interacting with the Discrete blockchain.
{{ tool.label }}
{{ tool.description }}
Tools
Broadcast transaction
Paste raw transaction hex and submit it to the connected node.
Tools
Check payment proof
Verify a wallet-generated payment proof for a transaction and recipient.
{{ formatNumber(paymentProofTool.result.outputIndices.length) }} matching output{{ paymentProofTool.result.outputIndices.length === 1 ? '' : 's' }}. {{ formatNumber(paymentProofTool.result.confirmations) }} confirmation{{ paymentProofTool.result.confirmations === 1 ? '' : 's' }}.
Tools
Validate address
Check whether an address is valid and inspect its public keys.
Tools
Verify signed message
Verify whether a post-quantum message signature matches the supplied address.
Tools
Amount converter
Convert between atomic units and human-readable XDS values.
Tools
Payment ID tools
Generate a payment ID, decode one to text, or encode a short ASCII memo into one.
Settings
Appearance and other preferences
Choose a theme, switch your RPC endpoint, etc.
Appearance
Theme
Node endpoint
Preferred RPC
Routing