NOXYDocs
GitHub
Docs/Start/NOXY Wiki

NOXY Wiki

Reference for the NOXY post-quantum Layer 1 blockchain: ML-DSA-44 signatures, DAG consensus with checkpoint finality, accounts, and the public RPC surface.

Updated 2026-08-03Status ReferenceSource content/wiki/index.mdx

NOXY Wiki

NOXY is a post-quantum Layer 1 blockchain implemented in Rust. The protocol uses ML-DSA-44 (FIPS 204) for account signatures and a hybrid ML-DSA-44 + Ed25519 scheme for validator consensus certificates. State is committed to a sparse Merkle tree over BLAKE3 paths; consensus is a DAG that orders transactions continuously, with checkpoint certificates providing durable finality.

This wiki describes the protocol as it runs on the Veylith testnet: chain veylith-testnet-10, protocol v4, a 250 ms block target, and four validators.

Quickstart

The fastest way to touch the chain is the public RPC:

curl https://test.noxycore.io/v0/health
curl https://test.noxycore.io/v0/node/identity
curl https://test.noxycore.io/v0/network/stats

From there:

  • Claim testnet tokens from the faucet.
  • Build and submit transactions with the TypeScript SDK (@noxy/core), which shares canonical encoding with the node and is verified against the same test vectors.
  • Read the full endpoint reference at Developer RPC.

The node itself is not publicly distributed yet. The core goes source-available at mainnet, and a public validator program with signed binaries and a Docker image opens before that; today the validator set is a fixed group of operators. See Run a node for the current state.

Cryptography

Every consensus-critical digest is BLAKE3 with a domain prefix:

BLAKE3("NOXY-L0/v0.1/<domain>\0" || data)

Signature usage is split across two domains:

| Where | Algorithm | Purpose | |---|---|---| | Transaction envelope | ML-DSA-44 | Account authorization | | Consensus certificate | ML-DSA-44 + Ed25519 (both required) | Validator certification |

ML-DSA-44 public keys are 1 312 bytes and signatures are 2 420 bytes. Ed25519 keys are 32 bytes and signatures are 64 bytes. A certificate with only one valid signature is rejected; neither algorithm is a fallback for the other.

Consensus and finality

Transaction batches flow through a DAG: an availability layer collects and certifies batches, an ordering layer sequences them, and checkpoint certificates make the ordered prefix durably final. There are no forks to resolve and no probabilistic settlement; a committed block does not reorg.

Anti-equivocation is enforced by the availability collector as a liveness-class protection. There is no stake slashing in the protocol today.

State

A sparse Merkle tree over 256-bit BLAKE3 paths commits every state change. Any account, balance, or transaction can be proven against a committed checkpoint with a compact proof; transaction proofs are served directly by the public RPC (GET /v0/tx/{hash}/proof).

Public RPC

The public HTTP facade serves these routes; see Developer RPC for request and response shapes.

| Endpoint | Description | |---|---| | GET /v0/health | Facade liveness | | GET /v0/network/stats | Chain, checkpoint, validator, and EVM-lane stats | | GET /v0/node/identity | Chain ID, genesis hash, native asset, versions | | GET /v0/economics/summary | Native asset ID | | GET /v0/account/{id} | Account record (native or EVM 0x address) | | GET /v0/account/{id}/nonce | Sequence nonce | | GET /v0/account/{id}/balance/{asset} | Asset balance | | GET /v0/account/{id}/activity | Paginated account activity | | POST /v0/tx/submit | Submit a base64-encoded TransactionEnvelope | | GET /v0/tx/{hash} | Transaction status and display receipt | | GET /v0/tx/{hash}/proof | Merkle proof up to a signed checkpoint | | POST /v0/evm | eth JSON-RPC facade for the EVM lane |

Operator model

Node startup is identity-bound. The node refuses to start when:

  • chain_id in config does not match genesis.chain_id.
  • The expected genesis hash does not match the computed genesis hash.
  • An existing database was stamped by a different chain_id or genesis hash.

The active validator set is derived from committed state, not from local config. A node that restarts with an existing database rejoins without wiping state.

Pages