2021-09-13 11:09:53 +00:00
# go-rln
2021-09-13 16:41:52 +00:00
Wrappers for [kilic/rln ](https://github.com/kilic/rln ) along with an implementation for rate-limiting using RLN inspired
by the [Waku v2 RLN Relay ](https://rfc.vac.dev/spec/17/ ) built by [Status ](https://status.im ).
2021-09-13 16:45:11 +00:00
Further research can be found here:
- https://forum.vac.dev/t/vac-3-zk/97
- https://github.com/vacp2p/research/tree/master/rln-research
2021-09-13 19:55:38 +00:00
- https://ethresear.ch/t/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting/5009
2021-09-13 16:45:11 +00:00
2021-09-13 20:45:07 +00:00
The goal of this is to create a rate-limiter for blockchains where block production is cheap. I started playing around with this
after talking to the team at [Celestia ](https://celestia.org/ ).
2022-07-04 17:01:54 +00:00
### Building this library
#### Using [cross](https://github.com/cross-rs)
```
make rlnlibs-cross
```
Some architectures are not available in cross unless they're locally build. This [PR ](https://github.com/cross-rs/cross/pull/591 ) will update ubuntu base version on cross. But while it's merged, build them locally. To build them locally execute the following instructions (adapted from [here ](https://github.com/cross-rs/cross/wiki/FAQ#newer-linux-versions )):
```
git clone --single-branch --depth 1 --branch increment_versions https://github.com/Alexhuszagh/cross
cd cross
cargo build-docker-image x86_64-pc-windows-gnu
cargo build-docker-image aarch64-unknown-linux-gnu
cargo build-docker-image x86_64-unknown-linux-gnu
cargo build-docker-image arm-unknown-linux-gnueabi
cargo build-docker-image i686-pc-windows-gnu
cargo build-docker-image i686-unknown-linux-gnu
cargo build-docker-image arm-unknown-linux-gnueabihf
cargo build-docker-image mips-unknown-linux-gnu
cargo build-docker-image mips64-unknown-linux-gnuabi64
cargo build-docker-image mips64el-unknown-linux-gnuabi64
cargo build-docker-image mipsel-unknown-linux-gnu
```
#### Using [rustup](https://rust-lang.github.io/rustup/cross-compilation.html)
```
make rlnlibs-cross
```