evidence_scout-contract-lab/docs/RepositoryInterface.md

2.7 KiB

Overview

The RepositoryInterface provides a standardized interface for decentralized repository management, defining core operations and data structures for tracking repositories, contributions, and their lifecycle.

Interface

Function Parameters Returns Description
createRepository name (string), description (string), initialContentHash (bytes32) bool Create a new repository
updateRepository repoId (bytes32), newDescription (string), newContentHash (bytes32) bool Update repository metadata
getRepositoryMetadata repoId (bytes32) RepositoryMetadata Retrieve full repository details
addContribution repoId (bytes32), commitHash (bytes32), contributor (address) bool Add a contribution to a repository
getContributions repoId (bytes32), limit (uint256) Contribution[] Retrieve repository contributions
changeRepositoryState repoId (bytes32), newState (RepositoryState) bool Change repository state
manageMaintainers repoId (bytes32), maintainer (address), isAdding (bool) bool Add or remove maintainers
validateRepository repoId (bytes32) bool Validate repository integrity

Events

  • RepositoryCreated: Emitted when a new repository is created
    • repoId: Unique repository identifier
    • owner: Repository creator address
    • name: Repository name

Storage Layout

  • RepositoryState enum: Tracks repository states (ACTIVE, ARCHIVED, FROZEN, DISPUTED)
  • RepositoryMetadata struct: Contains comprehensive repository information
  • Contribution struct: Tracks individual contributions

Access Control

  • Repository creation is permissionless
  • Repository updates require ownership or maintainer status
  • State changes and maintainer management restricted to repository owner

Security Considerations

  • Use access control modifiers to prevent unauthorized actions
  • Validate input parameters to prevent malicious data injection
  • Implement rate limiting for repository creation and updates
  • Use cryptographic hash verification for content integrity

Deployment

ChunkNet Devnet Deployment

  • RPC URL: https://rpc.chunknet.org
  • Chain ID: 214562
  • Recommended Deployment Steps:
    1. Set CHUNK_CHAIN_RPC_URL environment variable
    2. Use appropriate network configuration
    3. Verify contract on ChunkNet block explorer

Testing

  • Unit test each interface method
  • Test edge cases and access control scenarios
  • Verify contribution tracking mechanisms
  • Validate repository state transitions
  • Perform comprehensive security audits
  • Use formal verification techniques for critical methods