From c0d0f15fab6f009a3334c3f5131c188d1999e2bc Mon Sep 17 00:00:00 2001 From: Magamedrasul Ibragimov Date: Sat, 1 Oct 2022 14:31:36 +0300 Subject: [PATCH] docs: update 'what is rln' section --- src/references.md | 13 +++++++++---- src/terminology.md | 2 +- src/under_the_hood.md | 5 +++++ src/uses.md | 3 +++ src/what_is_rln.md | 12 ++++++++---- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/references.md b/src/references.md index 1caaf1f..d3104c1 100644 --- a/src/references.md +++ b/src/references.md @@ -1,8 +1,13 @@ # References -[Idea was proposed by Barry WhiteHat](https://ethresear.ch/t/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting/5009) -[RLN Overview](https://medium.com/privacy-scaling-explorations/rate-limiting-nullifier-a-spam-protection-mechanism-for-anonymous-environments-bbe4006a57d) +* [First proposal of RLN by Barry WhiteHat](https://ethresear.ch/t/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting/5009) -[RLN Spec](https://hackmd.io/@aeAuSD7mSCKofwwx445eAQ/BJcfDByNF) +* [RLN Overview by Blagoj](https://medium.com/privacy-scaling-explorations/rate-limiting-nullifier-a-spam-protection-mechanism-for-anonymous-environments-bbe4006a57d) -[VAC RLN Spec](https://rfc.vac.dev/spec/32/) +* [Demo RLN Spec](https://hackmd.io/@aeAuSD7mSCKofwwx445eAQ/BJcfDByNF) + +* [VAC RLN Spec](https://rfc.vac.dev/spec/32/) + +* [Understand zkSNARK](https://vitalik.ca/general/2016/12/10/qap.html) + +* [Circom docs](https://docs.circom.io/) \ No newline at end of file diff --git a/src/terminology.md b/src/terminology.md index ecfca07..62b7f45 100644 --- a/src/terminology.md +++ b/src/terminology.md @@ -2,7 +2,7 @@ Term | Description ---- | ----------- -ZK-SNARK | [z.cash/technology/zksnarks/](https://z.cash/technology/zksnarks/) +zkSNARK | Proof construction where one can prove possession of certain information, e.g. a secret key, without revealing that information, and without any interaction between the prover and verifier. Stake | Financial or social stake required for registering in the RLN applications. Common stake examples are: locking cryptocurrency (financial), linking reputable social identity. Identity secret | An array of two unique random components (identity nullifier and identity trapdoor), which must be kept private by the user. Secret hash and identity commitment are derived from this array. Identity nullifier | Random 32 byte value used as component for identity secret generation. diff --git a/src/under_the_hood.md b/src/under_the_hood.md index 9816c43..b356b9a 100644 --- a/src/under_the_hood.md +++ b/src/under_the_hood.md @@ -1 +1,6 @@ # Under the hood + +*[zkSNARK](https://vitalik.ca/general/2022/06/15/using_snarks.html) is used in the **RLN** core. Therefore, we need to represent the protocol in R1CS (as we use Groth16). Circom DSL was chosen for this. This section provides an explanation of RLN circuits.* + +## Circuits + diff --git a/src/uses.md b/src/uses.md index 1e68479..4698c8e 100644 --- a/src/uses.md +++ b/src/uses.md @@ -1 +1,4 @@ # Uses + +## zk-chat +https://github.com/njofce/zk-chat diff --git a/src/what_is_rln.md b/src/what_is_rln.md index fb89b1b..5452ab3 100644 --- a/src/what_is_rln.md +++ b/src/what_is_rln.md @@ -1,12 +1,16 @@ # What is Rate-Limiting Nullifier? -[Idea was proposed by Barry WhiteHat](https://ethresear.ch/t/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting/5009) +*This topic is a part of complete [overview](https://medium.com/privacy-scaling-explorations/rate-limiting-nullifier-a-spam-protection-mechanism-for-anonymous-environments-bbe4006a57d) by Blagoj*. -[RLN Overview](https://medium.com/privacy-scaling-explorations/rate-limiting-nullifier-a-spam-protection-mechanism-for-anonymous-environments-bbe4006a57d) +___ -[RLN Spec](https://hackmd.io/@aeAuSD7mSCKofwwx445eAQ/BJcfDByNF) +**RLN** is a construct based on zero-knowledge proofs that enables spam prevention mechanism for decentralized, anonymous environments. In anonymous environments, the identity of the entities is unknown. -[VAC RLN Spec](https://rfc.vac.dev/spec/32/) +The anonymity property opens up the possibility for spam attack and sybil attack vectors for certain applications, which could seriously degrade the user experience and the overall functioning of the application. For example, imagine a chat application, where users are anonymous. Now, everyone can write unlimited number of spam messages, while we don't have ability to kick this member, because the spammer is anonymous. + +**RLN** helps us identify and "kick" the spammer. + +Moreover RLN can be useful not only to prevent a spam attacks, but in general, to limit users (in anonymous environments) in the number of actions (f.e. to vote or to make a bid). # Circom Circuit for RLN