FoldDB Architecture
Overview
FoldDB combines schema-based data management, trust-based access control, and Lightning Network micropayments. The system uses immutable data storage with atomic operations and provides secure data access through public key authentication and trust distance calculations.
Core Components
System Architecture
graph TD
subgraph Core[Core System]
F[FoldDB] --> SC[SchemaCore]
F --> PM[PermissionManager]
F --> PY[PaymentManager]
F --> AM[AtomManager]
end
subgraph Schema[Schema System]
SC --> VM[ValidationManager]
VM --> TM[TransformManager]
end
subgraph Security[Security Layer]
PM --> TD[TrustDistance]
PM --> PW[PermissionWrapper]
PY --> LN[LightningNetwork]
end
subgraph Storage[Storage Layer]
AM --> AT[Atoms]
AM --> AR[AtomRefs]
AT --> SL[Sled DB]
end
System Components
1. Core System (FoldDB)
- Main Coordinator
- Manages schema operations
- Coordinates permissions
- Processes payments
- Handles data storage
- Integration Layer
- Synchronizes components
- Handles errors
- Manages state
- Cleans up resources
2. Schema System
classDiagram
class SchemaCore {
-schemas: Mutex<Map>
-schemas_dir: PathBuf
+load_schema()
+unload_schema()
+get_schema()
+list_schemas()
+schema_exists()
+load_schemas_from_disk()
+map_fields()
+interpret_schema()
+load_schema_from_json()
+load_schema_from_file()
}
class ValidationManager {
+checkTypes()
+validateConstraints()
+verifyPermissions()
}
SchemaCore --> ValidationManager
- JSON Schema Processing
- Parses schema definitions
- Validates fields
- Checks types
- Tracks relationships
- Transform Pipeline
- Transforms schemas
- Maps fields
- Manages versions
- Recovers from errors
3. Permission System
classDiagram
class PermissionManager {
-trustCalculator: TrustDistance
-paymentVerifier: PaymentManager
+validateAccess()
+calculateTrust()
+verifyPayment()
}
class TrustDistance {
+calculate()
+updateRelationships()
}
class PaymentManager {
+verifyPayment()
+createHoldInvoice()
}
PermissionManager --> TrustDistance
PermissionManager --> PaymentManager
- Access Control
- Calculates trust distance
- Verifies permissions
- Checks payment requirements
- Logs access
4. Payment System
- Lightning Network Integration
- Processes payments
- Manages hold invoices
- Calculates fees
- Verifies transactions
- Trust-Based Pricing
- Scales fees dynamically
- Applies trust distance factors
- Calculates operation costs
- Tracks payment state
5. Storage System
classDiagram
class AtomManager {
+store()
+retrieve()
+update()
+validateVersion()
}
class Atom {
+content: any
+metadata: Object
+schema: SchemaRef
+permissions: PermissionData
}
class AtomRef {
-currentVersion: Atom
+getLatest()
+updatePointer()
}
AtomManager --> Atom
AtomManager --> AtomRef
- Immutable Storage
- Performs atomic operations
- Tracks versions
- Manages metadata
- Recovers from errors
Data Flow
Operation Flow
sequenceDiagram
participant C as Client
participant F as FoldDB
participant S as SchemaCore
participant P as PermissionManager
participant Y as PaymentManager
participant A as AtomManager
C->>F: Request
F->>S: Validate Schema
S-->>F: Schema Valid
F->>P: Check Permissions
P->>Y: Verify Payment
Y-->>P: Payment Valid
P-->>F: Access Granted
F->>A: Store Data
A-->>F: Success
F-->>C: Response
Integration Patterns
1. Schema-Permission Integration
- Field-level permissions in schemas
- Trust distance configurations
- Payment requirements
- Access control rules
2. Permission-Payment Integration
- Trust-based pricing
- Payment verification
- Access control
- Transaction tracking
3. Storage-Schema Integration
- Schema validation
- Version management
- Transformation tracking
- Error handling
Error Handling
Recovery System
flowchart TD
E[Error Detected] --> C[Categorize Error]
C --> V[Validation Error]
C --> P[Permission Error]
C --> T[Transaction Error]
C --> S[Storage Error]
V --> VR[Retry Validation]
P --> PR[Recalculate Permissions]
T --> TR[Verify Transaction]
S --> SR[Storage Recovery]
VR --> R[Recovery Action]
PR --> R
TR --> R
SR --> R
R --> Success[Success]
R --> Fallback[Fallback Action]
Success --> Complete[Operation Complete]
Fallback --> Notify[Notify System]
Error Categories
-
Validation Errors
- Schema validation failures
- Type mismatches
- Constraint violations
- Transform errors
-
Permission Errors
- Trust calculation failures
- Access denied
- Invalid permissions
- Payment required
-
Payment Errors
- Payment verification failed
- Invoice creation error
- Transaction timeout
- Invalid payment state
-
Storage Errors
- Version conflicts
- Write failures
- Read failures
- Consistency issues
Best Practices
1. Development Guidelines
- Use atomic operations
- Validate schemas early
- Check permissions before operations
- Verify payments upfront
- Handle errors gracefully
- Maintain clean version history
2. Performance Optimization
- Cache validated schemas
- Optimize trust calculations
- Batch similar operations
- Use efficient queries
- Monitor resource usage
- Profile critical paths
3. Security Considerations
- Validate all inputs
- Enforce permissions strictly
- Verify payments completely
- Monitor access patterns
- Track error rates
- Audit system usage
4. Maintenance
- Review schemas regularly
- Audit trust relationships
- Monitor payment system
- Optimize storage
- Analyze error patterns
- Tune performance
Extension Points
1. Schema Extensions
- Custom validators
- Transform pipelines
- Type handlers
- Constraint checkers
2. Permission Extensions
- Trust calculators
- Access policies
- Payment integrations
- Audit systems
3. Storage Extensions
- Backend adapters
- Cache strategies
- Index optimizers
- Recovery handlers