Skip to content

Latest commit

 

History

History
118 lines (100 loc) · 2.7 KB

implementation.md

File metadata and controls

118 lines (100 loc) · 2.7 KB

Snack Protocol Implementation Plan

Core Diamond Infrastructure

  1. IDiamondCut.sol

    • Define cut structs and interfaces
    • Facet cut actions (Add, Replace, Remove)
  2. DiamondStorage.sol

    • Diamond storage structure
    • Slot management
    • Storage layout documentation
  3. DiamondBase.sol

    • Core diamond functionality
    • Delegation logic
    • Error handling

Diamond Facets (In Order of Implementation)

1. State Facets

  • ISnackState.sol - Core interfaces
  • SnackStateStorage.sol - State storage layout
  • SnackStateFacet.sol - Implementation
    • Global state management
    • Pet state transitions
    • Emergency controls

2. Pet Facets

  • ISnackPet.sol - Pet interfaces
  • SnackPetStorage.sol - Pet data structure
  • SnackPetFacet.sol - Implementation
    • Pet initialization
    • Emotion tracking
    • State updates

3. Savings Facets

  • ISnackSavings.sol - Savings interfaces
  • SnackSavingsStorage.sol - Financial storage
  • SnackSavingsFacet.sol - Implementation
    • Deposit handling
    • Progress tracking
    • Safe integration

4. Yield Facets

  • ISnackYield.sol - Yield interfaces
  • SnackYieldStorage.sol - Strategy storage
  • SnackYieldFacet.sol - Implementation
    • Protocol integrations (Kiln, Lido, etc)
    • Yield strategies
    • Rebalancing logic

Protocol Management

  1. SnackFactory.sol

    • Diamond deployment
    • Initial facet setup
    • Access control
  2. SnackInit.sol

    • Initialization logic
    • Configuration setup
    • Initial state

Integration Interfaces

  1. Safe Protocol

    interface ISafe {
        function execTransaction(...) external;
        function isOwner(address) external view returns (bool);
    }
  2. Kiln Integration

    interface IKiln {
        function stake() external payable;
        function withdraw(uint256) external;
    }
  3. External Protocols (COW, Lido)

    interface IProtocolIntegration {
        function deposit(uint256) external payable;
        function getYield() external view returns (uint256);
    }

Testing Strategy

  1. Unit Tests

    • Individual facet functionality
    • Storage layout tests
    • State transitions
  2. Integration Tests

    • Cross-facet interactions
    • Protocol integrations
    • Full user flows
  3. Deployment Tests

    • Factory deployment
    • Initialization
    • Upgrades

Security Considerations

  • Storage collision prevention
  • Access control granularity
  • Safe integration validation
  • Rate limiting
  • Emergency stops

Deployment Order

  1. Deploy core diamond
  2. Deploy state facet
  3. Deploy pet facet
  4. Deploy savings facet
  5. Deploy yield facet
  6. Initialize protocol
  7. Configure external integrations