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