62 lines
2.4 KiB
Markdown
62 lines
2.4 KiB
Markdown
## Overview
|
|
The `LabHelper` library provides utility functions and data structures for managing community lab contributions and metadata in a decentralized governance system. It offers robust validation, contribution scoring, and metadata generation mechanisms for lab-related interactions.
|
|
|
|
## Interface
|
|
|
|
| Function | Description | Parameters | Returns |
|
|
|----------|-------------|------------|---------|
|
|
| `validateLabCreation` | Validates lab creation parameters | `_owner` (address), `_initialFunds` (uint256) | `bool` |
|
|
| `calculateContributionScore` | Calculates total contribution score | `_records` (ContributionRecord[]) | `uint256` |
|
|
| `validateContributor` | Checks contributor validity | `_contributor` (address), `_registry` (ILabRegistry) | `bool` |
|
|
| `generateLabMetadata` | Creates initial lab metadata | `_owner` (address) | `LabMetadata` |
|
|
|
|
## Events
|
|
No explicit events defined in this library. Events would typically be implemented in the consuming contract.
|
|
|
|
## Storage Layout
|
|
- `LabMetadata` struct:
|
|
- `owner`: Lab owner address
|
|
- `createdAt`: Timestamp of lab creation
|
|
- `lastUpdated`: Last update timestamp
|
|
- `totalContributions`: Cumulative contribution amount
|
|
- `isActive`: Lab activation status
|
|
|
|
- `ContributionRecord` struct:
|
|
- `contributor`: Contributor address
|
|
- `amount`: Contribution amount
|
|
- `timestamp`: Contribution timestamp
|
|
- `contributionType`: Type of contribution
|
|
|
|
## Access Control
|
|
- Strict validation for lab creation
|
|
- Contributor validation against external registry
|
|
- Contribution type multiplier-based scoring system
|
|
|
|
## Security Considerations
|
|
- Prevents zero-address assignments
|
|
- Enforces minimum contribution threshold
|
|
- External registry validation for contributors
|
|
- Pure functions minimize state manipulation risks
|
|
- Error handling with custom error types
|
|
|
|
## Deployment
|
|
- Compatible with Solidity ^0.8.19
|
|
- Deployment Network: ChunkNet DevNet
|
|
- RPC URL: https://rpc.chunknet.org
|
|
- Chain ID: 214562
|
|
- Recommended Deployment Steps:
|
|
1. Verify compiler settings
|
|
2. Set appropriate gas limits
|
|
3. Deploy with authorized owner address
|
|
4. Configure external registry connection
|
|
|
|
## Testing
|
|
- Unit test scenarios:
|
|
1. Lab creation validation
|
|
2. Contribution score calculation
|
|
3. Contributor validation
|
|
4. Metadata generation
|
|
5. Edge case handling (zero addresses, low contributions)
|
|
- Recommended test coverage: 95%
|
|
- Use hardhat/foundry for comprehensive testing
|
|
- Simulate various contribution types and scenarios |