Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughA new RFC document defining a privacy-preserving compensation mechanism for Exit/Recipient nodes in the HOPR protocol. The specification covers sender deposit commitments, SURB construction with stealth parameters, recipient verification flows, VSSS-based nonce sharing, and reward claiming from a shielded pool while maintaining unlinkability. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (17)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (17)
15-16: Remove or Replace Placeholder in Abstract Section
A placeholder HTML comment still exists on line 15–16. If you intend for the final RFC text to be self-contained, consider removing or replacing this placeholder with a concise summary.
27-28: Placeholder Comment in Motivation Section
Lines 27–28 contain a guideline comment. If this text is only meant to inform the drafting process, consider removing it before final publication to avoid cluttering the final document.
42-44: Improve Verb Agreement in the Incentivization Introduction
The sentence beginning on line 42 contains “this propose an incentivization mechanism for the RPs…” Consider rephrasing to “this proposes an incentivization mechanism for the RPs” or “this proposal outlines an incentivization mechanism…” to improve subject–verb agreement and clarity.🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
🪛 markdownlint-cli2 (0.17.2)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
64-65: Correct Spelling of “Commitment”
In the terminology section (lines 64–65), “Committment” is used instead of “Commitment.” Please correct the spelling for clarity and consistency.
133-134: Fix Verb Conjugation in Session Initiation
Line 133 states “Recipient create a random nonce…” and line 134 uses “Recipient send to Sender…”. For proper subject–verb agreement, consider changing these to “Recipient creates a random nonce…” and “Recipient sends to Sender…” respectively.🧰 Tools
🪛 LanguageTool
[uncategorized] ~133-~133: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...fined nonce through handshake Recipient create a random nonce (recipient_nonce$n_r$ ...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~134-~134: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...uring the Session initiation, Recipient send to Sender the hash of the nonce $H(n_r)...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
142-142: Correct Typographical Errors in Parameter Description
Line 142 contains typos: “relavant parametes” should be corrected to “relevant parameters.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~142-~142: You might be missing the article “the” here.
Context: ...\hspace{0.5em} || \hspace{0.5em} S_c)$ Sender takes network-level properties and comp...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
143-143: Hyphenate “Sender-specific”
In the explanation on line 143, “Sender specific winning probability” would be clearer as “Sender-specific winning probability” to indicate the modifier applies directly to the probability.
145-145: Fix Typo in “Threshold” Description
Line 145 refers to “VSSS threhsold factor$F$ .” Please change “threhsold” to “threshold” to ensure technical correctness.
147-147: Ensure Correct Verb Agreement in Path Selection Description
The sentence on line 147 (“Sender does the path selections and thus know a full list…”) should be revised for agreement. Consider “Sender makes the path selections and thus knows the full list of public keys of FRs.”
172-172: Refine Sentence Structure in SURB Batch Description
Line 172 is split into two short sentences: “When the SURB Batch gets sent to the Recipient. Public inputs of the deposit commitment is also sent along:” Consider merging or rephrasing for clarity (for example, “When the SURB Batch is sent to the Recipient, the public inputs of the deposit commitment are included:”).🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
172-172: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
182-182: Fix Verb Form in Deposit Verification Check
On line 182, “Recipient checks the nullifier hash has not be used” should be corrected to “Recipient checks that the nullifier hash has not been used.”🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
182-182: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
185-185: Remove Redundant Word in Acknowledgement Statement
Line 185 contains a duplicate “of” (“…acknowledgement of of a packet…”). Removing the extra word will improve readability.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
185-185: Line length
Expected: 120; Actual: 130(MD013, line-length)
186-186: Correct Plural Agreement in Secret Reconstruction Statement
In line 186, “…verifies it using coefficient commitments when the shares reaches the VSSS threshold…” should be modified to “…when the shares reach the VSSS threshold…” because “shares” is plural.🧰 Tools
🪛 LanguageTool
[grammar] ~186-~186: Possible agreement error -- use the past participle here.
Context: ...pient checks the nullifier hash has not be used. ### 5. Secret reconstruction Whe...(HAVE_PART_AGREEMENT)
188-188: Improve Clarity in Early Claim Termination Clause
Line 188 (“When a fraud of early claim from the Sender is detected, Recipient SHALL immediately terminate the return of responses.”) is a bit awkward. Rephrasing it to something like “Upon detection of a fraudulent early claim by the Sender, the Recipient SHALL immediately cease sending responses” would improve clarity.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
199-199: Remove Extraneous Parenthesis in Withdrawal Proof Description
Line 199 contains an extra closing parenthesis in the expression for deposit commitment:
$hash(n_{nullifier} \hspace{0.5em} || \hspace{0.5em} S_c))
Please remove the extra parenthesis so that it reads as:
$hash(n_{nullifier} \hspace{0.5em} || \hspace{0.5em} S_c)$.
222-222: Correct Typo in Drawbacks Section
Line 222 contains “complet such transactions.” Please correct “complet” to “complete.”
1-259: General Markdown and Grammar Cleanup Recommendations
There are several markdownlint and grammar issues throughout the document (e.g., trailing spaces, multiple consecutive blank lines, missing blank lines around headings, and a few subject–verb agreement issues as flagged by static analysis). Cleaning up these formatting and grammatical aspects will enhance clarity and readability.🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
[uncategorized] ~74-~74: You might be missing the article “the” here.
Context: ... participants. In the context of SURB, Sender knows the secret and generates the shar...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~133-~133: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...fined nonce through handshake Recipient create a random nonce (recipient_nonce$n_r$ ...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~134-~134: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...uring the Session initiation, Recipient send to Sender the hash of the nonce $H(n_r)...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~139-~139: Loose punctuation mark.
Context: ...fier$n_{nullifier}$}. -nullifier: 256-bit random value -secret`: 256...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: You might be missing the article “the” here.
Context: ...\hspace{0.5em} || \hspace{0.5em} S_c)$ Sender takes network-level properties and comp...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~144-~144: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
[uncategorized] ~148-~148: A determiner appears to be missing. Consider inserting it.
Context: ...SURB Batch$$k = F \times N_{batch}$$ Sender does the path selections and thus know ...(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~149-~149: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
[uncategorized] ~166-~166: A determiner appears to be missing. Consider inserting it.
Context: ...is RECOMMENDED to use an ephemeral key. Sender interacts with the shielded pool to sto...(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~176-~176: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~186-~186: Possible agreement error -- use the past participle here.
Context: ...pient checks the nullifier hash has not be used. ### 5. Secret reconstruction Whe...(HAVE_PART_AGREEMENT)
[duplication] ~189-~189: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~190-~190: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold$k_{vsss}$ This pre...(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
[uncategorized] ~193-~193: Possible missing article found.
Context: ...arly claim from the Sender is detected, Recipient SHALL immediately terminate the return ...(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
19-19: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
68-68: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
71-71: Line length
Expected: 120; Actual: 140(MD013, line-length)
73-73: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
82-82: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
131-131: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
139-139: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
139-139: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
140-140: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
141-141: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
144-144: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
144-144: Line length
Expected: 120; Actual: 328(MD013, line-length)
144-144: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
144-144: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
144-144: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
146-146: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
152-152: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
156-156: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
161-161: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
163-163: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
164-164: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
170-170: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
172-172: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
177-177: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
181-181: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
182-182: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
184-184: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
185-185: Line length
Expected: 120; Actual: 130(MD013, line-length)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
190-190: Line length
Expected: 120; Actual: 147(MD013, line-length)
204-204: Line length
Expected: 120; Actual: 164(MD013, line-length)
206-206: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
213-213: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
223-223: Line length
Expected: 120; Actual: 127(MD013, line-length)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
238-238: Line length
Expected: 120; Actual: 158(MD013, line-length)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[uncategorized] ~74-~74: You might be missing the article “the” here.
Context: ... participants. In the context of SURB, Sender knows the secret and generates the shar...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~133-~133: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...fined nonce through handshake Recipient create a random nonce (recipient_nonce
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~134-~134: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...uring the Session initiation, Recipient send to Sender the hash of the nonce $H(n_r)...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~139-~139: Loose punctuation mark.
Context: ...fier$n_{nullifier}$}. -nullifier: 256-bit random value - secret`: 256...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: You might be missing the article “the” here.
Context: ...\hspace{0.5em} || \hspace{0.5em} S_c)$ Sender takes network-level properties and comp...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~144-~144: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[uncategorized] ~148-~148: A determiner appears to be missing. Consider inserting it.
Context: ...SURB Batch
(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~149-~149: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[uncategorized] ~166-~166: A determiner appears to be missing. Consider inserting it.
Context: ...is RECOMMENDED to use an ephemeral key. Sender interacts with the shielded pool to sto...
(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~176-~176: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...
(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~186-~186: Possible agreement error -- use the past participle here.
Context: ...pient checks the nullifier hash has not be used. ### 5. Secret reconstruction Whe...
(HAVE_PART_AGREEMENT)
[duplication] ~189-~189: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...
(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~190-~190: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold
(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
[uncategorized] ~193-~193: Possible missing article found.
Context: ...arly claim from the Sender is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
19-19: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
68-68: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
71-71: Line length
Expected: 120; Actual: 140
(MD013, line-length)
73-73: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
82-82: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
131-131: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
139-139: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
139-139: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
140-140: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
141-141: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
144-144: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
144-144: Line length
Expected: 120; Actual: 328
(MD013, line-length)
144-144: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
144-144: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
144-144: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
146-146: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
152-152: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
156-156: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
161-161: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
163-163: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
164-164: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
170-170: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
172-172: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
177-177: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
181-181: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
182-182: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
184-184: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
185-185: Line length
Expected: 120; Actual: 130
(MD013, line-length)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
190-190: Line length
Expected: 120; Actual: 147
(MD013, line-length)
204-204: Line length
Expected: 120; Actual: 164
(MD013, line-length)
206-206: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
213-213: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
223-223: Line length
Expected: 120; Actual: 127
(MD013, line-length)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
238-238: Line length
Expected: 120; Actual: 158
(MD013, line-length)
🔇 Additional comments (2)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (2)
3-11: Metadata and RFC Header Updates Look Good
The updates to the metadata (status, author, dates, version, supersedes, and references) conform with the intended revisions. Minor formatting (e.g. trailing spaces) could be cleaned up later for consistency.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
17-23: Abstract Content Provides a Clear Overview
The abstract now clearly outlines the privacy-preserving compensation mechanism for Exit nodes. The description is concise and well-aligned with the RFC’s objectives.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
19-19: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (6)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (6)
15-23: Abstract Section: Clarity & FormattingThe abstract concisely outlines the privacy-preserving mechanism and the compensation strategy for Exit nodes. Consider removing any trailing spaces and double–check that the inline markdown formatting (e.g., emphasis and links) renders consistently across viewers.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
19-19: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
27-45: Motivation Section: Clarity and Grammatical CorrectionThe motivation section explains the challenges and the need for a privacy-preserving RP incentive well. However, on lines 41–42, the phrase:
- this propose an incentivization mechanism for the RPs, which has the following properties: + this proposes an incentivization mechanism for the RPs, which has the following properties:should be corrected for subject–verb agreement.
🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
🪛 markdownlint-cli2 (0.17.2)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
49-57: Terminology Section: Consistency and SpellingThe terminology definitions are clear and comprehensive. As a suggestion, please verify the spelling of “Committment” (line 64) and consider changing it to “Commitment” for consistency with common usage:
- **Committment**: A cryptographic representation of a deposit. `commitment = H(nullifier || commitment_secret)` + **Commitment**: A cryptographic representation of a deposit. `commitment = H(nullifier || commitment_secret)`
83-129: Specification & Sequence Diagram: Clear Protocol FlowThe specification section—with its detailed steps and the mermaid sequence diagram—provides an excellent visual overview of the protocol flow. Please ensure that:
- Trailing spaces and extra blank lines (as flagged by markdown linters) are cleaned up.
- The mermaid diagram renders consistently in all intended environments.
130-240: Markdown Style ImprovementsA number of markdown lint issues were flagged (e.g., trailing spaces, multiple consecutive blank lines, missing blank lines around headings/lists, and some lines exceeding the recommended length). Although these do not affect the RFC’s technical content, addressing them will improve readability and maintainability. Consider running a markdown linter (e.g., markdownlint) to clean these up.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~133-~133: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...fined nonce through handshake Recipient create a random nonce (recipient_nonce$n_r$ ...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~134-~134: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...uring the Session initiation, Recipient send to Sender the hash of the nonce $H(n_r)...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~139-~139: Loose punctuation mark.
Context: ...fier$n_{nullifier}$}. -nullifier: 256-bit random value -secret`: 256...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: You might be missing the article “the” here.
Context: ...\hspace{0.5em} || \hspace{0.5em} S_c)$ Sender takes network-level properties and comp...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~144-~144: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
[uncategorized] ~148-~148: A determiner appears to be missing. Consider inserting it.
Context: ...SURB Batch$$k = F \times N_{batch}$$ Sender does the path selections and thus know ...(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~149-~149: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
[uncategorized] ~166-~166: A determiner appears to be missing. Consider inserting it.
Context: ...is RECOMMENDED to use an ephemeral key. Sender interacts with the shielded pool to sto...(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~176-~176: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~186-~186: Possible agreement error -- use the past participle here.
Context: ...pient checks the nullifier hash has not be used. ### 5. Secret reconstruction Whe...(HAVE_PART_AGREEMENT)
[duplication] ~189-~189: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~190-~190: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold$k_{vsss}$ This pre...(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
[uncategorized] ~193-~193: Possible missing article found.
Context: ...arly claim from the Sender is detected, Recipient SHALL immediately terminate the return ...(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
131-131: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
139-139: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
139-139: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
140-140: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
141-141: Unordered list indentation
Expected: 0; Actual: 3(MD007, ul-indent)
144-144: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
144-144: Line length
Expected: 120; Actual: 328(MD013, line-length)
144-144: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
144-144: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
144-144: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
146-146: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
152-152: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
156-156: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
161-161: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
163-163: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
164-164: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
170-170: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
172-172: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
177-177: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
181-181: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
182-182: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
184-184: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
185-185: Line length
Expected: 120; Actual: 130(MD013, line-length)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
190-190: Line length
Expected: 120; Actual: 147(MD013, line-length)
204-204: Line length
Expected: 120; Actual: 164(MD013, line-length)
206-206: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
213-213: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
223-223: Line length
Expected: 120; Actual: 127(MD013, line-length)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
238-238: Line length
Expected: 120; Actual: 158(MD013, line-length)
239-239: Line length
Expected: 120; Actual: 342(MD013, line-length)
241-260: Placeholder Sections: Future ExpansionThe sections on “Drawbacks,” “Alternatives,” “Unresolved Questions,” and “Future Work” currently serve as placeholders. As this RFC evolves, ensure that these sections are expanded with detailed discussions, analysis of trade-offs, potential mitigations, and any open issues that require further community input.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[uncategorized] ~74-~74: You might be missing the article “the” here.
Context: ... participants. In the context of SURB, Sender knows the secret and generates the shar...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~133-~133: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...fined nonce through handshake Recipient create a random nonce (recipient_nonce
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~134-~134: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...uring the Session initiation, Recipient send to Sender the hash of the nonce $H(n_r)...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~139-~139: Loose punctuation mark.
Context: ...fier$n_{nullifier}$}. -nullifier: 256-bit random value - secret`: 256...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: You might be missing the article “the” here.
Context: ...\hspace{0.5em} || \hspace{0.5em} S_c)$ Sender takes network-level properties and comp...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~144-~144: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[uncategorized] ~148-~148: A determiner appears to be missing. Consider inserting it.
Context: ...SURB Batch
(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~149-~149: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[uncategorized] ~166-~166: A determiner appears to be missing. Consider inserting it.
Context: ...is RECOMMENDED to use an ephemeral key. Sender interacts with the shielded pool to sto...
(AI_EN_LECTOR_MISSING_DETERMINER)
[grammar] ~176-~176: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...
(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~186-~186: Possible agreement error -- use the past participle here.
Context: ...pient checks the nullifier hash has not be used. ### 5. Secret reconstruction Whe...
(HAVE_PART_AGREEMENT)
[duplication] ~189-~189: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...
(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~190-~190: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold
(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
[uncategorized] ~193-~193: Possible missing article found.
Context: ...arly claim from the Sender is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
19-19: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
68-68: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
71-71: Line length
Expected: 120; Actual: 140
(MD013, line-length)
73-73: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
82-82: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
131-131: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
137-137: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
139-139: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
139-139: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
140-140: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
141-141: Unordered list indentation
Expected: 0; Actual: 3
(MD007, ul-indent)
144-144: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
144-144: Line length
Expected: 120; Actual: 328
(MD013, line-length)
144-144: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
144-144: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
144-144: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
146-146: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
152-152: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
156-156: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
161-161: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
163-163: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
164-164: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
170-170: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
172-172: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
177-177: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
181-181: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
182-182: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
184-184: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
185-185: Line length
Expected: 120; Actual: 130
(MD013, line-length)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
190-190: Line length
Expected: 120; Actual: 147
(MD013, line-length)
204-204: Line length
Expected: 120; Actual: 164
(MD013, line-length)
206-206: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
213-213: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
223-223: Line length
Expected: 120; Actual: 127
(MD013, line-length)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
238-238: Line length
Expected: 120; Actual: 158
(MD013, line-length)
239-239: Line length
Expected: 120; Actual: 342
(MD013, line-length)
🔇 Additional comments (1)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (1)
3-11: Metadata Update: Compliance with PR ObjectivesThe updated metadata section clearly reflects the RFC’s current status, author, creation/update dates, version, supersedes information, and related references in line with the PR objectives.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (14)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (14)
15-16: Abstract Placeholder Reminder
There is a placeholder comment asking for a brief summary of the RFC. Remember to replace this with a concrete summary of the purpose, context, and scope of the RFC before finalizing the document.
42-43: Grammar Correction: Subject-Verb Agreement in Motivation
The sentence "this propose an incentivization mechanism for the RPs" should be corrected to "this proposes an incentivization mechanism for the RPs" to ensure grammatical accuracy.-this propose an incentivization mechanism for the RPs, +this proposes an incentivization mechanism for the RPs,🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
🪛 markdownlint-cli2 (0.17.2)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
69-69: Grammar Improvement in Terminology
In the line "This value defines the derivation of the stealth address of Recipient.$s_{s} = a + b$ ", consider adding the definite article for clarity. For example, "the Recipient" improves readability.-... stealth address of Recipient. +... stealth address of the Recipient.🧰 Tools
🪛 LanguageTool
[uncategorized] ~69-~69: Possible missing article found.
Context: ...he derivation of the stealth address of Recipient.$s_{s} = a + b$ - **Sender-picked nonc...(AI_HYDRA_LEO_MISSING_THE)
125-125: Typo in Mermaid Diagram Annotation
At line 125, the term "steath secret" appears. Please correct the spelling to "stealth secret."-... and <br/> ticket challenges to shared steath secret +... and <br/> ticket challenges to shared stealth secret🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
125-125: Line length
Expected: 120; Actual: 128(MD013, line-length)
147-153: Spelling and Grammar Correction in Zero-Knowledge Deposit Section
The sentence "an adequate hash fuction to for zero-knowledge proofs." contains a misspelling ("fuction") and an extra word ("to"). Please change it to "an adequate hash function for zero-knowledge proofs."-an adequate hash fuction to for zero-knowledge proofs. +an adequate hash function for zero-knowledge proofs.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
147-147: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
149-149: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
152-152: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
188-190: Correction in SURB Batch Construction Section
There are a couple of issues on these lines:
- "relavant parametes" should be corrected to "relevant parameters."
- "Sender specific winning probability" should be hyphenated as "Sender-specific winning probability."
Additionally, consider rephrasing for clarity and check that the expression meets the intended meaning.-Sender takes network-level properties and computes the relavant parametes for SURB creation. +Sender takes network-level properties and computes the relevant parameters for SURB creation. -... global set shielded pool deposit amount, Sender specific winning probability (which is at least the value of the global minimum winning probability), global ticket price. +... global set shielded pool deposit amount, Sender-specific winning probability (which is at least the value of the global minimum winning probability), and global ticket price.🧰 Tools
🪛 LanguageTool
[uncategorized] ~189-~189: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
🪛 markdownlint-cli2 (0.17.2)
189-189: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
189-189: Line length
Expected: 120; Actual: 328(MD013, line-length)
189-189: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
189-189: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
189-189: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
191-191: Typo in VSSS Threshold Definition
The word "threhsold" is misspelled. It should be "threshold."-VSSS threhsold factor $F$ +VSSS threshold factor $F$🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
191-191: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
194-194: Grammar Correction in Path Selection Description
The sentence "Sender does the path selections and thus know a full list of the public keys of FRs." should use the singular "knows" to agree with the subject "Sender."-Sender does the path selections and thus know a full list of the public keys of FRs. +Sender does the path selections and thus knows the full list of public keys of FRs.🧰 Tools
🪛 LanguageTool
[grammar] ~194-~194: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
207-207: Subject-Verb Agreement in Public Inputs Description
The sentence "Public inputs of the deposit commitment is also sent along:" should be revised to "Public inputs of the deposit commitment are also sent along:" to ensure proper subject-verb agreement.-Public inputs of the deposit commitment is also sent along: +Public inputs of the deposit commitment are also sent along:🧰 Tools
🪛 LanguageTool
[grammar] ~207-~207: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...(NNS_OF_SINGULAR_AGREEMENT)
216-216: Grammar Fix in SURB Sending Instruction
The phrase "Sender is MUST sends SURBs with" is grammatically incorrect. Changing it to "Sender MUST send SURBs with" resolves the issue.-Sender is MUST sends SURBs with +Sender MUST send SURBs with🧰 Tools
🪛 LanguageTool
[grammar] ~216-~216: Do not use the modal verb ‘MUST’ after the verb ‘be’. Did you mean “MUST”?
Context: ...$k_{vsss}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shar...(BE_MD)
[grammar] ~216-~216: The modal verb ‘MUST’ requires the verb’s base form.
Context: ...}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shared sec...(MD_BASEFORM)
🪛 markdownlint-cli2 (0.17.2)
216-216: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
223-223: Extraneous Symbol in Stealth Address Computation
In the computation "The stealth address can be computed as$B_{s} = A + b * R \equiv = (a + b)* r * G$ ", the extra equals sign ("=") should be removed to read correctly as "$B_{s} = A + b * R \equiv (a + b)* r * G$".-The stealth address can be computed as $B_{s} = A + b * R \equiv = (a + b)* r * G$ +The stealth address can be computed as $B_{s} = A + b * R \equiv (a + b)* r * G$
234-234: Eliminate Duplicate Word
On line 234, the phrase "acknowledgement of of a packet" contains a duplicate "of." Please remove the redundant word.-returns the acknowledgement of of a packet +returns the acknowledgement of a packet🧰 Tools
🪛 LanguageTool
[duplication] ~234-~234: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...(ENGLISH_WORD_REPEAT_RULE)
235-235: Subject-Verb Agreement with Plural Noun
The sentence "the shares reaches the VSSS threshold" should use the plural verb "reach" to agree with "shares."-... when the shares reaches the VSSS threshold $k_{vsss}$ +... when the shares reach the VSSS threshold $k_{vsss}$🧰 Tools
🪛 LanguageTool
[grammar] ~235-~235: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold$k_{vsss}$ Once the...(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
🪛 markdownlint-cli2 (0.17.2)
235-235: Line length
Expected: 120; Actual: 165(MD013, line-length)
1-288: General Markdown Formatting Suggestions
There are several minor markdown formatting issues (e.g., trailing spaces, multiple consecutive blank lines, and line length warnings) identified by static analysis tools. While these do not affect the technical content, addressing them will improve the document’s readability and maintainability. Consider running a markdown linter to automatically fix trailing spaces and excessive blank lines.🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
[uncategorized] ~69-~69: Possible missing article found.
Context: ...he derivation of the stealth address of Recipient.$s_{s} = a + b$ - **Sender-picked nonc...(AI_HYDRA_LEO_MISSING_THE)
[grammar] ~166-~166: The modal verb ‘can’ requires the verb’s base form.
Context: ...cipient's stealth address$E_{B_s}$ can calculated from the public key of the stealth addr...(MD_BASEFORM)
[uncategorized] ~189-~189: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
[grammar] ~194-~194: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
[grammar] ~207-~207: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~216-~216: Do not use the modal verb ‘MUST’ after the verb ‘be’. Did you mean “MUST”?
Context: ...$k_{vsss}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shar...(BE_MD)
[grammar] ~216-~216: The modal verb ‘MUST’ requires the verb’s base form.
Context: ...}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shared sec...(MD_BASEFORM)
[uncategorized] ~230-~230: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...(AI_HYDRA_LEO_MISSING_THE)
[duplication] ~234-~234: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~235-~235: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold$k_{vsss}$ Once the...(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
🪛 markdownlint-cli2 (0.17.2)
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
72-72: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
73-73: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
76-76: Line length
Expected: 120; Actual: 140(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
87-87: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
125-125: Line length
Expected: 120; Actual: 128(MD013, line-length)
147-147: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
149-149: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
152-152: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
154-154: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
155-155: Line length
Expected: 120; Actual: 143(MD013, line-length)
157-157: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
162-162: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
164-164: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
164-164: Line length
Expected: 120; Actual: 186(MD013, line-length)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
168-168: Line length
Expected: 120; Actual: 135(MD013, line-length)
170-170: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
174-174: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
178-178: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
179-179: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
185-185: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
187-187: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
189-189: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
189-189: Line length
Expected: 120; Actual: 328(MD013, line-length)
189-189: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
189-189: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
189-189: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
191-191: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
196-196: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
198-198: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
203-203: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
208-208: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
212-212: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
213-213: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
215-215: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
216-216: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
217-217: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
227-227: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
232-232: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
233-233: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
235-235: Line length
Expected: 120; Actual: 165(MD013, line-length)
241-241: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
241-241: Line length
Expected: 120; Actual: 133(MD013, line-length)
245-245: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
252-252: Line length
Expected: 120; Actual: 127(MD013, line-length)
255-255: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
267-267: Line length
Expected: 120; Actual: 342(MD013, line-length)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[uncategorized] ~69-~69: Possible missing article found.
Context: ...he derivation of the stealth address of Recipient.
(AI_HYDRA_LEO_MISSING_THE)
[grammar] ~166-~166: The modal verb ‘can’ requires the verb’s base form.
Context: ...cipient's stealth address
(MD_BASEFORM)
[uncategorized] ~189-~189: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[grammar] ~194-~194: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[grammar] ~207-~207: Possible subject-verb agreement error.
Context: ...Public inputs of the deposit commitment is also sent along: - merkle path of the d...
(NNS_OF_SINGULAR_AGREEMENT)
[grammar] ~216-~216: Do not use the modal verb ‘MUST’ after the verb ‘be’. Did you mean “MUST”?
Context: ...$k_{vsss}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shar...
(BE_MD)
[grammar] ~216-~216: The modal verb ‘MUST’ requires the verb’s base form.
Context: ...}$ ### 6. Sending SURBs Sender is MUST sends SURBs with - commitments of shared sec...
(MD_BASEFORM)
[uncategorized] ~230-~230: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
[duplication] ~234-~234: Possible typo: you repeated a word.
Context: ...sed, the FR returns the acknowledgement of of a packet that contains the VSSS share $...
(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~235-~235: “shares” is a plural noun. It appears that the verb form is incorrect.
Context: ...coefficient commitments when the shares reaches the VSSS threshold
(PCT_PLURAL_NOUN_SINGULAR_VERB_AGREEMENT)
🪛 markdownlint-cli2 (0.17.2)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
72-72: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
73-73: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
76-76: Line length
Expected: 120; Actual: 140
(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
87-87: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
125-125: Line length
Expected: 120; Actual: 128
(MD013, line-length)
147-147: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
149-149: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
152-152: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
154-154: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
155-155: Line length
Expected: 120; Actual: 143
(MD013, line-length)
157-157: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
162-162: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
164-164: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
164-164: Line length
Expected: 120; Actual: 186
(MD013, line-length)
165-165: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
168-168: Line length
Expected: 120; Actual: 135
(MD013, line-length)
170-170: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
174-174: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
178-178: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
179-179: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
185-185: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
187-187: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
189-189: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
189-189: Line length
Expected: 120; Actual: 328
(MD013, line-length)
189-189: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
189-189: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
189-189: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
191-191: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
196-196: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
198-198: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
203-203: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
208-208: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
212-212: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
213-213: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
215-215: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
216-216: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
217-217: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
226-226: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
227-227: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
232-232: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
233-233: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
235-235: Line length
Expected: 120; Actual: 165
(MD013, line-length)
241-241: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
241-241: Line length
Expected: 120; Actual: 133
(MD013, line-length)
245-245: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
252-252: Line length
Expected: 120; Actual: 127
(MD013, line-length)
255-255: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
267-267: Line length
Expected: 120; Actual: 342
(MD013, line-length)
🔇 Additional comments (1)
RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (1)
5-11: Metadata Update Verification
The RFC metadata has been updated correctly to reflect the new status ("Discussion"), authors, dates, version, and references according to the PR objectives. Please ensure these changes are consistent with documentation standards for RFCs.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (11)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (11)
15-16: Abstract Section Placeholder:
A placeholder comment ("Provide a brief and clear summary…") remains in the abstract. Remove or replace this comment once you finalize the abstract content.
27-41: Motivation Section Enhancement:
The motivation section effectively explains the problem and the necessity for a privacy-preserving incentivization mechanism.
- Action Required: On line 42, the phrase “this propose an incentivization mechanism…” has a subject–verb disagreement; please change it to “this proposes an incentivization mechanism…”.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
51-77: Terminology Section Improvements:
The updated definitions are very comprehensive for clarifying the RFC’s technical language. Please address the following typos and grammatical issues:
- Lines 64–65: Replace “hexdecimal” with “hexadecimal.”
- Lines 66–67: Correct “Deposit Committment” to “Deposit Commitment.”
- Line 73: Change “Sender can created multiple Sender-picked nonces…” to “Sender can create multiple Sender-picked nonces…”
- Line 77: Replace “valeus” with “values.”
🧰 Tools
🪛 LanguageTool
[uncategorized] ~65-~65: A punctuation mark might be missing here.
Context: ...claims. 32 bytes hexdecimal value.$h = H_1(s_n)$ - **Deposit Committment Secret$s_{c}$ *...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~69-~69: A punctuation mark might be missing here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~70-~70: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... \ldots}$ The deposit can be larger and deposit into multiple stealth addresses. This ...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~73-~73: You might be missing the article “the” here.
Context: ...o the stealth address. For one deposit, Sender can created multiple Sender-picked nonc...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~73-~73: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces$a_i$ , an...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~75-~75: Possible missing article found.
Context: ...al contribution to the stealth address. Recipient should generate an amount of Recipient-...(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126(MD013, line-length)
90-94: Terminology Section – Additional Typos:
- Line 90: Update “polynominal” to “polynomial” and “contant” to “constant.”
🧰 Tools
🪛 LanguageTool
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🪛 markdownlint-cli2 (0.17.2)
90-90: Line length
Expected: 120; Actual: 145(MD013, line-length)
94-94: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
104-153: Mermaid Diagram in the Specification Section:
The mermaid diagram illustrating the protocol flow is well constructed and enhances clarity. Please ensure that any trailing whitespace or extra blank lines are removed to meet markdownlint standards.
155-164: Zero-Knowledge Deposit Section:
This section communicates the deposit mechanism clearly. Please address the following:
- Line 156: Change “committment” to “commitment.”
- Line 161: Correct “hash fuction to for zero-knowledge proofs” to “hash function for zero-knowledge proofs.”
🧰 Tools
🪛 LanguageTool
[uncategorized] ~163-~163: The preposition “on” seems more likely in this position.
Context: ...ment$C_d$ to a leaf to the Merkle tree at a path. ### 2. Session Opening Sender ...(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
🪛 markdownlint-cli2 (0.17.2)
155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
160-160: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
162-162: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
163-163: Line length
Expected: 120; Actual: 143(MD013, line-length)
185-191: Recipient Commitment Section Corrections:
- Line 186: Change “receiption” to “reception.”
- Line 188: Rephrase “pick an equal amount of nonce” to “choose an equal number of nonces” for clarity.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~186-~186: You might be missing the article “the” here.
Context: ...eiption of session initiation requests, Recipient checks if the threshold T is desired. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~189-~189: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce$b_i$ of 256-bit random value. Recipient confirms the session establishment and ...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🪛 markdownlint-cli2 (0.17.2)
185-185: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
192-200: Zero-Knowledge Allocation Section Clarity:
- Line 194: Update “can calculated” to “can be calculated.”
- Ensure consistency in describing the zk proofs and the operation with the shielded pool.
🧰 Tools
🪛 LanguageTool
[grammar] ~197-~197: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address$E_{B_{s_i}}$ can calculated from the public key of the stealth addr...(MD_BASEFORM)
🪛 markdownlint-cli2 (0.17.2)
192-192: Line length
Expected: 120; Actual: 126(MD013, line-length)
194-194: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
195-195: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
196-196: Line length
Expected: 120; Actual: 152(MD013, line-length)
199-199: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
215-223: SURB Batch Construction Section:
- Line 216: Change “relavant parametes” to “relevant parameters.”
- Line 222: Update “thus know a full list” to “thus knows a full list” for subject–verb agreement.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~221-~221: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
🪛 markdownlint-cli2 (0.17.2)
217-217: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
219-219: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
221-221: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
221-221: Line length
Expected: 120; Actual: 328(MD013, line-length)
221-221: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
223-223: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
239-247: Using SURBs Section:
- Line 240: Correct the misspelling “Recipent” to “Recipient.”
- Line 243: Change “acknowlegements” to “acknowledgements.”
🧰 Tools
🪛 LanguageTool
[uncategorized] ~240-~240: A punctuation mark might be missing here.
Context: ...: - The encrypted share$\mathsf{EP}_i$ - The corresponding proof$\pi_i$ This se...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~243-~243: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag$a_i$ , and eventually reconstruct t...(EN_WORD_COHERENCY)
🪛 markdownlint-cli2 (0.17.2)
243-243: Line length
Expected: 120; Actual: 242(MD013, line-length)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
264-297: Remaining Sections (Compatibility, Security, Drawbacks, Alternatives, Unresolved Questions, Future Work, References):
These sections are succinct and adequately outline the necessary context.
- Action Suggested: Review the formatting to resolve extra blank lines, trailing spaces, and line-length issues as highlighted by markdownlint.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
264-264: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
271-271: Line length
Expected: 120; Actual: 127(MD013, line-length)
274-274: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
286-286: Line length
Expected: 120; Actual: 342(MD013, line-length)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[uncategorized] ~65-~65: A punctuation mark might be missing here.
Context: ...claims. 32 bytes hexdecimal value.
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~69-~69: A punctuation mark might be missing here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~70-~70: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... \ldots}$ The deposit can be larger and deposit into multiple stealth addresses. This ...
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~73-~73: You might be missing the article “the” here.
Context: ...o the stealth address. For one deposit, Sender can created multiple Sender-picked nonc...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~73-~73: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~75-~75: Possible missing article found.
Context: ...al contribution to the stealth address. Recipient should generate an amount of Recipient-...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~85-~85: You might be missing the article “the” here.
Context: ... participants. In the context of SURB, Sender knows the secret and generates the shar...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~163-~163: The preposition “on” seems more likely in this position.
Context: ...ment
(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[uncategorized] ~166-~166: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ...me random nonces
(AMOUNTOF_TO_NUMBEROF)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ...ealth addresses. For each nonce
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~186-~186: You might be missing the article “the” here.
Context: ...eiption of session initiation requests, Recipient checks if the threshold T is desired. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~189-~189: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~197-~197: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address
(MD_BASEFORM)
[uncategorized] ~221-~221: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[grammar] ~226-~226: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[uncategorized] ~232-~232: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...ly Blocks (SURBs), each embedding an H4 acknowledgment tag derived from its associated nonce $...
(EN_WORD_COHERENCY)
[uncategorized] ~240-~240: A punctuation mark might be missing here.
Context: ...: - The encrypted share
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~243-~243: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag
(EN_WORD_COHERENCY)
[uncategorized] ~248-~248: Possible missing article found.
Context: ...the integrity of the commitments. When Recipient receives SURBs, SURBs are stored. - Up...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~254-~254: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126
(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
79-79: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
82-82: Line length
Expected: 120; Actual: 140
(MD013, line-length)
84-84: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
90-90: Line length
Expected: 120; Actual: 145
(MD013, line-length)
94-94: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
160-160: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
162-162: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
163-163: Line length
Expected: 120; Actual: 143
(MD013, line-length)
165-165: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
166-166: Line length
Expected: 120; Actual: 226
(MD013, line-length)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
169-169: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
169-169: Line length
Expected: 120; Actual: 131
(MD013, line-length)
172-172: Line length
Expected: 120; Actual: 154
(MD013, line-length)
175-175: Line length
Expected: 120; Actual: 136
(MD013, line-length)
181-181: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
185-185: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
192-192: Line length
Expected: 120; Actual: 126
(MD013, line-length)
194-194: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
195-195: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
196-196: Line length
Expected: 120; Actual: 152
(MD013, line-length)
199-199: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
202-202: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
206-206: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
210-210: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
211-211: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
217-217: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
219-219: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
221-221: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
221-221: Line length
Expected: 120; Actual: 328
(MD013, line-length)
221-221: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
221-221: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
221-221: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
223-223: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
228-228: Line length
Expected: 120; Actual: 274
(MD013, line-length)
230-230: Line length
Expected: 120; Actual: 158
(MD013, line-length)
232-232: Line length
Expected: 120; Actual: 144
(MD013, line-length)
243-243: Line length
Expected: 120; Actual: 242
(MD013, line-length)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
260-260: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
260-260: Line length
Expected: 120; Actual: 135
(MD013, line-length)
264-264: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
271-271: Line length
Expected: 120; Actual: 127
(MD013, line-length)
274-274: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
286-286: Line length
Expected: 120; Actual: 342
(MD013, line-length)
🔇 Additional comments (4)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (4)
5-11: Metadata Section Update:
The RFC metadata has been updated with the new status ("Discussion"), authors, creation/update dates, version, supersedes, and reference link as expected. Please verify that these values are consistent with other RFC documents in the repository.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
17-23: Abstract Content Clarity:
The abstract now clearly outlines the privacy-preserving mechanism for compensating Exit nodes via shielded deposits and verifiable secret sharing. The technical purpose is well-articulated.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
248-254: Recipient Claims Reward Section:
This section is clear and concise. Please verify that the mathematical condition (m_i * R ≡ E_{B_{s_i}}) is correct as intended.🧰 Tools
🪛 LanguageTool
[uncategorized] ~248-~248: Possible missing article found.
Context: ...the integrity of the commitments. When Recipient receives SURBs, SURBs are stored. - Up...(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~254-~254: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...(AI_HYDRA_LEO_MISSING_THE)
255-264: Design Considerations and Reward Computation:
The design considerations and the reward formula are clearly presented. Please ensure that all variables in the reward computation formula are defined earlier in the document.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
260-260: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
260-260: Line length
Expected: 120; Actual: 135(MD013, line-length)
264-264: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (7)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (7)
27-35: Motivation Section: Grammar & Clarity Improvement
In the Motivation section, please consider a minor grammatical update. For example, the phrase:this propose an incentivization mechanism for the RPs, which has the following properties:should be revised to:
- this propose an incentivization mechanism for the RPs, which has the following properties: + this proposes an incentivization mechanism for the RPs, which has the following properties:This change will ensure proper subject-verb agreement.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
69-73: Terminology Section: Grammar Corrections
There are a couple of minor language issues in the terminology definitions:
- Line 70:
"The deposit can be larger and deposit into multiple stealth addresses."
Consider changing it to:
"The deposit can be larger and be deposited into multiple stealth addresses."- Line 73:
"For one deposit, Sender can created multiple Sender-picked nonces
$a_i$ , and send the corresponding encrypted values$a_i * R$ to the Recipient."
Should be corrected to:
"For one deposit, Sender can create multiple Sender-picked nonces$a_i$ , and send the corresponding encrypted values$a_i * R$ to the Recipient."These adjustments will improve overall clarity and grammatical correctness.
- The deposit can be larger and deposit into multiple stealth addresses. + The deposit can be larger and be deposited into multiple stealth addresses. - For one deposit, Sender can created multiple Sender-picked nonces $a_i$, and send the corresponding encrypted values $a_i * R$ to the Recipient. + For one deposit, Sender can create multiple Sender-picked nonces $a_i$, and send the corresponding encrypted values $a_i * R$ to the Recipient.🧰 Tools
🪛 LanguageTool
[uncategorized] ~69-~69: A punctuation mark might be missing here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~70-~70: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... \ldots}$ The deposit can be larger and deposit into multiple stealth addresses. This ...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~73-~73: You might be missing the article “the” here.
Context: ...o the stealth address. For one deposit, Sender can created multiple Sender-picked nonc...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~73-~73: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces$a_i$ , an...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
🪛 markdownlint-cli2 (0.17.2)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126(MD013, line-length)
185-190: Recipient Commitment Section: Minor Corrections
A small typographical correction is needed:- Upon receiption of session initiation requests, Recipient checks if the threshold T is desired. + Upon reception of session initiation requests, Recipient checks if the threshold T is met or desired.This change will address the typo and improve clarity regarding the commitment process.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~186-~186: You might be missing the article “the” here.
Context: ...eiption of session initiation requests, Recipient checks if the threshold T is desired. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~189-~189: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce$b_i$ of 256-bit random value. Recipient confirms the session establishment and ...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🪛 markdownlint-cli2 (0.17.2)
185-185: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
195-203: Zero-Knowledge Allocation: Grammar Correction
A minor grammatical fix is required on line 197. The sentence currently reads:- The address of Recipient's stealth address $E_{B_{s_i}}$ can calculated from the public key of the stealth address $B_{s_i}$ + The address of Recipient's stealth address $E_{B_{s_i}}$ can be calculated from the public key of the stealth address $B_{s_i}$This ensures correct modal verb usage.
🧰 Tools
🪛 LanguageTool
[grammar] ~197-~197: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address$E_{B_{s_i}}$ can calculated from the public key of the stealth addr...(MD_BASEFORM)
🪛 markdownlint-cli2 (0.17.2)
195-195: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
196-196: Line length
Expected: 120; Actual: 152(MD013, line-length)
199-199: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
202-202: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
219-228: SURB Batch Construction: Parameter Calculation & Language
Several points to consider in this section:
- Line 220: The phrase "computes the relavant parametes" should be corrected to "computes the relevant parameters."
- Line 221: Consider hyphenating "Sender specific" to "Sender-specific" for clarity.
- Line 226: Revise "Sender does the path selections and thus know a full list of the public keys of FRs." to "Sender does the path selections and thus knows the full list of public keys of FRs." to fix the subject-verb agreement.
- Sender takes network-level properties and computes the relavant parametes for SURB creation. + Sender takes network-level properties and computes the relevant parameters for SURB creation. - Size of SURB Batch: Computed from the global set shielded pool deposit amount, Sender specific winning probability ... + Size of SURB Batch: Computed from the global set shielded pool deposit amount, Sender-specific winning probability ... - Sender does the path selections and thus know a full list of the public keys of FRs. + Sender does the path selections and thus knows the full list of public keys of FRs.🧰 Tools
🪛 LanguageTool
[uncategorized] ~221-~221: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
[grammar] ~226-~226: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
🪛 markdownlint-cli2 (0.17.2)
219-219: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
221-221: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
221-221: Line length
Expected: 120; Actual: 328(MD013, line-length)
221-221: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
223-223: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
228-228: Line length
Expected: 120; Actual: 274(MD013, line-length)
245-253: Using SURBs: Consistency Check
The procedure for receiving, storing, and verifying SURBs is clearly outlined. Please ensure that terminology remains consistent throughout—for instance, consistently using either "acknowledgment" or "acknowledgement" across the document.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
1-306: General Formatting and Style Improvements
Static analysis tools (e.g., markdownlint and LanguageTool) have flagged various formatting and style issues throughout the document. These include:
- Trailing Spaces: Several lines (e.g., lines 6, 7, 17, 20, etc.) contain unnecessary trailing spaces.
- Line Lengths: Some lines (e.g., lines 73, 82, 221, and others) exceed the recommended length, which can affect readability.
- Blank Lines: Multiple consecutive blank lines have been detected (e.g., lines 24, 94, 264), and headings should be surrounded by a blank line for consistency (e.g., lines 155, 165, 185).
- Terminology Consistency: Ensure uniform usage of terms such as "acknowledgment" vs. "acknowledgement" and correct minor grammatical issues (e.g., missing articles, verb forms).
Addressing these issues is optional but will significantly improve the professionalism and readability of this RFC document.
🧰 Tools
🪛 LanguageTool
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...(THIS_THAT_AGR)
[uncategorized] ~65-~65: A punctuation mark might be missing here.
Context: ...claims. 32 bytes hexdecimal value.$h = H_1(s_n)$ - **Deposit Committment Secret$s_{c}$ *...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~69-~69: A punctuation mark might be missing here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~70-~70: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... \ldots}$ The deposit can be larger and deposit into multiple stealth addresses. This ...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~73-~73: You might be missing the article “the” here.
Context: ...o the stealth address. For one deposit, Sender can created multiple Sender-picked nonc...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~73-~73: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces$a_i$ , an...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~163-~163: The preposition “on” seems more likely in this position.
Context: ...ment$C_d$ to a leaf to the Merkle tree at a path. ### 2. Session Opening Sender ...(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[uncategorized] ~166-~166: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ...me random nonces$a_i$ per Session. The amount of nonces corresponds to the number of ...(AMOUNTOF_TO_NUMBEROF)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ...ealth addresses. For each nonce$a_i$ , Sender constructs a random polynominal$Q(x)$ ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~186-~186: You might be missing the article “the” here.
Context: ...eiption of session initiation requests, Recipient checks if the threshold T is desired. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~189-~189: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce$b_i$ of 256-bit random value. Recipient confirms the session establishment and ...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~197-~197: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address$E_{B_{s_i}}$ can calculated from the public key of the stealth addr...(MD_BASEFORM)
[uncategorized] ~221-~221: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...(SPECIFIC_HYPHEN)
[grammar] ~226-~226: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...(IS_AND_ARE)
[uncategorized] ~232-~232: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...ly Blocks (SURBs), each embedding an H4 acknowledgment tag derived from its associated nonce $...(EN_WORD_COHERENCY)
[uncategorized] ~240-~240: A punctuation mark might be missing here.
Context: ...: - The encrypted share$\mathsf{EP}_i$ - The corresponding proof$\pi_i$ This se...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~243-~243: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag$a_i$ , and eventually reconstruct t...(EN_WORD_COHERENCY)
[uncategorized] ~254-~254: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
79-79: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
82-82: Line length
Expected: 120; Actual: 140(MD013, line-length)
84-84: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
90-90: Line length
Expected: 120; Actual: 145(MD013, line-length)
94-94: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
160-160: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
162-162: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
163-163: Line length
Expected: 120; Actual: 143(MD013, line-length)
165-165: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
166-166: Line length
Expected: 120; Actual: 226(MD013, line-length)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
169-169: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
169-169: Line length
Expected: 120; Actual: 131(MD013, line-length)
172-172: Line length
Expected: 120; Actual: 154(MD013, line-length)
175-175: Line length
Expected: 120; Actual: 136(MD013, line-length)
181-181: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
185-185: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
192-192: Line length
Expected: 120; Actual: 126(MD013, line-length)
194-194: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
195-195: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
196-196: Line length
Expected: 120; Actual: 152(MD013, line-length)
199-199: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
202-202: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
206-206: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
210-210: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
211-211: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
217-217: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
219-219: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
221-221: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
221-221: Line length
Expected: 120; Actual: 328(MD013, line-length)
221-221: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
221-221: Spaces inside emphasis markers
null(MD037, no-space-in-emphasis)
223-223: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
228-228: Line length
Expected: 120; Actual: 274(MD013, line-length)
230-230: Line length
Expected: 120; Actual: 158(MD013, line-length)
232-232: Line length
Expected: 120; Actual: 144(MD013, line-length)
243-243: Line length
Expected: 120; Actual: 242(MD013, line-length)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
260-260: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
260-260: Line length
Expected: 120; Actual: 135(MD013, line-length)
264-264: Multiple consecutive blank lines
Expected: 1; Actual: 2(MD012, no-multiple-blanks)
271-271: Line length
Expected: 120; Actual: 127(MD013, line-length)
274-274: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above(MD022, blanks-around-headings)
286-286: Line length
Expected: 120; Actual: 342(MD013, line-length)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[uncategorized] ~65-~65: A punctuation mark might be missing here.
Context: ...claims. 32 bytes hexdecimal value.
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~69-~69: A punctuation mark might be missing here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~70-~70: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... \ldots}$ The deposit can be larger and deposit into multiple stealth addresses. This ...
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~73-~73: You might be missing the article “the” here.
Context: ...o the stealth address. For one deposit, Sender can created multiple Sender-picked nonc...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~73-~73: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~163-~163: The preposition “on” seems more likely in this position.
Context: ...ment
(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[uncategorized] ~166-~166: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ...me random nonces
(AMOUNTOF_TO_NUMBEROF)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ...ealth addresses. For each nonce
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~186-~186: You might be missing the article “the” here.
Context: ...eiption of session initiation requests, Recipient checks if the threshold T is desired. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~189-~189: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~197-~197: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address
(MD_BASEFORM)
[uncategorized] ~221-~221: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[grammar] ~226-~226: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[uncategorized] ~232-~232: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...ly Blocks (SURBs), each embedding an H4 acknowledgment tag derived from its associated nonce $...
(EN_WORD_COHERENCY)
[uncategorized] ~240-~240: A punctuation mark might be missing here.
Context: ...: - The encrypted share
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~243-~243: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag
(EN_WORD_COHERENCY)
[uncategorized] ~254-~254: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126
(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
79-79: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
82-82: Line length
Expected: 120; Actual: 140
(MD013, line-length)
84-84: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
90-90: Line length
Expected: 120; Actual: 145
(MD013, line-length)
94-94: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
160-160: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
162-162: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
163-163: Line length
Expected: 120; Actual: 143
(MD013, line-length)
165-165: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
166-166: Line length
Expected: 120; Actual: 226
(MD013, line-length)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
169-169: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
169-169: Line length
Expected: 120; Actual: 131
(MD013, line-length)
172-172: Line length
Expected: 120; Actual: 154
(MD013, line-length)
175-175: Line length
Expected: 120; Actual: 136
(MD013, line-length)
181-181: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
185-185: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
192-192: Line length
Expected: 120; Actual: 126
(MD013, line-length)
194-194: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
195-195: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
196-196: Line length
Expected: 120; Actual: 152
(MD013, line-length)
199-199: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
202-202: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
206-206: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
210-210: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
211-211: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
217-217: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
219-219: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
221-221: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
221-221: Line length
Expected: 120; Actual: 328
(MD013, line-length)
221-221: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
221-221: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
221-221: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
223-223: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
228-228: Line length
Expected: 120; Actual: 274
(MD013, line-length)
230-230: Line length
Expected: 120; Actual: 158
(MD013, line-length)
232-232: Line length
Expected: 120; Actual: 144
(MD013, line-length)
243-243: Line length
Expected: 120; Actual: 242
(MD013, line-length)
245-245: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
260-260: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
260-260: Line length
Expected: 120; Actual: 135
(MD013, line-length)
264-264: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
271-271: Line length
Expected: 120; Actual: 127
(MD013, line-length)
274-274: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
286-286: Line length
Expected: 120; Actual: 342
(MD013, line-length)
🔇 Additional comments (5)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (5)
3-11: RFC Metadata Updated Correctly
The RFC header now reflects the updated metadata: status is set to "Discussion", authors are listed as "NumberFour8, QYuQianchen", the creation and update dates are current, and the version is updated to v0.2.0 (Raw). Please verify that these metadata changes fully align with your intended revision.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
6-6: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
13-23: Enhanced Abstract Section
The abstract now clearly describes the privacy-preserving mechanism for compensating Exit nodes. The inclusion of key elements—shielded deposits, stealth addresses, and verifiable secret sharing—provides a strong technical overview. Ensure consistency with related RFCs (e.g., RFC0003) in technical details and terminology.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
104-153: Sequence Diagram Verification
The mermaid sequence diagram clearly illustrates the protocol flow, covering phases such as Shielded Deposit, Session Opening, SURB Generation, and Payment Retrieval. No functional issues are detected. However, please ensure that participant names (e.g. “Recipient”) remain consistently spelled throughout the document, as the word “Recipent” appears later in the text.
165-184: Session Opening Section Validation
The session initiation process is well-described, explaining the generation of random nonces and the construction of polynominals. The encryption process for the Sender-picked nonces is addressed; however, please double-check that the description aligns with your intended cryptographic procedures.🧰 Tools
🪛 LanguageTool
[uncategorized] ~166-~166: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ...me random nonces$a_i$ per Session. The amount of nonces corresponds to the number of ...(AMOUNTOF_TO_NUMBEROF)
[uncategorized] ~172-~172: You might be missing the article “the” here.
Context: ...ealth addresses. For each nonce$a_i$ , Sender constructs a random polynominal$Q(x)$ ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 markdownlint-cli2 (0.17.2)
165-165: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below(MD022, blanks-around-headings)
166-166: Line length
Expected: 120; Actual: 226(MD013, line-length)
168-168: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
169-169: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
169-169: Line length
Expected: 120; Actual: 131(MD013, line-length)
172-172: Line length
Expected: 120; Actual: 154(MD013, line-length)
175-175: Line length
Expected: 120; Actual: 136(MD013, line-length)
181-181: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
258-263: Recipient Claims Reward Section Evaluation
The reward claim process is well-defined. Verify that the conditionif
$m_i * R \equiv E_{B_{s_i}}$ holds
fully captures all necessary validation checks for the reward claim process.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
260-260: Trailing spaces
Expected: 0 or 2; Actual: 1(MD009, no-trailing-spaces)
260-260: Line length
Expected: 120; Actual: 135(MD013, line-length)
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (5)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (5)
42-44: Grammar – clarify subject & verbMinor wording issue: “this propose” should read “this RFC proposes”.
- this propose an incentivization mechanism for the RPs, which has the following properties: + This RFC proposes an incentivization mechanism for Return Paths (RPs) with the following properties:
64-67: Consistent spelling of “commitment”
Committmentis miss-spelled in several places (definitions and §1). This breaks copy-paste of the variable name and looks unpolished.- **Deposit Committment Secret $s_{c}$** - **Deposit Committment $C_{d}$** + **Deposit Commitment Secret $s_{c}$** + **Deposit Commitment $C_{d}$**Apply the same correction in §1 (“committment of payment”, “deposit committment”).
Also applies to: 156-160
73-77: Fix verb forms & typos in nonce description- For one deposit, Sender can created multiple Sender-picked nonces $a_i$, and send the corresponding encrypted values $a_i * R$ - to the Recipient. - ... - and send the encrypted valeus $b_i * R$ back to the Sender. + For one deposit, the Sender can create multiple Sender-picked nonces $a_i$ and send the encrypted values $a_i * R$ + to the Recipient. + … + and send the encrypted values $b_i * R$ back to the Sender.
90-91: Uniform spelling – “polynomial”, not “polynominal”Spelling is incorrect in the terminology list, the sequence diagram note, and §2. Search & replace to avoid repeated distraction.
- VSSS polynominal + VSSS polynomialAlso applies to: 119-120, 175-176
199-201: Verb agreement- The address of Recipient's stealth address $E_{B_{s_i}}$ can calculated from the public key of the stealth address $B_{s_i}$ + The Recipient’s stealth address $E_{B_{s_i}}$ can be calculated from the public key $B_{s_i}$.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
-
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~42-~42: Possible subject-verb agreement error detected.
Context: ...ation compared with other relay nodes, this propose an incentivization mechanism for the RP...
(THIS_THAT_AGR)
[grammar] ~73-~73: The modal verb ‘can’ requires the verb’s base form.
Context: ...th address. For one deposit, Sender can created multiple Sender-picked nonces
(MD_BASEFORM)
[uncategorized] ~75-~75: Possible missing article found.
Context: ...al contribution to the stealth address. Recipient should generate an amount of Recipient-...
(AI_HYDRA_LEO_MISSING_THE)
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~165-~165: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h. Deposits can take place at any time prior to Session opening. Multiple deposits that...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[uncategorized] ~169-~169: ‘Amount of’ should usually only be used with uncountable or mass nouns. Consider using “number” if this is not the case.
Context: ...me random nonces
(AMOUNTOF_TO_NUMBEROF)
[style] ~192-~192: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~200-~200: The modal verb ‘can’ requires the verb’s base form.
Context: ...ent's stealth address
(MD_BASEFORM)
[uncategorized] ~224-~224: When ‘Sender-specific’ is used as a modifier, it is usually spelled with a hyphen.
Context: ...lobal set shielded pool deposit amount, Sender specific winning probability (which is at least ...
(SPECIFIC_HYPHEN)
[grammar] ~229-~229: Possible subject-verb agreement error.
Context: ...ender does the path selections and thus know a full list of the public keys of FRs. ...
(IS_AND_ARE)
[uncategorized] ~235-~235: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...ly Blocks (SURBs), each embedding an H4 acknowledgment tag derived from its associated nonce $...
(EN_WORD_COHERENCY)
[uncategorized] ~246-~246: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag
(EN_WORD_COHERENCY)
[uncategorized] ~251-~251: Possible missing article found.
Context: ...the integrity of the commitments. When Recipient receives SURBs, SURBs are stored. - Up...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~257-~257: Possible missing article found.
Context: ...commitments. If any fraud is detected, Recipient SHALL immediately terminate the return ...
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
7-7: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
17-17: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
20-20: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
21-21: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
24-24: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
29-29: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
30-30: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
31-31: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
33-33: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
36-36: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
37-37: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
38-38: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
39-39: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
42-42: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
61-61: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
70-70: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
73-73: Line length
Expected: 120; Actual: 126
(MD013, line-length)
78-78: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
79-79: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
82-82: Line length
Expected: 120; Actual: 140
(MD013, line-length)
84-84: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
90-90: Line length
Expected: 120; Actual: 145
(MD013, line-length)
94-94: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
157-157: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
160-160: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
162-162: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
163-163: Line length
Expected: 120; Actual: 143
(MD013, line-length)
168-168: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
169-169: Line length
Expected: 120; Actual: 226
(MD013, line-length)
171-171: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
172-172: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
172-172: Line length
Expected: 120; Actual: 131
(MD013, line-length)
175-175: Line length
Expected: 120; Actual: 154
(MD013, line-length)
178-178: Line length
Expected: 120; Actual: 136
(MD013, line-length)
184-184: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
188-188: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
195-195: Line length
Expected: 120; Actual: 126
(MD013, line-length)
197-197: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
198-198: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
199-199: Line length
Expected: 120; Actual: 152
(MD013, line-length)
202-202: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
205-205: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
209-209: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
213-213: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
214-214: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
220-220: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
222-222: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
224-224: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
224-224: Line length
Expected: 120; Actual: 328
(MD013, line-length)
224-224: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
224-224: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
224-224: Spaces inside emphasis markers
null
(MD037, no-space-in-emphasis)
226-226: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
231-231: Line length
Expected: 120; Actual: 274
(MD013, line-length)
233-233: Line length
Expected: 120; Actual: 158
(MD013, line-length)
235-235: Line length
Expected: 120; Actual: 144
(MD013, line-length)
246-246: Line length
Expected: 120; Actual: 242
(MD013, line-length)
248-248: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
263-263: Trailing spaces
Expected: 0 or 2; Actual: 1
(MD009, no-trailing-spaces)
263-263: Line length
Expected: 120; Actual: 135
(MD013, line-length)
267-267: Multiple consecutive blank lines
Expected: 1; Actual: 2
(MD012, no-multiple-blanks)
274-274: Line length
Expected: 120; Actual: 127
(MD013, line-length)
277-277: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
289-289: Line length
Expected: 120; Actual: 342
(MD013, line-length)
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a comprehensive specification for privacy-preserving return path incentivization in the HOPR protocol. The RFC proposes a mechanism to compensate Exit nodes (Recipients) for forwarding response traffic through Return Paths while maintaining unlinkability between senders and recipients.
Key changes include:
- Complete specification of a shielded deposit system using zk-SNARKs and stealth addresses
- Implementation of Verifiable Shamir Secret Sharing (VSSS) for fair compensation based on actual SURB usage
- Detailed protocol flow with cryptographic primitives and mathematical formulations
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 6
♻️ Duplicate comments (1)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (1)
208-215: Unify symbols and fix commitment proof statements (C_D → C_{d}, S_c → s_c, s_n).Also matches a previous review comment; keep variables consistent with Terminology and Step 1.
-Agent: -1. Reconstructs the commitment secret $S_c$ from FR acknowledgements ($s_i$) +Agent: +1. Reconstructs the commitment secret $s_c$ from FR acknowledgments (shares) 2. Generate proofs $\pi_{withdrawal}$ for: - Nullifier is the preimage of nullifier hash $H_1(s_n) \equiv h$ - Nullifier is unused on-chain - - Commitment $C_D$ exists in the Merkle tree - - $S_c$ matches the deposit commitment $C_{d} \equiv H_2(s_n \Vert s_{c})$ + - Commitment $C_{d}$ exists in the Merkle tree + - $s_c$ matches the deposit commitment $C_{d} \equiv H_2(s_n \Vert s_{c})$ 3. With inputs: - - *Private* nullifier $n_{nullifier}$ - - *Private* commitment secret $S_{c}$ + - *Private* nullifier $s_n$ + - *Private* commitment secret $s_{c}$Note: If your intent is to Shamir-share
$a_i$ (not$s_c$ ), then step “1.” above is incorrect. Please confirm which secret is shared and used for withdrawal; otherwise, the withdrawal proof cannot be constructed by the Agent.
🧹 Nitpick comments (6)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (6)
169-174: Remove duplicated paragraph; keep a single, tighter version.The two paragraphs restate the same content. Drop the first two lines and keep the clearer second block.
- Sender generates uniformly some random nonces $a_i$ per Session. The amount of nonces corresponds to the number of stealth address and thus to the share of deposits. The deposit will be divided equally among stealth addresses. - The Sender uniformly generates a set of random nonces $a_i$ for each Session. The number of nonces corresponds to the number of stealth addresses and, by extension, determines the distribution of the deposit. The total deposit is divided equally among these stealth addresses.
155-164: Tighten zk-deposit prose; fix spelling and tree-write sentence.-Sender MUST generate random secret values for zk deposit as a committment of payment to the stealth address of the Recipient +Sender MUST generate random secret values for the zk deposit as a commitment of payment to the Recipient’s stealth address. @@ -Compute the deposit committment $C_{d} = H_2(s_n \Vert s_{c})$ where $H_2$ is -an adequate hash fuction to for zero-knowledge proofs. -Sender uses any wallet that contains HOPR token for deposit to the shielded pool. -Sender interacts with the shielded pool to send HOPR token of amount $D$ and store the commitment $C_d$ to a leaf to the Merkle tree at a path. +Compute the deposit commitment $C_{d} = H_2(s_n \Vert s_{c})$, where $H_2$ is a hash suitable for the zk circuit. +Sender deposits $D$ HOPR into the Shielded Pool and appends $C_{d}$ as a new Merkle-tree leaf.
118-125: Sequence diagram labels: minor edits for clarity and consistency.
- Use “acknowledgment” consistently; fix “polynominals”, “establishement”.
- Optional: rename “A as Gasless Agent” to “A as Agent (gasless/ephemeral)”.
- S->>S: Pick Sender nonces a_i, create VSSS polynominals and commitments, choose Recipient + S->>S: Pick Sender nonces a_i, create VSSS polynomials and commitments, choose Recipient @@ - R->>S: Confirms session establishement and returns encrypted nonces b_i * R + R->>S: Confirm session establishment and return EC points b_i · R @@ - R->>R: Validity check on the ack with VSSS commitments and proof. <br/>If invalid, terminate the session + R->>R: Validate ack against VSSS commitments and proof. <br/>If invalid, terminate the sessionAlso applies to: 131-145, 148-153
248-259: Spelling/wording in “Using SURBs”.Small fixes only.
-### 6. Using SURBs -Recipent verifies the valid deposit to the stealth address as well as the integrity of the commitments. +### 6. Using SURBs +Recipient verifies the valid allocation to the stealth address and the integrity of the commitments. @@ -- Recipient reconstructs `secret` from decrypted acknowlegements. +- Recipient reconstructs the secret from decrypted acknowledgments.
5-11: Lint: trailing spaces and MD009.Strip trailing spaces in metadata and around the proof bullets.
-- **Created:** 2025-03-28 -**Updated:** 2025-04-07 -- **Version:** v0.2.0 (Raw) +- **Created:** 2025-03-28 +- **Updated:** 2025-04-07 +- **Version:** v0.2.0 (Raw) @@ - - Commitment $C_{d}$ exists in the Merkle tree + - Commitment $C_{d}$ exists in the Merkle treeAlso applies to: 213-214
281-290: Security considerations: add concrete threats and checks.Suggest covering: replay of acks, invalid-share spam, FR equivocation, Sender griefing (deposit lock), nullifier reuse, and address binding (address(P_s) equality check). Also specify minimum circuit checks and on-chain verification list.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
-
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: tolbrino
PR: hoprnet/rfc#34
File: rfcs/RFC-0001-rfc-process/0001-rfc-process.md:168-173
Timestamp: 2025-08-20T05:40:54.110Z
Learning: In the HOPR RFC process (RFC-0001), only 3 sections are considered mandatory for all RFCs: Metadata Preface, Abstract, and References. Other sections like Motivation, Terminology, Specification, Design Considerations, etc. are optional and should be used as needed based on the RFC's scope and complexity.
🪛 LanguageTool
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
[grammar] ~5-~5: There might be a mistake here.
Context: ...incentivization - Status: Discussion - Author(s): Qianchen Yu (QYuQianchen), ...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ...YuQianchen), Lukas Pohanka (NumberFour8) - Created: 2025-03-28 - Updated: 20...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ... (NumberFour8) - Created: 2025-03-28 - Updated: 2025-04-07 - Version: v0....
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ...** 2025-03-28 - Updated: 2025-04-07 - Version: v0.2.0 (Raw) - **Supersedes...
(QB_NEW_EN)
[grammar] ~9-~9: There might be a mistake here.
Context: ...* 2025-04-07 - Version: v0.2.0 (Raw) - Supersedes: N/A - References: [RFC...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...:** v0.2.0 (Raw) - Supersedes: N/A - References: [RFC0003](../RFC-0003-hopr...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ... Return Paths (RP) in the HOPR protocol. The protocol enables senders to fund exi...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ...gh shielded deposits, stealth addresses, and verifiable secret sharing (VSSS), ma...
(QB_NEW_EN)
[grammar] ~29-~29: There might be a mistake here.
Context: ...olution is necessary. --> When a sender uses HOPR protocol to send requests and expe...
(QB_NEW_EN)
[grammar] ~31-~31: There might be a mistake here.
Context: ... in a dedicated HOPR packet header, i.e. "Single Use Reply Blocks" (SURBs) headers given...
(QB_NEW_EN)
[grammar] ~32-~32: There might be a mistake here.
Context: ... packet header, i.e. "Single Use Reply Blocks" (SURBs) headers given by the Entry node...
(QB_NEW_EN)
[grammar] ~32-~32: There might be a mistake here.
Context: ...(SURBs) headers given by the Entry node. Given that the Exit-to-Entry response ma...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...-Recipient linkage is revealed on-chain. - Fairness: Recipients are only compensa...
(QB_NEW_EN)
[grammar] ~54-~54: There might be a mistake here.
Context: ...ument are to be interpreted as described in [IETF RFC 2119](https://datatracker.i...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ... when, and only when, they appear in all capitals, as shown here. - **Single Use...
(QB_NEW_EN)
[grammar] ~58-~58: There might be a mistake here.
Context: ...ere. - Single Use Reply Blocks (SURB) - Sender: Sender of packets. - **Recipie...
(QB_NEW_EN)
[grammar] ~59-~59: There might be a mistake here.
Context: ...SURB)** - Sender: Sender of packets. - Recipient: Recipient of packets and SU...
(QB_NEW_EN)
[grammar] ~60-~60: There might be a mistake here.
Context: ...blic key
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...posit. Random 32 bytes hexdecimal value. - Nullifier Hash
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...2 bytes hexdecimal value.
(QB_NEW_EN)
[grammar] ~66-~66: Ensure spelling is correct
Context: ...cimal value.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~66-~66: There might be a mistake here.
Context: ...der and used to generate the commitment. - Deposit Committment
(QB_NEW_EN)
[grammar] ~67-~67: Ensure spelling is correct
Context: ...to generate the commitment. - Deposit Committment
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~67-~67: There might be a mistake here.
Context: ... deposit.
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ... picked by the Sender and the Recipient. The stealth secrets MAY be an array of p...
(QB_NEW_EN)
[grammar] ~69-~69: There might be a mistake here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...eposit into multiple stealth addresses. This value defines the derivation of the...
(QB_NEW_EN)
[grammar] ~71-~71: There might be a mistake here.
Context: ...ress of Recipient.
(QB_NEW_EN)
[grammar] ~73-~73: There might be a mistake here.
Context: ...corresponding encrypted values
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ...ypted values
(QB_NEW_EN)
[grammar] ~77-~77: Ensure spelling is correct
Context: ...r-picked nonces, and send the encrypted valeus
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ted valeus
(QB_NEW_EN)
[grammar] ~83-~83: There might be a mistake here.
Context: ...sit the same value to the shielded pool. - **Verifiable Shamir Secret Sharing (VSSS)*...
(QB_NEW_EN)
[grammar] ~84-~84: There might be a mistake here.
Context: ...s split into shares among participants. In the context of SURB, Sender knows the...
(QB_NEW_EN)
[grammar] ~85-~85: There might be a mistake here.
Context: ...es as the solution to the PoR challenge. Each share gets returned to the Recipien...
(QB_NEW_EN)
[style] ~90-~90: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eshold over the size of SURB Batch. - VSSS polynominal: Polynominal used for sec...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~90-~90: Ensure spelling is correct
Context: ...d over the size of SURB Batch. - VSSS polynominal: Polynominal used for secret sharing....
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~90-~90: Ensure spelling is correct
Context: ... of SURB Batch. - VSSS polynominal: Polynominal used for secret sharing. The contant of...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~90-~90: Ensure spelling is correct
Context: ...olynominal used for secret sharing. The contant of the polynominal is the secret. This ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~90-~90: Ensure spelling is correct
Context: ... for secret sharing. The contant of the polynominal is the secret. This polynominal has a d...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~90-~90: Ensure spelling is correct
Context: ... of the polynominal is the secret. This polynominal has a degree of
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~156-~156: Ensure spelling is correct
Context: ...andom secret values for zk deposit as a committment of payment to the stealth address of th...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~157-~157: There might be a mistake here.
Context: ...ent Secret
(QB_NEW_EN)
[grammar] ~160-~160: Ensure spelling is correct
Context: ...6-bit random value Compute the deposit committment
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~161-~161: Ensure spelling is correct
Context: ..._{c})$ where
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~165-~165: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...h. Deposits can take place at any time prior to Session opening. Multiple deposits that...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[grammar] ~165-~165: There might be a mistake here.
Context: ...ce at any time prior to Session opening. Multiple deposits that will later on be ...
(QB_NEW_EN)
[grammar] ~171-~171: There might be a mistake here.
Context: ...f random nonces
(QB_NEW_EN)
[grammar] ~172-~172: There might be a mistake here.
Context: ...rmines the distribution of the deposit. The total deposit is divided equally amo...
(QB_NEW_EN)
[grammar] ~175-~175: Ensure spelling is correct
Context: ...nonce
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~177-~177: There might be a mistake here.
Context: ...r picks a Recipient with public key
(QB_NEW_EN)
[grammar] ~178-~178: There might be a mistake here.
Context: ...of Sender:
(QB_NEW_EN)
[grammar] ~179-~179: There might be a mistake here.
Context: ... * G$, where
(QB_NEW_EN)
[grammar] ~183-~183: There might be a mistake here.
Context: ...ests to Recipient, for each
(QB_NEW_EN)
[grammar] ~184-~184: There might be a mistake here.
Context: ...t, for each
(QB_NEW_EN)
[grammar] ~185-~185: Ensure spelling is correct
Context: ...th: - Threshold
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~185-~185: There might be a mistake here.
Context: ...mmitment to the polynominal coefficients - Encrypted nonce
(QB_NEW_EN)
[grammar] ~188-~188: There might be a mistake here.
Context: ...e
(QB_NEW_EN)
[style] ~192-~192: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f nonce
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~199-~199: There might be a mistake here.
Context: ...ecipient
(QB_NEW_EN)
[grammar] ~203-~203: There might be a mistake here.
Context: ...ipient within the stealth pool contract. This prevents Senders from cheating or p...
(QB_NEW_EN)
[grammar] ~208-~208: There might be a mistake here.
Context: ...still held in the Shielded Pool. Agent: 1. Reconstructs the commitment secret
(QB_NEW_EN)
[grammar] ~210-~210: There might be a mistake here.
Context: ... Generate proofs
(QB_NEW_EN)
[grammar] ~211-~211: There might be a mistake here.
Context: ...ge of nullifier hash
(QB_NEW_EN)
[grammar] ~215-~215: There might be a mistake here.
Context: ...v H_2(s_n \Vert s_{c})$ 3. With inputs: - Private nullifier
(QB_NEW_EN)
[grammar] ~216-~216: There might be a mistake here.
Context: ... - Private nullifier
(QB_NEW_EN)
[grammar] ~217-~217: There might be a mistake here.
Context: ... - Private commitment secret
(QB_NEW_EN)
[grammar] ~218-~218: There might be a mistake here.
Context: ...$S_{c}$ - Private Merkle tree path - Public Merkle root - Public Nulli...
(QB_NEW_EN)
[grammar] ~219-~219: There might be a mistake here.
Context: ...kle tree path - Public Merkle root - Public Nullifier hash ### 5. SURB Bat...
(QB_NEW_EN)
[grammar] ~223-~223: There might be a mistake here.
Context: ...he relavant parametes for SURB creation. - Size of SURB Batch: Computed from the gl...
(QB_NEW_EN)
[grammar] ~224-~224: There might be a mistake here.
Context: ...op_count 3 * ticket_price
(QB_NEW_EN)
[grammar] ~225-~225: There might be a mistake here.
Context: ...\times P_{win}}{(3 \times p_{ticket})}$$ - Threshold of VSSS for the batch
(QB_NEW_EN)
[grammar] ~226-~226: Ensure spelling is correct
Context: ...reshold of VSSS for the batch
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~226-~226: There might be a mistake here.
Context: ...rehsold factor
(QB_NEW_EN)
[uncategorized] ~235-~235: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...ly Blocks (SURBs), each embedding an H4 acknowledgment tag derived from its associated nonce $...
(EN_WORD_COHERENCY)
[grammar] ~243-~243: There might be a mistake here.
Context: ...: - The encrypted share
(QB_NEW_EN)
[uncategorized] ~246-~246: Do not mix variants of the same word (‘acknowledgment’ and ‘acknowledgement’) within a single text.
Context: ...crypt it using the derived key from the acknowledgment tag
(EN_WORD_COHERENCY)
[grammar] ~248-~248: Ensure spelling is correct
Context: ...st
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~251-~251: There might be a mistake here.
Context: ...mitments. When Recipient receives SURBs, SURBs are stored. - Upon SURB usage, t...
(QB_NEW_EN)
[grammar] ~263-~263: There might be a mistake here.
Context: ... correct stealth secret as input
(QB_NEW_EN)
[grammar] ~264-~264: There might be a mistake here.
Context: ...ealth secret
(QB_NEW_EN)
[grammar] ~276-~276: There might be a mistake here.
Context: ... \frac{h_i \times p_{ticket}}{P_{win}}$$ ## Compatibility <!-- Address backward com...
(QB_NEW_EN)
🔇 Additional comments (1)
rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md (1)
1-12: Good structure and alignment with RFC-0001 required sections.Metadata, Abstract, and References are present per process. The expanded spec and diagram add useful clarity.
Also applies to: 13-23, 95-104
| - **Return Path (RP)**: | ||
|
|
||
| - **Shielded Pool**: An anonymized pool of HOPR tokens supporting private deposits and withdrawals using zk-SNARK. | ||
| - **Nullifier $s_n$**: Unique secret value of a deposit. Random 32 bytes hexdecimal value. | ||
| - **Nullifier Hash $h$**: Public unique identifier for deposit claims. 32 bytes hexdecimal value. $h = H_1(s_n)$ | ||
| - **Deposit Committment Secret $s_{c}$**: A random value known only to the Sender and used to generate the commitment. | ||
| - **Deposit Committment $C_{d}$**: A cryptographic representation of a deposit. $C_{d} = H_2(s_n \Vert s_{c})$ | ||
| - **Stealth Secret $s_{s}$**: An one-time pad secret value jointly picked by the Sender and the Recipient. | ||
| The stealth secrets MAY be an array of pairs of one-time-pads ${(a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ | ||
| The deposit can be larger and deposit into multiple stealth addresses. | ||
| This value defines the derivation of the stealth address of Recipient. $s_{s_i} = a_i + b_i$ |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Terminology fixes: fill missing RP def; correct spelling; unify wording.
Numerous typos (“hexdecimal”, “Committment”, “valeus”, etc.) and an empty RP definition. Apply the following cleanup.
-- **Return Path (RP)**:
+- **Return Path (RP)**: The reverse path used to deliver responses from Recipient to Sender via SURBs.
- **Shielded Pool**: An anonymized pool of HOPR tokens supporting private deposits and withdrawals using zk-SNARK.
-- **Nullifier $s_n$**: Unique secret value of a deposit. Random 32 bytes hexdecimal value.
-- **Nullifier Hash $h$**: Public unique identifier for deposit claims. 32 bytes hexdecimal value. $h = H_1(s_n)$
-- **Deposit Committment Secret $s_{c}$**: A random value known only to the Sender and used to generate the commitment.
-- **Deposit Committment $C_{d}$**: A cryptographic representation of a deposit. $C_{d} = H_2(s_n \Vert s_{c})$
-- **Stealth Secret $s_{s}$**: An one-time pad secret value jointly picked by the Sender and the Recipient.
+- **Nullifier $s_n$**: Unique secret value of a deposit. Random 32‑byte hexadecimal value.
+- **Nullifier Hash $h$**: Public unique identifier for deposit claims. 32‑byte hexadecimal value. $h = H_1(s_n)$
+- **Deposit Commitment Secret $s_{c}$**: A random value known only to the Sender and used to generate the commitment.
+- **Deposit Commitment $C_{d}$**: A cryptographic commitment to the deposit. $C_{d} = H_2(s_n \Vert s_{c})$
+- **Stealth Secret $s_{s}$**: A one-time secret jointly derived by Sender and Recipient.
The stealth secrets MAY be an array of pairs of one-time-pads ${(a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$
The deposit can be larger and deposit into multiple stealth addresses.
This value defines the derivation of the stealth address of Recipient. $s_{s_i} = a_i + b_i$
- **Sender-picked nonce $a$**: Random value chosen by the Sender. Partial contribution to the stealth address.
-For one deposit, Sender can created multiple Sender-picked nonces $a_i$, and send the corresponding encrypted values $a_i * R$
+For one deposit, the Sender MAY create multiple nonces $a_i$ and send the corresponding EC points $a_i \cdot R$
to the Recipient.
- **Recipient-picked nonce $b$**: Random value chosen by the Recipient. Partial contribution to the stealth address.
-Recipient should generate an amount of Recipient-picked nonces $b_i$ equivalent to the amount of Sender-picked nonces,
-and send the encrypted valeus $b_i * R$ back to the Sender.
+The Recipient SHOULD generate $b_i$ for each $a_i$ and send the EC points $b_i \cdot R$ back to the Sender.
- **Stealth Address $E_{B_s}$**: Stealth address of the Recipient. It has private key $b_{s}$ and public key $B_{s}$.
- **Winning Probability $P_{win}$**: Each ticket issuer decides on the probability at which this ticket can be a win.
A winning ticket can claim the associated value. The minimum winning probability is set globally at the network level.
- **SURB Batch**: Set of some Single-Use Reply Blocks for transmitting response.
- **Shielded Pool Deposit Amount $D$**: Fixed amount covering 3-hop relay costs for one batch that will be deposited into the shielded pool.
The value is configurable per network. Every Sender MUST deposit the same value to the shielded pool.
- **Verifiable Shamir Secret Sharing (VSSS)**: A protected secret value gets split into shares among participants.
In the context of SURB, Sender knows the secret and generates the shares as the solution to the PoR challenge.
Each share gets returned to the Recipient through First Relays' acknowlegment.
The number of shares corresponds to the size of the SURB batch.
- **VSSS threshold $T$**: The minimum number of shares needed to reconstruct the secret.
- **VSSS sharing factor $F$**: The percentage of VSSS threshold over the size of SURB Batch.
-- **VSSS polynominal**: Polynominal used for secret sharing. The contant of the polynominal is the secret. This polynominal has a degree of $T-1$
+- **VSSS polynomial**: Polynomial used for secret sharing. The constant term is the secret. Degree $T-1$.
This value is set at the network level. Each relay node MUST use the same sharing factor.
-- **Acknowledgement Vector**: Set of FR responses ${ack_1,...ack_k}$ proving SURB usage
+- **Acknowledgment Vector**: Set of FR responses ${ack_1,\dots,ack_k}$ proving SURB usageAlso applies to: 73-79, 82-93
🧰 Tools
🪛 LanguageTool
[grammar] ~64-~64: There might be a mistake here.
Context: ...posit. Random 32 bytes hexdecimal value. - Nullifier Hash
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...2 bytes hexdecimal value.
(QB_NEW_EN)
[grammar] ~66-~66: Ensure spelling is correct
Context: ...cimal value.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~66-~66: There might be a mistake here.
Context: ...der and used to generate the commitment. - Deposit Committment
(QB_NEW_EN)
[grammar] ~67-~67: Ensure spelling is correct
Context: ...to generate the commitment. - Deposit Committment
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~67-~67: There might be a mistake here.
Context: ... deposit.
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ... picked by the Sender and the Recipient. The stealth secrets MAY be an array of p...
(QB_NEW_EN)
[grammar] ~69-~69: There might be a mistake here.
Context: ...a_0+b_0), (a_1+b_1), (a_2+b_2), \ldots}$ The deposit can be larger and deposit in...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...eposit into multiple stealth addresses. This value defines the derivation of the...
(QB_NEW_EN)
[grammar] ~71-~71: There might be a mistake here.
Context: ...ress of Recipient.
(QB_NEW_EN)
🤖 Prompt for AI Agents
In rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
around lines 61-71 (also apply same fixes to 73-79 and 82-93): the RP definition
is missing and there are multiple terminology/typo inconsistencies (e.g.,
“hexdecimal”, “Committment”, “valeus”, “an one-time pad”, inconsistent variable
spacing and punctuation). Add a concise definition for Return Path (RP); correct
spelling to “hexadecimal”, “Commitment”, “values”, and “one-time pad”;
standardize wording to use consistent phrasing (e.g., “Nullifier s_n: unique
secret value of a deposit — random 32-byte hexadecimal value.”), normalize
byte-size notation (“32-byte”), ensure variable subscripts and function notation
are consistent (e.g., h = H1(s_n)), and make stealth secret array wording
consistent (e.g., “The stealth secrets may be an array of one-time-pad pairs ...
s_s_i = a_i + b_i”); apply the same corrections in the other referenced line
ranges.
| For each nonce $a_i$, Sender constructs a random polynominal $Q(x)$ of degree $T-1$ where the constant term (i.e. the coefficient of degree zero) is $a_i$ | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix Shamir indexing and proofs; tie keys to ack tag, not raw a_i.
- Use one polynomial Q_i per nonce a_i; shares are p_{i,j} = Q_i(x_j).
- Don’t index Q by share.
- Derive the encryption key from the SURB ack tag (H4) to avoid leaking a_i.
-For each nonce $a_i$, Sender constructs a random polynominal $Q(x)$ of degree $T-1$ where the constant term (i.e. the coefficient of degree zero) is $a_i$
+For each nonce $a_i$, the Sender constructs a random polynomial $Q_i(x)$ of degree $T-1$ with constant term $Q_i(0)=a_i$.
-The Sender splits Sender-picked nonce $a_i$ into $N \geq T + 1$ shares, denoted $p_0$, $p_1$, $\ldots$, $p_{N-1}$, using Shamir’s Secret Sharing scheme. Each share $p_i = Q_i(x_i)$ is generated by evaluating the corresponding polynomial $Q_i(x)$ $at a distinct point $x_i$ .
+The Sender produces $N \ge T$ Shamir shares for $a_i$ by evaluating $Q_i$ at distinct nonzero points $x_1,\dots,x_N$:
+$p_{i,1}=Q_i(x_1),\dots,p_{i,N}=Q_i(x_N)$.
-Each share $p_i$ is encrypted using a symmetric encryption function with a key derived from the corresponding nonce $a_i$:
-
-$\mathsf{EP}_i = \mathsf{ENC}(a_i, p_i)$
+Each share $p_{i,j}$ is symmetrically encrypted with a key derived from that SURB’s acknowledgment tag (H4) for $a_i$:
+
+$\mathsf{EP}_{i,j} = \mathsf{ENC}(\mathsf{H4}(a_i),\, p_{i,j})$
-This setup enables the Recipient to validate each share using the provided proof, decrypt it using the derived key from the acknowledgment tag $a_i$, and eventually reconstruct the original secret $b$ upon receiving at least $T$ valid shares.
+This lets the Recipient validate each share with $\pi_{i,j}$, decrypt using the H4-derived key, and reconstruct $a_i$ after at least $T$ valid shares.Also applies to: 231-239, 243-247
🧰 Tools
🪛 LanguageTool
[grammar] ~175-~175: Ensure spelling is correct
Context: ...nonce
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
| Sender picks a Recipient with public key $R$. | ||
| During the Session initiation, Recipient encryptes the Sender-picked nonces with the public key of Sender: $a_i * R \equiv a_i * r * G$, | ||
| where $G$ is the generator point of secp256k1 curve. | ||
|
|
||
| Sender creates some SURBs for the Recipent. |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix key ownership and misuse of “encrypt”; align EC notation.
- Sender, not Recipient, should compute and send a_i·R to R.
- Avoid calling scalar mult “encryption”; call it “EC scalar multiplication/share”.
- Fix typos (“encryptes”, “Recipent”), and make the stealth key a point, not an address.
- During the Session initiation, Recipient encryptes the Sender-picked nonces with the public key of Sender: $a_i * R \equiv a_i * r * G$,
- where $G$ is the generator point of secp256k1 curve.
+ During session initiation, the Sender computes the EC point $a_i \cdot R \equiv a_i \cdot r \cdot G$
+ using the Recipient’s public key $R$, where $G$ is the generator of the secp256k1 curve,
+ and includes it in the session-init message.
-Sender creates some SURBs for the Recipent.
+Sender creates some SURBs for the Recipient.
-Recipient confirms the session establishement and sends the encrypted nonces to Sender: $b_i * R \equiv b_i * r * G$
+Recipient confirms session establishment and returns the EC point $b_i \cdot R \equiv b_i \cdot r \cdot G$.
-Recipient can compute the stealth addresses: $E_{s_i} = a_i * R + b_i * R \equiv (a_i + b_i) * r * G \equiv s_{s_i} * r * G$
+Recipient computes the stealth public key point:
+$P_{s_i} = a_i \cdot R + b_i \cdot R \equiv (a_i + b_i)\cdot r \cdot G \equiv s_{s_i}\cdot r \cdot G$.Also applies to: 193-197, 199-201
🧰 Tools
🪛 LanguageTool
[grammar] ~177-~177: There might be a mistake here.
Context: ...r picks a Recipient with public key
(QB_NEW_EN)
[grammar] ~178-~178: There might be a mistake here.
Context: ...of Sender:
(QB_NEW_EN)
[grammar] ~179-~179: There might be a mistake here.
Context: ... * G$, where
(QB_NEW_EN)
| Sender takes network-level properties and computes the relavant parametes for SURB creation. | ||
| - Size of SURB Batch: Computed from the global set shielded pool deposit amount, Sender specific winning probability (which is at least the value of the global minimum winning probability), global ticket price. Shielded Pool Deposit Amount $D$ * winning_probability $P_{win}$ / (default_hop_count 3 * ticket_price $p_{ticket}$) | ||
| $$ N_{batch} = \frac{D \times P_{win}}{(3 \times p_{ticket})}$$ | ||
| - Threshold of VSSS for the batch $T$: VSSS threhsold factor $F$ * Size of SURB Batch | ||
| $T = F \times N_{batch}$. The threshold SHALL consider exit node reward into its computation. |
There was a problem hiding this comment.
Correct SURB batch-size formula; current scaling by P_win is inverted.
Expected per-hop cost is p_ticket × P_win. For 3 hops, expected cost per SURB is 3 × p_ticket × P_win, so N grows as 1/P_win, not P_win.
-- Size of SURB Batch: Computed from the global set shielded pool deposit amount, Sender specific winning probability (which is at least the value of the global minimum winning probability), global ticket price. Shielded Pool Deposit Amount $D$ * winning_probability $P_{win}$ / (default_hop_count 3 * ticket_price $p_{ticket}$)
-$$ N_{batch} = \frac{D \times P_{win}}{(3 \times p_{ticket})}$$
+- Size of SURB Batch: from deposit $D$, winning probability $P_{win}$, default hop count 3, and ticket price $p_{ticket}$:
+$$ N_{batch} = \left\lfloor \frac{D}{3 \times p_{ticket} \times P_{win}} \right\rfloor $$📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Sender takes network-level properties and computes the relavant parametes for SURB creation. | |
| - Size of SURB Batch: Computed from the global set shielded pool deposit amount, Sender specific winning probability (which is at least the value of the global minimum winning probability), global ticket price. Shielded Pool Deposit Amount $D$ * winning_probability $P_{win}$ / (default_hop_count 3 * ticket_price $p_{ticket}$) | |
| $$ N_{batch} = \frac{D \times P_{win}}{(3 \times p_{ticket})}$$ | |
| - Threshold of VSSS for the batch $T$: VSSS threhsold factor $F$ * Size of SURB Batch | |
| $T = F \times N_{batch}$. The threshold SHALL consider exit node reward into its computation. | |
| Sender takes network-level properties and computes the relavant parametes for SURB creation. | |
| - Size of SURB Batch: from deposit $D$, winning probability $P_{win}$, default hop count 3, and ticket price $p_{ticket}$: | |
| $$ N_{batch} = \left\lfloor \frac{D}{3 \times p_{ticket} \times P_{win}} \right\rfloor $$ | |
| - Threshold of VSSS for the batch $T$: VSSS threhsold factor $F$ * Size of SURB Batch | |
| $T = F \times N_{batch}$. The threshold SHALL consider exit node reward into its computation. |
🧰 Tools
🪛 LanguageTool
[grammar] ~223-~223: There might be a mistake here.
Context: ...he relavant parametes for SURB creation. - Size of SURB Batch: Computed from the gl...
(QB_NEW_EN)
[grammar] ~224-~224: There might be a mistake here.
Context: ...op_count 3 * ticket_price
(QB_NEW_EN)
[grammar] ~225-~225: There might be a mistake here.
Context: ...\times P_{win}}{(3 \times p_{ticket})}$$ - Threshold of VSSS for the batch
(QB_NEW_EN)
[grammar] ~226-~226: Ensure spelling is correct
Context: ...reshold of VSSS for the batch
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~226-~226: There might be a mistake here.
Context: ...rehsold factor
(QB_NEW_EN)
🤖 Prompt for AI Agents
In rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
around lines 223-227 the SURB batch-size formula incorrectly scales linearly
with P_win; replace the formula so N_batch is inversely proportional to P_win:
compute expected per-SURB cost as 3 * p_ticket * P_win and set N_batch = D / (3
* p_ticket * P_win). Keep the threshold T = F * N_batch and ensure the note
about including exit node reward in the threshold computation remains.
| To claim compensation, the Recipient SHALL directly claim from the Shielded Pool, providing the correct stealth secret as input $m_i$. | ||
| Any other wallet MAY claim for the Recipient, if the stealth secret $s_{s_i}$ is known to them. | ||
| The Shielded Pool sends the deposit to the Recipient, if $m_i * R \equiv E_{B_{s_i}}$ holds | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Clarify point-vs-address check in withdrawal.
Compare the address derived from the EC point, not the point to an address literal.
-To claim compensation, the Recipient SHALL directly claim from the Shielded Pool, providing the correct stealth secret as input $m_i$.
-Any other wallet MAY claim for the Recipient, if the stealth secret $s_{s_i}$ is known to them.
-The Shielded Pool sends the deposit to the Recipient, if $m_i * R \equiv E_{B_{s_i}}$ holds
+To claim compensation, the Recipient submits the stealth secret $m_i = s_{s_i}$.
+Any wallet MAY submit on behalf of the Recipient if it knows $s_{s_i}$.
+The Shielded Pool releases funds iff address($m_i \cdot R$) = $E_{B_{s_i}}$.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| To claim compensation, the Recipient SHALL directly claim from the Shielded Pool, providing the correct stealth secret as input $m_i$. | |
| Any other wallet MAY claim for the Recipient, if the stealth secret $s_{s_i}$ is known to them. | |
| The Shielded Pool sends the deposit to the Recipient, if $m_i * R \equiv E_{B_{s_i}}$ holds | |
| To claim compensation, the Recipient submits the stealth secret $m_i = s_{s_i}$. | |
| Any wallet MAY submit on behalf of the Recipient if it knows $s_{s_i}$. | |
| The Shielded Pool releases funds iff address($m_i \cdot R$) = $E_{B_{s_i}}$. |
🧰 Tools
🪛 LanguageTool
[grammar] ~263-~263: There might be a mistake here.
Context: ... correct stealth secret as input
(QB_NEW_EN)
[grammar] ~264-~264: There might be a mistake here.
Context: ...ealth secret
(QB_NEW_EN)
🤖 Prompt for AI Agents
In rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
around lines 263-266, the spec currently implies comparing an EC point directly
to an address literal; instead state that implementations MUST derive the
address from the EC point using the same address-derivation function used
elsewhere (e.g., hash+encoding of the public key/point) and compare that derived
address to the expected Recipient address. Update the text to require computing
Address = DeriveAddress(E_{B_{s_i}}) and then checking Address ==
RecipientAddress (or equivalent) rather than comparing the raw EC point to an
address literal, and mention that the derivation method used MUST be the
canonical network address derivation.
|
|
||
| $$R = D -\sum_{i=1}^{batchSize} \frac{h_i \times p_{ticket}}{P_{win}}$$ | ||
| ## Compatibility |
There was a problem hiding this comment.
Extra-reward formula inconsistent with expected-cost model.
Use expected spend h_i × p_ticket × P_win per SURB, not division by P_win.
-$$R = D -\sum_{i=1}^{batchSize} \frac{h_i \times p_{ticket}}{P_{win}}$$
+$$R = D - \sum_{i=1}^{batchSize} \bigl(h_i \times p_{ticket} \times P_{win}\bigr)$$📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| $$R = D -\sum_{i=1}^{batchSize} \frac{h_i \times p_{ticket}}{P_{win}}$$ | |
| ## Compatibility |
🧰 Tools
🪛 LanguageTool
[grammar] ~276-~276: There might be a mistake here.
Context: ... \frac{h_i \times p_{ticket}}{P_{win}}$$ ## Compatibility <!-- Address backward com...
(QB_NEW_EN)
🤖 Prompt for AI Agents
In rfcs/RFC-0008-return-path-incentivization/0008-return-path-incentivization.md
around lines 275 to 277, the extra-reward formula incorrectly divides h_i *
p_ticket by P_win; change it to use the expected spend per SURB by multiplying
h_i * p_ticket * P_win instead. Update the formula and any surrounding
explanatory text to reflect expected-cost model (use multiplication, not
division, by P_win) so the reward R = D - sum_{i=1}^{batchSize} (h_i * p_ticket
* P_win) is consistent.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (7)
rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md (7)
263-266:⚠️ Potential issue | 🟠 MajorWithdrawal check compares an EC-point expression to an address literal
Line 265 compares
$m_i * R$directly with$E_{B_{s_i}}$. The spec should require deriving a canonical address from the EC point and comparing address-to-address.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 263 - 266, The withdrawal check should not compare an EC point to an address literal; instead derive a canonical address from the EC point and compare address-to-address. Update the sentence that reads "The Shielded Pool sends the deposit to the Recipient, if m_i * R ≡ E_{B_{s_i}} holds" to compute an address A = AddressFromPoint(m_i * R) (or state that E_{B_{s_i}} denotes the canonical address of that point) and require A == E_{B_{s_i}} (or AddressFromPoint(m_i * R) == E_{B_{s_i}}), referencing the stealth secret s_{s_i}, Recipient and Shielded Pool to make clear which values are points vs addresses.
276-276:⚠️ Potential issue | 🟠 MajorExtra-reward formula is inconsistent with expected ticket spend
Line 276 divides by
P_{win}; expected spend per used SURB should multiply byP_{win}. Current equation can overstate rewards.Suggested formula correction
-$$R = D -\sum_{i=1}^{batchSize} \frac{h_i \times p_{ticket}}{P_{win}}$$ +$$R = D - \sum_{i=1}^{batchSize} \left(h_i \times p_{ticket} \times P_{win}\right)$$🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` at line 276, The formula for extra-reward R is incorrect: it currently divides by P_{win} but the expected ticket spend per used SURB should multiply by P_{win}. Update the equation R = D - sum_{i=1}^{batchSize} (h_i * p_{ticket} / P_{win}) to instead subtract the expected spend per SURB by using multiplication with P_{win} (i.e., replace the term involving h_i, p_{ticket}, and P_{win} so it multiplies by P_{win}); ensure all references to R, D, h_i, p_{ticket}, P_{win}, and batchSize in the document reflect this corrected formula.
213-214:⚠️ Potential issue | 🟡 MinorCommitment symbol mismatch (
C_DvsC_{d})Line 213 uses
$C_D$while Line 214 uses$C_{d}$. Keep one symbol consistently to avoid proof statement ambiguity.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 213 - 214, The two commitment symbols are inconsistent (C_D vs C_{d}); pick one canonical symbol (e.g., C_{d}) and replace all occurrences so the proof statements are consistent—update the line "Commitment C_D exists in the Merkle tree" to "Commitment C_{d} exists in the Merkle tree" (and any other instances) and ensure the deposit-match line "$S_c$ matches the deposit commitment $C_{d} \equiv H_2(s_n \Vert s_{c})$" uses the same chosen symbol throughout the RFC.
224-227:⚠️ Potential issue | 🟠 MajorSURB batch-size formula scales in the wrong direction with
P_{win}Line 225 currently multiplies by
P_{win}. Under expected-cost modelling, batch size should be inversely proportional toP_{win}.Suggested formula correction
-$$ N_{batch} = \frac{D \times P_{win}}{(3 \times p_{ticket})}$$ +$$ N_{batch} = \left\lfloor \frac{D}{3 \times p_{ticket} \times P_{win}} \right\rfloor $$🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 224 - 227, The current N_batch formula multiplies by winning probability P_win which scales batch size in the wrong direction; change the formula in the SURB batch-size computation to make N_batch inversely proportional to P_win, e.g. N_batch = D / (3 * p_ticket * P_win) (keeping the default_hop_count 3), and ensure the VSSS threshold T = F * N_batch (and its note about including exit node reward) is updated consistently to reference the corrected N_batch symbol.
231-239:⚠️ Potential issue | 🟠 MajorShamir share indexing and encryption-key derivation are underspecified/inconsistent
Lines 231-239 collapse per-secret and per-share notation (
Q_i,p_i,N) and encrypt withENC(a_i, p_i)while Line 246 says key comes from acknowledgment tag. This mismatch makes the SURB proof/decryption flow non-verifiable as written.Also applies to: 246-247
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 231 - 239, The spec mixes per-secret and per-share notation (e.g. Q_i, p_i, N) and inconsistently specifies encryption key sources (ENC(a_i, p_i) vs. "key comes from acknowledgment tag"), so make the indexing and key-derivation explicit and consistent: define a single secret polynomial Q for each nonce a (or consistently index polynomials Q_i if there are many nonces), define shares as p_j = Q(x_j) with j in 0..N-1, and replace ENC(a_i, p_i) with ENC(K(a_i)) or ENC(K(H4(a_i)), p_j) where K(...) is the key-derivation function and H4(...) is the acknowledgment tag derivation; update EP_i naming to reflect per-share keys (e.g. EP_{i,j}) and ensure every occurrence of Q_i, p_i, a_i, EP_i, ENC and H4 in the text consistently follows this convention.
61-93:⚠️ Potential issue | 🟡 MinorTerminology block is incomplete and contains many normative typos
Line 61 leaves Return Path (RP) undefined, and Lines 64-93 include repeated misspellings/inconsistent terms (
hexdecimal,Committment,polynominal,acknowlegment,valeus) that make protocol language ambiguous for implementers.Proposed cleanup
-- **Return Path (RP)**: +- **Return Path (RP)**: Reverse path used to deliver responses from Recipient to Sender via SURBs. ... -- **Nullifier $s_n$**: Unique secret value of a deposit. Random 32 bytes hexdecimal value. +- **Nullifier $s_n$**: Unique secret value of a deposit. Random 32-byte hexadecimal value. ... -- **Deposit Committment Secret $s_{c}$** +- **Deposit Commitment Secret $s_{c}$** ... -- **VSSS polynominal**: Polynominal used for secret sharing. The contant of the polynominal is the secret. +- **VSSS polynomial**: Polynomial used for secret sharing. The constant term is the secret.As per coding guidelines, RFC markdown files must fix all spelling errors and use British English variants.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 61 - 93, The terminology block omits a definition for "Return Path (RP)" and contains many spelling/term inconsistencies (e.g. "hexdecimal" → "hexadecimal", "Committment" → "Commitment", "polynominal" → "polynomial", "acknowlegment" → "acknowledgement", "valeus" → "values", "contant" → "constant"); update the block to add a clear one-line definition for Return Path (RP) and correct all typos and inconsistent capitalisation/terminology across the listed symbols (Nullifier s_n, Nullifier Hash h, Deposit Commitment Secret s_c, Deposit Commitment C_d, Stealth Secret s_s, Sender-picked nonce a, Recipient-picked nonce b, Stealth Address E_{B_s}, Winning Probability P_win, SURB Batch, Shielded Pool Deposit Amount D, VSSS, VSSS threshold T, VSSS sharing factor F, VSSS polynomial, Acknowledgement Vector) using British English spellings and consistent formatting for equations and plurals so implementers can unambiguously locate and use each term.
177-179:⚠️ Potential issue | 🟠 MajorSender/Recipient nonce flow is assigned to the wrong party
Lines 178-179 state the Recipient encrypts Sender-picked nonces, while the math (
a_i * R) describes Sender-side scalar multiplication. This role inversion breaks protocol implementability and key ownership semantics.Also applies to: 193-196
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md` around lines 177 - 179, The text incorrectly states the Recipient encrypts Sender-picked nonces while the math a_i * R = a_i * r * G describes the Sender performing scalar multiplication with the Recipient's public key; change the sentence to state that the Sender (not the Recipient) encrypts its Sender-picked nonces using the Recipient's public key R (i.e., Sender computes a_i * R = a_i * r * G), and apply the same correction to the analogous passage referenced at lines 193-196 so the roles and the math are consistent (refer to symbols Sender, Recipient, a_i, R, r, G).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md`:
- Line 11: Replace the non-conforming reference label "[RFC0003]" with the
repo-standard zero-padded format "[RFC-0003]" throughout this RFC (including the
inline link and the References section) so numbering matches other RFCs; update
any matching link labels or reference entries that use "RFC0003" to the new
"RFC-0003" token to keep labels consistent.
---
Duplicate comments:
In
`@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md`:
- Around line 263-266: The withdrawal check should not compare an EC point to an
address literal; instead derive a canonical address from the EC point and
compare address-to-address. Update the sentence that reads "The Shielded Pool
sends the deposit to the Recipient, if m_i * R ≡ E_{B_{s_i}} holds" to compute
an address A = AddressFromPoint(m_i * R) (or state that E_{B_{s_i}} denotes the
canonical address of that point) and require A == E_{B_{s_i}} (or
AddressFromPoint(m_i * R) == E_{B_{s_i}}), referencing the stealth secret
s_{s_i}, Recipient and Shielded Pool to make clear which values are points vs
addresses.
- Line 276: The formula for extra-reward R is incorrect: it currently divides by
P_{win} but the expected ticket spend per used SURB should multiply by P_{win}.
Update the equation R = D - sum_{i=1}^{batchSize} (h_i * p_{ticket} / P_{win})
to instead subtract the expected spend per SURB by using multiplication with
P_{win} (i.e., replace the term involving h_i, p_{ticket}, and P_{win} so it
multiplies by P_{win}); ensure all references to R, D, h_i, p_{ticket}, P_{win},
and batchSize in the document reflect this corrected formula.
- Around line 213-214: The two commitment symbols are inconsistent (C_D vs
C_{d}); pick one canonical symbol (e.g., C_{d}) and replace all occurrences so
the proof statements are consistent—update the line "Commitment C_D exists in
the Merkle tree" to "Commitment C_{d} exists in the Merkle tree" (and any other
instances) and ensure the deposit-match line "$S_c$ matches the deposit
commitment $C_{d} \equiv H_2(s_n \Vert s_{c})$" uses the same chosen symbol
throughout the RFC.
- Around line 224-227: The current N_batch formula multiplies by winning
probability P_win which scales batch size in the wrong direction; change the
formula in the SURB batch-size computation to make N_batch inversely
proportional to P_win, e.g. N_batch = D / (3 * p_ticket * P_win) (keeping the
default_hop_count 3), and ensure the VSSS threshold T = F * N_batch (and its
note about including exit node reward) is updated consistently to reference the
corrected N_batch symbol.
- Around line 231-239: The spec mixes per-secret and per-share notation (e.g.
Q_i, p_i, N) and inconsistently specifies encryption key sources (ENC(a_i, p_i)
vs. "key comes from acknowledgment tag"), so make the indexing and
key-derivation explicit and consistent: define a single secret polynomial Q for
each nonce a (or consistently index polynomials Q_i if there are many nonces),
define shares as p_j = Q(x_j) with j in 0..N-1, and replace ENC(a_i, p_i) with
ENC(K(a_i)) or ENC(K(H4(a_i)), p_j) where K(...) is the key-derivation function
and H4(...) is the acknowledgment tag derivation; update EP_i naming to reflect
per-share keys (e.g. EP_{i,j}) and ensure every occurrence of Q_i, p_i, a_i,
EP_i, ENC and H4 in the text consistently follows this convention.
- Around line 61-93: The terminology block omits a definition for "Return Path
(RP)" and contains many spelling/term inconsistencies (e.g. "hexdecimal" →
"hexadecimal", "Committment" → "Commitment", "polynominal" → "polynomial",
"acknowlegment" → "acknowledgement", "valeus" → "values", "contant" →
"constant"); update the block to add a clear one-line definition for Return Path
(RP) and correct all typos and inconsistent capitalisation/terminology across
the listed symbols (Nullifier s_n, Nullifier Hash h, Deposit Commitment Secret
s_c, Deposit Commitment C_d, Stealth Secret s_s, Sender-picked nonce a,
Recipient-picked nonce b, Stealth Address E_{B_s}, Winning Probability P_win,
SURB Batch, Shielded Pool Deposit Amount D, VSSS, VSSS threshold T, VSSS sharing
factor F, VSSS polynomial, Acknowledgement Vector) using British English
spellings and consistent formatting for equations and plurals so implementers
can unambiguously locate and use each term.
- Around line 177-179: The text incorrectly states the Recipient encrypts
Sender-picked nonces while the math a_i * R = a_i * r * G describes the Sender
performing scalar multiplication with the Recipient's public key; change the
sentence to state that the Sender (not the Recipient) encrypts its Sender-picked
nonces using the Recipient's public key R (i.e., Sender computes a_i * R = a_i *
r * G), and apply the same correction to the analogous passage referenced at
lines 193-196 so the roles and the math are consistent (refer to symbols Sender,
Recipient, a_i, R, r, G).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8dcbd12c-8427-4c79-a32a-b45e3826ccb0
📒 Files selected for processing (1)
rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md
| - **Updated:** 2025-04-07 | ||
| - **Version:** v0.2.0 (Raw) | ||
| - **Supersedes:** N/A | ||
| - **References:** [RFC0003](../RFC-0003-hopr-packet-protocol/0003-hopr-packet-protocol.md) |
There was a problem hiding this comment.
Reference formatting should follow RFC repo convention
Line 11 uses [RFC0003]; align reference labelling/numbering format with repository guideline (zero-padded reference numbers).
As per coding guidelines, RFC markdown files should not use single-digit reference numbers and should keep reference numbering conventions consistent.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@rfcs/RFC-0012-return-path-incentivization/0012-return-path-incentivization.md`
at line 11, Replace the non-conforming reference label "[RFC0003]" with the
repo-standard zero-padded format "[RFC-0003]" throughout this RFC (including the
inline link and the References section) so numbering matches other RFCs; update
any matching link labels or reference entries that use "RFC0003" to the new
"RFC-0003" token to keep labels consistent.
WIP
Close #10
Summary by CodeRabbit
Documentation