-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
bfc3083
commit acf7fff
Showing
12 changed files
with
123 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# How to run spam prevention on your go-waku node (RLN) | ||
|
||
This guide explains how to run a go-waku node with RLN (Rate Limiting Nullifier) enabled. | ||
|
||
[RLN](https://rfc.vac.dev/spec/32/) is a protocol integrated into waku v2, | ||
which prevents spam-based attacks on the network. | ||
|
||
For further background on the research for RLN tailored to waku, refer | ||
to [this](https://rfc.vac.dev/spec/17/) RFC. | ||
|
||
Registering to the membership group has been left out for brevity. | ||
If you would like to register to the membership group and send messages with RLN, | ||
refer to the [on-chain chat2 tutorial](../../tutorial/onchain-rln-relay-chat2.md). | ||
|
||
This guide specifically allows a node to participate in RLN testnet | ||
You may alter the rln-specific arguments as required. | ||
|
||
|
||
## 1. Update the runtime arguments | ||
|
||
Follow the steps from the [build](./build.md) and [run](./run.md) guides while replacing the run command with - | ||
|
||
```bash | ||
export WAKU_FLEET=<enrtree of the fleet> | ||
export SEPOLIA_WS_NODE_ADDRESS=<WS RPC URL to a Sepolia Node> | ||
export RLN_RELAY_CONTRACT_ADDRESS="0xF471d71E9b1455bBF4b85d475afb9BB0954A29c4" # Replace this with any compatible implementation | ||
$WAKUNODE_DIR/build/waku \ | ||
--dns-discovery \ | ||
--dns-discovery-url="$WAKU_FLEET" \ | ||
--discv5-discovery=true \ | ||
--rln-relay=true \ | ||
--rln-relay-dynamic=true \ | ||
--rln-relay-eth-contract-address="$RLN_RELAY_CONTRACT_ADDRESS" \ | ||
--rln-relay-eth-client-address="$SEPOLIA_WS_NODE_ADDRESS" | ||
``` | ||
|
||
OR | ||
|
||
If you installed go-waku using a `.dpkg` or `.rpm` package, you can use the `waku` command instead of building go-waku yourself | ||
|
||
OR | ||
|
||
If you have the go-waku node within docker, you can replace the run command with - | ||
|
||
```bash | ||
export WAKU_FLEET=<enrtree of the fleet> | ||
export SEPOLIA_WS_NODE_ADDRESS=<WS RPC URL to a Sepolia Node> | ||
export RLN_RELAY_CONTRACT_ADDRESS="0xF471d71E9b1455bBF4b85d475afb9BB0954A29c4" # Replace this with any compatible implementation | ||
docker run -i -t -p 60000:60000 -p 9000:9000/udp \ | ||
-v /absolute/path/to/your/rlnKeystore.json:/rlnKeystore.json:ro \ | ||
statusteam/go-waku:latest \ | ||
--dns-discovery=true \ | ||
--dns-discovery-url="$WAKU_FLEET" \ | ||
--discv5-discovery \ | ||
--rln-relay=true \ | ||
--rln-relay-dynamic=true \ | ||
--rln-relay-eth-contract-address="$RLN_RELAY_CONTRACT_ADDRESS" \ | ||
--rln-relay-eth-client-address="$SEPOLIA_WS_NODE_ADDRESS" | ||
``` | ||
|
||
Following is the list of additional fields that have been added to the | ||
runtime arguments - | ||
|
||
1. `--rln-relay`: Allows waku-rln-relay to be mounted into the setup of the go-waku node. All messages sent and received in this node will require to contain a valid proof that will be verified, and nodes that relay messages with invalid proofs will have their peer scoring affected negatively and will be eventually disconnected. | ||
2. `--rln-relay-dynamic`: Enables waku-rln-relay to connect to an ethereum node to fetch the membership group | ||
3. `--rln-relay-eth-contract-address`: The contract address of an RLN membership group | ||
4. `--rln-relay-eth-client-address`: The websocket url to a Sepolia ethereum node | ||
|
||
The `--dns-discovery-url` flag should contain a valid URL with nodes encoded according to EIP-1459. You can read more about DNS Discovery [here](https://github.com/waku-org/nwaku/blob/master/docs/tutorial/dns-disc.md) | ||
|
||
You should now have go-waku running, with RLN enabled! | ||
|
||
|
||
> Note: This guide will be updated in the future to include features like slashing. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters