# litecoin-project/litecoin architecture

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

- Interactive diagram: https://gitdiagram.com/litecoin-project/litecoin
- Repository: https://github.com/litecoin-project/litecoin

## Overview

Litecoin Core is full-node software for operating a peer-to-peer digital currency, with wallet and command-line/RPC interfaces as user entry points. The principal workflow is creating or submitting a transaction, validating it against consensus rules, and propagating it through the network; nodes also maintain chain state, support mining, and expose wallet and chain data. The tree documents an additional Mimblewimble Extension Block (MWEB) implementation. Most runtime files were not sampled, so uncertain connections are dashed and have no evidence path.

Main entry points: [`src/validation.cpp`](https://github.com/litecoin-project/litecoin/blob/master/src/validation.cpp) (Block Processing), [`src/txmempool.cpp`](https://github.com/litecoin-project/litecoin/blob/master/src/txmempool.cpp) (Transaction Pool), [`src/rpc/server.cpp`](https://github.com/litecoin-project/litecoin/blob/master/src/rpc/server.cpp) (RPC Service), [`src/miner.cpp`](https://github.com/litecoin-project/litecoin/blob/master/src/miner.cpp) (Block Mining)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_wallet["Wallet"]
  node_rpc["RPC Service<br/>[server.cpp]"]
  node_cli["CLI Client<br/>[bitcoin-cli.cpp]"]
  node_gui["Desktop GUI<br/>[bitcoingui.cpp]"]
end

subgraph group_node["Node Operations"]
  node_daemon["Node Startup<br/>[init.cpp]"]
  node_network["P2P Network<br/>[net_processing.cpp]"]
  node_mempool["Transaction Pool<br/>[txmempool.cpp]"]
  node_policy["Transaction Policy<br/>[policy.cpp]"]
  node_miner["Block Mining<br/>[miner.cpp]"]
end

subgraph group_chain["Chain and Storage"]
  node_consensus["Consensus Validation<br/>[tx_verify.cpp]"]
  node_chainstate["Chain State<br/>[coins.cpp]"]
  node_blocks["Block Processing<br/>[validation.cpp]"]
  node_storage[("Block Storage<br/>[flatfile.cpp]")]
  node_indexes[("Chain Indexes")]
  node_crypto["Cryptography<br/>[secp256k1.h]"]
end

subgraph group_mweb["MWEB"]
  node_mweb_node["MWEB Node<br/>[mweb_node.cpp]"]
  node_mweb_wallet["MWEB Wallet<br/>[mweb_wallet.cpp]"]
  node_mweb_tx["MWEB Transactions<br/>[mweb_transact.cpp]"]
  node_mweb_store[("MWEB Storage<br/>[mweb_db.h]")]
  node_mw_block["MWEB Block Builder<br/>[BlockBuilder.cpp]"]
  node_mw_validate["MWEB Validation<br/>[BlockValidator.cpp]"]
  node_mw_wallet_build["MWEB Wallet Builder<br/>[TxBuilder.cpp]"]
  node_mw_database["MWEB Database API<br/>[Database.h]"]
  node_mw_entry["Serialized DB Entry<br/>[DBEntry.h]"]
  node_mw_transaction["DB Transaction<br/>[DBTransaction.h]"]
end

node_user(("User"))

node_user -.->|"creates payments"| node_wallet
node_user -.->|"uses"| node_gui
node_user -.->|"invokes"| node_cli
node_cli -.->|"requests"| node_rpc
node_gui -.->|"manages"| node_wallet
node_gui -.->|"requests"| node_rpc
node_daemon -.->|"starts"| node_network
node_wallet -.->|"submits"| node_rpc
node_rpc -.->|"dispatches"| node_mempool
node_network -.->|"relays transactions"| node_mempool
node_mempool -.->|"checks policy"| node_policy
node_mempool -.->|"validates"| node_consensus
node_consensus -.->|"verifies signatures"| node_crypto
node_network -.->|"delivers blocks"| node_blocks
node_blocks -.->|"validates blocks"| node_consensus
node_blocks -.->|"updates"| node_chainstate
node_blocks -.->|"persists blocks"| node_storage
node_blocks -.->|"updates indexes"| node_indexes
node_miner -.->|"reads chain state"| node_chainstate
node_miner -.->|"selects transactions"| node_mempool
node_miner -.->|"builds blocks"| node_blocks
node_mweb_wallet -.->|"constructs"| node_mweb_tx
node_mweb_wallet -.->|"builds transactions"| node_mw_wallet_build
node_mweb_node -.->|"builds blocks"| node_mw_block
node_mweb_node -.->|"validates"| node_mw_validate
node_mweb_node -.->|"persists data"| node_mweb_store
node_mw_database -->|"creates entries"| node_mw_entry
node_mw_database -->|"delegates writes"| node_mw_transaction

click node_wallet "https://github.com/litecoin-project/litecoin/tree/master/src/wallet"
click node_rpc "https://github.com/litecoin-project/litecoin/blob/master/src/rpc/server.cpp"
click node_cli "https://github.com/litecoin-project/litecoin/blob/master/src/bitcoin-cli.cpp"
click node_gui "https://github.com/litecoin-project/litecoin/blob/master/src/qt/bitcoingui.cpp"
click node_daemon "https://github.com/litecoin-project/litecoin/blob/master/src/init.cpp"
click node_network "https://github.com/litecoin-project/litecoin/blob/master/src/net_processing.cpp"
click node_mempool "https://github.com/litecoin-project/litecoin/blob/master/src/txmempool.cpp"
click node_policy "https://github.com/litecoin-project/litecoin/blob/master/src/policy/policy.cpp"
click node_consensus "https://github.com/litecoin-project/litecoin/blob/master/src/consensus/tx_verify.cpp"
click node_chainstate "https://github.com/litecoin-project/litecoin/blob/master/src/coins.cpp"
click node_blocks "https://github.com/litecoin-project/litecoin/blob/master/src/validation.cpp"
click node_storage "https://github.com/litecoin-project/litecoin/blob/master/src/flatfile.cpp"
click node_indexes "https://github.com/litecoin-project/litecoin/tree/master/src/index"
click node_miner "https://github.com/litecoin-project/litecoin/blob/master/src/miner.cpp"
click node_crypto "https://github.com/litecoin-project/litecoin/blob/master/src/secp256k1-zkp/include/secp256k1.h"
click node_mweb_node "https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_node.cpp"
click node_mweb_wallet "https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_wallet.cpp"
click node_mweb_tx "https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_transact.cpp"
click node_mweb_store "https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_db.h"
click node_mw_block "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/node/BlockBuilder.cpp"
click node_mw_validate "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/node/BlockValidator.cpp"
click node_mw_wallet_build "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/wallet/TxBuilder.cpp"
click node_mw_database "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/Database.h"
click node_mw_entry "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/DBEntry.h"
click node_mw_transaction "https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/DBTransaction.h"

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_wallet,node_rpc,node_cli,node_gui,node_user toneBlue
class node_daemon,node_network,node_mempool,node_policy,node_miner toneAmber
class node_consensus,node_chainstate,node_blocks,node_storage,node_indexes,node_crypto toneMint
class node_mweb_node,node_mweb_wallet,node_mweb_tx,node_mweb_store,node_mw_block,node_mw_validate,node_mw_wallet_build,node_mw_database,node_mw_entry,node_mw_transaction toneRose
```

## Components

### User Interfaces

- [Wallet](https://github.com/litecoin-project/litecoin/tree/master/src/wallet): `src/wallet`
- [RPC Service](https://github.com/litecoin-project/litecoin/blob/master/src/rpc/server.cpp): `src/rpc/server.cpp`
- [CLI Client](https://github.com/litecoin-project/litecoin/blob/master/src/bitcoin-cli.cpp): `src/bitcoin-cli.cpp`
- [Desktop GUI](https://github.com/litecoin-project/litecoin/blob/master/src/qt/bitcoingui.cpp): `src/qt/bitcoingui.cpp`

### Node Operations

- [Node Startup](https://github.com/litecoin-project/litecoin/blob/master/src/init.cpp): `src/init.cpp`
- [P2P Network](https://github.com/litecoin-project/litecoin/blob/master/src/net_processing.cpp): `src/net_processing.cpp`
- [Transaction Pool](https://github.com/litecoin-project/litecoin/blob/master/src/txmempool.cpp): `src/txmempool.cpp`
- [Transaction Policy](https://github.com/litecoin-project/litecoin/blob/master/src/policy/policy.cpp): `src/policy/policy.cpp`
- [Block Mining](https://github.com/litecoin-project/litecoin/blob/master/src/miner.cpp): `src/miner.cpp`

### Chain and Storage

- [Consensus Validation](https://github.com/litecoin-project/litecoin/blob/master/src/consensus/tx_verify.cpp): `src/consensus/tx_verify.cpp`
- [Chain State](https://github.com/litecoin-project/litecoin/blob/master/src/coins.cpp): `src/coins.cpp`
- [Block Processing](https://github.com/litecoin-project/litecoin/blob/master/src/validation.cpp): `src/validation.cpp`
- [Block Storage](https://github.com/litecoin-project/litecoin/blob/master/src/flatfile.cpp): `src/flatfile.cpp`
- [Chain Indexes](https://github.com/litecoin-project/litecoin/tree/master/src/index): `src/index`
- [Cryptography](https://github.com/litecoin-project/litecoin/blob/master/src/secp256k1-zkp/include/secp256k1.h): `src/secp256k1-zkp/include/secp256k1.h`

### MWEB

- [MWEB Node](https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_node.cpp): `src/mweb/mweb_node.cpp`
- [MWEB Wallet](https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_wallet.cpp): `src/mweb/mweb_wallet.cpp`
- [MWEB Transactions](https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_transact.cpp): `src/mweb/mweb_transact.cpp`
- [MWEB Storage](https://github.com/litecoin-project/litecoin/blob/master/src/mweb/mweb_db.h): `src/mweb/mweb_db.h`
- [MWEB Block Builder](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/node/BlockBuilder.cpp): `src/libmw/src/node/BlockBuilder.cpp`
- [MWEB Validation](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/node/BlockValidator.cpp): `src/libmw/src/node/BlockValidator.cpp`
- [MWEB Wallet Builder](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/wallet/TxBuilder.cpp): `src/libmw/src/wallet/TxBuilder.cpp`
- [MWEB Database API](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/Database.h): `src/libmw/src/db/common/Database.h`
- [Serialized DB Entry](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/DBEntry.h): `src/libmw/src/db/common/DBEntry.h`
- [DB Transaction](https://github.com/litecoin-project/litecoin/blob/master/src/libmw/src/db/common/DBTransaction.h): `src/libmw/src/db/common/DBTransaction.h`

### Other components

- **User**

## Connections

- User → Wallet: creates payments
- User → Desktop GUI: uses
- User → CLI Client: invokes
- CLI Client → RPC Service: requests
- Desktop GUI → Wallet: manages
- Desktop GUI → RPC Service: requests
- Node Startup → P2P Network: starts
- Wallet → RPC Service: submits
- RPC Service → Transaction Pool: dispatches
- P2P Network → Transaction Pool: relays transactions
- Transaction Pool → Transaction Policy: checks policy
- Transaction Pool → Consensus Validation: validates
- Consensus Validation → Cryptography: verifies signatures
- P2P Network → Block Processing: delivers blocks
- Block Processing → Consensus Validation: validates blocks
- Block Processing → Chain State: updates
- Block Processing → Block Storage: persists blocks
- Block Processing → Chain Indexes: updates indexes
- Block Mining → Chain State: reads chain state
- Block Mining → Transaction Pool: selects transactions
- Block Mining → Block Processing: builds blocks
- MWEB Wallet → MWEB Transactions: constructs
- MWEB Wallet → MWEB Wallet Builder: builds transactions
- MWEB Node → MWEB Block Builder: builds blocks
- MWEB Node → MWEB Validation: validates
- MWEB Node → MWEB Storage: persists data
- MWEB Database API → Serialized DB Entry: creates entries (evidence: `src/libmw/src/db/common/Database.h`)
- MWEB Database API → DB Transaction: delegates writes (evidence: `src/libmw/src/db/common/Database.h`)
