Iris is a decentralized network built with Substrate and IPFS for creating, owning, and sharing secret data.
-
👉 Learn more about the project and team at https://idealabs.network
-
📘 Read our technical docs to learn about the inner working of Iris
Follow the steps below to get started with the Iris node or take a look at our technical docs for more in depth guides.
- Install Rust and dependencies
curl https://sh.rustup.rs -sSf | sh
rustup update
sudo apt install build-essential git clang libclang-dev pkg-config libssl-devClone the main repo and build the node. This can take up to 10 minutes.
git clone https://github.com/ideal-lab5/iris.git
cd iris
cargo +nightly build --release# purge the local chain data
./target/release/node-template purge-chain --base-path /tmp/alice --dev -y
# run the build
./target/release/iris-node \
--base-path /tmp/alice \
--dev \
--alice \
--port 30333 \
--ws-port 9944 \
--rpc-port 9933 \
--rpc-cors all \
--ws-external \
--rpc-external \
--rpc-methods=unsafe \
--validator \
--node-key 0000000000000000000000000000000000000000000000000000000000000001Note: to specify a bootnode, use the bootnodes parameter. ex: --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEdUQFXhAF4fu9hqRTWqsigioyjatRKRZ7mwyQCBoWyK3
Install from the docker hub
docker pull ideallabs/iris
OR
From the latest sources, build the docker image:
docker build -t ideallabs/iris -f /Dockerfile .
# run as validator node (e.g. first node)
docker run -p 9944:9944 \
-p 9933:9933 \
-p 30333:30333 \
-p 9615:9615 \
-it \
--rm \
--name iris-alice \
ideallabs/iris \
--dev --ws-external --rpc-external --validator --alice \
--node-key 0000000000000000000000000000000000000000000000000000000000000001See here for a more in depth treatment of
- install IPFS and configure
wget https://dist.ipfs.io/kubo/v0.14.0/kubo_v0.14.0_linux-amd64.tar.gz
tar -xvzf kubo_v0.14.0_linux-amd64.tar.gz
cd kubo
sudo bash install.sh
ipfs --versionUpdate your ipfs configuration to specify the IPFS bootstrap nodes exposed by the testnet. This step will allow Iris gateway nodes to find your data.
First, ensure that your ipfs node is reachable
ipfs config Addresses.API "/ip4/0.0.0.0/tcp/5001"
ipfs config Addresses.Gateway "/ip4/0.0.0.0/tcp/8080"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]"This step is optional. Generally, finding peers in the IPFS DHT is rather slow. Due to this, using a public IPFS network can mean that the calls to find data take a very long time, which causes validator nodes to be removed from the validator set. Due to this, it is recommended that you either use the swarm.key in use by Iris or generate your own.
Generate a swarm key:
echo -e "/key/swarm/psk/1.0.0/\n/base16/\n`tr -dc 'a-f0-9' < /dev/urandom | head -c64`" > ~/.ipfs/swarm.keyand share the generated file with each validator in your testnet.
Now, configure Available bootstrap nodes are available in the 'bootstrap nodes' runtime storage map in the ipfs pallet.
# fetch the swarm.key and copy it to your .ipfs folder
wget https://raw.githubusercontent.com/driemworks/iris/main/swarm.key
# reconfigure bootstrap nodes
ipfs bootstrap rm --all
# replace the
ipfs bootstrap add /ip4/<ip address>/tcp/4001/p2p/<peerID>cargo +nightly build --release
./target/release/iris-node build-spec --chain=dev --raw --disable-default-bootnode > iris.jsonRun the unit tests with cargo +nightly test iris.
We aim for a minimum of 80% coverage on new code.

