Important
This repository contains the research and poc implementation of the Polka Native Storage grant project completed in Q4 2023. A Substrate-based system parachain intended to introduce decentralized storage technology to Polkadot. You can read the results here
A significant part of the research was the implementation of a proof-of-concept, illustrating several aspects of our planned architecture. The PoC demonstrates:
- parachain registration to a local relay chain (test environment)
- parachain block production
- XCM: sending messages between parachains using sudo pallet and ping pallet (in a non-test environment, the sudo pallet would be a system vulnerability and a proper governance mechanism should be used.)
- visibility of the Filecoin actors as pallets in the local parachain
- ability to run parts of the FVM code in the Substrate runtime (WASM)
- the ability to interact with the actors (e.g. miner actor - add miner, change worker address) using extrinsics
- RPC endpoint interaction
- ability to control collator selection set
Repository structure:
doc
- contains the documentation of the projectnode
- contains the implementation of the node along with the RPC featurespallets
- contains the implementation of the PNS runtime modulespolkadot-launch
- contains the configuration of the local development environment (chains)runtime
- contains the implementation of the parachain runtimescripts
- contains the scripts used to build or test the project
Download the polka-native-storage
parachain repository:
git clone https://github.com/eigerco/polkadot-native-storage polka-storage
Then build it:
cd polka-storage
cargo build --release
The above is enough to have your own node. To test it please refer to the testing guide for more information about how to setup local relay chain and how to incorporate PNS parachain into local development environment.
To join the other networks please refer to the appropriate documentation of the network you would like to join.
It is possible to generate a docker image containing a working polka-storage-node
with all pallets built-in. It also contains a local relay-chain for testing. To generate an image, run:
sudo docker build -t "pns:Dockerfile" .
Please note that building may require a lot of time and resources. Linux system is preferred to build the image.
When the build is ready, you can check if you can see the image in the docker repository by running:
sudo docker images
To run the image, enter:
sudo docker run pns:Dockerfile
It will start the polka-storage-node
on the local interface and two relay chain nodes. You can change the default behavior by passing your own command when running the docker image. All available options are in the node template documentation.
To stop the nodes you may use docker stop
command:
sudo docker stop <container_id>
About Eiger
We are engineers. We contribute to various ecosystems by building low-level implementations and core components. We contribute to Polkadot because we believe in the vision. In addition to our efforts to implement a storage network we also brought Move to Substrate, read more about that on our blog. We are also currently working on Strawberry, our Go implementation of JAM.
Contact us at hello@eiger.co Follow us on X/Twitter