# npci/drunix architecture

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

- Interactive diagram: https://gitdiagram.com/npci/drunix
- Repository: https://github.com/npci/drunix

## Overview

Drunix is an enterprise blockchain platform forked from Hyperledger Fabric. Its principal workflow is a client transaction being endorsed, ordered, validated, and committed to a channel ledger. The graph also preserves the documented peer-role separation, SQL-backed on-chain storage, reduced-call private-data sharing, and stateless validation service. Paths identify supported source locations; several feature implementations are represented at their enclosing directories because their specific files were not sampled.

Main entry points: [`core/endorser/endorser.go`](https://github.com/npci/drunix/blob/main/core/endorser/endorser.go) (Endorsement Peer), [`core/ledger/kvledger/kv_ledger.go`](https://github.com/npci/drunix/blob/main/core/ledger/kvledger/kv_ledger.go) (Channel Ledger), [`core/committer/committer_impl.go`](https://github.com/npci/drunix/blob/main/core/committer/committer_impl.go) (Commit Peer), [`core/committer/txvalidator`](https://github.com/npci/drunix/tree/main/core/committer/txvalidator) (Stateless Validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_transaction["Transaction Processing"]
  node_endorser["Endorsement Peer<br/>[endorser.go]"]
  node_committer["Commit Peer<br/>[committer_impl.go]"]
  node_stateless_validation["Stateless Validation"]
  node_validation_plugins["Validation Plugins"]
end

subgraph group_chaincode["Chaincode Execution"]
  node_chaincode_exec["Chaincode Runtime"]
  node_chaincode_lifecycle["Chaincode Lifecycle"]
end

subgraph group_ledger["Ledger and State"]
  node_ledger[("Channel Ledger<br/>[kv_ledger.go]")]
  node_block_storage[("Block Storage<br/>[blockstore.go]")]
  node_state_db[("SQL State Storage")]
  node_private_data[("Private Data")]
end

subgraph group_network["Network Services"]
  node_ordering["Ordering Service<br/>[storage.go]"]
  node_delivery["Block Delivery<br/>[deliveryclient.go]"]
  node_discovery["Service Discovery"]
end

subgraph group_identity["Identity and Policy"]
  node_identity["Membership Identity"]
  node_policies["Policy Evaluation"]
  node_config["Channel Configuration"]
end

node_client(("Client"))
node_peer_operator(("Peer Operator"))

node_client -->|"proposes transaction"| node_endorser
node_endorser -->|"invokes chaincode"| node_chaincode_exec
node_chaincode_exec -->|"resolves deployment"| node_chaincode_lifecycle
node_endorser -->|"returns endorsement"| node_client
node_client -->|"submits transaction"| node_ordering
node_ordering -->|"delivers blocks"| node_committer
node_committer -->|"validates transactions"| node_stateless_validation
node_stateless_validation -->|"dispatches validation"| node_validation_plugins
node_committer -->|"commits blocks"| node_ledger
node_ledger -->|"stores blocks"| node_block_storage
node_ledger -->|"updates state"| node_state_db
node_endorser -->|"handles private data"| node_private_data
node_peer_operator -->|"queries network"| node_discovery
node_ledger -->|"serves ledger data"| node_delivery
node_endorser -->|"checks identities"| node_identity
node_stateless_validation -->|"evaluates policies"| node_policies
node_peer_operator -->|"configures channel"| node_config

click node_endorser "https://github.com/npci/drunix/blob/main/core/endorser/endorser.go"
click node_chaincode_exec "https://github.com/npci/drunix/tree/main/core/chaincode"
click node_chaincode_lifecycle "https://github.com/npci/drunix/tree/main/core/chaincode/lifecycle"
click node_ordering "https://github.com/npci/drunix/blob/main/orderer/consensus/etcdraft/storage.go"
click node_committer "https://github.com/npci/drunix/blob/main/core/committer/committer_impl.go"
click node_stateless_validation "https://github.com/npci/drunix/tree/main/core/committer/txvalidator"
click node_validation_plugins "https://github.com/npci/drunix/tree/main/core/handlers/validation"
click node_ledger "https://github.com/npci/drunix/blob/main/core/ledger/kvledger/kv_ledger.go"
click node_block_storage "https://github.com/npci/drunix/blob/main/common/ledger/blkstorage/blockstore.go"
click node_state_db "https://github.com/npci/drunix/tree/main/core/ledger/kvledger/txmgmt/statedb"
click node_private_data "https://github.com/npci/drunix/tree/main/core/common/privdata"
click node_delivery "https://github.com/npci/drunix/blob/main/core/deliverservice/deliveryclient.go"
click node_discovery "https://github.com/npci/drunix/tree/main/discovery"
click node_identity "https://github.com/npci/drunix/tree/main/msp"
click node_policies "https://github.com/npci/drunix/tree/main/common/policies"
click node_config "https://github.com/npci/drunix/tree/main/common/channelconfig"

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_endorser,node_committer,node_stateless_validation,node_validation_plugins,node_client toneBlue
class node_chaincode_exec,node_chaincode_lifecycle toneAmber
class node_ledger,node_block_storage,node_state_db,node_private_data toneMint
class node_ordering,node_delivery,node_discovery toneRose
class node_identity,node_policies,node_config,node_peer_operator toneIndigo
```

## Components

### Transaction Processing

- [Endorsement Peer](https://github.com/npci/drunix/blob/main/core/endorser/endorser.go): `core/endorser/endorser.go`
- [Commit Peer](https://github.com/npci/drunix/blob/main/core/committer/committer_impl.go): `core/committer/committer_impl.go`
- [Stateless Validation](https://github.com/npci/drunix/tree/main/core/committer/txvalidator): `core/committer/txvalidator`
- [Validation Plugins](https://github.com/npci/drunix/tree/main/core/handlers/validation): `core/handlers/validation`

### Chaincode Execution

- [Chaincode Runtime](https://github.com/npci/drunix/tree/main/core/chaincode): `core/chaincode`
- [Chaincode Lifecycle](https://github.com/npci/drunix/tree/main/core/chaincode/lifecycle): `core/chaincode/lifecycle`

### Ledger and State

- [Channel Ledger](https://github.com/npci/drunix/blob/main/core/ledger/kvledger/kv_ledger.go): `core/ledger/kvledger/kv_ledger.go`
- [Block Storage](https://github.com/npci/drunix/blob/main/common/ledger/blkstorage/blockstore.go): `common/ledger/blkstorage/blockstore.go`
- [SQL State Storage](https://github.com/npci/drunix/tree/main/core/ledger/kvledger/txmgmt/statedb): `core/ledger/kvledger/txmgmt/statedb`
- [Private Data](https://github.com/npci/drunix/tree/main/core/common/privdata): `core/common/privdata`

### Network Services

- [Ordering Service](https://github.com/npci/drunix/blob/main/orderer/consensus/etcdraft/storage.go): `orderer/consensus/etcdraft/storage.go`
- [Block Delivery](https://github.com/npci/drunix/blob/main/core/deliverservice/deliveryclient.go): `core/deliverservice/deliveryclient.go`
- [Service Discovery](https://github.com/npci/drunix/tree/main/discovery): `discovery`

### Identity and Policy

- [Membership Identity](https://github.com/npci/drunix/tree/main/msp): `msp`
- [Policy Evaluation](https://github.com/npci/drunix/tree/main/common/policies): `common/policies`
- [Channel Configuration](https://github.com/npci/drunix/tree/main/common/channelconfig): `common/channelconfig`

### Other components

- **Client**
- **Peer Operator**

## Connections

- Client → Endorsement Peer: proposes transaction
- Endorsement Peer → Chaincode Runtime: invokes chaincode
- Chaincode Runtime → Chaincode Lifecycle: resolves deployment
- Endorsement Peer → Client: returns endorsement
- Client → Ordering Service: submits transaction
- Ordering Service → Commit Peer: delivers blocks
- Commit Peer → Stateless Validation: validates transactions
- Stateless Validation → Validation Plugins: dispatches validation
- Commit Peer → Channel Ledger: commits blocks
- Channel Ledger → Block Storage: stores blocks
- Channel Ledger → SQL State Storage: updates state
- Endorsement Peer → Private Data: handles private data
- Peer Operator → Service Discovery: queries network
- Channel Ledger → Block Delivery: serves ledger data
- Endorsement Peer → Membership Identity: checks identities
- Stateless Validation → Policy Evaluation: evaluates policies
- Peer Operator → Channel Configuration: configures channel
