BLOCKCHAIN ARCHITECTURE
graph TB
subgraph Network["Hyperledger Besu Network
QBFT Consensus
4 Validator Nodes"]
V1["🔐 Validator Node 1
Port: 8545
RPC Endpoint"]
V2["🔐 Validator Node 2
Port: 8546"]
V3["🔐 Validator Node 3
Port: 8547"]
V4["🔐 Validator Node 4
Port: 8548"]
end
subgraph SmartContracts["Smart Contracts"]
LicenseNFT["📋 LicenseRequestNFT
(ERC-721 Soulbound)
• tokenId
• licenseHash
• metadata URI
• issuerDept"]
ApprovalMgr["✅ ApprovalManager
• recordApproval()
• rejectRequest()
• requestChanges()
• getApprovalChain()"]
DeptRegistry["🏢 DepartmentRegistry
• registerDept()
• setApprovers()
• getApprovers()
• deptMetadata"]
WorkflowRegistry["⚙️ WorkflowRegistry
• defineWorkflow()
• getWorkflow()
• workflowStates
• transitions"]
end
subgraph OnChain["On-Chain Data"]
Accounts["💰 Accounts & Balances"]
NFTState["🎖️ NFT State
tokenId → Owner
tokenId → Metadata"]
Approvals["✅ Approval Records
licenseHash → ApprovalChain"]
end
subgraph OffChain["Off-Chain Data
PostgreSQL + MinIO"]
DocMeta["📄 Document Metadata
• documentId
• licenseHash
• uploadedBy
• uploadDate
• status"]
LicenseReq["📋 License Request Details
• requestId
• applicantInfo
• documents
• notes"]
WorkflowState["⚙️ Workflow State
• currentState
• stateHistory
• timestamps
• transitions"]
DocFiles["📦 Actual Files
• PDFs (MinIO)
• Images
• Proofs"]
end
subgraph DataLink["Data Linking"]
Hash["🔗 Content Hashing
SHA-256
Document → Hash
Immutable Link"]
end
subgraph Consensus["Consensus: QBFT"]
QBFTInfo["Quorum Byzantine
Fault Tolerant
Requires 3/4 validators
~1 block/12s"]
end
V1 -->|Peer Connection| V2
V1 -->|Peer Connection| V3
V1 -->|Peer Connection| V4
V2 -->|Peer Connection| V3
V2 -->|Peer Connection| V4
V3 -->|Peer Connection| V4
V1 -->|Deploy/Call| SmartContracts
V2 -->|Deploy/Call| SmartContracts
V3 -->|Deploy/Call| SmartContracts
V4 -->|Deploy/Call| SmartContracts
SmartContracts -->|Store State| OnChain
LicenseNFT -->|Emit Events| OnChain
ApprovalMgr -->|Record| OnChain
DeptRegistry -->|Maintain| OnChain
WorkflowRegistry -->|Track| OnChain
Hash -->|Link Via Hash| LicenseReq
Hash -->|Store Hash| OnChain
DocMeta -->|Contains Hash| Hash
LicenseReq -->|Store Details| OffChain
WorkflowState -->|Track Off-Chain| OffChain
DocFiles -->|Reference Via Hash| OffChain
Hash -.->|Immutable Anchor| NFTState
LicenseReq -.->|Linked to NFT| LicenseNFT
V1 -->|Consensus| Consensus
V2 -->|Consensus| Consensus
V3 -->|Consensus| Consensus
V4 -->|Consensus| Consensus
style Network fill:#dc2626,stroke:#991b1b,stroke-width:2px,color:#fff
style SmartContracts fill:#2563eb,stroke:#1e40af,stroke-width:2px,color:#fff
style OnChain fill:#7c3aed,stroke:#5b21b6,stroke-width:2px,color:#fff
style OffChain fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
style DataLink fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
style Consensus fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff