# addaddition/addition architecture

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

- Interactive diagram: https://gitdiagram.com/addaddition/addition
- Repository: https://github.com/addaddition/addition

## Overview

ADDITION is a C++20 Layer 1 blockchain node, with wallet clients and optional token, privacy, contract, and proof-of-useful-work features. The main operator workflow configures and starts the daemon, which loads chain state and exposes RPC; wallet clients issue commands through RPC to query balances or send transactions. The graph also preserves documented consensus, mining, networking, and product branches. Edges are limited to relationships visible in excerpts or explicitly described in the README; several unsampled subsystems are shown without speculative wiring.

Main entry points: [`apps/additiond_main.cpp`](https://github.com/addaddition/addition/blob/main/apps/additiond_main.cpp) (Daemon startup), [`src/contract_engine.cpp`](https://github.com/addaddition/addition/blob/main/src/contract_engine.cpp) (Contract engine), [`src/chain.cpp`](https://github.com/addaddition/addition/blob/main/src/chain.cpp) (Chain and blocks), [`ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift`](https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift) (Wallet RPC client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_node["Node and consensus"]
  node_daemon["Daemon startup<br/>[additiond_main.cpp]"]
  node_config["Network config<br/>[config.cpp]"]
  node_chain["Chain and blocks<br/>[chain.cpp]"]
  node_block["Block model<br/>[block.cpp]"]
  node_consensus["Peer consensus"]
  node_mempool["Transaction pool<br/>[mempool.cpp]"]
  node_miner["Mining<br/>[miner.cpp]"]
  node_p2p["Peer networking<br/>[p2p.cpp]"]
  node_state[("Persistent state<br/>[state_store.cpp]")]
end

subgraph group_interfaces["RPC and wallets"]
  node_rpc["Node RPC<br/>[rpc_server.cpp]"]
  node_networkrpc["Network RPC"]
  node_wallet["Wallet engine<br/>[wallet.cpp]"]
  node_walletkeys["Wallet keys<br/>[wallet_keys.cpp]"]
  node_iossession["iOS wallet session"]
  node_iosclient["Wallet RPC client"]
  node_textclient["Text RPC transport"]
end

subgraph group_features["Ledger features"]
  node_tokens["Tokens and NFTs<br/>[token_engine.cpp]"]
  node_contracts["Contract engine"]
  node_privacy["Privacy pool<br/>[privacy.cpp]"]
  node_cryptography["Cryptography<br/>[crypto.cpp]"]
end

subgraph group_usefulwork["Useful work"]
  node_pouwcompute["PoUW compute<br/>[pouw_compute.cpp]"]
  node_pouwstorage["PoUW storage<br/>[pouw_storage.cpp]"]
end

node_operator(("Node operator"))

node_operator -->|"starts"| node_daemon
node_daemon -->|"configures"| node_config
node_daemon -->|"initializes"| node_chain
node_daemon -->|"initializes"| node_mempool
node_daemon -->|"initializes"| node_miner
node_daemon -->|"initializes"| node_consensus
node_daemon -->|"loads and saves"| node_state
node_daemon -->|"starts local"| node_rpc
node_daemon -->|"starts optional"| node_networkrpc
node_daemon -->|"initializes"| node_p2p
node_chain -->|"uses"| node_block
node_iossession -->|"calls"| node_iosclient
node_iosclient -->|"calls"| node_textclient
node_contracts -->|"queries"| node_tokens
node_contracts -->|"calls"| node_privacy
node_pouwstorage -->|"hashes challenges"| node_cryptography

click node_daemon "https://github.com/addaddition/addition/blob/main/apps/additiond_main.cpp"
click node_config "https://github.com/addaddition/addition/blob/main/src/config.cpp"
click node_chain "https://github.com/addaddition/addition/blob/main/src/chain.cpp"
click node_block "https://github.com/addaddition/addition/blob/main/src/block.cpp"
click node_consensus "https://github.com/addaddition/addition/blob/main/src/consensus_engine.cpp"
click node_mempool "https://github.com/addaddition/addition/blob/main/src/mempool.cpp"
click node_miner "https://github.com/addaddition/addition/blob/main/src/miner.cpp"
click node_p2p "https://github.com/addaddition/addition/blob/main/src/p2p.cpp"
click node_state "https://github.com/addaddition/addition/blob/main/src/state_store.cpp"
click node_rpc "https://github.com/addaddition/addition/blob/main/src/rpc_server.cpp"
click node_networkrpc "https://github.com/addaddition/addition/blob/main/src/rpc_network_server.cpp"
click node_wallet "https://github.com/addaddition/addition/blob/main/src/wallet.cpp"
click node_walletkeys "https://github.com/addaddition/addition/blob/main/src/wallet_keys.cpp"
click node_iossession "https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/WalletSession.swift"
click node_iosclient "https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift"
click node_textclient "https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/Client/TextRPCClient.swift"
click node_tokens "https://github.com/addaddition/addition/blob/main/src/token_engine.cpp"
click node_contracts "https://github.com/addaddition/addition/blob/main/src/contract_engine.cpp"
click node_privacy "https://github.com/addaddition/addition/blob/main/src/privacy.cpp"
click node_cryptography "https://github.com/addaddition/addition/blob/main/src/crypto.cpp"
click node_pouwcompute "https://github.com/addaddition/addition/blob/main/src/pouw_compute.cpp"
click node_pouwstorage "https://github.com/addaddition/addition/blob/main/src/pouw_storage.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_daemon,node_config,node_chain,node_block,node_consensus,node_mempool,node_miner,node_p2p,node_state toneBlue
class node_rpc,node_networkrpc,node_wallet,node_walletkeys,node_iossession,node_iosclient,node_textclient toneAmber
class node_tokens,node_contracts,node_privacy,node_cryptography toneMint
class node_pouwcompute,node_pouwstorage toneRose
class node_operator toneIndigo
```

## Components

### Node and consensus

- [Daemon startup](https://github.com/addaddition/addition/blob/main/apps/additiond_main.cpp): `apps/additiond_main.cpp`
- [Network config](https://github.com/addaddition/addition/blob/main/src/config.cpp): `src/config.cpp`
- [Chain and blocks](https://github.com/addaddition/addition/blob/main/src/chain.cpp): `src/chain.cpp`
- [Block model](https://github.com/addaddition/addition/blob/main/src/block.cpp): `src/block.cpp`
- [Peer consensus](https://github.com/addaddition/addition/blob/main/src/consensus_engine.cpp): `src/consensus_engine.cpp`
- [Transaction pool](https://github.com/addaddition/addition/blob/main/src/mempool.cpp): `src/mempool.cpp`
- [Mining](https://github.com/addaddition/addition/blob/main/src/miner.cpp): `src/miner.cpp`
- [Peer networking](https://github.com/addaddition/addition/blob/main/src/p2p.cpp): `src/p2p.cpp`
- [Persistent state](https://github.com/addaddition/addition/blob/main/src/state_store.cpp): `src/state_store.cpp`

### RPC and wallets

- [Node RPC](https://github.com/addaddition/addition/blob/main/src/rpc_server.cpp): `src/rpc_server.cpp`
- [Network RPC](https://github.com/addaddition/addition/blob/main/src/rpc_network_server.cpp): `src/rpc_network_server.cpp`
- [Wallet engine](https://github.com/addaddition/addition/blob/main/src/wallet.cpp): `src/wallet.cpp`
- [Wallet keys](https://github.com/addaddition/addition/blob/main/src/wallet_keys.cpp): `src/wallet_keys.cpp`
- [iOS wallet session](https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/WalletSession.swift): `ios/AdditionWallet/AdditionWallet/WalletSession.swift`
- [Wallet RPC client](https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift): `ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift`
- [Text RPC transport](https://github.com/addaddition/addition/blob/main/ios/AdditionWallet/AdditionWallet/Client/TextRPCClient.swift): `ios/AdditionWallet/AdditionWallet/Client/TextRPCClient.swift`

### Ledger features

- [Tokens and NFTs](https://github.com/addaddition/addition/blob/main/src/token_engine.cpp): `src/token_engine.cpp`
- [Contract engine](https://github.com/addaddition/addition/blob/main/src/contract_engine.cpp): `src/contract_engine.cpp`
- [Privacy pool](https://github.com/addaddition/addition/blob/main/src/privacy.cpp): `src/privacy.cpp`
- [Cryptography](https://github.com/addaddition/addition/blob/main/src/crypto.cpp): `src/crypto.cpp`

### Useful work

- [PoUW compute](https://github.com/addaddition/addition/blob/main/src/pouw_compute.cpp): `src/pouw_compute.cpp`
- [PoUW storage](https://github.com/addaddition/addition/blob/main/src/pouw_storage.cpp): `src/pouw_storage.cpp`

### Other components

- **Node operator**

## Connections

- Node operator → Daemon startup: starts (evidence: `README.md`)
- Daemon startup → Network config: configures (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Chain and blocks: initializes (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Transaction pool: initializes (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Mining: initializes (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Peer consensus: initializes (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Persistent state: loads and saves (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Node RPC: starts local (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Network RPC: starts optional (evidence: `apps/additiond_main.cpp`)
- Daemon startup → Peer networking: initializes (evidence: `apps/additiond_main.cpp`)
- Chain and blocks → Block model: uses
- iOS wallet session → Wallet RPC client: calls (evidence: `ios/AdditionWallet/AdditionWallet/WalletSession.swift`)
- Wallet RPC client → Text RPC transport: calls (evidence: `ios/AdditionWallet/AdditionWallet/Client/WalletRPCClient.swift`)
- Contract engine → Tokens and NFTs: queries (evidence: `src/contract_engine.cpp`)
- Contract engine → Privacy pool: calls (evidence: `src/contract_engine.cpp`)
- PoUW storage → Cryptography: hashes challenges (evidence: `src/pouw_storage.cpp`)
