# pandanite-crypto/pandanite architecture

> Architecture diagram of the GitHub repository pandanite-crypto/pandanite, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pandanite-crypto/pandanite
- Repository: https://github.com/pandanite-crypto/pandanite

## Overview

Pandanite is a minimalist layer-1 cryptocurrency node, with companion key-generation, mining, and transaction-sending tools. Its user workflow is to create a wallet, run a node, mine by obtaining proof-of-work parameters and submitting a solved block, or send transactions through the node; the node exposes blockchain, wallet, peer, and statistics APIs. The graph reflects the sampled HTTP handlers and request/peer code plus README-documented capabilities. Storage modules and several unsampled runtime paths are shown only where their roles are clear; their wiring is not inferred.

Main entry points: [`src/server/request_manager.cpp`](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/request_manager.cpp) (Request manager), [`src/server/blockchain.cpp`](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/blockchain.cpp) (Blockchain), [`src/server/server.cpp`](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/server.cpp) (HTTP server), [`src/tools/miner.cpp`](https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/miner.cpp) (Miner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tools["User tools"]
  node_keygen["Key generator<br/>[keygen.cpp]"]
  node_cli["Transaction CLI<br/>[cli.cpp]"]
  node_miner["Miner<br/>[miner.cpp]"]
  node_server_tool["Server launcher<br/>[server.cpp]"]
end

subgraph group_api["Node API"]
  node_server["HTTP server<br/>[server.cpp]"]
  node_requests["Request manager"]
  node_rate["Rate limiter<br/>[rate_limiter.cpp]"]
end

subgraph group_chain["Chain runtime"]
  node_blockchain["Blockchain<br/>[blockchain.cpp]"]
  node_mempool["Transaction pool<br/>[mempool.cpp]"]
  node_executor["Block executor<br/>[executor.cpp]"]
  node_block["Blocks and headers<br/>[block.cpp]"]
  node_transaction["Transactions<br/>[transaction.cpp]"]
  node_crypto["Cryptography<br/>[crypto.cpp]"]
  node_merkle["Merkle proofs<br/>[merkle_tree.cpp]"]
end

subgraph group_peers["Peer networking"]
  node_host_manager["Peer manager<br/>[host_manager.cpp]"]
  node_header_chain["Peer header chain<br/>[header_chain.cpp]"]
end

subgraph group_state["Chain state"]
  node_ledger[("Ledger store<br/>[ledger.cpp]")]
  node_block_store[("Block store<br/>[block_store.cpp]")]
  node_tx_store[("Transaction store<br/>[tx_store.cpp]")]
  node_data_store[("Data store<br/>[data_store.cpp]")]
end

node_user(("Wallet user"))
node_peer_nodes(("Peer nodes"))

node_user -->|"generates keys"| node_keygen
node_user -->|"sends payment"| node_cli
node_user -->|"starts mining"| node_miner
node_user -->|"runs node"| node_server_tool
node_server_tool -->|"starts"| node_server
node_cli -->|"submits transactions"| node_server
node_miner -->|"requests work"| node_server
node_miner -->|"submits solution"| node_server
node_server -->|"dispatches API calls"| node_requests
node_server -->|"checks request limits"| node_rate
node_requests -->|"limits requests"| node_rate
node_requests -->|"queries chain"| node_blockchain
node_requests -->|"adds and reads transactions"| node_mempool
node_requests -->|"manages peers"| node_host_manager
node_requests -->|"builds proof"| node_merkle
node_blockchain -->|"reads blocks"| node_block
node_blockchain -->|"executes blocks"| node_executor
node_mempool -->|"holds transactions"| node_transaction
node_transaction -->|"uses cryptography"| node_crypto
node_host_manager -->|"creates peer chains"| node_header_chain
node_header_chain -->|"requests headers"| node_peer_nodes
node_host_manager -->|"refreshes peer list"| node_peer_nodes
node_requests -->|"forwards accepted blocks"| node_peer_nodes
node_blockchain --> node_ledger
node_blockchain --> node_block_store
node_blockchain --> node_tx_store
node_blockchain --> node_data_store

click node_keygen "https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/keygen.cpp"
click node_cli "https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/cli.cpp"
click node_miner "https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/miner.cpp"
click node_server_tool "https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/server.cpp"
click node_server "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/server.cpp"
click node_requests "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/request_manager.cpp"
click node_rate "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/rate_limiter.cpp"
click node_blockchain "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/blockchain.cpp"
click node_mempool "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/mempool.cpp"
click node_executor "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/executor.cpp"
click node_block "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/block.cpp"
click node_transaction "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/transaction.cpp"
click node_crypto "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/crypto.cpp"
click node_merkle "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/merkle_tree.cpp"
click node_host_manager "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/host_manager.cpp"
click node_header_chain "https://github.com/pandanite-crypto/pandanite/blob/master/src/core/header_chain.cpp"
click node_ledger "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/ledger.cpp"
click node_block_store "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/block_store.cpp"
click node_tx_store "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/tx_store.cpp"
click node_data_store "https://github.com/pandanite-crypto/pandanite/blob/master/src/server/data_store.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_keygen,node_cli,node_miner,node_server_tool,node_user toneBlue
class node_server,node_requests,node_rate toneAmber
class node_blockchain,node_mempool,node_executor,node_block,node_transaction,node_crypto,node_merkle toneMint
class node_host_manager,node_header_chain toneRose
class node_ledger,node_block_store,node_tx_store,node_data_store,node_peer_nodes toneIndigo
```

## Components

### User tools

- [Key generator](https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/keygen.cpp): `src/tools/keygen.cpp`
- [Transaction CLI](https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/cli.cpp): `src/tools/cli.cpp`
- [Miner](https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/miner.cpp): `src/tools/miner.cpp`
- [Server launcher](https://github.com/pandanite-crypto/pandanite/blob/master/src/tools/server.cpp): `src/tools/server.cpp`

### Node API

- [HTTP server](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/server.cpp): `src/server/server.cpp`
- [Request manager](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/request_manager.cpp): `src/server/request_manager.cpp`
- [Rate limiter](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/rate_limiter.cpp): `src/server/rate_limiter.cpp`

### Chain runtime

- [Blockchain](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/blockchain.cpp): `src/server/blockchain.cpp`
- [Transaction pool](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/mempool.cpp): `src/server/mempool.cpp`
- [Block executor](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/executor.cpp): `src/server/executor.cpp`
- [Blocks and headers](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/block.cpp): `src/core/block.cpp`
- [Transactions](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/transaction.cpp): `src/core/transaction.cpp`
- [Cryptography](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/crypto.cpp): `src/core/crypto.cpp`
- [Merkle proofs](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/merkle_tree.cpp): `src/core/merkle_tree.cpp`

### Peer networking

- [Peer manager](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/host_manager.cpp): `src/core/host_manager.cpp`
- [Peer header chain](https://github.com/pandanite-crypto/pandanite/blob/master/src/core/header_chain.cpp): `src/core/header_chain.cpp`

### Chain state

- [Ledger store](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/ledger.cpp): `src/server/ledger.cpp`
- [Block store](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/block_store.cpp): `src/server/block_store.cpp`
- [Transaction store](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/tx_store.cpp): `src/server/tx_store.cpp`
- [Data store](https://github.com/pandanite-crypto/pandanite/blob/master/src/server/data_store.cpp): `src/server/data_store.cpp`

### Other components

- **Wallet user**
- **Peer nodes**

## Connections

- Wallet user → Key generator: generates keys
- Wallet user → Transaction CLI: sends payment
- Wallet user → Miner: starts mining
- Wallet user → Server launcher: runs node
- Server launcher → HTTP server: starts
- Transaction CLI → HTTP server: submits transactions
- Miner → HTTP server: requests work
- Miner → HTTP server: submits solution
- HTTP server → Request manager: dispatches API calls
- HTTP server → Rate limiter: checks request limits
- Request manager → Rate limiter: limits requests
- Request manager → Blockchain: queries chain
- Request manager → Transaction pool: adds and reads transactions
- Request manager → Peer manager: manages peers
- Request manager → Merkle proofs: builds proof
- Blockchain → Blocks and headers: reads blocks
- Blockchain → Block executor: executes blocks
- Transaction pool → Transactions: holds transactions
- Transactions → Cryptography: uses cryptography
- Peer manager → Peer header chain: creates peer chains
- Peer header chain → Peer nodes: requests headers
- Peer manager → Peer nodes: refreshes peer list
- Request manager → Peer nodes: forwards accepted blocks
- Blockchain → Ledger store
- Blockchain → Block store
- Blockchain → Transaction store
- Blockchain → Data store
