The example go through the following steps:
- Deploy the necessary contracts: verifier (the mock proof verifier since it's not yet generated), ERC20 token, and the RLN contract
- Create a RLN instance
rln
, and demonstrate how toregister
,createProof
,verifyProof
,withdraw
, andreleaseWithdrawal
. - Create a RLN instance
rlnAnother
and demonstrate how to slash a spammer.rlnAnother
simplyregister
and send more proofs than they should.rln
can detect the spam by examine the output fromsaveProof
. If the status of the output is BREACH, the secret is leaked.rln
can use the recovered secret to slash the spammer by callingslash
.
To install and run the example, follow the steps below.
- Install the project
$ npm install
- Run a local testing RPC
Here we use a hardhat node. If the RPC is not listening
http://localhost:8545
, you need to change theurl
in config.ts.
In a new terminal, run:
$ npx hardhat node
- Run the example in a browser "Try npm run clean if you've made changes to the code but the web page is not updated"
$ npm run browser
...
Available on:
http://127.0.0.1:8080
http://192.168.50.66:8080
Hit CTRL-C to stop the server
Open the web page at http://localhost:8080
. You should see the following output in the browser console.
Connecting to endpoint at http://localhost:8545
Deploying contracts...
...
Successfully breached rlnAnother's secret=xxx
Successfully slashed rlnAnother
- Run the example in NodeJS
$ npm run node
...
Connecting to endpoint at http://localhost:8545
Deploying contracts...
...
Successfully breached rlnAnother's secret=xxx
Successfully slashed rlnAnother