Skip to content

Move Forest storage system into a plugin #9447

@jflo

Description

@jflo

Overview

Move the Forest world state storage implementation out of the core ethereum/core module and into a standalone plugin, following the same pattern as the RocksDB storage plugin. This will improve modularity, reduce core dependencies, and establish a pattern for future storage format plugins.

Task Breakdown

This is a parent issue tracking the overall Forest plugin migration. The work is broken down into phases with separate child issues.

Phase 1: Plugin System Prerequisites ⚙️

Goal: Prepare the plugin system to support pluggable world state archives

Status: These changes prepare the core to work with pluggable storage formats without breaking existing functionality.

Phase 2: Forest Plugin Creation 🔌

Goal: Create the Forest plugin module and move Forest classes

  • Create plugins/forest/ module structure
  • Implement ForestStoragePlugin class
  • Implement ForestWorldStateArchiveProvider
  • Move ForestWorldStateKeyValueStorage to plugin
  • Move ForestMutableWorldState to plugin
  • Move ForestWorldStateArchive to plugin
  • Update package references and dependencies

Status: Not started - depends on Phase 1 completion

Phase 3: Integration & Testing 🧪

Goal: Integrate Forest plugin and ensure everything works

  • Bundle Forest plugin in default distribution
  • Update test infrastructure to load plugin
  • Update all Forest-dependent tests
  • Add plugin loading/registration tests
  • Test error cases (missing plugin)
  • Migration testing (embedded → plugin)

Status: Not started - depends on Phase 2 completion

Phase 4: Documentation & Cleanup 📚

Goal: Document the change and establish deprecation plan

  • Update architecture documentation
  • Create plugin development guide
  • Document Forest plugin usage
  • Create migration guide for users
  • Add deprecation warnings
  • Update CLI help text

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions