Deployment docker-compose files to deploy an nwaku node
Go to file
Václav Pavlín 7b8cebc0ce
add a comment to readme
2023-11-13 12:58:23 +01:00
monitoring Add invalid RLN messages to dashboard (#26) 2023-11-10 19:13:48 +01:00
postgres_cfg Initial release of nwaku-compose 2023-08-09 12:36:03 +02:00
.env.example add a comment to readme 2023-11-13 12:58:23 +01:00
.gitignore feat: add support for .env 2023-11-13 12:55:56 +01:00
ADVANCED.md Minor changes in md files (#21) 2023-11-10 08:56:34 +01:00
README.md add a comment to readme 2023-11-13 12:58:23 +01:00
docker-compose.yml feat: add support for .env 2023-11-13 12:55:56 +01:00
register_rln.sh feat: add support for .env 2023-11-13 12:55:56 +01:00
run_node.sh feat: add support for .env 2023-11-13 12:55:56 +01:00

README.md

nwaku-compose

Ready to use docker-compose to run your own nwaku full node:

  • nwaku node running relay and store protocols with RLN enabled.
  • Simple frontend to interact with your node and the network, to publish and receive messages.
  • Grafana dashboard for advanced users or node operators.
  • Requires docker-compose and git.

📝 0. Prerequisites

You need:

  • Ethereum Sepolia WebSocket endpoint. Get one free from Infura.
  • Ethereum Sepolia account with some balance <0.01 Eth. Get some here.
  • A password to protect your rln membership.

You can either export the environment variable (keep in mind that this will expose your secrets in your shell history)

export ETH_CLIENT_ADDRESS=wss://sepolia.infura.io/ws/v3/YOUR_INFURA_KEY
export ETH_TESTNET_KEY=REPLACE_BY_YOUR_KEY
export RLN_RELAY_CRED_PASSWORD=PICK_A_PASSWORD

Or you can use .env file - copy the example and edit the variables inside

cp .env.example .env

🔑 1. Register RLN membership

The RLN membership is your access key to The Waku Network. Its registration is done onchain, and allows your nwaku node to publish messages in a decentralized and private way, respecting some rate limits. Messages exceeding the rate limit won't be relayed by other peers.

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

🖥️ 2. Start your 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

🏄🏼‍♂️ 3. Interact with your nwaku node

📬 4. Use the REST API

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"}'

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"

For advanced documentation, refer to ADVANCED.md.