🖥️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 Address
Install docker-compose
docker-compose
Download the Docker Compose binary into the
/usr/local/bin
directory:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Verify that Docker Compose is installed correctly:
docker-compose --version
Apply executable permissions to the Docker Compose binary:
sudo chmod +x /usr/local/bin/docker-compose
Install Git
sudo apt-get install git
Clone nwaku-compose
repo
nwaku-compose
repogit clone https://github.com/waku-org/nwaku-compose.git
Navigate 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 .env
Edit the .env value with your own data
vim .env
ETH_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.sh
Start 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 -d
Your 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/info
Publish 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 metrics
Link to official docs : https://github.com/waku-org/nwaku-compose/blob/master/README.md
Last updated