🖥️Installation
Prerequisites
1. install docker-compose & git
2. Get Ethereum Sepolia WebSocket endpoint via Infura.io (https://app.infura.io/)
3. Get Ethereum Sepolia Faucet minimum <0.01 ETH (https://www.infura.io/faucet/sepolia)
4. EVM Compatible Wallet AddressInstall docker-compose
docker-composeDownload the Docker Compose binary into the
/usr/local/bindirectory:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeVerify that Docker Compose is installed correctly:
docker-compose --versionApply executable permissions to the Docker Compose binary:
sudo chmod +x /usr/local/bin/docker-composeInstall Git
sudo apt-get install gitClone nwaku-compose repo
nwaku-compose repogit clone https://github.com/waku-org/nwaku-compose.gitNavigate to nwaku-compose there is .env.example available for you as a template to use for providing the below values.
docker-compose will read the ./.env file from the filesystem. The process when working with .env files is to copy the .env.example, store it as .env and edit the values there by running the following command:
cp .env.example .envEdit the .env value with your own data
vim .envETH_CLIENT_ADDRESS=wss://sepolia.infura.io/ws/v3/<YOUR_ENDPOINT_KEY_HERE> #RPC URL for accessing testnet via websockets.
ETH_TESTNET_KEY=<YOUR_PRIVATE_KEY_HERE> # Privatekey of testnet where you have sepolia ETH that would be staked into RLN contract (If you can't find one, export private key from your EVM wallet address)
RLN_RELAY_CRED_PASSWORD="<YOUR_CUSTOM_PASSWORD_HERE>" #Password you would like to use to protect your RLN membership
# Advanced (Optional)
NWAKU_IMAGE=
NODEKEY=
DOMAIN=
EXTRA_ARGS=
RLN_RELAY_CONTRACT_ADDRESS=Register RLN membership
This command will register your membership and store it in keystore/keystore.json. Note that if you just want to relay traffic (not publish), you don't need one.
./register_rln.shStart the node
Start all processes: nwaku node, database and grafana for metrics. Your RLN membership is loaded into nwaku under the hood.
docker-compose up -dYour nwaku node exposes a REST API to interact with it.
# get nwaku version
curl http://127.0.0.1:8645/debug/v1/version
# get nwaku info
curl http://127.0.0.1:8645/debug/v1/infoPublish a message to a contentTopic. Everyone subscribed to it will receive it. Note that payload is base64 encoded.
curl -X POST "http://127.0.0.1:8645/relay/v1/auto/messages"
-H "content-type: application/json"
-d '{"payload":"'$(echo -n "Hello Waku Network - from Anonymous User" | base64)'","contentTopic":"/my-app/2/chatroom-1/proto","timestamp":'$(date +%s%N)'}'Get messages sent to a contentTopic. Note that any store node in the network is used to reply.
curl -X GET "http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true" \
-H "accept: application/json"Grafana Node monitoring
Change in docker-compose.yml 127.0.0.0:3000 for 0.0.0.0:3000 and open the port 3000 in the remote machine where you're running your node.
After that you can access it at http://localhost:3000/d/yns_4vFVk/nwaku-monitoring for node metricsLink to official docs : https://github.com/waku-org/nwaku-compose/blob/master/README.md
Last updated