Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC0002 - HOPR packet protocol #4

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Conversation

NumberFour8
Copy link
Contributor

@NumberFour8 NumberFour8 commented Mar 18, 2025

WIP

Summary by CodeRabbit

  • Documentation
    • Introduced a comprehensive specification for the HOPR Packet Protocol, detailing the packet structure, encoding/decoding mechanisms, and processes for secure, anonymous communication with relay node incentivization.

@NumberFour8 NumberFour8 self-assigned this Mar 18, 2025
Copy link

coderabbitai bot commented Mar 18, 2025

📝 Walkthrough

Walkthrough

This pull request introduces a new RFC document detailing the HOPR Packet Protocol. The document specifies the packet format, including its Meta packet and Ticket components, and describes the procedures for creating both forward and reply packets. It emphasizes the use of cryptographic primitives, such as elliptic curve cryptography and key derivation functions, and introduces the Proof of Relay mechanism inspired by the Sphinx packet format enhancements.

Changes

File Change Summary
RFC-0002-hopr-packet-protocol/…/RFC-0002-hopr-packet-protocol.md New RFC document outlining the HOPR Packet Protocol specifications, including packet structure, cryptographic requirements, and packet creation processes for forward and reply flows.

Sequence Diagram(s)

Forward Packet Creation

Loading
sequenceDiagram
    participant Sender
    participant Crypto as Cryptography Module
    participant Builder as Packet Builder
    participant Relay as Relay Node

    Sender->>Crypto: Generate shared secret & PoR value
    Crypto-->>Sender: Return cryptographic primitives
    Sender->>Builder: Build Meta packet with header and payload
    Builder-->>Sender: Complete forward packet
    Sender->>Relay: Transmit forward packet

Reply Packet Creation (Using SURB)

Loading
sequenceDiagram
    participant Recipient
    participant SURB as SURB Generator
    participant Builder as Packet Builder
    participant Relay as Relay Node

    Recipient->>SURB: Request Single Use Reply Block creation
    SURB-->>Recipient: Provide SURB
    Recipient->>Builder: Construct reply packet using SURB
    Builder-->>Recipient: Complete reply packet
    Recipient->>Relay: Send reply packet back to sender

Suggested reviewers

  • Teebor-Choka
  • jeandemeusy
  • tolbrino

Tip

⚡🧪 Multi-step agentic review comment chat (experimental)
  • We're introducing multi-step agentic chat in review comments. This experimental feature enhances review discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments.
    - To enable this feature, set early_access to true under in the settings.

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (23)
RFC-0002-hopr-packet-protocol/RFC-0002-hopr-packet-protocol.md (23)

1-2: Markdown Heading Spacing:
The main title (# RFC-0002 HOPR Packet Protocol) should be surrounded by blank lines according to markdownlint (MD022). Please ensure there is a blank line before and after the heading.


13-14: Heading and Long Line Formatting in Abstract:
The “## Abstract” heading should be preceded and followed by a blank line (MD022). Also, the abstract text on line 14 exceeds the recommended maximum line length (120 characters); consider breaking it into shorter lines for improved readability.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


14-14: Line length
Expected: 120; Actual: 461

(MD013, line-length)


14-14: Typographical Error:
The word “similiar” appears on line 14. Please correct it to “similar.”

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

14-14: Line length
Expected: 120; Actual: 461

(MD013, line-length)


22-22: Wordiness Reduction:
On line 22, the phrase “in order to allow incentivization of the hops…” is a bit wordy. Consider a more concise alternative such as “to incentivize the hops…”

🧰 Tools
🪛 LanguageTool

[style] ~22-~22: Consider a shorter alternative to avoid wordiness.
Context: ...ds additional information for each hop, in order to allow incentivization of the hops (exce...

(IN_ORDER_TO_PREMIUM)

🪛 markdownlint-cli2 (0.17.2)

22-22: Line length
Expected: 120; Actual: 317

(MD013, line-length)


55-55: Missing Article in Return Path Definition:
On line 55, the description for return path may benefit from an article. For example, using “a path” or “the path” could improve clarity. Consider rephrasing to “a path that is used to deliver packets in the opposite direction of the forward path.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~55-~55: Possible missing article found.
Context: ...n path*: a path that is used to deliver packet in the opposite direction than *forward...

(AI_HYDRA_LEO_MISSING_A)

🪛 markdownlint-cli2 (0.17.2)

55-55: Line length
Expected: 120; Actual: 154

(MD013, line-length)


63-63: Preposition Correction:
On line 63, the sentence “The pseudonym MAY be prefixed with a static prefix. The length such static prefix MUST NOT exceed half of the entire pseudonym's size.” would read more clearly if you insert “of” after “such” (i.e. “such of static prefix”).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~63-~63: Possible missing preposition found.
Context: ...efixed with a static prefix. The length such static prefix MUST NOT exceed half of t...

(AI_HYDRA_LEO_MISSING_OF)

🪛 markdownlint-cli2 (0.17.2)

63-63: Line length
Expected: 120; Actual: 297

(MD013, line-length)


73-73: Punctuation and Standard Terminology:
On line 73, consider adding a comma after “hard” and standardizing the spelling of “Diffie-Hellman” (with a hyphen) when referring to the “Elliptic Curve Diffie Hellman Problem.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~73-~73: Possible missing comma found.
Context: ...lace, namely: - an Elliptic Curve (EC) group where the Elliptic Curve Diffie Hellman...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~73-~73: This word is normally spelled with a hyphen.
Context: ...rve (EC) group where the Elliptic Curve Diffie Hellman Problem (ECDLP) is hard. The peer publi...

(EN_COMPOUNDS_DIFFIE_HELLMAN)

🪛 markdownlint-cli2 (0.17.2)

73-73: Line length
Expected: 120; Actual: 234

(MD013, line-length)


96-96: Comma for Compound Sentence:
On line 96, a comma is recommended before “but” in the sentence “The Sender pseudonym MUST be randomly generated for each packet but MAY contain a static prefix.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~96-~96: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ST be randomly generated for each packet but MAY contain a static prefix. The forwa...

(COMMA_COMPOUND_SENTENCE_2)


115-115: Numeric Range Formatting:
The notation “1 .. N” on line 115 shows two consecutive dots. Consider reformatting this range either to “1 to N” or “1..N” (with a single dot) for clarity.

🧰 Tools
🪛 LanguageTool

[typographical] ~115-~115: Two consecutive dots
Context: ...be a list of Phop_i and Pdst (for i = 1 .. N). For N = 0, the Extended path consis...

(DOUBLE_PUNCTUATION)


129-129: Article for Clarity:
On line 129, the sentence “For path of length N, the length of the list of Shared secrets is N+1.” could be clearer if an article is added (e.g. “the list of shared secrets…”).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~129-~129: Possible missing article found.
Context: ...n Alpha and list of SharedSecret_i For path of length N, the length of the list of ...

(AI_HYDRA_LEO_MISSING_A)


131-131: Comma Insertion for Clarity:
On line 131, insert a comma after “In such case” so that it reads “In such case, the computation MUST fail with an error.” This improves readability.

🧰 Tools
🪛 LanguageTool

[typographical] ~131-~131: It appears that a comma is missing.
Context: ...untered anywhere during step 3. In such case the computation MUST fail with an error...

(DURING_THAT_TIME_COMMA)

🪛 markdownlint-cli2 (0.17.2)

131-131: Line length
Expected: 120; Actual: 194

(MD013, line-length)


143-143: Definite Article Usage:
On line 143, consider adding “the” before “one-way cryptographic hash function” to read “… transformed via the one-way cryptographic hash function …” for improved clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~143-~143: Possible missing article found.
Context: ... challenge value MAY be transformed via one-way cryptographic hash function, whose ...

(AI_HYDRA_LEO_MISSING_A)

🪛 markdownlint-cli2 (0.17.2)

143-143: Line length
Expected: 120; Actual: 238

(MD013, line-length)


150-150: Comma After Conjunctive Adverb:
On line 150, insert a comma immediately after “Also” so that the sentence begins “Also, here …” to conform with standard punctuation practices.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~150-~150: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... Ticket challenge for the first ticket Also here, both values are EC points, where ...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


165-165: Article Addition for Clarity in Component Ordering:
On line 165, consider inserting an article to improve clarity. For example, “The order of these components MAY differ when the packet is serialized…” can help the sentence flow better.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~165-~165: Possible missing article found.
Context: ...der of these components MAY differ when packet is serialized to its binary form. The ...

(AI_HYDRA_LEO_MISSING_THE)


167-167: Prepositional Correction:
On line 167, rephrase “depending whether this packet is a forward packet or a reply packet” to “depending on whether this packet is a forward packet or a reply packet.”


193-193: Clarification of PRG Initialization Instruction:
The instruction “Initialize PRG with SharedSecret_N-i+2” on line 193 might benefit from additional clarity regarding the subject performing the initialization. Please clarify whether this is an imperative for the implementation or a description of the process.

🧰 Tools
🪛 LanguageTool

[grammar] ~193-~193: Did you mean “am” or “will be”?
Context: ...ize PRG with SharedSecret_N-i+2 2. If i is equal to 1 - Set HdrExt[0] to EndPre...

(PERS_PRONOUN_AGREEMENT)


201-201: Instruction Clarity in PRG Instance Initialization:
On line 201, consider rephrasing “Initialize new PRG instance with SharedSecret_i” to clarify the action and subject. A slight rewording can enhance understanding.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~201-~201: Did you mean “I”?
Context: ...lize new PRG instance with SharedSecret_i - Seek the PRG to position `...

(I_LOWERCASE_PREMIUM)


208-208: Indexing Clarity:
On line 208, the instruction “Copy ID_N-i+2 to HdrExt starting at offset 1” might be unclear regarding the indexing convention. Please verify that the intended recipient and offset are well understood.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~208-~208: Did you mean “I”?
Context: ...InfoLen` in HdrExt - Set HdrExt[i] = i - Copy ID_N-i+2 to HdrExt starting a...

(I_LOWERCASE_PREMIUM)


223-223: Comma for Compound Sentence:
On line 223, inserting a comma after “PacketMax bytes” would improve the sentence flow in “… MUST not exceed PacketMax bytes and therefore …”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~223-~223: Possible missing comma found.
Context: ...acket payload MUST not exceed PacketMax bytes and therefore the size of the User payl...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)

223-223: Line length
Expected: 120; Actual: 147

(MD013, line-length)


237-237: Redundant Phrase Cleanup:
On line 237, the phrase “generated alongside with the SURB” is redundant. It is sufficient to say “generated alongside the SURB.”

🧰 Tools
🪛 LanguageTool

[style] ~237-~237: This phrase is redundant. Consider writing “alongside” or “with”.
Context: ...plyOpener. The ReplyOpener is generated alongside with the SURB and is stored at the Sender (i...

(ALONGSIDE_WITH)

🪛 markdownlint-cli2 (0.17.2)

237-237: Line length
Expected: 120; Actual: 291

(MD013, line-length)


251-251: Numeric Range Formatting (Return Path):
On line 251, similar to line 115, avoid using two consecutive dots in “for i = 1 .. N.” Consider using a single dot or clear verbal notation such as “for i = 1 to N.”

🧰 Tools
🪛 LanguageTool

[typographical] ~251-~251: Two consecutive dots
Context: ...be a list of Phop_i and Psrc (for i = 1 .. N). For N = 0, the Extended return path...

(DOUBLE_PUNCTUATION)


312-312: Punctuation Verification:
On line 312, re-examine the comma usage in the clause “... pseudonym, to identify itself across multiple forward packets.” Verify whether the comma is needed or if the sentence flows better without it.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~312-~312: Possible missing comma found.
Context: ... Sender of the forward packet MAY use a fixed random prefix of the pseudonym, to iden...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)

312-312: Line length
Expected: 120; Actual: 260

(MD013, line-length)


1-362: Comprehensive Markdown Formatting Review:
Several markdown style issues have been detected throughout the document:

  • Blank Lines Around Headings (MD022): Many headings (e.g., “## Abstract”, “### 1.1 Conventions and terminology”, etc.) would benefit from surrounding blank lines.
  • Line Length (MD013): Numerous lines exceed the recommended 120 characters; consider wrapping long lines for improved readability.
  • Trailing Spaces and Hard Tabs (MD009 & MD010): Ensure that there are no unnecessary trailing spaces or hard tabs, and that list indentations are consistent (see MD030, MD032, MD005).

Addressing these markdownlint recommendations will enhance the document’s clarity and maintainability.

🧰 Tools
🪛 LanguageTool

[style] ~22-~22: Consider a shorter alternative to avoid wordiness.
Context: ...ds additional information for each hop, in order to allow incentivization of the hops (exce...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~53-~53: Possible missing article found.
Context: ...d path*: a path that is used to deliver packet only in the direction from the sender t...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~55-~55: Possible missing article found.
Context: ...n path*: a path that is used to deliver packet in the opposite direction than *forward...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~63-~63: Possible missing preposition found.
Context: ...efixed with a static prefix. The length such static prefix MUST NOT exceed half of t...

(AI_HYDRA_LEO_MISSING_OF)


[uncategorized] ~73-~73: Possible missing comma found.
Context: ...lace, namely: - an Elliptic Curve (EC) group where the Elliptic Curve Diffie Hellman...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~73-~73: This word is normally spelled with a hyphen.
Context: ...rve (EC) group where the Elliptic Curve Diffie Hellman Problem (ECDLP) is hard. The peer publi...

(EN_COMPOUNDS_DIFFIE_HELLMAN)


[uncategorized] ~96-~96: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ST be randomly generated for each packet but MAY contain a static prefix. The forwa...

(COMMA_COMPOUND_SENTENCE_2)


[typographical] ~115-~115: Two consecutive dots
Context: ...be a list of Phop_i and Pdst (for i = 1 .. N). For N = 0, the Extended path consis...

(DOUBLE_PUNCTUATION)


[uncategorized] ~129-~129: Possible missing article found.
Context: ...n Alpha and list of SharedSecret_i For path of length N, the length of the list of ...

(AI_HYDRA_LEO_MISSING_A)


[typographical] ~131-~131: It appears that a comma is missing.
Context: ...untered anywhere during step 3. In such case the computation MUST fail with an error...

(DURING_THAT_TIME_COMMA)


[uncategorized] ~143-~143: Possible missing article found.
Context: ... challenge value MAY be transformed via one-way cryptographic hash function, whose ...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~150-~150: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... Ticket challenge for the first ticket Also here, both values are EC points, where ...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~165-~165: Possible missing article found.
Context: ...der of these components MAY differ when packet is serialized to its binary form. The ...

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~169-~169: The verb ‘depend’ requires the preposition ‘on’ (or ‘upon’).
Context: ...ase. The Header is created differently depending whether this packet is a forward packet...

(DEPEND_ON)


[uncategorized] ~182-~182: Did you mean “I”?
Context: ...ual lengths) - Sender pseudonym Let ID_i be a public key identifier of P_i (by u...

(I_LOWERCASE_PREMIUM)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ndPrefix be a single byte equal to 255. Let RoutingInfoLen be equal to `1 + |ID_i| ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~193-~193: Did you mean “am” or “will be”?
Context: ...ize PRG with SharedSecret_N-i+2 2. If i is equal to 1 - Set HdrExt[0] to EndPre...

(PERS_PRONOUN_AGREEMENT)


[uncategorized] ~201-~201: Did you mean “I”?
Context: ...lize new PRG instance with SharedSecret_i - Seek the PRG to position `...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~208-~208: Did you mean “I”?
Context: ...InfoLen` in HdrExt - Set HdrExt[i] = i - Copy ID_N-i+2 to HdrExt starting a...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~223-~223: Possible missing comma found.
Context: ...acket payload MUST not exceed PacketMax bytes and therefore the size of the User payl...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~237-~237: This phrase is redundant. Consider writing “alongside” or “with”.
Context: ...plyOpener. The ReplyOpener is generated alongside with the SURB and is stored at the Sender (i...

(ALONGSIDE_WITH)


[typographical] ~251-~251: Two consecutive dots
Context: ...be a list of Phop_i and Psrc (for i = 1 .. N). For N = 0, the Extended return path...

(DOUBLE_PUNCTUATION)


[uncategorized] ~312-~312: Possible missing comma found.
Context: ... Sender of the forward packet MAY use a fixed random prefix of the pseudonym, to iden...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)

13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


14-14: Line length
Expected: 120; Actual: 461

(MD013, line-length)


20-20: Line length
Expected: 120; Actual: 407

(MD013, line-length)


22-22: Line length
Expected: 120; Actual: 317

(MD013, line-length)


24-24: Line length
Expected: 120; Actual: 322

(MD013, line-length)


28-28: Line length
Expected: 120; Actual: 195

(MD013, line-length)


30-30: Line length
Expected: 120; Actual: 159

(MD013, line-length)


43-43: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


52-52: Hard tabs
Column: 1

(MD010, no-hard-tabs)


55-55: Line length
Expected: 120; Actual: 154

(MD013, line-length)


63-63: Line length
Expected: 120; Actual: 297

(MD013, line-length)


65-65: Line length
Expected: 120; Actual: 184

(MD013, line-length)


73-73: Line length
Expected: 120; Actual: 234

(MD013, line-length)


82-82: Line length
Expected: 120; Actual: 261

(MD013, line-length)


89-89: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


98-98: Line length
Expected: 120; Actual: 191

(MD013, line-length)


104-104: Line length
Expected: 120; Actual: 196

(MD013, line-length)


106-106: Line length
Expected: 120; Actual: 170

(MD013, line-length)


123-123: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


124-124: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


125-125: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


126-126: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


131-131: Line length
Expected: 120; Actual: 194

(MD013, line-length)


135-135: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


135-135: Line length
Expected: 120; Actual: 192

(MD013, line-length)


139-139: Line length
Expected: 120; Actual: 147

(MD013, line-length)


140-140: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


143-143: Line length
Expected: 120; Actual: 238

(MD013, line-length)


147-147: Line length
Expected: 120; Actual: 208

(MD013, line-length)


148-148: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


153-153: Line length
Expected: 120; Actual: 137

(MD013, line-length)


171-171: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


177-177: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


182-182: Line length
Expected: 120; Actual: 139

(MD013, line-length)


192-192: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


197-197: Line length
Expected: 120; Actual: 151

(MD013, line-length)


205-205: Inconsistent indentation for list items at the same level
Expected: 3; Actual: 4

(MD005, list-indent)


214-214: Line length
Expected: 120; Actual: 129

(MD013, line-length)


218-218: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


221-221: Line length
Expected: 120; Actual: 256

(MD013, line-length)


223-223: Line length
Expected: 120; Actual: 147

(MD013, line-length)


228-228: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


232-232: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


233-233: Line length
Expected: 120; Actual: 193

(MD013, line-length)


235-235: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


237-237: Line length
Expected: 120; Actual: 291

(MD013, line-length)


242-242: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


262-262: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


270-270: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


277-277: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


278-278: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


284-284: Line length
Expected: 120; Actual: 161

(MD013, line-length)


291-291: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


294-294: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


304-304: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


308-308: Line length
Expected: 120; Actual: 305

(MD013, line-length)


310-310: Line length
Expected: 120; Actual: 150

(MD013, line-length)


312-312: Line length
Expected: 120; Actual: 260

(MD013, line-length)


325-325: Line length
Expected: 120; Actual: 146

(MD013, line-length)


335-335: Line length
Expected: 120; Actual: 142

(MD013, line-length)


349-349: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


351-351: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


360-360: Hard tabs
Column: 10

(MD010, no-hard-tabs)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ad591cc and dccc961.

📒 Files selected for processing (1)
  • RFC-0002-hopr-packet-protocol/RFC-0002-hopr-packet-protocol.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
RFC-0002-hopr-packet-protocol/RFC-0002-hopr-packet-protocol.md

[style] ~22-~22: Consider a shorter alternative to avoid wordiness.
Context: ...ds additional information for each hop, in order to allow incentivization of the hops (exce...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~53-~53: Possible missing article found.
Context: ...d path*: a path that is used to deliver packet only in the direction from the sender t...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~55-~55: Possible missing article found.
Context: ...n path*: a path that is used to deliver packet in the opposite direction than *forward...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~63-~63: Possible missing preposition found.
Context: ...efixed with a static prefix. The length such static prefix MUST NOT exceed half of t...

(AI_HYDRA_LEO_MISSING_OF)


[uncategorized] ~73-~73: Possible missing comma found.
Context: ...lace, namely: - an Elliptic Curve (EC) group where the Elliptic Curve Diffie Hellman...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~73-~73: This word is normally spelled with a hyphen.
Context: ...rve (EC) group where the Elliptic Curve Diffie Hellman Problem (ECDLP) is hard. The peer publi...

(EN_COMPOUNDS_DIFFIE_HELLMAN)


[uncategorized] ~96-~96: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ST be randomly generated for each packet but MAY contain a static prefix. The forwa...

(COMMA_COMPOUND_SENTENCE_2)


[typographical] ~115-~115: Two consecutive dots
Context: ...be a list of Phop_i and Pdst (for i = 1 .. N). For N = 0, the Extended path consis...

(DOUBLE_PUNCTUATION)


[uncategorized] ~129-~129: Possible missing article found.
Context: ...n Alpha and list of SharedSecret_i For path of length N, the length of the list of ...

(AI_HYDRA_LEO_MISSING_A)


[typographical] ~131-~131: It appears that a comma is missing.
Context: ...untered anywhere during step 3. In such case the computation MUST fail with an error...

(DURING_THAT_TIME_COMMA)


[uncategorized] ~143-~143: Possible missing article found.
Context: ... challenge value MAY be transformed via one-way cryptographic hash function, whose ...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~150-~150: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... Ticket challenge for the first ticket Also here, both values are EC points, where ...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~165-~165: Possible missing article found.
Context: ...der of these components MAY differ when packet is serialized to its binary form. The ...

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~169-~169: The verb ‘depend’ requires the preposition ‘on’ (or ‘upon’).
Context: ...ase. The Header is created differently depending whether this packet is a forward packet...

(DEPEND_ON)


[uncategorized] ~182-~182: Did you mean “I”?
Context: ...ual lengths) - Sender pseudonym Let ID_i be a public key identifier of P_i (by u...

(I_LOWERCASE_PREMIUM)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ndPrefix be a single byte equal to 255. Let RoutingInfoLen be equal to `1 + |ID_i| ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~193-~193: Did you mean “am” or “will be”?
Context: ...ize PRG with SharedSecret_N-i+2 2. If i is equal to 1 - Set HdrExt[0] to EndPre...

(PERS_PRONOUN_AGREEMENT)


[uncategorized] ~201-~201: Did you mean “I”?
Context: ...lize new PRG instance with SharedSecret_i - Seek the PRG to position `...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~208-~208: Did you mean “I”?
Context: ...InfoLen` in HdrExt - Set HdrExt[i] = i - Copy ID_N-i+2 to HdrExt starting a...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~223-~223: Possible missing comma found.
Context: ...acket payload MUST not exceed PacketMax bytes and therefore the size of the User payl...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~237-~237: This phrase is redundant. Consider writing “alongside” or “with”.
Context: ...plyOpener. The ReplyOpener is generated alongside with the SURB and is stored at the Sender (i...

(ALONGSIDE_WITH)


[typographical] ~251-~251: Two consecutive dots
Context: ...be a list of Phop_i and Psrc (for i = 1 .. N). For N = 0, the Extended return path...

(DOUBLE_PUNCTUATION)


[uncategorized] ~312-~312: Possible missing comma found.
Context: ... Sender of the forward packet MAY use a fixed random prefix of the pseudonym, to iden...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)
RFC-0002-hopr-packet-protocol/RFC-0002-hopr-packet-protocol.md

13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


14-14: Line length
Expected: 120; Actual: 461

(MD013, line-length)


20-20: Line length
Expected: 120; Actual: 407

(MD013, line-length)


22-22: Line length
Expected: 120; Actual: 317

(MD013, line-length)


24-24: Line length
Expected: 120; Actual: 322

(MD013, line-length)


28-28: Line length
Expected: 120; Actual: 195

(MD013, line-length)


30-30: Line length
Expected: 120; Actual: 159

(MD013, line-length)


43-43: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


52-52: Hard tabs
Column: 1

(MD010, no-hard-tabs)


55-55: Line length
Expected: 120; Actual: 154

(MD013, line-length)


63-63: Line length
Expected: 120; Actual: 297

(MD013, line-length)


65-65: Line length
Expected: 120; Actual: 184

(MD013, line-length)


73-73: Line length
Expected: 120; Actual: 234

(MD013, line-length)


82-82: Line length
Expected: 120; Actual: 261

(MD013, line-length)


89-89: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


98-98: Line length
Expected: 120; Actual: 191

(MD013, line-length)


104-104: Line length
Expected: 120; Actual: 196

(MD013, line-length)


106-106: Line length
Expected: 120; Actual: 170

(MD013, line-length)


123-123: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


124-124: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


125-125: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


126-126: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


131-131: Line length
Expected: 120; Actual: 194

(MD013, line-length)


135-135: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


135-135: Line length
Expected: 120; Actual: 192

(MD013, line-length)


139-139: Line length
Expected: 120; Actual: 147

(MD013, line-length)


140-140: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


143-143: Line length
Expected: 120; Actual: 238

(MD013, line-length)


147-147: Line length
Expected: 120; Actual: 208

(MD013, line-length)


148-148: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


153-153: Line length
Expected: 120; Actual: 137

(MD013, line-length)


171-171: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


177-177: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


182-182: Line length
Expected: 120; Actual: 139

(MD013, line-length)


192-192: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


197-197: Line length
Expected: 120; Actual: 151

(MD013, line-length)


205-205: Inconsistent indentation for list items at the same level
Expected: 3; Actual: 4

(MD005, list-indent)


214-214: Line length
Expected: 120; Actual: 129

(MD013, line-length)


218-218: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


221-221: Line length
Expected: 120; Actual: 256

(MD013, line-length)


223-223: Line length
Expected: 120; Actual: 147

(MD013, line-length)


228-228: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


232-232: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


233-233: Line length
Expected: 120; Actual: 193

(MD013, line-length)


235-235: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


237-237: Line length
Expected: 120; Actual: 291

(MD013, line-length)


242-242: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


262-262: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


270-270: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


277-277: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


278-278: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


284-284: Line length
Expected: 120; Actual: 161

(MD013, line-length)


291-291: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


294-294: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


304-304: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


308-308: Line length
Expected: 120; Actual: 305

(MD013, line-length)


310-310: Line length
Expected: 120; Actual: 150

(MD013, line-length)


312-312: Line length
Expected: 120; Actual: 260

(MD013, line-length)


325-325: Line length
Expected: 120; Actual: 146

(MD013, line-length)


335-335: Line length
Expected: 120; Actual: 142

(MD013, line-length)


349-349: Spaces after list markers
Expected: 1; Actual: 2

(MD030, list-marker-space)


351-351: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


360-360: Hard tabs
Column: 10

(MD010, no-hard-tabs)

@NumberFour8 NumberFour8 marked this pull request as draft March 18, 2025 21:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant