Build on Genoryn Krypton
The full specification lives in the repository. This page is the short version.
Protocol at a glance
- Blocks every 60 s, LWMA difficulty, fork choice by cumulative work.
- Issuance: 5 GNR per block, halving every 2,100,000 blocks, cap 21,000,000 GNR; 1 GNR = 100,000,000 gori.
- Transfers: 2-in / 2-out zk-STARK proofs (Winterfell, Rescue-Prime, SHA3 commitments), about 92 KB, verified in about 2 ms.
- Notes: depth-40 Rescue-Prime commitment tree; nullifiers are hashes of a nullifier key and the note position.
- Encryption: X25519 + ML-KEM-1024, XChaCha20-Poly1305. Peer links: X25519 + ML-KEM-768, ChaCha20-Poly1305.
- Headers commit to a Merkle Mountain Range of all previous blocks for logarithmic light-client proofs.
API
Every node exposes REST under /v1, JSON-RPC 2.0 at /rpc and a WebSocket feed at /v1/ws. The public node at https://genoryn.io serves the same API.
GET /v1/info network, height, supply, hashrate
GET /v1/blocks?count=20 latest blocks
GET /v1/block/{height|hash} block with transactions
GET /v1/tx/{txid} transaction status
GET /v1/compact?from=&count= compact blocks for light wallets (binary)
GET /v1/flyclient?heights=a,b sampled headers with MMR proofs
GET /v1/subtree/{chunk} private witness download
POST /v1/tx submit a transaction (binary)
POST /rpc getinfo, getblock, sendrawtransaction, ...
curl -s https://genoryn.io/rpc -d '{"jsonrpc":"2.0","id":1,"method":"getblockcount"}'
Addresses
Full addresses carry a post-quantum key and are long (about 2,600 characters). Short addresses (gnrs1…, tgnrs1…) are content hashes that any node resolves; a node cannot substitute a different address because the hash would not match.
Fair launch
Testnet genesis commits to Bitcoin block 974,322. Mainnet will commit to a future Bitcoin block announced in advance; the release containing the genesis hash is published only after that block exists, so anyone can verify that nobody mined before launch.
Integrate
Use the Rust crates (krypton-sdk), the C library (libkrypton) or the TypeScript client in sdk/js. See docs/integration for exchanges, wallets and explorers.