datahaven-xyz/datahavenPublic

An EVM compatible Substrate chain, powered by StorageHub and secured by EigenLayer

AI summary: Verifiable, decentralized storage network for AI training data secured by EigenLayer.

Stars
7.9K
+-1 today
Forks
146
Watchers
28
Open issues
0
Open PRs
1
Contributors
~10
Commits
424
Branches
43

RustGPL-3.0Created Mar 6, 2025Last push 5mo agoLatest release v0.26.0+-3 stars this week+-11 this month

Quick answers

What is datahaven?
Verifiable, decentralized storage network for AI training data secured by EigenLayer.
What does datahaven do?
DataHaven is a decentralized storage and retrieval network designed for applications that require production-scale, tamper-evident data storage. Built on StorageHub and secured by EigenLayer's restaking protocol, it separates storage execution from cryptographic verification. Files are deterministically chunked, hashed into Merkle trees, and anchored on-chain to provide cryptographic proof of integrity. The network employs Main Storage Providers for data retrieval and Backup Storage Providers for decentralized replication, enforced by on-chain slashing. It also includes full EVM compatibility via Frontier pallets for smart contract deployment.
Who is datahaven for?
Web3 developers, AI engineers, and infrastructure operators building decentralized applications requiring verifiable storage. It requires Rust, Docker, and Foundry for node and contract development.
How do I get started with datahaven?
cd test
How popular is datahaven on GitHub?
datahaven-xyz/datahaven has 7,885 stars and 146 forks on GitHub, and gained -3 stars in the last 7 days.
What license does datahaven use?
datahaven-xyz/datahaven is released under the GPL-3.0 license.

Star history

since Jul 29, 2026
02K4K6KJul 2026Aug 2026Sep 2026Oct 2026
7.9K stars as of Oct 4, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 4 commits2025-10-07: 2 commits2025-10-08: 3 commits2025-10-09: 3 commits2025-10-10: 6 commits2025-10-11: 3 commits2025-10-12: 1 commit2025-10-13: 2 commits2025-10-14: 1 commit2025-10-15: 8 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 2 commits2025-10-21: 1 commit2025-10-22: 1 commit2025-10-23: 4 commits2025-10-24: 3 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 4 commits2025-10-28: 3 commits2025-10-29: 4 commits2025-10-30: 6 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 2 commits2025-11-03: 4 commits2025-11-04: 2 commits2025-11-05: 1 commit2025-11-06: 2 commits2025-11-07: 4 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 7 commits2025-11-11: 0 commits2025-11-12: 1 commit2025-11-13: 1 commit2025-11-14: 0 commits2025-11-15: 1 commit2025-11-16: 2 commits2025-11-17: 0 commits2025-11-18: 2 commits2025-11-19: 2 commits2025-11-20: 1 commit2025-11-21: 0 commits2025-11-22: 6 commits2025-11-23: 0 commits2025-11-24: 2 commits2025-11-25: 3 commits2025-11-26: 1 commit2025-11-27: 2 commits2025-11-28: 2 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 7 commits2025-12-03: 2 commits2025-12-04: 2 commits2025-12-05: 2 commits2025-12-06: 0 commits2025-12-07: 1 commit2025-12-08: 0 commits2025-12-09: 2 commits2025-12-10: 2 commits2025-12-11: 0 commits2025-12-12: 2 commits2025-12-13: 0 commits2025-12-14: 1 commit2025-12-15: 1 commit2025-12-16: 2 commits2025-12-17: 0 commits2025-12-18: 2 commits2025-12-19: 3 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 1 commit2025-12-23: 1 commit2025-12-24: 1 commit2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 4 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 2 commits2026-01-03: 1 commit2026-01-04: 0 commits2026-01-05: 2 commits2026-01-06: 3 commits2026-01-07: 5 commits2026-01-08: 1 commit2026-01-09: 3 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 3 commits2026-01-13: 1 commit2026-01-14: 2 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-01-17: 1 commit2026-01-18: 0 commits2026-01-19: 1 commit2026-01-20: 4 commits2026-01-21: 1 commit2026-01-22: 2 commits2026-01-23: 2 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 1 commit2026-01-27: 2 commits2026-01-28: 0 commits2026-01-29: 3 commits2026-01-30: 1 commit2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 3 commits2026-02-03: 2 commits2026-02-04: 1 commit2026-02-05: 3 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 1 commit2026-02-10: 2 commits2026-02-11: 0 commits2026-02-12: 1 commit2026-02-13: 0 commits2026-02-14: 1 commit2026-02-15: 0 commits2026-02-16: 1 commit2026-02-17: 1 commit2026-02-18: 1 commit2026-02-19: 0 commits2026-02-20: 2 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 3 commits2026-02-25: 2 commits2026-02-26: 0 commits2026-02-27: 1 commit2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 2 commits2026-03-03: 4 commits2026-03-04: 3 commits2026-03-05: 0 commits2026-03-06: 1 commit2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 1 commit2026-03-10: 0 commits2026-03-11: 2 commits2026-03-12: 0 commits2026-03-13: 3 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 2 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 1 commit2026-03-25: 0 commits2026-03-26: 2 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 1 commit2026-03-31: 1 commit2026-04-01: 0 commits2026-04-02: 1 commit2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 1 commit2026-04-12: 0 commits2026-04-13: 1 commit2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 1 commit2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
239 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Repeat trending

    4 trending appearances

What datahaven does

DataHaven is a decentralized storage and retrieval network designed for applications that require production-scale, tamper-evident data storage. Built on StorageHub and secured by EigenLayer's restaking protocol, it separates storage execution from cryptographic verification. Files are deterministically chunked, hashed into Merkle trees, and anchored on-chain to provide cryptographic proof of integrity. The network employs Main Storage Providers for data retrieval and Backup Storage Providers for decentralized replication, enforced by on-chain slashing. It also includes full EVM compatibility via Frontier pallets for smart contract deployment.

Web3 developers, AI engineers, and infrastructure operators building decentralized applications requiring verifiable storage. It requires Rust, Docker, and Foundry for node and contract development.

  • Cryptographic Verification: Chunks files into Merkle trees and commits roots on-chain to enable trustless data integrity checks.
  • Dual-Tier Provider Network: Utilizes Main Storage Providers for fast serving and Backup Storage Providers for network redundancy.
  • EigenLayer Security: Secures the validator set through Ethereum restaking, applying slashing conditions for misbehavior.
  • EVM Compatibility: Supports deploying standard Solidity smart contracts using Substrate's Frontier pallets.
  • Trustless Bridge: Incorporates Snowbridge for native token transfers and cross-chain messaging with the Ethereum mainnet.
  • Automated Auditing: Employs Fisherman nodes to continuously monitor storage proofs and trigger challenges.

Where teams use it

Verifiable AI Training

Store large machine learning datasets and model weights with cryptographic proofs of integrity for federated learning.

DePIN Infrastructure

Provide persistent, immutable storage for IoT sensor data and operational logs with provable data lineage.

Real World Asset Records

Store asset documentation, ownership records, and compliance data with tamper-evident on-chain verification.

Cross-Chain DApps

Build applications that bridge liquidity and data between Ethereum and the DataHaven Substrate network.

Getting started: cd test

README

main branch

DataHaven 🫎

AI-First Decentralized Storage secured by EigenLayer — a verifiable storage network for AI training data, machine learning models, and Web3 applications.

Overview

DataHaven is a decentralized storage and retrieval network designed for applications that need verifiable, production-scale data storage. Built on StorageHub and secured by EigenLayer's restaking protocol, DataHaven separates storage from verification: providers store data off-chain while cryptographic commitments are anchored on-chain for tamper-evident verification.

Core Capabilities:

  • Verifiable Storage: Files are chunked, hashed into Merkle trees, and committed on-chain — enabling cryptographic proof that data hasn't been tampered with
  • Provider Network: Main Storage Providers (MSPs) serve data with competitive offerings, while Backup Storage Providers (BSPs) ensure redundancy through decentralized replication with on-chain slashing for failed proof challenges
  • EigenLayer Security: Validator set secured by Ethereum restaking — DataHaven validators register as EigenLayer operators with slashing for misbehavior
  • EVM Compatibility: Full Ethereum support via Frontier pallets for smart contracts and familiar Web3 tooling
  • Cross-chain Bridge: Native, trustless bridging with Ethereum via Snowbridge for tokens and messages

Architecture

DataHaven combines EigenLayer's shared security with StorageHub's decentralized storage infrastructure:

┌─────────────────────────────────────────────────────────────────────────────┐
│                              Ethereum (L1)                                  │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  EigenLayer AVS Contracts                                             │  │
│  │  • DataHavenServiceManager (validator lifecycle & slashing)           │  │
│  │  • RewardsRegistry (validator performance & rewards)                  │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
│                                    ↕                                        │
│                          Snowbridge Protocol                                │
│                    (trustless cross-chain messaging)                        │
└─────────────────────────────────────────────────────────────────────────────┘
                                     ↕
┌─────────────────────────────────────────────────────────────────────────────┐
│                          DataHaven (Substrate)                              │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  StorageHub Pallets                     DataHaven Pallets             │  │
│  │  • file-system (file operations)        • External Validators         │  │
│  │  • providers (MSP/BSP registry)         • Native Transfer             │  │
│  │  • proofs-dealer (challenge/verify)     • Rewards                     │  │
│  │  • payment-streams (storage payments)   • Frontier (EVM)              │  │
│  │  • bucket-nfts (bucket ownership)                                     │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                                     ↕
┌─────────────────────────────────────────────────────────────────────────────┐
│                        Storage Provider Network                             │
│  ┌─────────────────────────────┐    ┌─────────────────────────────┐        │
│  │  Main Storage Providers     │    │  Backup Storage Providers   │        │
│  │  (MSP)                      │    │  (BSP)                      │        │
│  │  • User-selected            │    │  • Network-assigned         │        │
│  │  • Serve read requests      │    │  • Replicate data           │        │
│  │  • Anchor bucket roots      │    │  • Proof challenges         │        │
│  │  • MSP Backend service      │    │  • On-chain slashing        │        │
│  └─────────────────────────────┘    └─────────────────────────────┘        │
│  ┌─────────────────────────────┐    ┌─────────────────────────────┐        │
│  │  Indexer                    │    │  Fisherman                  │        │
│  │  • Index on-chain events    │    │  • Audit storage proofs     │        │
│  │  • Query storage metadata   │    │  • Trigger challenges       │        │
│  │  • PostgreSQL backend       │    │  • Detect misbehavior       │        │
│  └─────────────────────────────┘    └─────────────────────────────┘        │
└─────────────────────────────────────────────────────────────────────────────┘

How Storage Works

  1. Upload: User selects an MSP, creates a bucket, and uploads files. Files are chunked (8KB default), hashed into Merkle trees, and the root is anchored on-chain.
  2. Replication: The MSP coordinates with BSPs to replicate data across the network based on the bucket's replication policy.
  3. Retrieval: MSP returns files with Merkle proofs that users verify against on-chain commitments.
  4. Verification: BSPs face periodic proof challenges — failure to prove data custody results in on-chain slashing via StorageHub pallets.

Repository Structure

datahaven/
├── contracts/      # EigenLayer AVS smart contracts
│   ├── src/       # Service Manager, Rewards Registry, Slasher
│   ├── script/    # Deployment scripts
│   └── test/      # Foundry test suites
├── operator/       # Substrate-based DataHaven node
│   ├── node/      # Node implementation & chain spec
│   ├── pallets/   # Custom pallets (validators, rewards, transfers)
│   └── runtime/   # Runtime configurations (mainnet/stagenet/testnet)
├── test/           # E2E testing framework
│   ├── suites/    # Integration test scenarios
│   ├── framework/ # Test utilities and helpers
│   └── launcher/  # Network deployment automation
├── deploy/         # Kubernetes deployment charts
│   ├── charts/    # Helm charts for nodes and relayers
│   └── environments/ # Environment-specific configurations
├── tools/          # GitHub automation and release scripts
└── .github/        # CI/CD workflows

Each directory contains its own README with detailed information. See:

Quick Start

Prerequisites

  • Kurtosis - Network orchestration
  • Bun v1.3.2+ - TypeScript runtime
  • Docker - Container management
  • Foundry - Solidity toolkit
  • Rust - For building the operator
  • Helm - Kubernetes deployments (optional)
  • Zig - For macOS cross-compilation (macOS only)

Launch Local Network

The fastest way to get started is with the interactive CLI:

cd test
bun i                    # Install dependencies
bun cli launch           # Interactive launcher with prompts

This deploys a complete environment including:

  • Ethereum network: 2x EL clients (reth), 2x CL clients (lodestar)
  • Block explorers: Blockscout (optional), Dora consensus explorer
  • DataHaven node: Single validator with fast block times
  • Storage providers: MSP and BSP nodes for decentralized storage
  • AVS contracts: Deployed and configured on Ethereum
  • Snowbridge relayers: Bidirectional message passing

For more options and detailed instructions, see the test README.

Run Tests

cd test
bun test:e2e              # Run all integration tests
bun test:e2e:parallel     # Run with limited concurrency

NOTES: Adding the environment variable INJECT_CONTRACTS=true will inject the contracts when starting the tests to speed up setup.

Development Workflows

Smart Contract Development:

cd contracts
forge build               # Compile contracts
forge test                # Run contract tests

Node Development:

cd operator
cargo build --release --features fast-runtime
cargo test
./scripts/run-benchmarks.sh

After Making Changes:

cd test
bun generate:wagmi        # Regenerate contract bindings
bun generate:types        # Regenerate runtime types

Key Features

Verifiable Decentralized Storage

Production-scale storage with cryptographic guarantees:

  • Buckets: User-created containers managed by an MSP, summarized by a Merkle-Patricia trie root on-chain
  • Files: Deterministically chunked, hashed into Merkle trees, with roots serving as immutable fingerprints
  • Proofs: Merkle proofs enable verification of data integrity without trusting intermediaries
  • Audits: BSPs prove ongoing data custody via randomized proof challenges

Storage Provider Network

Two-tier provider model balancing performance and reliability:

  • MSPs: User-selected providers offering data retrieval with competitive service offerings
  • BSPs: Network-assigned backup providers ensuring data redundancy and availability, with on-chain slashing for failed proof challenges
  • Fisherman: Auditing service that monitors proofs and triggers challenges for misbehavior
  • Indexer: Indexes on-chain storage events for efficient querying

EigenLayer Security

DataHaven validators secured through Ethereum restaking:

  • Validators register as operators via DataHavenServiceManager contract
  • Economic security through ETH restaking
  • Slashing for validator misbehavior (separate from BSP slashing which is on-chain)
  • Performance-based validator rewards through RewardsRegistry

EVM Compatibility

Full Ethereum Virtual Machine support via Frontier pallets:

  • Deploy Solidity smart contracts
  • Use existing Ethereum tooling (MetaMask, Hardhat, etc.)
  • Compatible with ERC-20, ERC-721, and other standards

Cross-chain Communication

Trustless bridging via Snowbridge:

  • Native token transfers between Ethereum ↔ DataHaven
  • Cross-chain message passing
  • Finality proofs via BEEFY consensus
  • Three specialized relayers (beacon, BEEFY, execution)

Use Cases

DataHaven is designed for applications requiring verifiable, tamper-proof data storage:

  • AI & Machine Learning: Store training datasets, model weights, and agent configurations with cryptographic proofs of integrity — enabling federated learning and verifiable AI pipelines
  • DePIN (Decentralized Physical Infrastructure): Persistent storage for IoT sensor data, device configurations, and operational logs with provable data lineage
  • Real World Assets (RWAs): Immutable storage for asset documentation, ownership records, and compliance data with on-chain verification

Docker Images

Production images published to DockerHub.

Build optimizations:

Build locally:

cd test
bun build:docker:operator    # Creates datahavenxyz/datahaven:local

Development Environment

VS Code Configuration

IDE configurations are excluded from version control for personalization, but these settings are recommended for optimal developer experience. Add to your .vscode/settings.json:

Rust Analyzer:

{
  "rust-analyzer.linkedProjects": ["./operator/Cargo.toml"],
  "rust-analyzer.cargo.allTargets": true,
  "rust-analyzer.procMacro.enable": false,
  "rust-analyzer.server.extraEnv": {
    "CARGO_TARGET_DIR": "target/.rust-analyzer",
    "SKIP_WASM_BUILD": 1
  },
  "rust-analyzer.diagnostics.disabled": ["unresolved-macro-call"],
  "rust-analyzer.cargo.buildScripts.enable": false
}

Optimizations:

  • Links operator/ directory as the primary Rust project
  • Disables proc macros and build scripts for faster analysis (Substrate macros are slow)
  • Uses dedicated target directory to avoid conflicts
  • Skips WASM builds during development

Solidity (Juan Blanco's extension):

{
  "solidity.formatter": "forge",
  "solidity.compileUsingRemoteVersion": "v0.8.28+commit.7893614a",
  "[solidity]": {
    "editor.defaultFormatter": "JuanBlanco.solidity"
  }
}

Note: Solidity version must match foundry.toml

TypeScript (Biome):

{
  "biome.lsp.bin": "test/node_modules/.bin/biome",
  "[typescript]": {
    "editor.defaultFormatter": "biomejs.biome",
    "editor.codeActionsOnSave": {
      "source.organizeImports.biome": "always"
    }
  }
}

CI/CD

Local CI Testing

Run GitHub Actions workflows locally using act:

# Run E2E workflow
act -W .github/workflows/e2e.yml -s GITHUB_TOKEN="$(gh auth token)"

# Run specific job
act -W .github/workflows/e2e.yml -j test-job-name

Automated Workflows

The repository includes GitHub Actions for:

  • E2E Testing: Full integration tests on PR and main branch
  • Contract Testing: Foundry test suites for smart contracts
  • Rust Testing: Unit and integration tests for operator
  • Docker Builds: Multi-platform image builds with caching
  • Release Automation: Version tagging and changelog generation

See .github/workflows/ for workflow definitions.

Contributing

Development Cycle

  1. Make Changes: Edit contracts, runtime, or tests
  2. Run Tests: Component-specific tests (forge test, cargo test)
  3. Regenerate Types: Update bindings if contracts/runtime changed
  4. Integration Test: Run E2E tests to verify cross-component behavior
  5. Code Quality: Format and lint (cargo fmt, forge fmt, bun fmt:fix)

Common Pitfalls

  • Type mismatches: Regenerate with bun generate:types after runtime changes
  • Contract changes not reflected: Run bun generate:wagmi after modifications
  • Kurtosis issues: Ensure Docker is running and Kurtosis engine is started
  • Slow development: Use --features fast-runtime for shorter epochs/eras (block time stays 6s)
  • Network launch hangs: Check Blockscout - forge output can appear frozen

See CLAUDE.md for detailed development guidance.

License

GPL-3.0 - See LICENSE file for details

Links

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

50 total
  1. DataHaven v0.26.0v0.26.0Mar 12, 202619 downloads

    ### DataHaven v0.26.0 release - Stagenet & Testnet environments only The main highlight of this client release is the upgrade to the [StorageHub v0.4.3 release](https://github.com/Moonsong-Labs/storage-hub/releases/tag/v0.4.3). ## DataHaven Changes * fix: :bug: wire `trusted_msps` only when the provider is a BSP by @TDemeco in https://github.com/datahaven-xyz/datahaven/pull/458 * build: ⬆️ upgrade to StorageHub v0.4.3 by @TDemeco in https://github.com/datahaven-xyz/datahaven/pull/468 ## StorageHub Changes StorageHub v0.4.3 is a focused **bug-fix release** that resolves a **repeated fingerprint upload issue** affecting MSPs. When an MSP already stored a file and received a second upload request for a different file key sharing the same fingerprint, the deduplication logic incorrectly rejected the upload because no new chunks were inserted (resulting in `chunks_count` of 0). The fix makes the file fingerprint the authoritative indicator of file completeness in file storage, relegating chunk count to progress tracking only. An integration test covering the scenario has been added. See the full release notes at [StorageHub v0.4.3 release](https://github.com/Moonsong-Labs

  2. Runtime RT1400RT1400Mar 12, 202623 downloads

    ### DataHaven RT1400 runtime release - Stagenet & Testnet environments only This runtime release brings incremental improvements in the validator rewards & slashing core mechanics. ## Runtimes ### Stagenet ``` ✨ spec_version : 1400 🏋 size : 1917848 #️⃣ sha256 : 0x1a324022069b7499b8d0a080173de8de11a0632aec8d87dd1b8470b0f73417fd #️⃣ blake2-256 : 0xb8914f35f930d291acdec60740bc5435d1f76d17ba570f0919960517174bd7ca 🗳️ proposal (authorizeUpgrade) : 0xb251415411e58200420d6a23337f29aef9f8b4d0f14623012dda992f8d67ec78 ``` ### Testnet ``` ✨ spec_version : 1400 🏋 size : 1919003 #️⃣ sha256 : 0x2da7b8a98099d2186459a587d7e73b4e81c7f0d14fe906dd3b76ccef48fb77cf #️⃣ blake2-256 : 0xc852e7a3673598acf70ad5ae4821f96c9db689978a62719819b73647ce609862 🗳️ proposal (authorizeUpgrade) : 0xdbe89a3c2bd0a4e16076034b1a4d6d722575b4f368572aa48cc744612eadf19d ``` ## Build information WASM runtime built using `rustc 1.88.0 (6b00bc388 2025-06-23)` ## Changes * fix: 🩹 use post-treasury-split amount in AVS rewards message (#459) *

  3. DataHaven v0.25.0v0.25.0Feb 25, 202614 downloads

    ### DataHaven v0.25.0 release - Stagenet & Testnet environments only The main highlight of this client release is the upgrade to the [StorageHub v0.4.2 release](https://github.com/Moonsong-Labs/storage-hub/releases/tag/v0.4.2). ## DataHaven Changes * build: :arrow_up: upgrade to StorageHub v0.4.2 by @TDemeco in https://github.com/datahaven-xyz/datahaven/pull/457 ## StorageHub Changes StorageHub v0.4.2 focuses on **MSP file recovery from BSPs**, **further Backend→MSP upload performance gains**, **fisherman deletion robustness**, and **build toolchain compatibility**. Highlights include a new MSP task that detects missing or incomplete files after bucket root verification and recovers them from BSP peers via a new trusted-MSP authorisation flow, deeper batched-write optimisation for the trusted upload path with a configurable batch size, adaptive tip escalation for fisherman deletion extrinsics to recover from forest-root conflicts, a correctness fix preventing accidental RocksDB creation when opening forests from disk. See the full release notes at [StorageHub v0.4.2 release](https://github.com/Moonsong-Labs/storage-hub/releases/tag/v0.4.2). ## ⚠️ Breaking Changes ⚠

  4. Runtime RT1300RT1300Feb 26, 202617 downloads

    ### DataHaven RT1300 runtime release - Stagenet & Testnet environments only This runtime release brings incremental improvements for the integration with EigenLayer, specifically regarding the validator set update flow. ## Runtimes ### Stagenet ``` ✨ spec_version : 1300 🏋 size : 1915005 #️⃣ sha256 : 0xde0ee076c0a0e899f946749d771cb22a72801dc284b95391f7128155876885e6 #️⃣ blake2-256 : 0x5d2b0482495cfd3e6d6863937725871d20795d66fc82f96b2cd915a72f362e5d 🗳️ proposal (authorizeUpgrade) : 0x9c65594321ab3c06656ff288a3ab556802b8da686119306bbf18c96663a68bd6 ``` ### Testnet ``` ✨ spec_version : 1300 🏋 size : 1916466 #️⃣ sha256 : 0xf40a591ef99cbba728bff7d15a07106d6a695408dd8498f42f4f93bac1968cb9 #️⃣ blake2-256 : 0x0ac61e7482c316f7345aab456fce2d2473ff713ec46cdecbbd333b2034d9b929 🗳️ proposal (authorizeUpgrade) : 0x200f2f8c3ff2b24859ddc8a32ed503df580dd9cd61c008c60a917ef2e7ee03b4 ``` ## Build information WASM runtime built using `rustc 1.88.0 (6b00bc388 2025-06-23)` ## Changes * feat: automated validator set su

  5. DataHaven v0.24.0v0.24.0Feb 16, 202621 downloads

    ### DataHaven v0.24.0 release - Stagenet & Testnet environments only The main highlight of this client release is the upgrade to the [StorageHub v0.4.1 release](https://github.com/Moonsong-Labs/storage-hub/releases/tag/v0.4.1). ## DataHaven Changes * build: :arrow_up: Upgrade to StorageHub 0.4.1 by @ffarall in https://github.com/datahaven-xyz/datahaven/pull/445 ## StorageHub Changes StorageHub v0.4.1 focuses on **transaction-lifecycle resilience and operator configurability** in the client. See the full release notes at [StorageHub v0.4.1 release](https://github.com/Moonsong-Labs/storage-hub/releases/tag/v0.4.1). ## ⚠️ Breaking Changes ⚠️ - [PR #684](https://github.com/Moonsong-Labs/storage-hub/pull/684): adds configurable `extrinsic_mortality` surfaces for provider and fisherman blockchain-service configuration/CLI wiring. Provider operators, fisherman operators, and node/client integrators should review and propagate the new options (`--extrinsic-mortality`, `--fisherman-extrinsic-mortality`, plus TOML keys) where they maintain custom configuration paths. ## Dependency changes DataHaven: https://github.com/datahaven-xyz/datahaven/compare/v0.23.0...v0.24.

Code frequency

additions and deletions
+32.7K-32.7KWeek of 2025-10-05: +32,733 linesWeek of 2025-10-05: -5,623 linesWeek of 2025-10-12: +890 linesWeek of 2025-10-12: -710 linesWeek of 2025-10-19: +2,265 linesWeek of 2025-10-19: -882 linesWeek of 2025-10-26: +8,467 linesWeek of 2025-10-26: -4,258 linesWeek of 2025-11-02: +2,852 linesWeek of 2025-11-02: -904 linesWeek of 2025-11-09: +6,315 linesWeek of 2025-11-09: -18,860 linesWeek of 2025-11-16: +27,524 linesWeek of 2025-11-16: -4,118 linesWeek of 2025-11-23: +802 linesWeek of 2025-11-23: -1,577 linesWeek of 2025-11-30: +6,692 linesWeek of 2025-11-30: -5,264 linesWeek of 2025-12-07: +577 linesWeek of 2025-12-07: -207 linesWeek of 2025-12-14: +4,293 linesWeek of 2025-12-14: -431 linesWeek of 2025-12-21: +1,141 linesWeek of 2025-12-21: -2,907 linesWeek of 2025-12-28: +479 linesWeek of 2025-12-28: -2,131 linesWeek of 2026-01-04: +24,847 linesWeek of 2026-01-04: -6,567 linesWeek of 2026-01-11: +5,010 linesWeek of 2026-01-11: -5,996 linesWeek of 2026-01-18: +10,347 linesWeek of 2026-01-18: -10,270 linesWeek of 2026-01-25: +712 linesWeek of 2026-01-25: -187 linesWeek of 2026-02-01: +14,184 linesWeek of 2026-02-01: -907 linesWeek of 2026-02-08: +787 linesWeek of 2026-02-08: -331 linesWeek of 2026-02-15: +4,521 linesWeek of 2026-02-15: -1,092 linesWeek of 2026-02-22: +2,109 linesWeek of 2026-02-22: -899 linesWeek of 2026-03-01: +8,757 linesWeek of 2026-03-01: -19,908 linesWeek of 2026-03-08: +1,717 linesWeek of 2026-03-08: -168 linesWeek of 2026-03-15: +88 linesWeek of 2026-03-15: -37 linesWeek of 2026-03-22: +4,036 linesWeek of 2026-03-22: -3,582 linesWeek of 2026-03-29: +3,410 linesWeek of 2026-03-29: -2,819 linesWeek of 2026-04-05: +25,117 linesWeek of 2026-04-05: -534 linesWeek of 2026-04-12: +2,879 linesWeek of 2026-04-12: -25,956 linesWeek of 2026-04-19: +0 linesWeek of 2026-04-19: -0 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +0 linesWeek of 2026-08-16: -0 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +0 linesWeek of 2026-08-30: -0 linesWeek of 2026-09-06: +0 linesWeek of 2026-09-06: -0 linesWeek of 2026-09-13: +0 linesWeek of 2026-09-13: -0 linesWeek of 2026-09-20: +0 linesWeek of 2026-09-20: -0 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesOct 5, 2025Sep 27, 2026
+203.6K lines added, -127.1K removed over the last year.

Commits per week

last 52 weeks
210Week of 2025-10-05: 21 commitsWeek of 2025-10-12: 12 commitsWeek of 2025-10-19: 11 commitsWeek of 2025-10-26: 17 commitsWeek of 2025-11-02: 15 commitsWeek of 2025-11-09: 10 commitsWeek of 2025-11-16: 13 commitsWeek of 2025-11-23: 10 commitsWeek of 2025-11-30: 13 commitsWeek of 2025-12-07: 7 commitsWeek of 2025-12-14: 9 commitsWeek of 2025-12-21: 3 commitsWeek of 2025-12-28: 7 commitsWeek of 2026-01-04: 14 commitsWeek of 2026-01-11: 8 commitsWeek of 2026-01-18: 10 commitsWeek of 2026-01-25: 7 commitsWeek of 2026-02-01: 9 commitsWeek of 2026-02-08: 5 commitsWeek of 2026-02-15: 5 commitsWeek of 2026-02-22: 6 commitsWeek of 2026-03-01: 10 commitsWeek of 2026-03-08: 6 commitsWeek of 2026-03-15: 2 commitsWeek of 2026-03-22: 3 commitsWeek of 2026-03-29: 3 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 2 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 0 commitsWeek of 2026-09-06: 0 commitsWeek of 2026-09-13: 0 commitsWeek of 2026-09-20: 0 commitsWeek of 2026-09-27: 0 commitsOct 5, 2025Sep 27, 2026
239 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 1 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 1 commitsSun 15:00 — 1 commitsSun 16:00 — 1 commitsSun 17:00 — 0 commitsSun 18:00 — 1 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 2 commitsSun 22:00 — 0 commitsSun 23:00 — 3 commitsMon 0:00 — 2 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 3 commitsMon 10:00 — 4 commitsMon 11:00 — 3 commitsMon 12:00 — 7 commitsMon 13:00 — 6 commitsMon 14:00 — 11 commitsMon 15:00 — 7 commitsMon 16:00 — 7 commitsMon 17:00 — 7 commitsMon 18:00 — 3 commitsMon 19:00 — 5 commitsMon 20:00 — 4 commitsMon 21:00 — 5 commitsMon 22:00 — 4 commitsMon 23:00 — 4 commitsTue 0:00 — 2 commitsTue 1:00 — 1 commitsTue 2:00 — 0 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 4 commitsTue 8:00 — 3 commitsTue 9:00 — 2 commitsTue 10:00 — 4 commitsTue 11:00 — 7 commitsTue 12:00 — 9 commitsTue 13:00 — 8 commitsTue 14:00 — 7 commitsTue 15:00 — 10 commitsTue 16:00 — 6 commitsTue 17:00 — 5 commitsTue 18:00 — 3 commitsTue 19:00 — 4 commitsTue 20:00 — 2 commitsTue 21:00 — 4 commitsTue 22:00 — 3 commitsTue 23:00 — 2 commitsWed 0:00 — 2 commitsWed 1:00 — 1 commitsWed 2:00 — 1 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 1 commitsWed 7:00 — 1 commitsWed 8:00 — 5 commitsWed 9:00 — 4 commitsWed 10:00 — 4 commitsWed 11:00 — 3 commitsWed 12:00 — 3 commitsWed 13:00 — 6 commitsWed 14:00 — 12 commitsWed 15:00 — 9 commitsWed 16:00 — 8 commitsWed 17:00 — 6 commitsWed 18:00 — 4 commitsWed 19:00 — 4 commitsWed 20:00 — 3 commitsWed 21:00 — 3 commitsWed 22:00 — 2 commitsWed 23:00 — 4 commitsThu 0:00 — 5 commitsThu 1:00 — 1 commitsThu 2:00 — 2 commitsThu 3:00 — 1 commitsThu 4:00 — 0 commitsThu 5:00 — 1 commitsThu 6:00 — 0 commitsThu 7:00 — 2 commitsThu 8:00 — 2 commitsThu 9:00 — 6 commitsThu 10:00 — 6 commitsThu 11:00 — 7 commitsThu 12:00 — 10 commitsThu 13:00 — 9 commitsThu 14:00 — 10 commitsThu 15:00 — 4 commitsThu 16:00 — 8 commitsThu 17:00 — 1 commitsThu 18:00 — 2 commitsThu 19:00 — 1 commitsThu 20:00 — 0 commitsThu 21:00 — 1 commitsThu 22:00 — 5 commitsThu 23:00 — 1 commitsFri 0:00 — 2 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 2 commitsFri 9:00 — 2 commitsFri 10:00 — 6 commitsFri 11:00 — 4 commitsFri 12:00 — 5 commitsFri 13:00 — 5 commitsFri 14:00 — 6 commitsFri 15:00 — 7 commitsFri 16:00 — 5 commitsFri 17:00 — 1 commitsFri 18:00 — 3 commitsFri 19:00 — 3 commitsFri 20:00 — 4 commitsFri 21:00 — 1 commitsFri 22:00 — 1 commitsFri 23:00 — 1 commitsSat 0:00 — 3 commitsSat 1:00 — 1 commitsSat 2:00 — 1 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 2 commitsSat 11:00 — 2 commitsSat 12:00 — 1 commitsSat 13:00 — 0 commitsSat 14:00 — 1 commitsSat 15:00 — 1 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 2 commitsSat 19:00 — 1 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jan 17, 2026daily#23+141
Jan 15, 2026daily#19+146
Jan 14, 2026daily#8+296
Jan 13, 2026daily#1+748
  • awesome-selfhosted/awesome-selfhosted

    A list of Free Software network services and web applications which can be hosted on your own servers

    323.8K stars

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195.2K stars · Rust

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    154.6K stars · JavaScript