pnpm is used in this project as the JavaScript package manager to install dependencies. To install it you can follow the official instructions at: https://pnpm.io/installation
The quickest way is via their script: curl -fsSL https://get.pnpm.io/install.sh | sh -
Important
This is required for DEV & BSPNET modes.
cargo build --releaseImportant
If you are running this on a Mac, zig is a pre-requisite for crossbuilding the node. See the Zig installation guide.
pnpm i
pnpm crossbuild:macpnpm docker:buildcargo build --release -p sh-msp-backendImportant
If you are running this on a Mac, zig is a pre-requisite for crossbuilding the backend. See the Zig installation guide.
pnpm i
pnpm crossbuild:mac:backendpnpm docker:build:backendThis is a small network running in dev mode, with manual sealing on blocks, between a BSP & a User node. This is used to test the merklisation of files, and their retrieval.
pnpm test:bspnetThe storage-hub node is run in a Docker container in dev mode, so that it can be isolated and parallelized across multiple threads & runners. The purpose of this suite is verify the functionality of both the RPC and the runtime.
Important
Provider functionality is not covered here, only how the system chain behaves.
pnpm test:nodeNote
Please ensure the Rust project is built first, e.g., cargo build --release.
This is required as currently we only support native binaries.
In /test run: pnpm install to install ZombieNet
# In the /test directory
pnpm i
pnpm zombie:run:full:nativeWait for ZombieNet network to start, and then:
pnpm typegen
pnpm zombie:setup:native
pnpm test:fullImportant
Requires both images: node (pnpm docker:build) and backend (pnpm docker:build:backend). On macOS, build the backend via pnpm crossbuild:mac:backend; on Linux, cargo build --release -p sh-msp-backend. The backend Docker build uses docker/storage-hub-msp-backend.Dockerfile.
# In the /test directory
pnpm i
pnpm test:backendRuns a local full network with indexer and the backend, then executes backend tests.
Important
Requires both images: node (pnpm docker:build) and backend (pnpm docker:build:backend). On macOS, build the backend via pnpm crossbuild:mac:backend; on Linux, cargo build --release -p sh-msp-backend. The backend Docker build uses docker/storage-hub-msp-backend.Dockerfile.
# In the /test directory
pnpm i
pnpm test:solochain-evmLaunches Solochain EVM runtime with indexer and backend enabled and runs SDK precompile tests.
This is the networking testing suite for topology and network stability. It is a suite of tests that run on a network of nodes, and is used to verify the network's stability and the nodes' ability to communicate with each other.
pnpm zombie:test:native- Native launch:
../target/release/storage-hub --dev - Docker launch (local):
pnpm docker:start/pnpm docker:stop - Docker launch (latest):
pnpm docker:start:latest/pnpm docker:stop:latest
pnpm docker:start:bspnetThis will start a BSPNet network with a BSP and a User node. As part of the setup it will force onboard a MSP and BSP, and then upload a file from user node.
pnpm docker:start:solochain-evm:initialisedStarts a full network on Solochain EVM runtime with indexer and backend, pre-initialised for demos.
Note
The BSP id is chosen to be the fingerprint of a file that is uploaded by the user node. This is done to "game the system" to ensure that the BSP is guaranteed to be selected to store the file.
- Docker launch (local):
pnpm docker:start:noisynet/pnpm docker:stop:noisynet
Tip
Polkadot binaries are required to run a ZombieNet network.
For Linux you can run the script: pnpm tsx scripts/downloadPolkadot.ts <version>
For macOS you will have to compile from source.
To launch a non-ephemeral ZombieNet network by executing the following in: /test directory:
pnpm install
pnpm zombie:run:nativeFrom here you should see in the terminal, the different nodes being spun up. When the network is fully launched, you should see something like this:
From here you can interact via the websockets exposed in the direct links, in the example above we have:
- Alice (relay):
35005 - Bob (relay):
37613 - Collator (storage-hub):
45615
This repo uses polkadot{.js} TS Type Generation AKA api-augment.
To generate new type interfaces run the following in /test:
pnpm typegenTip
Like with other commands, this assumes you have built a node binary and Docker image before executing this activity.

