INTRODUCTION
CHAIN
RESOURCES
INNOVATION
CONNECT
Sahyadri

A Sovereign Peer-to-Peer Digital Money System
Suraj Datir  
  surajdatir3@gmail.com  
www.sahyadri.io

Abstract. A purely peer-to-peer version of electronic cash, built as a sovereign digital money system, would allow online payments to be sent directly from one party to another without going through a financial institution. Existing proof-of-work networks solve the double-spending problem but limit throughput to a single linear chain, discarding valid blocks when multiple miners discover them simultaneously. We propose a solution based on a directed acyclic graph structure, which accepts every valid block and orders them into a single deterministic history through a novel consensus protocol. The network is secured by a memory-hard proof-of-work algorithm that compresses the gap between specialized and general-purpose hardware. State is managed through an Account + Object model, enabling direct balance transfers without tracking individual unspent outputs, while a strictly capped supply with disinflationary emission ensures predictable monetary economics. Furthermore, Sahyadri natively integrates Web5 Decentralized Identifiers (DIDs) within its Object model, providing a sovereign identity layer alongside its monetary system without introducing network state bloat. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the finalized DAG ordering as proof of what happened while they were gone.

1. Introduction

Sahyadri Core introduces CSM — a sovereign digital money designed as a resilient, auditable, and highly accessible settlement layer. Sahyadri is a peer-to-peer monetary system built to enable trust-minimized value transfer at global scale while preserving simplicity, predictability, and broad participation. While avoiding the severe state-bloat of general-purpose Turing-complete smart contracts, the protocol focuses on secure, low-friction digital money coupled with native Web5 Decentralized Identity (DID) primitives.

Sahyadri is implemented on SahyadriDAG, a directed acyclic graph (DAG) data structure that permits parallel block creation by independent miners. Unlike traditional single-chain blockchains that discard concurrent blocks as orphans, SahyadriDAG embraces them: every valid block contributes to the ledger, and the Sahyadri Consensus protocol produces a single deterministic total ordering of all transactions. This eliminates the wasted-hash problem of single-chain designs.

The network is secured by SahyadriX — an application-layer Proof-of-Work combining Blake3 with an 8-stage XOR memory loop requiring 16 MB of random-access memory per hash operation. This architecture is genuinely memory-hard, compressing the performance gap between ASICs and general-purpose hardware, ensuring mining remains accessible to a broad population of participants.

Sahyadri operates on a hybrid Account + Object state model. Rather than tracking individual unspent outputs (UTXOs), the protocol maintains per-address balances and nonces. Each transaction atomically deducts from the sender and credits the receiver, with balance finality enforced at the block confirmation boundary. This model delivers account + object based ergonomics with the security of Proof-of-Work.

1.1 Key Protocol Parameters

PropertySpecification
Ticker SymbolCSM (Cryptographic Sovereign Money)
Smallest UnitKana — 1 CSM = 100,000,000 Kana (8 decimals)
Maximum Supply21,000,000 CSM (hard cap, protocol-enforced)
Block Time1 second (deterministic)
Throughput10,000 TPS (max_block_mass: 30,000,000)
Initial Block Reward0.08318123 CSM per block (8,318,123 Kana)
Halving IntervalEvery 4 years (126,230,400 blocks)
Block Reward Split98% Miner / 2% Sahyadri Treasury
TX Fee Split90% Miner / 10% Sahyadri Treasury
Minimum TX Fee0.00001 CSM (1,000 Kana) — fixed flat fee
ConsensusSahyadri Consensus
Mining AlgorithmSahyadriX (Blake3 + 16 MB memory loop)
State ModelAccount + Object (balance + nonce per address)
Address FormatCSM32 (Bech32-derived, prefix: csm1...)
Network PortsgRPC: 26110 | P2P: 26111 | wRPC: 27110

2. Account + Object State Model

Sahyadri employs a hybrid Account + Object state model stored in RocksDB. Unlike pure UTXO systems which track individual unspent outputs, the account model maintains a global state table where each address has an associated balance (in CSM) and a monotonically increasing nonce. This eliminates the "dust" problem inherent in high-frequency UTXO systems at 1-second block times.

2.1 Account State Structure

Each account entry in RocksDB contains:

When a transaction is confirmed in a block, the state transition is atomic:

sender.balance -= (amount + fee) receiver.balance += amount miner.balance += fee * 0.90 // 90% of TX fee to miner treasury.balance += fee * 0.10 // 10% of TX fee to Sahyadri Treasury sender.nonce += 1 // increment after confirmation

2.2 Object Layer

The Object layer complements accounts by storing state commitments in a Merkle trie rooted in each block header. Each block header commits to an object-based state root — a hash cryptographically summarising the entire current ledger state. This enables efficient light-client verification via Merkle proofs, safe pruning once a state root is committed, and fast sync via verified state snapshots.

2.3 Why Not Pure UTXO?

At 1-second block times and 10,000 TPS, pure UTXO models generate millions of small outputs ("dust") that fragment user balances. The account model resolves this: each address maintains a single unified balance. Atomic state transitions at block confirmation boundaries ensure that partial updates are impossible — either the full transaction succeeds or the state remains unchanged.

2.4 Native Web5 Identity Anchoring

The Object layer serves as the cryptographic registry for Decentralized Identifiers (DIDs). Users can anchor their lightweight DID documents on-chain, acting as the foundational layer for Web5 Verifiable Credentials without congesting the consensus layer.

3. Transactions

A Sahyadri transaction is a cryptographically signed state-transition instruction authorizing a transfer of value from a sender account to a receiver account, subject to nonce validation, balance sufficiency, and fee payment. Transactions are pending until included in a miner-confirmed block; only then do balance changes take effect.

3.1 Transaction Structure

Transaction { // Sahyadri Account Model: Inputs are empty, data lives in payload sender: CSM32 address // csm1q...(validated via payload signature) receiver: CSM32 address // csm1q... amount: u64 (in Kana) // 1 CSM = 100,000,000 Kana fee: u64 (in Kana) // fixed: 1,000 Kana = 0.00001 CSM nonce: u64 // must equal sender.current_nonce (prevents replay) tx_id: SHA256(sender+receiver+amount+nonce+timestamp) }

3.2 Full Transaction Lifecycle

USER INITIATES TRANSACTION | +--> wallet_api: POST /api/send-csm | +--> [VALIDATION] | |-- Sender account exists in accounts table? | |-- balance >= (amount + 0.00001 CSM fee)? | |-- nonce == sender.current_nonce? | |-- pending_locked + new_total <= sender.balance? | +--> [MEMPOOL INSERT] | |-- INSERT INTO pending_transactions (status='pending') | |-- INSERT INTO transactions (status='pending') | |-- UPDATE accounts SET nonce = nonce + 1 (anti-replay) | +--> Return: { txid, status:'pending', fee:0.00001 CSM } | | (waiting for miner to mine next block...) | MINER MINES NEXT BLOCK (~1 second) | +--> indexer.rs: flush_second() | +--> [BLOCK REWARD] | |-- Decode payload -> actual_reward_kana | |-- miner.balance += reward * 0.98 | |-- treasury.balance += reward * 0.02 | +--> [PENDING TX CONFIRM] up to 10,000 per second | FOR each pending TX: |-- Re-check: sender.balance >= (amount + fee)? | YES -> confirm | NO -> status = 'rejected' | ON CONFIRM: |-- sender.balance -= (amount + fee) [NOW deducted] |-- receiver.balance += amount |-- miner.balance += fee * 0.90 |-- treasury.balance += fee * 0.10 |-- transactions.status = 'confirmed' |-- transactions.block_hash = current_block

3.3 Mempool and Pending Queue

The mempool is implemented as a PostgreSQL table (pending_transactions) rather than an in-memory structure. This provides persistence across node restarts, atomic conflict prevention via ON CONFLICT DO NOTHING, double-spend protection through locked-balance accounting, and 10,000 TX capacity per 1-second block.

Double-spend prevention in wallet_api.py:

# Check total currently locked in mempool for this sender SELECT COALESCE(SUM(amount + fee), 0) FROM pending_transactions WHERE from_address = %s AND status = 'pending' # New TX accepted only if: sender.balance >= pending_locked + (new_amount + new_fee)

3.4 Mempool Fairness & Anti-Bot Shield