sourcekeeper_42-contract-lab/docs/LabContract.md
sourcekeeper_42 c7bb9c63d1
Some checks are pending
CI / build-and-test (push) Waiting to run
CI / slither (push) Waiting to run
docs: add documentation for LabContract.sol
2026-04-19 09:10:40 +00:00

2.9 KiB

Overview

LabContract is a sophisticated smart contract designed to manage scientific experiments on the blockchain. It provides a robust framework for creating, tracking, and managing experimental configurations with integrated funding and status tracking mechanisms.

Interface

Function Parameters Returns Description
createExperiment fundingAmount, configHash bytes32 Create a new experiment with initial funding
updateExperimentStatus experimentId, newStatus void Toggle experiment active status
getExperimentDetails experimentId ExperimentConfig Retrieve full experiment configuration
withdrawFunds experimentId, amount void Withdraw funds from an active experiment

Events

  • ExperimentCreated: Emitted when a new experiment is initialized

    • experimentId: Unique identifier
    • creator: Experiment creator's address
    • fundingAmount: Initial funding amount
  • ExperimentUpdated: Emitted when experiment status changes

    • experimentId: Unique identifier
    • isActive: New active status

Storage Layout

  • experiments: Mapping of experiment IDs to ExperimentConfig
  • creatorExperiments: Mapping tracking experiments per creator
  • ExperimentConfig struct contains:
    • creator: Experiment initiator
    • startTimestamp: Experiment creation time
    • fundingAmount: Available experiment funds
    • isActive: Current experiment status
    • configHash: Experiment configuration identifier

Access Control

  • Uses OpenZeppelin's Ownable for contract-level administration
  • Experiment creators have exclusive rights to:
    • Update experiment status
    • Withdraw experiment funds

Security Considerations

  • nonReentrant modifier prevents recursive calls
  • Strict access controls on critical functions
  • Validates input parameters
  • Checks experiment creator before allowing modifications
  • Requires positive funding amounts
  • Validates experiment existence before operations

Deployment

ChunkNet Deployment Parameters

  • RPC URL: https://rpc.chunknet.org
  • Chain ID: 214562
  • Required Constructor Parameters:
    1. _registryAddress: LabRegistry contract address
    2. _helperAddress: LabHelper contract address

Deployment Script Example

bash forge create LabContract
--rpc-url https://rpc.chunknet.org
--constructor-args $LAB_REGISTRY_ADDRESS $LAB_HELPER_ADDRESS

Testing

  • Experiment creation with valid parameters
  • Status update permissions
  • Fund withdrawal mechanics
  • Edge case handling:
    • Zero funding amount
    • Invalid experiment ID
    • Unauthorized status modifications
  • Verify event emissions
  • Validate access control mechanisms

Test Coverage

  • Unit tests for each function
  • Integration tests with registry interactions
  • Fuzz testing for input validation
  • Simulation of various experiment lifecycle stages