From 1de6de2641a91d076ae04383eb24c92e063bfd63 Mon Sep 17 00:00:00 2001 From: Daniel Bui <79790753+danielbui12@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:13:10 +0700 Subject: [PATCH 1/4] Move all FRAME pallets into a top-level pallets/ folder - pallet/ -> pallets/storage-provider - storage-interfaces/file-system/pallet-registry -> pallets/drive-registry - storage-interfaces/s3/pallet-s3-registry -> pallets/s3-registry Crate names are unchanged; only directory layout moves. Root workspace members and path dependencies, the check-runtime-migration CI path filters, the Apache license-header globs, and all doc references now point at the new locations. --- .claude/skills/test/pallet.md | 191 ------------------ .github/workflows/check-runtime-migration.yml | 3 +- CLAUDE.md | 12 +- CONTRIBUTING.md | 2 +- Cargo.toml | 13 +- README.md | 2 +- .../scalable-web3-storage-implementation.md | 4 +- docs/filesystems/ADMIN_GUIDE.md | 2 +- docs/filesystems/README.md | 2 +- docs/reference/EXTRINSICS_REFERENCE.md | 2 +- licenserc.apache.toml | 2 +- pallet/README.md | 16 -- .../drive-registry}/Cargo.toml | 0 .../drive-registry}/src/bechmarking.rs | 0 .../drive-registry}/src/lib.rs | 0 .../drive-registry}/src/migrations.rs | 0 .../drive-registry}/src/mock.rs | 0 .../drive-registry}/src/tests.rs | 0 .../drive-registry}/src/weights.rs | 0 .../s3-registry}/Cargo.toml | 0 .../s3-registry}/src/benchmarking.rs | 0 .../s3-registry}/src/lib.rs | 0 .../s3-registry}/src/mock.rs | 0 .../s3-registry}/src/tests.rs | 0 .../s3-registry}/src/weights.rs | 0 .../storage-provider}/Cargo.toml | 0 .../storage-provider}/src/benchmarking.rs | 0 .../storage-provider}/src/impls/agreements.rs | 0 .../storage-provider}/src/impls/buckets.rs | 0 .../storage-provider}/src/impls/challenges.rs | 0 .../src/impls/checkpoints.rs | 0 .../src/impls/marketplace.rs | 0 .../storage-provider}/src/impls/members.rs | 0 .../storage-provider}/src/impls/mod.rs | 0 .../storage-provider}/src/impls/providers.rs | 0 .../storage-provider}/src/impls/queries.rs | 0 .../storage-provider}/src/impls/signatures.rs | 0 .../storage-provider}/src/lib.rs | 0 .../storage-provider}/src/migrations.rs | 0 .../storage-provider}/src/mock.rs | 0 .../storage-provider}/src/runtime_api.rs | 0 .../storage-provider}/src/tests/agreement.rs | 0 .../src/tests/auto_matching.rs | 0 .../storage-provider}/src/tests/bucket.rs | 0 .../storage-provider}/src/tests/challenge.rs | 0 .../storage-provider}/src/tests/checkpoint.rs | 0 .../src/tests/end_agreement.rs | 0 .../src/tests/error_paths.rs | 0 .../src/tests/extend_topup.rs | 0 .../storage-provider}/src/tests/genesis.rs | 0 .../src/tests/member_buckets.rs | 0 .../storage-provider}/src/tests/migrations.rs | 0 .../storage-provider}/src/tests/misc.rs | 0 .../storage-provider}/src/tests/mod.rs | 0 .../storage-provider}/src/tests/provider.rs | 0 .../storage-provider}/src/tests/replica.rs | 0 .../src/tests/runtime_api.rs | 0 .../storage-provider}/src/weights.rs | 0 provider-node/src/challenge_responder.rs | 2 +- storage-interfaces/file-system/README.md | 2 +- storage-interfaces/s3/README.md | 2 +- .../shared/test-helpers/src/registration.ts | 2 +- 62 files changed, 25 insertions(+), 234 deletions(-) delete mode 100644 .claude/skills/test/pallet.md delete mode 100644 pallet/README.md rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/Cargo.toml (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/bechmarking.rs (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/lib.rs (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/migrations.rs (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/mock.rs (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/tests.rs (100%) rename {storage-interfaces/file-system/pallet-registry => pallets/drive-registry}/src/weights.rs (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/Cargo.toml (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/src/benchmarking.rs (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/src/lib.rs (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/src/mock.rs (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/src/tests.rs (100%) rename {storage-interfaces/s3/pallet-s3-registry => pallets/s3-registry}/src/weights.rs (100%) rename {pallet => pallets/storage-provider}/Cargo.toml (100%) rename {pallet => pallets/storage-provider}/src/benchmarking.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/agreements.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/buckets.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/challenges.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/checkpoints.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/marketplace.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/members.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/mod.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/providers.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/queries.rs (100%) rename {pallet => pallets/storage-provider}/src/impls/signatures.rs (100%) rename {pallet => pallets/storage-provider}/src/lib.rs (100%) rename {pallet => pallets/storage-provider}/src/migrations.rs (100%) rename {pallet => pallets/storage-provider}/src/mock.rs (100%) rename {pallet => pallets/storage-provider}/src/runtime_api.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/agreement.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/auto_matching.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/bucket.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/challenge.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/checkpoint.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/end_agreement.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/error_paths.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/extend_topup.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/genesis.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/member_buckets.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/migrations.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/misc.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/mod.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/provider.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/replica.rs (100%) rename {pallet => pallets/storage-provider}/src/tests/runtime_api.rs (100%) rename {pallet => pallets/storage-provider}/src/weights.rs (100%) diff --git a/.claude/skills/test/pallet.md b/.claude/skills/test/pallet.md deleted file mode 100644 index 61087cc2..00000000 --- a/.claude/skills/test/pallet.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -name: test-pallet -description: Run comprehensive tests for the storage pallet -argument-hint: "[--benchmarks] [--coverage]" -disable-model-invocation: true -user-invocable: true -allowed-tools: Bash, Read, Edit, Glob, Grep ---- - -# Test Storage Pallet $ARGUMENTS - -Run comprehensive tests for the Scalable Web3 Storage pallet. - -## Arguments - -- `--benchmarks` - Also run benchmark tests -- `--coverage` - Generate test coverage report - -## Step 1: Pre-flight Checks - -```bash -git status --porcelain -cargo --version -rustc --version -``` - -## Step 2: Format and Lint - -```bash -# Format check -cargo fmt --all -- --check - -# Clippy with warnings as errors -cargo clippy --all-targets --all-features --workspace -- -D warnings -``` - -**If any fail:** Fix formatting/linting issues before proceeding. - -## Step 3: Run Unit Tests - -```bash -# Pallet tests -cargo test -p storage-provider-pallet --all-features - -# Primitives tests -cargo test -p storage-primitives - -# Runtime tests -cargo test -p storage-parachain-runtime -``` - -## Step 4: Run Integration Tests - -```bash -# Provider node tests -cargo test -p storage-provider-node - -# Client SDK tests -cargo test -p storage-client --all-features -``` - -## Step 5: Run Benchmarks (if --benchmarks flag) - -```bash -# Build runtime with benchmark features -cargo build --release -p storage-parachain-runtime --features runtime-benchmarks - -# Run pallet benchmarks -cargo test -p storage-provider-pallet --features runtime-benchmarks benchmark -``` - -## Step 6: Coverage Report (if --coverage flag) - -```bash -# Install tarpaulin if not present -cargo install cargo-tarpaulin - -# Generate coverage -cargo tarpaulin --workspace --out Html --output-dir target/coverage -``` - -**Report location:** `target/coverage/index.html` - -## Step 7: Test Report - -Generate summary: - -``` -✅ Pallet Tests Complete - -Unit Tests: -- Pallet: [PASS/FAIL] -- Primitives: [PASS/FAIL] -- Runtime: [PASS/FAIL] - -Integration Tests: -- Provider Node: [PASS/FAIL] -- Client SDK: [PASS/FAIL] - -Benchmarks: [PASS/FAIL/SKIPPED] -Coverage: [X%/SKIPPED] -``` - -## Common Test Patterns - -### Testing Extrinsics -```rust -#[test] -fn test_register_provider() { - new_test_ext().execute_with(|| { - // Setup - let provider = account(0); - let stake = 1000 * UNIT; - - // Execute - assert_ok!(StorageProvider::register_provider( - RuntimeOrigin::signed(provider), - multiaddr, - public_key, - stake - )); - - // Verify - assert!(Providers::::contains_key(provider)); - }); -} -``` - -### Testing Error Cases -```rust -#[test] -fn test_insufficient_stake() { - new_test_ext().execute_with(|| { - let stake = 100; // Too low - assert_noop!( - StorageProvider::register_provider(/*...*/), - Error::::InsufficientStake - ); - }); -} -``` - -### Testing Events -```rust -#[test] -fn test_provider_registered_event() { - new_test_ext().execute_with(|| { - // Execute - assert_ok!(StorageProvider::register_provider(/*...*/)); - - // Verify event - System::assert_last_event( - Event::ProviderRegistered { provider, stake }.into() - ); - }); -} -``` - -## Critical Test Areas - -1. **Provider Registration** - - Stake requirements - - Duplicate registration - - Invalid parameters - -2. **Storage Agreements** - - Payment calculation - - Duration limits - - Capacity limits - - Agreement acceptance/rejection - -3. **Checkpoints** - - MMR root verification - - Signature validation - - Threshold requirements - -4. **Challenges** - - Proof verification - - Slashing logic - - Challenge timeouts - -5. **Bucket Management** - - Creation - - Member management - - Freezing/unfreezing - -## Links - -- [Pallet Source](/pallet/src/lib.rs) -- For end-to-end exercise: `just demo` (Layer-0 PAPI), `just fs-demo-ci`, `just s3-demo-ci` -- [Runtime](/runtime/src/lib.rs) diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml index 224ee98a..9339b2d6 100644 --- a/.github/workflows/check-runtime-migration.yml +++ b/.github/workflows/check-runtime-migration.yml @@ -51,9 +51,8 @@ jobs: filters: | runtime: - 'runtimes/**' - - 'pallet/**' + - 'pallets/**' - 'primitives/**' - - 'storage-interfaces/**/pallet-*/**' - '**/Cargo.toml' - 'Cargo.lock' - '.github/workflows/check-runtime-migration.yml' diff --git a/CLAUDE.md b/CLAUDE.md index 5e3fd220..6873cce4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -212,9 +212,10 @@ export function sameAddress(a, b) { ``` web3-storage/ -├── pallet/ # Substrate pallet (on-chain logic - Layer 0) -│ ├── src/lib.rs # Core pallet implementation -│ └── Cargo.toml # Pallet dependencies +├── pallets/ # FRAME pallets (on-chain logic) +│ ├── storage-provider/ # Storage provider pallet (Layer 0) +│ ├── drive-registry/ # Drive Registry pallet (Layer 1 file system) +│ └── s3-registry/ # S3 Registry pallet (Layer 1 S3) ├── runtimes/ # Parachain runtimes │ ├── web3-storage-local/ # Local testnet runtime (storage-parachain-runtime) │ │ ├── src/lib.rs # Runtime configuration @@ -242,7 +243,6 @@ web3-storage/ ├── storage-interfaces/ # Layer 1 - High-level interfaces │ └── file-system/ # File System Interface │ ├── primitives/ # File system types (DriveInfo, CommitStrategy, etc.) -│ ├── pallet-registry/ # Drive Registry pallet (on-chain) │ └── client/ # File System Client SDK │ ├── src/ │ │ ├── lib.rs # Main file system client @@ -275,7 +275,7 @@ web3-storage/ #### Layer 0 (Raw Storage) -**Pallet (`pallet/`)**: On-chain logic for provider registration, bucket creation, storage agreements, checkpoints, and challenge/slashing mechanism. +**Pallet (`pallets/storage-provider/`)**: On-chain logic for provider registration, bucket creation, storage agreements, checkpoints, and challenge/slashing mechanism. **Runtime (`runtimes/web3-storage-local/`)**: Parachain runtime that includes the storage provider pallet and configures its parameters (stake requirements, challenge periods, etc.). @@ -304,7 +304,7 @@ web3-storage/ - `CommitStrategy`: Checkpoint strategies (Immediate, Batched, Manual) - Helper functions for CID computation and path handling -**Drive Registry Pallet (`storage-interfaces/file-system/pallet-registry/`)**: On-chain drive management: +**Drive Registry Pallet (`pallets/drive-registry/`)**: On-chain drive management: - Drive creation with automatic infrastructure setup - Root CID tracking for drive state - User-to-drive mapping diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c85fbf7c..189bda8e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -62,7 +62,7 @@ This repository is dual-licensed. The license that applies depends on the crate: | License | Crates | |---------|--------| | [GPL-3.0-only](LICENSE-GPL3) | `runtimes/`, `provider-node/`, `user-interfaces/` | -| [Apache-2.0](LICENSE-APACHE2) | `pallet/`, `primitives/`, `client/`, `precompiles/`, `storage-interfaces/` | +| [Apache-2.0](LICENSE-APACHE2) | `pallets/`, `primitives/`, `client/`, `precompiles/`, `storage-interfaces/` | Each crate declares its applicable license in its `Cargo.toml` or `package.json`. diff --git a/Cargo.toml b/Cargo.toml index fc63de2e..179e85b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,14 +1,15 @@ [workspace] resolver = "2" members = [ - # Layer 0: Scalable Web3 Storage "client", - "pallet", "primitives", "provider-node", "provider/negotiation", "runtimes/web3-storage-local", "runtimes/web3-storage-paseo", + "pallets/drive-registry", + "pallets/s3-registry", + "pallets/storage-provider", # Smart-contract precompiles (pallet_revive integration) "precompiles/drive-registry-precompile", @@ -17,12 +18,10 @@ members = [ # Storage Interfaces: File System Interface "storage-interfaces/file-system/client", - "storage-interfaces/file-system/pallet-registry", "storage-interfaces/file-system/primitives", # Storage Interfaces: S3-Compatible Interface "storage-interfaces/s3/client", - "storage-interfaces/s3/pallet-s3-registry", "storage-interfaces/s3/primitives", ] @@ -36,7 +35,7 @@ repository = "https://github.com/paritytech/web3-storage" # Layer 0: Scalable Web3 Storage (Internal crates) pallet-drive-registry-precompile = { path = "precompiles/drive-registry-precompile", default-features = false } pallet-s3-registry-precompile = { path = "precompiles/s3-registry-precompile", default-features = false } -pallet-storage-provider = { path = "pallet", default-features = false } +pallet-storage-provider = { path = "pallets/storage-provider", default-features = false } pallet-storage-provider-precompile = { path = "precompiles/storage-provider-precompile", default-features = false } provider-negotiation = { path = "provider/negotiation" } storage-client = { path = "client" } @@ -47,10 +46,10 @@ storage-provider-node = { path = "provider-node" } # Storage Interfaces: File System Interface file-system-client = { path = "storage-interfaces/file-system/client" } file-system-primitives = { path = "storage-interfaces/file-system/primitives", default-features = false } -pallet-drive-registry = { path = "storage-interfaces/file-system/pallet-registry", default-features = false } +pallet-drive-registry = { path = "pallets/drive-registry", default-features = false } # Storage Interfaces: S3-Compatible Interface -pallet-s3-registry = { path = "storage-interfaces/s3/pallet-s3-registry", default-features = false } +pallet-s3-registry = { path = "pallets/s3-registry", default-features = false } s3-client = { path = "storage-interfaces/s3/client" } s3-primitives = { path = "storage-interfaces/s3/primitives", default-features = false } diff --git a/README.md b/README.md index 20afc0a8..b71de6fb 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Two types of nodes work together: ``` scalable-web3-storage/ -├── pallet/ # Substrate pallet (on-chain logic) +├── pallets/ # FRAME pallets (on-chain logic) ├── runtimes/ # Parachain runtimes (web3-storage-local, web3-storage-paseo) ├── provider-node/ # Off-chain storage server (HTTP API) ├── client/ # Client SDK for applications diff --git a/docs/design/scalable-web3-storage-implementation.md b/docs/design/scalable-web3-storage-implementation.md index 15607c24..81a89789 100644 --- a/docs/design/scalable-web3-storage-implementation.md +++ b/docs/design/scalable-web3-storage-implementation.md @@ -863,7 +863,7 @@ pub enum Event { Read-only queries used by clients (the Rust SDK, demos, and the provider node's membership cache) to discover providers, inspect bucket state, list agreements, and watch challenges without submitting transactions. Defined in -`pallet/src/runtime_api.rs` as `StorageProviderApi`. +`pallets/storage-provider/src/runtime_api.rs` as `StorageProviderApi`. ```rust sp_api::decl_runtime_apis! { @@ -912,7 +912,7 @@ sp_api::decl_runtime_apis! { } ``` -Response types live in `pallet/src/runtime_api.rs` (`ProviderInfoResponse`, +Response types live in `pallets/storage-provider/src/runtime_api.rs` (`ProviderInfoResponse`, `StorageRequirements`, `MatchedProvider`, `BucketResponse`, `AgreementResponse`, `ChallengeResponse`, etc.). They flatten the on-chain structs into encode/decode-friendly shapes (e.g. `AccountId` as `Vec`, diff --git a/docs/filesystems/ADMIN_GUIDE.md b/docs/filesystems/ADMIN_GUIDE.md index f7c70743..a6f34abd 100644 --- a/docs/filesystems/ADMIN_GUIDE.md +++ b/docs/filesystems/ADMIN_GUIDE.md @@ -373,7 +373,7 @@ let num_providers: u8 = if let Some(min) = min_providers { ```rust // Modify thresholds in pallet code: -// storage-interfaces/file-system/pallet-registry/src/lib.rs +// pallets/drive-registry/src/lib.rs // Example: More aggressive replication if storage_period > 500 { diff --git a/docs/filesystems/README.md b/docs/filesystems/README.md index fe7447b7..090299fb 100644 --- a/docs/filesystems/README.md +++ b/docs/filesystems/README.md @@ -29,7 +29,7 @@ cargo run -p file-system-client --example basic_usage ## Components -- **Drive Registry pallet** (`storage-interfaces/file-system/pallet-registry/`) — on-chain drive metadata, owner mapping, root CID slot. +- **Drive Registry pallet** (`pallets/drive-registry/`) — on-chain drive metadata, owner mapping, root CID slot. - **File-system primitives** (`storage-interfaces/file-system/primitives/`) — shared types: `DriveInfo`, `DirectoryNode`, `FileManifest`, `CommitStrategy`. - **File-system client SDK** (`storage-interfaces/file-system/client/`) — Rust client. Real chain queries via subxt; file operations via the provider's `/fs/{bucket}/...` HTTP endpoints. - **TypeScript SDK** — `FileSystemClient` from `@web3-storage/sdk/fs` (`packages/layer1`), built on the layer-0 chain binding. diff --git a/docs/reference/EXTRINSICS_REFERENCE.md b/docs/reference/EXTRINSICS_REFERENCE.md index 3221d5c3..4ed7acb3 100644 --- a/docs/reference/EXTRINSICS_REFERENCE.md +++ b/docs/reference/EXTRINSICS_REFERENCE.md @@ -1,6 +1,6 @@ # Storage Provider Pallet - Extrinsics Reference -Quick reference for all available extrinsics in the storage provider pallet ([pallet/src/lib.rs](../../pallet/src/lib.rs)). +Quick reference for all available extrinsics in the storage provider pallet ([pallets/storage-provider/src/lib.rs](../../pallets/storage-provider/src/lib.rs)). ## Provider Management diff --git a/licenserc.apache.toml b/licenserc.apache.toml index d821f99f..954a67a5 100644 --- a/licenserc.apache.toml +++ b/licenserc.apache.toml @@ -12,7 +12,7 @@ includes = [ "packages/**/*.js", "packages/**/*.ts", "packages/**/*.tsx", - "pallet/**/*.rs", + "pallets/**/*.rs", "precompiles/**/*.rs", "precompiles/**/*.sol", "primitives/**/*.rs", diff --git a/pallet/README.md b/pallet/README.md deleted file mode 100644 index 15d5195a..00000000 --- a/pallet/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Storage Provider Pallet - -Substrate FRAME pallet implementing the on-chain logic for Scalable Web3 -Storage: provider registration and staking, bucket creation, storage agreements, -MMR-based checkpoints, and the challenge/slashing mechanism. - -## Build & Test - -```bash -cargo build -p storage-provider-pallet --release -cargo test -p storage-provider-pallet -``` - -## License - -Licensed under [Apache-2.0](../LICENSE-APACHE2). diff --git a/storage-interfaces/file-system/pallet-registry/Cargo.toml b/pallets/drive-registry/Cargo.toml similarity index 100% rename from storage-interfaces/file-system/pallet-registry/Cargo.toml rename to pallets/drive-registry/Cargo.toml diff --git a/storage-interfaces/file-system/pallet-registry/src/bechmarking.rs b/pallets/drive-registry/src/bechmarking.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/bechmarking.rs rename to pallets/drive-registry/src/bechmarking.rs diff --git a/storage-interfaces/file-system/pallet-registry/src/lib.rs b/pallets/drive-registry/src/lib.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/lib.rs rename to pallets/drive-registry/src/lib.rs diff --git a/storage-interfaces/file-system/pallet-registry/src/migrations.rs b/pallets/drive-registry/src/migrations.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/migrations.rs rename to pallets/drive-registry/src/migrations.rs diff --git a/storage-interfaces/file-system/pallet-registry/src/mock.rs b/pallets/drive-registry/src/mock.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/mock.rs rename to pallets/drive-registry/src/mock.rs diff --git a/storage-interfaces/file-system/pallet-registry/src/tests.rs b/pallets/drive-registry/src/tests.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/tests.rs rename to pallets/drive-registry/src/tests.rs diff --git a/storage-interfaces/file-system/pallet-registry/src/weights.rs b/pallets/drive-registry/src/weights.rs similarity index 100% rename from storage-interfaces/file-system/pallet-registry/src/weights.rs rename to pallets/drive-registry/src/weights.rs diff --git a/storage-interfaces/s3/pallet-s3-registry/Cargo.toml b/pallets/s3-registry/Cargo.toml similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/Cargo.toml rename to pallets/s3-registry/Cargo.toml diff --git a/storage-interfaces/s3/pallet-s3-registry/src/benchmarking.rs b/pallets/s3-registry/src/benchmarking.rs similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/src/benchmarking.rs rename to pallets/s3-registry/src/benchmarking.rs diff --git a/storage-interfaces/s3/pallet-s3-registry/src/lib.rs b/pallets/s3-registry/src/lib.rs similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/src/lib.rs rename to pallets/s3-registry/src/lib.rs diff --git a/storage-interfaces/s3/pallet-s3-registry/src/mock.rs b/pallets/s3-registry/src/mock.rs similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/src/mock.rs rename to pallets/s3-registry/src/mock.rs diff --git a/storage-interfaces/s3/pallet-s3-registry/src/tests.rs b/pallets/s3-registry/src/tests.rs similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/src/tests.rs rename to pallets/s3-registry/src/tests.rs diff --git a/storage-interfaces/s3/pallet-s3-registry/src/weights.rs b/pallets/s3-registry/src/weights.rs similarity index 100% rename from storage-interfaces/s3/pallet-s3-registry/src/weights.rs rename to pallets/s3-registry/src/weights.rs diff --git a/pallet/Cargo.toml b/pallets/storage-provider/Cargo.toml similarity index 100% rename from pallet/Cargo.toml rename to pallets/storage-provider/Cargo.toml diff --git a/pallet/src/benchmarking.rs b/pallets/storage-provider/src/benchmarking.rs similarity index 100% rename from pallet/src/benchmarking.rs rename to pallets/storage-provider/src/benchmarking.rs diff --git a/pallet/src/impls/agreements.rs b/pallets/storage-provider/src/impls/agreements.rs similarity index 100% rename from pallet/src/impls/agreements.rs rename to pallets/storage-provider/src/impls/agreements.rs diff --git a/pallet/src/impls/buckets.rs b/pallets/storage-provider/src/impls/buckets.rs similarity index 100% rename from pallet/src/impls/buckets.rs rename to pallets/storage-provider/src/impls/buckets.rs diff --git a/pallet/src/impls/challenges.rs b/pallets/storage-provider/src/impls/challenges.rs similarity index 100% rename from pallet/src/impls/challenges.rs rename to pallets/storage-provider/src/impls/challenges.rs diff --git a/pallet/src/impls/checkpoints.rs b/pallets/storage-provider/src/impls/checkpoints.rs similarity index 100% rename from pallet/src/impls/checkpoints.rs rename to pallets/storage-provider/src/impls/checkpoints.rs diff --git a/pallet/src/impls/marketplace.rs b/pallets/storage-provider/src/impls/marketplace.rs similarity index 100% rename from pallet/src/impls/marketplace.rs rename to pallets/storage-provider/src/impls/marketplace.rs diff --git a/pallet/src/impls/members.rs b/pallets/storage-provider/src/impls/members.rs similarity index 100% rename from pallet/src/impls/members.rs rename to pallets/storage-provider/src/impls/members.rs diff --git a/pallet/src/impls/mod.rs b/pallets/storage-provider/src/impls/mod.rs similarity index 100% rename from pallet/src/impls/mod.rs rename to pallets/storage-provider/src/impls/mod.rs diff --git a/pallet/src/impls/providers.rs b/pallets/storage-provider/src/impls/providers.rs similarity index 100% rename from pallet/src/impls/providers.rs rename to pallets/storage-provider/src/impls/providers.rs diff --git a/pallet/src/impls/queries.rs b/pallets/storage-provider/src/impls/queries.rs similarity index 100% rename from pallet/src/impls/queries.rs rename to pallets/storage-provider/src/impls/queries.rs diff --git a/pallet/src/impls/signatures.rs b/pallets/storage-provider/src/impls/signatures.rs similarity index 100% rename from pallet/src/impls/signatures.rs rename to pallets/storage-provider/src/impls/signatures.rs diff --git a/pallet/src/lib.rs b/pallets/storage-provider/src/lib.rs similarity index 100% rename from pallet/src/lib.rs rename to pallets/storage-provider/src/lib.rs diff --git a/pallet/src/migrations.rs b/pallets/storage-provider/src/migrations.rs similarity index 100% rename from pallet/src/migrations.rs rename to pallets/storage-provider/src/migrations.rs diff --git a/pallet/src/mock.rs b/pallets/storage-provider/src/mock.rs similarity index 100% rename from pallet/src/mock.rs rename to pallets/storage-provider/src/mock.rs diff --git a/pallet/src/runtime_api.rs b/pallets/storage-provider/src/runtime_api.rs similarity index 100% rename from pallet/src/runtime_api.rs rename to pallets/storage-provider/src/runtime_api.rs diff --git a/pallet/src/tests/agreement.rs b/pallets/storage-provider/src/tests/agreement.rs similarity index 100% rename from pallet/src/tests/agreement.rs rename to pallets/storage-provider/src/tests/agreement.rs diff --git a/pallet/src/tests/auto_matching.rs b/pallets/storage-provider/src/tests/auto_matching.rs similarity index 100% rename from pallet/src/tests/auto_matching.rs rename to pallets/storage-provider/src/tests/auto_matching.rs diff --git a/pallet/src/tests/bucket.rs b/pallets/storage-provider/src/tests/bucket.rs similarity index 100% rename from pallet/src/tests/bucket.rs rename to pallets/storage-provider/src/tests/bucket.rs diff --git a/pallet/src/tests/challenge.rs b/pallets/storage-provider/src/tests/challenge.rs similarity index 100% rename from pallet/src/tests/challenge.rs rename to pallets/storage-provider/src/tests/challenge.rs diff --git a/pallet/src/tests/checkpoint.rs b/pallets/storage-provider/src/tests/checkpoint.rs similarity index 100% rename from pallet/src/tests/checkpoint.rs rename to pallets/storage-provider/src/tests/checkpoint.rs diff --git a/pallet/src/tests/end_agreement.rs b/pallets/storage-provider/src/tests/end_agreement.rs similarity index 100% rename from pallet/src/tests/end_agreement.rs rename to pallets/storage-provider/src/tests/end_agreement.rs diff --git a/pallet/src/tests/error_paths.rs b/pallets/storage-provider/src/tests/error_paths.rs similarity index 100% rename from pallet/src/tests/error_paths.rs rename to pallets/storage-provider/src/tests/error_paths.rs diff --git a/pallet/src/tests/extend_topup.rs b/pallets/storage-provider/src/tests/extend_topup.rs similarity index 100% rename from pallet/src/tests/extend_topup.rs rename to pallets/storage-provider/src/tests/extend_topup.rs diff --git a/pallet/src/tests/genesis.rs b/pallets/storage-provider/src/tests/genesis.rs similarity index 100% rename from pallet/src/tests/genesis.rs rename to pallets/storage-provider/src/tests/genesis.rs diff --git a/pallet/src/tests/member_buckets.rs b/pallets/storage-provider/src/tests/member_buckets.rs similarity index 100% rename from pallet/src/tests/member_buckets.rs rename to pallets/storage-provider/src/tests/member_buckets.rs diff --git a/pallet/src/tests/migrations.rs b/pallets/storage-provider/src/tests/migrations.rs similarity index 100% rename from pallet/src/tests/migrations.rs rename to pallets/storage-provider/src/tests/migrations.rs diff --git a/pallet/src/tests/misc.rs b/pallets/storage-provider/src/tests/misc.rs similarity index 100% rename from pallet/src/tests/misc.rs rename to pallets/storage-provider/src/tests/misc.rs diff --git a/pallet/src/tests/mod.rs b/pallets/storage-provider/src/tests/mod.rs similarity index 100% rename from pallet/src/tests/mod.rs rename to pallets/storage-provider/src/tests/mod.rs diff --git a/pallet/src/tests/provider.rs b/pallets/storage-provider/src/tests/provider.rs similarity index 100% rename from pallet/src/tests/provider.rs rename to pallets/storage-provider/src/tests/provider.rs diff --git a/pallet/src/tests/replica.rs b/pallets/storage-provider/src/tests/replica.rs similarity index 100% rename from pallet/src/tests/replica.rs rename to pallets/storage-provider/src/tests/replica.rs diff --git a/pallet/src/tests/runtime_api.rs b/pallets/storage-provider/src/tests/runtime_api.rs similarity index 100% rename from pallet/src/tests/runtime_api.rs rename to pallets/storage-provider/src/tests/runtime_api.rs diff --git a/pallet/src/weights.rs b/pallets/storage-provider/src/weights.rs similarity index 100% rename from pallet/src/weights.rs rename to pallets/storage-provider/src/weights.rs diff --git a/provider-node/src/challenge_responder.rs b/provider-node/src/challenge_responder.rs index 4a91df1d..76850836 100644 --- a/provider-node/src/challenge_responder.rs +++ b/provider-node/src/challenge_responder.rs @@ -381,7 +381,7 @@ const CHALLENGE_ENTRY_SIZE: usize = 144; /// the decoded `provider` field matches `our_bytes`; `None` when the /// challenge targets a different provider. /// -/// Layout of `Challenge` (see `pallet/src/lib.rs`): +/// Layout of `Challenge` (see `pallets/storage-provider/src/lib.rs`): /// bucket_id (u64) — 8 /// provider (AccountId32) — 32 /// challenger (AccountId32)— 32 diff --git a/storage-interfaces/file-system/README.md b/storage-interfaces/file-system/README.md index a28802b1..88c970a1 100644 --- a/storage-interfaces/file-system/README.md +++ b/storage-interfaces/file-system/README.md @@ -48,7 +48,7 @@ Core data structures and types for the file system. - CID computation and manipulation - DAG helper functions -### `pallet-registry/` +### Drive Registry pallet (`pallets/drive-registry/`) On-chain registry pallet for drive management. **User-Facing Extrinsics:** diff --git a/storage-interfaces/s3/README.md b/storage-interfaces/s3/README.md index 68410aa8..4f2dec6a 100644 --- a/storage-interfaces/s3/README.md +++ b/storage-interfaces/s3/README.md @@ -33,7 +33,7 @@ This module provides an S3-compatible storage interface (Layer 1) on top of the | Component | Path | Description | |-----------|------|-------------| | **s3-primitives** | `primitives/` | Core types and validation functions (no_std compatible) | -| **pallet-s3-registry** | `pallet-s3-registry/` | On-chain S3 bucket and object metadata storage | +| **pallet-s3-registry** | `../../pallets/s3-registry/` | On-chain S3 bucket and object metadata storage | | **s3-client** | `client/` | High-level SDK for S3 operations | ## Quick Start diff --git a/user-interfaces/shared/test-helpers/src/registration.ts b/user-interfaces/shared/test-helpers/src/registration.ts index e5955906..0fb0d137 100644 --- a/user-interfaces/shared/test-helpers/src/registration.ts +++ b/user-interfaces/shared/test-helpers/src/registration.ts @@ -23,7 +23,7 @@ function publicKeyHex(address: string): string { * Storage key for `pallet_storage_provider::Providers[address]`. Layout * is `twox128(pallet_name) ++ twox128(storage_name) ++ * blake2_128_concat(scale(account))`, matching the FRAME `StorageMap` - * with `Blake2_128Concat` hasher in `pallet/src/lib.rs`. AccountId32 is + * with `Blake2_128Concat` hasher in `pallets/storage-provider/src/lib.rs`. AccountId32 is * 32 raw bytes, so the scale encoding of the key is just those bytes. */ function providersStorageKey(address: string): Uint8Array { From 566110537baf2ef0c648f8f0aea7eaa4d4ad57dd Mon Sep 17 00:00:00 2001 From: Daniel Bui <79790753+danielbui12@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:52:38 +0700 Subject: [PATCH 2/4] chore: fmt --- Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 179e85b1..0d295c65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,14 +2,14 @@ resolver = "2" members = [ "client", + "pallets/drive-registry", + "pallets/s3-registry", + "pallets/storage-provider", "primitives", "provider-node", "provider/negotiation", "runtimes/web3-storage-local", "runtimes/web3-storage-paseo", - "pallets/drive-registry", - "pallets/s3-registry", - "pallets/storage-provider", # Smart-contract precompiles (pallet_revive integration) "precompiles/drive-registry-precompile", From baaa974da01378f2bbfb4152db3f207e1fe136be Mon Sep 17 00:00:00 2001 From: Daniel Bui <79790753+danielbui12@users.noreply.github.com> Date: Fri, 10 Jul 2026 17:39:40 +0700 Subject: [PATCH 3/4] chore: undo claude skill --- .claude/skills/test/pallet.md | 191 ++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 .claude/skills/test/pallet.md diff --git a/.claude/skills/test/pallet.md b/.claude/skills/test/pallet.md new file mode 100644 index 00000000..401e6a01 --- /dev/null +++ b/.claude/skills/test/pallet.md @@ -0,0 +1,191 @@ +--- +name: test-pallet +description: Run comprehensive tests for the storage pallet +argument-hint: "[--benchmarks] [--coverage]" +disable-model-invocation: true +user-invocable: true +allowed-tools: Bash, Read, Edit, Glob, Grep +--- + +# Test Storage Pallet $ARGUMENTS + +Run comprehensive tests for the Scalable Web3 Storage pallet. + +## Arguments + +- `--benchmarks` - Also run benchmark tests +- `--coverage` - Generate test coverage report + +## Step 1: Pre-flight Checks + +```bash +git status --porcelain +cargo --version +rustc --version +``` + +## Step 2: Format and Lint + +```bash +# Format check +cargo fmt --all -- --check + +# Clippy with warnings as errors +cargo clippy --all-targets --all-features --workspace -- -D warnings +``` + +**If any fail:** Fix formatting/linting issues before proceeding. + +## Step 3: Run Unit Tests + +```bash +# Pallet tests +cargo test -p storage-provider-pallet --all-features + +# Primitives tests +cargo test -p storage-primitives + +# Runtime tests +cargo test -p storage-parachain-runtime +``` + +## Step 4: Run Integration Tests + +```bash +# Provider node tests +cargo test -p storage-provider-node + +# Client SDK tests +cargo test -p storage-client --all-features +``` + +## Step 5: Run Benchmarks (if --benchmarks flag) + +```bash +# Build runtime with benchmark features +cargo build --release -p storage-parachain-runtime --features runtime-benchmarks + +# Run pallet benchmarks +cargo test -p storage-provider-pallet --features runtime-benchmarks benchmark +``` + +## Step 6: Coverage Report (if --coverage flag) + +```bash +# Install tarpaulin if not present +cargo install cargo-tarpaulin + +# Generate coverage +cargo tarpaulin --workspace --out Html --output-dir target/coverage +``` + +**Report location:** `target/coverage/index.html` + +## Step 7: Test Report + +Generate summary: + +``` +✅ Pallet Tests Complete + +Unit Tests: +- Pallet: [PASS/FAIL] +- Primitives: [PASS/FAIL] +- Runtime: [PASS/FAIL] + +Integration Tests: +- Provider Node: [PASS/FAIL] +- Client SDK: [PASS/FAIL] + +Benchmarks: [PASS/FAIL/SKIPPED] +Coverage: [X%/SKIPPED] +``` + +## Common Test Patterns + +### Testing Extrinsics +```rust +#[test] +fn test_register_provider() { + new_test_ext().execute_with(|| { + // Setup + let provider = account(0); + let stake = 1000 * UNIT; + + // Execute + assert_ok!(StorageProvider::register_provider( + RuntimeOrigin::signed(provider), + multiaddr, + public_key, + stake + )); + + // Verify + assert!(Providers::::contains_key(provider)); + }); +} +``` + +### Testing Error Cases +```rust +#[test] +fn test_insufficient_stake() { + new_test_ext().execute_with(|| { + let stake = 100; // Too low + assert_noop!( + StorageProvider::register_provider(/*...*/), + Error::::InsufficientStake + ); + }); +} +``` + +### Testing Events +```rust +#[test] +fn test_provider_registered_event() { + new_test_ext().execute_with(|| { + // Execute + assert_ok!(StorageProvider::register_provider(/*...*/)); + + // Verify event + System::assert_last_event( + Event::ProviderRegistered { provider, stake }.into() + ); + }); +} +``` + +## Critical Test Areas + +1. **Provider Registration** + - Stake requirements + - Duplicate registration + - Invalid parameters + +2. **Storage Agreements** + - Payment calculation + - Duration limits + - Capacity limits + - Agreement acceptance/rejection + +3. **Checkpoints** + - MMR root verification + - Signature validation + - Threshold requirements + +4. **Challenges** + - Proof verification + - Slashing logic + - Challenge timeouts + +5. **Bucket Management** + - Creation + - Member management + - Freezing/unfreezing + +## Links + +- [Pallet Source](/pallets/storage-provider/src/lib.rs) +- For end-to-end exercise: `just demo` (Layer-0 PAPI), `just fs-demo-ci`, `just s3-demo-ci` +- [Runtime](/runtime/src/lib.rs) \ No newline at end of file From 140f01883f6b2f310d3e3a83516709c9ca7f5128 Mon Sep 17 00:00:00 2001 From: Daniel Bui <79790753+danielbui12@users.noreply.github.com> Date: Fri, 10 Jul 2026 18:27:58 +0700 Subject: [PATCH 4/4] refactor: move all pallets to `crates/pallets/` --- .claude/skills/test/pallet.md | 2 +- .github/workflows/check-runtime-migration.yml | 2 +- CLAUDE.md | 13 +++++++------ CONTRIBUTING.md | 2 +- Cargo.toml | 12 ++++++------ README.md | 2 +- .../pallets}/drive-registry/Cargo.toml | 0 .../pallets}/drive-registry/src/bechmarking.rs | 0 .../pallets}/drive-registry/src/lib.rs | 0 .../pallets}/drive-registry/src/migrations.rs | 0 .../pallets}/drive-registry/src/mock.rs | 0 .../pallets}/drive-registry/src/tests.rs | 0 .../pallets}/drive-registry/src/weights.rs | 0 {pallets => crates/pallets}/s3-registry/Cargo.toml | 0 .../pallets}/s3-registry/src/benchmarking.rs | 0 {pallets => crates/pallets}/s3-registry/src/lib.rs | 0 {pallets => crates/pallets}/s3-registry/src/mock.rs | 0 .../pallets}/s3-registry/src/tests.rs | 0 .../pallets}/s3-registry/src/weights.rs | 0 .../pallets}/storage-provider/Cargo.toml | 0 .../pallets}/storage-provider/src/benchmarking.rs | 0 .../storage-provider/src/impls/agreements.rs | 0 .../pallets}/storage-provider/src/impls/buckets.rs | 0 .../storage-provider/src/impls/challenges.rs | 0 .../storage-provider/src/impls/checkpoints.rs | 0 .../storage-provider/src/impls/marketplace.rs | 0 .../pallets}/storage-provider/src/impls/members.rs | 0 .../pallets}/storage-provider/src/impls/mod.rs | 0 .../storage-provider/src/impls/providers.rs | 0 .../pallets}/storage-provider/src/impls/queries.rs | 0 .../storage-provider/src/impls/signatures.rs | 0 .../pallets}/storage-provider/src/lib.rs | 0 .../pallets}/storage-provider/src/migrations.rs | 0 .../pallets}/storage-provider/src/mock.rs | 0 .../pallets}/storage-provider/src/runtime_api.rs | 0 .../storage-provider/src/tests/agreement.rs | 0 .../storage-provider/src/tests/auto_matching.rs | 0 .../pallets}/storage-provider/src/tests/bucket.rs | 0 .../storage-provider/src/tests/challenge.rs | 0 .../storage-provider/src/tests/checkpoint.rs | 0 .../storage-provider/src/tests/end_agreement.rs | 0 .../storage-provider/src/tests/error_paths.rs | 0 .../storage-provider/src/tests/extend_topup.rs | 0 .../pallets}/storage-provider/src/tests/genesis.rs | 0 .../storage-provider/src/tests/member_buckets.rs | 0 .../storage-provider/src/tests/migrations.rs | 0 .../pallets}/storage-provider/src/tests/misc.rs | 0 .../pallets}/storage-provider/src/tests/mod.rs | 0 .../pallets}/storage-provider/src/tests/provider.rs | 0 .../pallets}/storage-provider/src/tests/replica.rs | 0 .../storage-provider/src/tests/runtime_api.rs | 0 .../pallets}/storage-provider/src/weights.rs | 0 docs/design/scalable-web3-storage-implementation.md | 4 ++-- docs/filesystems/ADMIN_GUIDE.md | 2 +- docs/filesystems/README.md | 2 +- docs/reference/EXTRINSICS_REFERENCE.md | 2 +- licenserc.apache.toml | 2 +- provider-node/src/challenge_responder.rs | 2 +- storage-interfaces/file-system/README.md | 2 +- storage-interfaces/s3/README.md | 2 +- .../shared/test-helpers/src/registration.ts | 2 +- 61 files changed, 27 insertions(+), 26 deletions(-) rename {pallets => crates/pallets}/drive-registry/Cargo.toml (100%) rename {pallets => crates/pallets}/drive-registry/src/bechmarking.rs (100%) rename {pallets => crates/pallets}/drive-registry/src/lib.rs (100%) rename {pallets => crates/pallets}/drive-registry/src/migrations.rs (100%) rename {pallets => crates/pallets}/drive-registry/src/mock.rs (100%) rename {pallets => crates/pallets}/drive-registry/src/tests.rs (100%) rename {pallets => crates/pallets}/drive-registry/src/weights.rs (100%) rename {pallets => crates/pallets}/s3-registry/Cargo.toml (100%) rename {pallets => crates/pallets}/s3-registry/src/benchmarking.rs (100%) rename {pallets => crates/pallets}/s3-registry/src/lib.rs (100%) rename {pallets => crates/pallets}/s3-registry/src/mock.rs (100%) rename {pallets => crates/pallets}/s3-registry/src/tests.rs (100%) rename {pallets => crates/pallets}/s3-registry/src/weights.rs (100%) rename {pallets => crates/pallets}/storage-provider/Cargo.toml (100%) rename {pallets => crates/pallets}/storage-provider/src/benchmarking.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/agreements.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/buckets.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/challenges.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/checkpoints.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/marketplace.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/members.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/mod.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/providers.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/queries.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/impls/signatures.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/lib.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/migrations.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/mock.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/runtime_api.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/agreement.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/auto_matching.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/bucket.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/challenge.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/checkpoint.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/end_agreement.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/error_paths.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/extend_topup.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/genesis.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/member_buckets.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/migrations.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/misc.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/mod.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/provider.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/replica.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/tests/runtime_api.rs (100%) rename {pallets => crates/pallets}/storage-provider/src/weights.rs (100%) diff --git a/.claude/skills/test/pallet.md b/.claude/skills/test/pallet.md index 401e6a01..f4f94e5c 100644 --- a/.claude/skills/test/pallet.md +++ b/.claude/skills/test/pallet.md @@ -186,6 +186,6 @@ fn test_provider_registered_event() { ## Links -- [Pallet Source](/pallets/storage-provider/src/lib.rs) +- [Pallet Source](/crates/pallets/storage-provider/src/lib.rs) - For end-to-end exercise: `just demo` (Layer-0 PAPI), `just fs-demo-ci`, `just s3-demo-ci` - [Runtime](/runtime/src/lib.rs) \ No newline at end of file diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml index 9339b2d6..90f2e3f7 100644 --- a/.github/workflows/check-runtime-migration.yml +++ b/.github/workflows/check-runtime-migration.yml @@ -51,7 +51,7 @@ jobs: filters: | runtime: - 'runtimes/**' - - 'pallets/**' + - 'crates/pallets/**' - 'primitives/**' - '**/Cargo.toml' - 'Cargo.lock' diff --git a/CLAUDE.md b/CLAUDE.md index 6873cce4..d504b04d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -212,10 +212,11 @@ export function sameAddress(a, b) { ``` web3-storage/ -├── pallets/ # FRAME pallets (on-chain logic) -│ ├── storage-provider/ # Storage provider pallet (Layer 0) -│ ├── drive-registry/ # Drive Registry pallet (Layer 1 file system) -│ └── s3-registry/ # S3 Registry pallet (Layer 1 S3) +├── crates/ +│ └── pallets/ # FRAME pallets (on-chain logic) +│ ├── storage-provider/ # Storage provider pallet (Layer 0) +│ ├── drive-registry/ # Drive Registry pallet (Layer 1 file system) +│ └── s3-registry/ # S3 Registry pallet (Layer 1 S3) ├── runtimes/ # Parachain runtimes │ ├── web3-storage-local/ # Local testnet runtime (storage-parachain-runtime) │ │ ├── src/lib.rs # Runtime configuration @@ -275,7 +276,7 @@ web3-storage/ #### Layer 0 (Raw Storage) -**Pallet (`pallets/storage-provider/`)**: On-chain logic for provider registration, bucket creation, storage agreements, checkpoints, and challenge/slashing mechanism. +**Pallet (`crates/pallets/storage-provider/`)**: On-chain logic for provider registration, bucket creation, storage agreements, checkpoints, and challenge/slashing mechanism. **Runtime (`runtimes/web3-storage-local/`)**: Parachain runtime that includes the storage provider pallet and configures its parameters (stake requirements, challenge periods, etc.). @@ -304,7 +305,7 @@ web3-storage/ - `CommitStrategy`: Checkpoint strategies (Immediate, Batched, Manual) - Helper functions for CID computation and path handling -**Drive Registry Pallet (`pallets/drive-registry/`)**: On-chain drive management: +**Drive Registry Pallet (`crates/pallets/drive-registry/`)**: On-chain drive management: - Drive creation with automatic infrastructure setup - Root CID tracking for drive state - User-to-drive mapping diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 189bda8e..0bbc9360 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -62,7 +62,7 @@ This repository is dual-licensed. The license that applies depends on the crate: | License | Crates | |---------|--------| | [GPL-3.0-only](LICENSE-GPL3) | `runtimes/`, `provider-node/`, `user-interfaces/` | -| [Apache-2.0](LICENSE-APACHE2) | `pallets/`, `primitives/`, `client/`, `precompiles/`, `storage-interfaces/` | +| [Apache-2.0](LICENSE-APACHE2) | `crates/pallets/`, `primitives/`, `client/`, `precompiles/`, `storage-interfaces/` | Each crate declares its applicable license in its `Cargo.toml` or `package.json`. diff --git a/Cargo.toml b/Cargo.toml index 0d295c65..b5d6aa73 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,9 +2,9 @@ resolver = "2" members = [ "client", - "pallets/drive-registry", - "pallets/s3-registry", - "pallets/storage-provider", + "crates/pallets/drive-registry", + "crates/pallets/s3-registry", + "crates/pallets/storage-provider", "primitives", "provider-node", "provider/negotiation", @@ -35,7 +35,7 @@ repository = "https://github.com/paritytech/web3-storage" # Layer 0: Scalable Web3 Storage (Internal crates) pallet-drive-registry-precompile = { path = "precompiles/drive-registry-precompile", default-features = false } pallet-s3-registry-precompile = { path = "precompiles/s3-registry-precompile", default-features = false } -pallet-storage-provider = { path = "pallets/storage-provider", default-features = false } +pallet-storage-provider = { path = "crates/pallets/storage-provider", default-features = false } pallet-storage-provider-precompile = { path = "precompiles/storage-provider-precompile", default-features = false } provider-negotiation = { path = "provider/negotiation" } storage-client = { path = "client" } @@ -46,10 +46,10 @@ storage-provider-node = { path = "provider-node" } # Storage Interfaces: File System Interface file-system-client = { path = "storage-interfaces/file-system/client" } file-system-primitives = { path = "storage-interfaces/file-system/primitives", default-features = false } -pallet-drive-registry = { path = "pallets/drive-registry", default-features = false } +pallet-drive-registry = { path = "crates/pallets/drive-registry", default-features = false } # Storage Interfaces: S3-Compatible Interface -pallet-s3-registry = { path = "pallets/s3-registry", default-features = false } +pallet-s3-registry = { path = "crates/pallets/s3-registry", default-features = false } s3-client = { path = "storage-interfaces/s3/client" } s3-primitives = { path = "storage-interfaces/s3/primitives", default-features = false } diff --git a/README.md b/README.md index b71de6fb..7313906d 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Two types of nodes work together: ``` scalable-web3-storage/ -├── pallets/ # FRAME pallets (on-chain logic) +├── crates/pallets/ # FRAME pallets (on-chain logic) ├── runtimes/ # Parachain runtimes (web3-storage-local, web3-storage-paseo) ├── provider-node/ # Off-chain storage server (HTTP API) ├── client/ # Client SDK for applications diff --git a/pallets/drive-registry/Cargo.toml b/crates/pallets/drive-registry/Cargo.toml similarity index 100% rename from pallets/drive-registry/Cargo.toml rename to crates/pallets/drive-registry/Cargo.toml diff --git a/pallets/drive-registry/src/bechmarking.rs b/crates/pallets/drive-registry/src/bechmarking.rs similarity index 100% rename from pallets/drive-registry/src/bechmarking.rs rename to crates/pallets/drive-registry/src/bechmarking.rs diff --git a/pallets/drive-registry/src/lib.rs b/crates/pallets/drive-registry/src/lib.rs similarity index 100% rename from pallets/drive-registry/src/lib.rs rename to crates/pallets/drive-registry/src/lib.rs diff --git a/pallets/drive-registry/src/migrations.rs b/crates/pallets/drive-registry/src/migrations.rs similarity index 100% rename from pallets/drive-registry/src/migrations.rs rename to crates/pallets/drive-registry/src/migrations.rs diff --git a/pallets/drive-registry/src/mock.rs b/crates/pallets/drive-registry/src/mock.rs similarity index 100% rename from pallets/drive-registry/src/mock.rs rename to crates/pallets/drive-registry/src/mock.rs diff --git a/pallets/drive-registry/src/tests.rs b/crates/pallets/drive-registry/src/tests.rs similarity index 100% rename from pallets/drive-registry/src/tests.rs rename to crates/pallets/drive-registry/src/tests.rs diff --git a/pallets/drive-registry/src/weights.rs b/crates/pallets/drive-registry/src/weights.rs similarity index 100% rename from pallets/drive-registry/src/weights.rs rename to crates/pallets/drive-registry/src/weights.rs diff --git a/pallets/s3-registry/Cargo.toml b/crates/pallets/s3-registry/Cargo.toml similarity index 100% rename from pallets/s3-registry/Cargo.toml rename to crates/pallets/s3-registry/Cargo.toml diff --git a/pallets/s3-registry/src/benchmarking.rs b/crates/pallets/s3-registry/src/benchmarking.rs similarity index 100% rename from pallets/s3-registry/src/benchmarking.rs rename to crates/pallets/s3-registry/src/benchmarking.rs diff --git a/pallets/s3-registry/src/lib.rs b/crates/pallets/s3-registry/src/lib.rs similarity index 100% rename from pallets/s3-registry/src/lib.rs rename to crates/pallets/s3-registry/src/lib.rs diff --git a/pallets/s3-registry/src/mock.rs b/crates/pallets/s3-registry/src/mock.rs similarity index 100% rename from pallets/s3-registry/src/mock.rs rename to crates/pallets/s3-registry/src/mock.rs diff --git a/pallets/s3-registry/src/tests.rs b/crates/pallets/s3-registry/src/tests.rs similarity index 100% rename from pallets/s3-registry/src/tests.rs rename to crates/pallets/s3-registry/src/tests.rs diff --git a/pallets/s3-registry/src/weights.rs b/crates/pallets/s3-registry/src/weights.rs similarity index 100% rename from pallets/s3-registry/src/weights.rs rename to crates/pallets/s3-registry/src/weights.rs diff --git a/pallets/storage-provider/Cargo.toml b/crates/pallets/storage-provider/Cargo.toml similarity index 100% rename from pallets/storage-provider/Cargo.toml rename to crates/pallets/storage-provider/Cargo.toml diff --git a/pallets/storage-provider/src/benchmarking.rs b/crates/pallets/storage-provider/src/benchmarking.rs similarity index 100% rename from pallets/storage-provider/src/benchmarking.rs rename to crates/pallets/storage-provider/src/benchmarking.rs diff --git a/pallets/storage-provider/src/impls/agreements.rs b/crates/pallets/storage-provider/src/impls/agreements.rs similarity index 100% rename from pallets/storage-provider/src/impls/agreements.rs rename to crates/pallets/storage-provider/src/impls/agreements.rs diff --git a/pallets/storage-provider/src/impls/buckets.rs b/crates/pallets/storage-provider/src/impls/buckets.rs similarity index 100% rename from pallets/storage-provider/src/impls/buckets.rs rename to crates/pallets/storage-provider/src/impls/buckets.rs diff --git a/pallets/storage-provider/src/impls/challenges.rs b/crates/pallets/storage-provider/src/impls/challenges.rs similarity index 100% rename from pallets/storage-provider/src/impls/challenges.rs rename to crates/pallets/storage-provider/src/impls/challenges.rs diff --git a/pallets/storage-provider/src/impls/checkpoints.rs b/crates/pallets/storage-provider/src/impls/checkpoints.rs similarity index 100% rename from pallets/storage-provider/src/impls/checkpoints.rs rename to crates/pallets/storage-provider/src/impls/checkpoints.rs diff --git a/pallets/storage-provider/src/impls/marketplace.rs b/crates/pallets/storage-provider/src/impls/marketplace.rs similarity index 100% rename from pallets/storage-provider/src/impls/marketplace.rs rename to crates/pallets/storage-provider/src/impls/marketplace.rs diff --git a/pallets/storage-provider/src/impls/members.rs b/crates/pallets/storage-provider/src/impls/members.rs similarity index 100% rename from pallets/storage-provider/src/impls/members.rs rename to crates/pallets/storage-provider/src/impls/members.rs diff --git a/pallets/storage-provider/src/impls/mod.rs b/crates/pallets/storage-provider/src/impls/mod.rs similarity index 100% rename from pallets/storage-provider/src/impls/mod.rs rename to crates/pallets/storage-provider/src/impls/mod.rs diff --git a/pallets/storage-provider/src/impls/providers.rs b/crates/pallets/storage-provider/src/impls/providers.rs similarity index 100% rename from pallets/storage-provider/src/impls/providers.rs rename to crates/pallets/storage-provider/src/impls/providers.rs diff --git a/pallets/storage-provider/src/impls/queries.rs b/crates/pallets/storage-provider/src/impls/queries.rs similarity index 100% rename from pallets/storage-provider/src/impls/queries.rs rename to crates/pallets/storage-provider/src/impls/queries.rs diff --git a/pallets/storage-provider/src/impls/signatures.rs b/crates/pallets/storage-provider/src/impls/signatures.rs similarity index 100% rename from pallets/storage-provider/src/impls/signatures.rs rename to crates/pallets/storage-provider/src/impls/signatures.rs diff --git a/pallets/storage-provider/src/lib.rs b/crates/pallets/storage-provider/src/lib.rs similarity index 100% rename from pallets/storage-provider/src/lib.rs rename to crates/pallets/storage-provider/src/lib.rs diff --git a/pallets/storage-provider/src/migrations.rs b/crates/pallets/storage-provider/src/migrations.rs similarity index 100% rename from pallets/storage-provider/src/migrations.rs rename to crates/pallets/storage-provider/src/migrations.rs diff --git a/pallets/storage-provider/src/mock.rs b/crates/pallets/storage-provider/src/mock.rs similarity index 100% rename from pallets/storage-provider/src/mock.rs rename to crates/pallets/storage-provider/src/mock.rs diff --git a/pallets/storage-provider/src/runtime_api.rs b/crates/pallets/storage-provider/src/runtime_api.rs similarity index 100% rename from pallets/storage-provider/src/runtime_api.rs rename to crates/pallets/storage-provider/src/runtime_api.rs diff --git a/pallets/storage-provider/src/tests/agreement.rs b/crates/pallets/storage-provider/src/tests/agreement.rs similarity index 100% rename from pallets/storage-provider/src/tests/agreement.rs rename to crates/pallets/storage-provider/src/tests/agreement.rs diff --git a/pallets/storage-provider/src/tests/auto_matching.rs b/crates/pallets/storage-provider/src/tests/auto_matching.rs similarity index 100% rename from pallets/storage-provider/src/tests/auto_matching.rs rename to crates/pallets/storage-provider/src/tests/auto_matching.rs diff --git a/pallets/storage-provider/src/tests/bucket.rs b/crates/pallets/storage-provider/src/tests/bucket.rs similarity index 100% rename from pallets/storage-provider/src/tests/bucket.rs rename to crates/pallets/storage-provider/src/tests/bucket.rs diff --git a/pallets/storage-provider/src/tests/challenge.rs b/crates/pallets/storage-provider/src/tests/challenge.rs similarity index 100% rename from pallets/storage-provider/src/tests/challenge.rs rename to crates/pallets/storage-provider/src/tests/challenge.rs diff --git a/pallets/storage-provider/src/tests/checkpoint.rs b/crates/pallets/storage-provider/src/tests/checkpoint.rs similarity index 100% rename from pallets/storage-provider/src/tests/checkpoint.rs rename to crates/pallets/storage-provider/src/tests/checkpoint.rs diff --git a/pallets/storage-provider/src/tests/end_agreement.rs b/crates/pallets/storage-provider/src/tests/end_agreement.rs similarity index 100% rename from pallets/storage-provider/src/tests/end_agreement.rs rename to crates/pallets/storage-provider/src/tests/end_agreement.rs diff --git a/pallets/storage-provider/src/tests/error_paths.rs b/crates/pallets/storage-provider/src/tests/error_paths.rs similarity index 100% rename from pallets/storage-provider/src/tests/error_paths.rs rename to crates/pallets/storage-provider/src/tests/error_paths.rs diff --git a/pallets/storage-provider/src/tests/extend_topup.rs b/crates/pallets/storage-provider/src/tests/extend_topup.rs similarity index 100% rename from pallets/storage-provider/src/tests/extend_topup.rs rename to crates/pallets/storage-provider/src/tests/extend_topup.rs diff --git a/pallets/storage-provider/src/tests/genesis.rs b/crates/pallets/storage-provider/src/tests/genesis.rs similarity index 100% rename from pallets/storage-provider/src/tests/genesis.rs rename to crates/pallets/storage-provider/src/tests/genesis.rs diff --git a/pallets/storage-provider/src/tests/member_buckets.rs b/crates/pallets/storage-provider/src/tests/member_buckets.rs similarity index 100% rename from pallets/storage-provider/src/tests/member_buckets.rs rename to crates/pallets/storage-provider/src/tests/member_buckets.rs diff --git a/pallets/storage-provider/src/tests/migrations.rs b/crates/pallets/storage-provider/src/tests/migrations.rs similarity index 100% rename from pallets/storage-provider/src/tests/migrations.rs rename to crates/pallets/storage-provider/src/tests/migrations.rs diff --git a/pallets/storage-provider/src/tests/misc.rs b/crates/pallets/storage-provider/src/tests/misc.rs similarity index 100% rename from pallets/storage-provider/src/tests/misc.rs rename to crates/pallets/storage-provider/src/tests/misc.rs diff --git a/pallets/storage-provider/src/tests/mod.rs b/crates/pallets/storage-provider/src/tests/mod.rs similarity index 100% rename from pallets/storage-provider/src/tests/mod.rs rename to crates/pallets/storage-provider/src/tests/mod.rs diff --git a/pallets/storage-provider/src/tests/provider.rs b/crates/pallets/storage-provider/src/tests/provider.rs similarity index 100% rename from pallets/storage-provider/src/tests/provider.rs rename to crates/pallets/storage-provider/src/tests/provider.rs diff --git a/pallets/storage-provider/src/tests/replica.rs b/crates/pallets/storage-provider/src/tests/replica.rs similarity index 100% rename from pallets/storage-provider/src/tests/replica.rs rename to crates/pallets/storage-provider/src/tests/replica.rs diff --git a/pallets/storage-provider/src/tests/runtime_api.rs b/crates/pallets/storage-provider/src/tests/runtime_api.rs similarity index 100% rename from pallets/storage-provider/src/tests/runtime_api.rs rename to crates/pallets/storage-provider/src/tests/runtime_api.rs diff --git a/pallets/storage-provider/src/weights.rs b/crates/pallets/storage-provider/src/weights.rs similarity index 100% rename from pallets/storage-provider/src/weights.rs rename to crates/pallets/storage-provider/src/weights.rs diff --git a/docs/design/scalable-web3-storage-implementation.md b/docs/design/scalable-web3-storage-implementation.md index 81a89789..bc7ff13a 100644 --- a/docs/design/scalable-web3-storage-implementation.md +++ b/docs/design/scalable-web3-storage-implementation.md @@ -863,7 +863,7 @@ pub enum Event { Read-only queries used by clients (the Rust SDK, demos, and the provider node's membership cache) to discover providers, inspect bucket state, list agreements, and watch challenges without submitting transactions. Defined in -`pallets/storage-provider/src/runtime_api.rs` as `StorageProviderApi`. +`crates/pallets/storage-provider/src/runtime_api.rs` as `StorageProviderApi`. ```rust sp_api::decl_runtime_apis! { @@ -912,7 +912,7 @@ sp_api::decl_runtime_apis! { } ``` -Response types live in `pallets/storage-provider/src/runtime_api.rs` (`ProviderInfoResponse`, +Response types live in `crates/pallets/storage-provider/src/runtime_api.rs` (`ProviderInfoResponse`, `StorageRequirements`, `MatchedProvider`, `BucketResponse`, `AgreementResponse`, `ChallengeResponse`, etc.). They flatten the on-chain structs into encode/decode-friendly shapes (e.g. `AccountId` as `Vec`, diff --git a/docs/filesystems/ADMIN_GUIDE.md b/docs/filesystems/ADMIN_GUIDE.md index a6f34abd..2dc38e86 100644 --- a/docs/filesystems/ADMIN_GUIDE.md +++ b/docs/filesystems/ADMIN_GUIDE.md @@ -373,7 +373,7 @@ let num_providers: u8 = if let Some(min) = min_providers { ```rust // Modify thresholds in pallet code: -// pallets/drive-registry/src/lib.rs +// crates/pallets/drive-registry/src/lib.rs // Example: More aggressive replication if storage_period > 500 { diff --git a/docs/filesystems/README.md b/docs/filesystems/README.md index 090299fb..d0762a29 100644 --- a/docs/filesystems/README.md +++ b/docs/filesystems/README.md @@ -29,7 +29,7 @@ cargo run -p file-system-client --example basic_usage ## Components -- **Drive Registry pallet** (`pallets/drive-registry/`) — on-chain drive metadata, owner mapping, root CID slot. +- **Drive Registry pallet** (`crates/pallets/drive-registry/`) — on-chain drive metadata, owner mapping, root CID slot. - **File-system primitives** (`storage-interfaces/file-system/primitives/`) — shared types: `DriveInfo`, `DirectoryNode`, `FileManifest`, `CommitStrategy`. - **File-system client SDK** (`storage-interfaces/file-system/client/`) — Rust client. Real chain queries via subxt; file operations via the provider's `/fs/{bucket}/...` HTTP endpoints. - **TypeScript SDK** — `FileSystemClient` from `@web3-storage/sdk/fs` (`packages/layer1`), built on the layer-0 chain binding. diff --git a/docs/reference/EXTRINSICS_REFERENCE.md b/docs/reference/EXTRINSICS_REFERENCE.md index 4ed7acb3..2d9d2bce 100644 --- a/docs/reference/EXTRINSICS_REFERENCE.md +++ b/docs/reference/EXTRINSICS_REFERENCE.md @@ -1,6 +1,6 @@ # Storage Provider Pallet - Extrinsics Reference -Quick reference for all available extrinsics in the storage provider pallet ([pallets/storage-provider/src/lib.rs](../../pallets/storage-provider/src/lib.rs)). +Quick reference for all available extrinsics in the storage provider pallet ([crates/pallets/storage-provider/src/lib.rs](../../crates/pallets/storage-provider/src/lib.rs)). ## Provider Management diff --git a/licenserc.apache.toml b/licenserc.apache.toml index 954a67a5..cfeb8d4c 100644 --- a/licenserc.apache.toml +++ b/licenserc.apache.toml @@ -7,12 +7,12 @@ keywords = ["SPDX-License-Identifier"] includes = [ "client/**/*.rs", + "crates/pallets/**/*.rs", "examples/contracts/**/*.sol", "examples/papi/**/*.ts", "packages/**/*.js", "packages/**/*.ts", "packages/**/*.tsx", - "pallets/**/*.rs", "precompiles/**/*.rs", "precompiles/**/*.sol", "primitives/**/*.rs", diff --git a/provider-node/src/challenge_responder.rs b/provider-node/src/challenge_responder.rs index 76850836..a2906e6e 100644 --- a/provider-node/src/challenge_responder.rs +++ b/provider-node/src/challenge_responder.rs @@ -381,7 +381,7 @@ const CHALLENGE_ENTRY_SIZE: usize = 144; /// the decoded `provider` field matches `our_bytes`; `None` when the /// challenge targets a different provider. /// -/// Layout of `Challenge` (see `pallets/storage-provider/src/lib.rs`): +/// Layout of `Challenge` (see `crates/pallets/storage-provider/src/lib.rs`): /// bucket_id (u64) — 8 /// provider (AccountId32) — 32 /// challenger (AccountId32)— 32 diff --git a/storage-interfaces/file-system/README.md b/storage-interfaces/file-system/README.md index 88c970a1..8dc7c756 100644 --- a/storage-interfaces/file-system/README.md +++ b/storage-interfaces/file-system/README.md @@ -48,7 +48,7 @@ Core data structures and types for the file system. - CID computation and manipulation - DAG helper functions -### Drive Registry pallet (`pallets/drive-registry/`) +### Drive Registry pallet (`crates/pallets/drive-registry/`) On-chain registry pallet for drive management. **User-Facing Extrinsics:** diff --git a/storage-interfaces/s3/README.md b/storage-interfaces/s3/README.md index 4f2dec6a..5f53a0a9 100644 --- a/storage-interfaces/s3/README.md +++ b/storage-interfaces/s3/README.md @@ -33,7 +33,7 @@ This module provides an S3-compatible storage interface (Layer 1) on top of the | Component | Path | Description | |-----------|------|-------------| | **s3-primitives** | `primitives/` | Core types and validation functions (no_std compatible) | -| **pallet-s3-registry** | `../../pallets/s3-registry/` | On-chain S3 bucket and object metadata storage | +| **pallet-s3-registry** | `../../crates/pallets/s3-registry/` | On-chain S3 bucket and object metadata storage | | **s3-client** | `client/` | High-level SDK for S3 operations | ## Quick Start diff --git a/user-interfaces/shared/test-helpers/src/registration.ts b/user-interfaces/shared/test-helpers/src/registration.ts index 0fb0d137..f79e4550 100644 --- a/user-interfaces/shared/test-helpers/src/registration.ts +++ b/user-interfaces/shared/test-helpers/src/registration.ts @@ -23,7 +23,7 @@ function publicKeyHex(address: string): string { * Storage key for `pallet_storage_provider::Providers[address]`. Layout * is `twox128(pallet_name) ++ twox128(storage_name) ++ * blake2_128_concat(scale(account))`, matching the FRAME `StorageMap` - * with `Blake2_128Concat` hasher in `pallets/storage-provider/src/lib.rs`. AccountId32 is + * with `Blake2_128Concat` hasher in `crates/pallets/storage-provider/src/lib.rs`. AccountId32 is * 32 raw bytes, so the scale encoding of the key is just those bytes. */ function providersStorageKey(address: string): Uint8Array {