Source
Not connected. Nothing loaded.
Without wiring, you can open the files a node writes (onx-data/blocks/ and genesis.boc) or drop them anywhere on this page. Files stay in your browser.
How this page verifies
Everything runs in your browser. This page is one HTML file with no external scripts, fonts or trackers, and it makes no network requests until a source is wired in for the selected network. Read the source in order: the wiring (ONX_CONFIG), the source adapters, the verification core, then the interface.
Checked here
| Check | Rule | Where the rule comes from |
|---|---|---|
| File structure | Magic ONXBLK04, a 148-byte header, length-prefixed messages, a message count that matches the header, no trailing bytes. A file is accepted here exactly when onx replay would decode it. | crates/tooling/onx/src/blockfile.rs |
| Message structure | Kind 0 (transfer) or 1 (contract call), payload of at most 65,535 bytes, no payload on transfers. | docs/adr/0002, onx-stf/src/message.rs |
| Hashes | SHA-256 over a 32-byte zero-padded domain tag followed by the bytes: block hash ONX_BLOCK_HDR_V1, message hash ONX_MSG_EXT_V1, message root ONX_MSGS_ROOT_V1. | docs/specification/protocol-primitives.md §4.5 |
| Chain links | Each prev_hash is the hash of the previous block, logical time strictly increases, and the workchain never changes. | onx-stf/src/stf.rs (apply_block) |
| Chain ID | The genesis hash (ONX_GENESIS_V1) equals block 1's prev_hash and the chain_id signed into every message. | docs/adr/0005 |
| Signatures | Ed25519 over pad32("ONX_MSG_EXT_SIGN_V1") ‖ body. The key comes from genesis.boc or from the sender's first-spend key reveal, which must hash to the sender's address (ONX_ADDR_V1). | docs/adr/0005, docs/adr/0006 |
| Nonces | Each sender's nonces run 0, 1, 2, … with no gap or repeat. Fully checkable when genesis.boc and every block from 1 are loaded. | docs/adr/0007 |
| Stateless wallet rules | Transfers move a non-zero amount, contract calls pay a non-zero fee, and amount plus fee fits in 128 bits. | onx-stf/src/stf.rs (wallet_receive) |
| Execution results | Block hashes and state roots compared with onx replay output that you paste. | crates/tooling/onx/src/main.rs |
Not checked here
- Balances, whether a sender could afford a message, deliveries, bounces and contract execution. Block files carry no receipts, so these need execution.
- State roots, unless you paste
onx replayoutput. Runonx replay --genesis <genesis.toml> --blocks <blocks dir> --data-dir <empty dir>on your own machine. - Ed25519 edge cases. The node verifies with ed25519-dalek
verify_strict, which also rejects small-order keys. Your browser applies standard RFC 8032 verification. For any block the node accepted, the two agree. - Validator signatures and finality. ONX has no consensus layer yet: blocks come from a single producer.
Self-test
Before verifying anything, this page checks its own decoding and hashing against vectors that the ONX repository computed independently of the Rust code (Python with libsodium). If any of these fail, ignore every verdict on this page.
Wiring
Testnet and Mainnet start unwired: nothing is read and nothing is shown. To connect one, edit window.ONX_CONFIG, the first script in this file:
chainId: the network's genesis hash, 64 hex characters.onx-genesisprints it, and it is block 1'sprev_hash. Data from any other chain is flagged.source:{ files: 'https://host/path/' }for a URL serving whatonxdwrites (genesis.boc,block-00000001.blk, …), or your own adapter withgenesis(),block(seqno)and, optionally,latest(), each returning raw bytes. The contract is written out in theonx-sourcesscript. A URL on another host must allow this page's origin (CORS).pollSeconds: optional. How often to look for new blocks.labels: optional names for known accounts, shown as off-chain names.
A source is never trusted. Every byte is verified here, so a source cannot alter a signed message or break a hash link without it showing. Until ONX has validator signatures, a source could still serve a different sequence of blocks; state roots are confirmed only against onx replay output.