Skip to content

docs: (ADR) validator network#2310

Merged
tac0turtle merged 14 commits intomainfrom
marko/adr22
Jul 14, 2025
Merged

docs: (ADR) validator network#2310
tac0turtle merged 14 commits intomainfrom
marko/adr22

Conversation

@tac0turtle
Copy link
Copy Markdown
Contributor

@tac0turtle tac0turtle commented May 26, 2025

Overview

This pr pulls the adr for the attester system into a separate pr to begin to break apart the large PR.

ref #2308

Summary by CodeRabbit

  • Documentation
    • Added a detailed design document outlining the validator network protocol, including workflow, architecture, validator set management options, quorum rules, security considerations, and interface specifications.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 26, 2025

Walkthrough

A new design document for a validator network protocol has been introduced. It outlines the workflow, architecture, validator set management, quorum rules, security considerations, and future work for a system enabling attesters to verify and attest to blocks in a rollup. The document includes protocol diagrams, gRPC/WebSocket interfaces, signature schemes, staking integration options, and detailed process descriptions.

Changes

File(s) Change Summary
specs/lazy-adr/adr-022-validator-network.md Added a comprehensive draft design document specifying a validator network protocol for rollup attestation, including architecture, quorum rules, signature schemes, staking integration, security, and future enhancements.

Suggested reviewers

  • yarikbratashchuk
  • gupadhyaya

Poem

🐇 In the meadow where code seeds grow,
Validators gather, their signatures glow.
Attesters verify with nimble might,
Sequencers broadcast through day and night.
Quorum achieved, the network sings,
Secure and swift on digital wings! 🌿✨


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.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 explain its main purpose.
    • @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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 generate sequence diagram to generate a sequence diagram of the changes in 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.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 26, 2025

The latest Buf updates on your PR. Results from workflow CI and Release / buf-check (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed⏩ skipped✅ passed✅ passedJul 14, 2025, 8:49 AM

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 26, 2025

PR Preview Action v1.6.2

🚀 View preview at
https://rollkit.github.io/rollkit/pr-preview/pr-2310/

Built to branch gh-pages at 2025-07-14 08:49 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@tac0turtle tac0turtle changed the title docs: add adr for validator network docs: (ADR) validator network May 26, 2025
@tac0turtle tac0turtle marked this pull request as ready for review May 26, 2025 12:32
Comment thread specs/lazy-adr/adr-022-validator-network.md
#### Option B - Reth/EVM Rollup

- Stake manager contract holds the validator stake/weight and maps an address to a key. It will emit `StakeSnapshot(epoch)` events that will be consumed by the consensus client.
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's a typo in this line: validtor should be spelled validator in the sentence "Stake mirror listens for staking snapshot events in order to re build the validator set."

Suggested change
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 73.09%. Comparing base (1ca8457) to head (1d3189d).
Report is 28 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2310      +/-   ##
==========================================
+ Coverage   72.58%   73.09%   +0.51%     
==========================================
  Files          67       68       +1     
  Lines        6449     6542      +93     
==========================================
+ Hits         4681     4782     +101     
+ Misses       1369     1362       -7     
+ Partials      399      398       -1     
Flag Coverage Δ
combined 73.09% <ø> (+0.51%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Contributor

@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: 1

🧹 Nitpick comments (6)
specs/lazy-adr/adr-022-validator-network.md (6)

1-4: Standardize ADR header format
The title and metadata should align with other ADRs (for example: # ADR 022: Validator Network) and follow the repository’s ADR template (e.g., YAML frontmatter or a consistent heading style).


8-11: Fix grammatical errors and improve clarity in Context

  • Add a comma after "Secondly":
  • Change "adding a extra layer" → "adding an extra layer"
  • Consolidate "counter party chains" → "counterparty chains" and remove the comma before "so that":
-Secondly a validator network introduces the opportunity to do more with the token of the chain.
+Secondly, a validator network introduces the opportunity to do more with the chain's token.

-The original design and implementation was centered around IBC and adding a extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
+The original design and implementation was centered around IBC and adding an extra layer of security for counterparty chains so that users are not solely trusting the sequencer to act correctly.
🧰 Tools
🪛 LanguageTool

[misspelling] ~10-~10: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~10-~10: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~10-~10: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


16-24: Use standard Markdown for nested lists
The sub-steps under "Local verification" use Unicode bullets, which may not render consistently. Refactor to use standard Markdown lists and proper indentation:

 2. Local verification — Each attester independently:
- • validates header → parent → state transition;
- • (optionally) re-executes the block using a connected full node;
- • signs bytesToSign = SHA-256(height || blockHash || stateRoot) with its private key.
+   - Validates header → parent → state transition
+   - (Optionally) re-executes the block using a connected full node
+   - Signs `bytesToSign = SHA-256(height || blockHash || stateRoot)` with its private key

27-29: Correct wording and add missing commas in Signing schemes

  • Replace "doused in conjunction with" with "used in conjunction with"
  • Insert commas after "To start," and around "later"
  • Simplify phrasing for user demand:
-Different signature schemes can be doused in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
+Different signature schemes can be used in conjunction with the validator network. To start, we will support ED25519, and later, we plan to add additional signature schemes based on user demand.
🧰 Tools
🪛 LanguageTool

[style] ~27-~27: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~27-~27: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~27-~27: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


44-46: Fix spelling errors and remove empty list item in Option B

  • Change "re build the validtor set" → "rebuild the validator set"
  • Remove the empty bullet at line 46
- - Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
- -
+ - Stake mirror listens for staking snapshot events in order to rebuild the validator set. The proposer remains fixed; once the set is rebuilt, any witnessed changes are applied to the network.
🧰 Tools
🪛 LanguageTool

[misspelling] ~45-~45: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


123-126: Add missing comma for clarity in Future work
Insert a comma before "so" to separate independent clauses:

- - Light-client proofs — expose AttestationProof object so external bridges can verify signedVotingPower without full header.
+ - Light-client proofs — expose an `AttestationProof` object, so external bridges can verify `signedVotingPower` without the full header.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~124-~124: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 4a56860 and d84060c.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[misspelling] ~10-~10: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~10-~10: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~10-~10: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[style] ~27-~27: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~27-~27: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~27-~27: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[misspelling] ~45-~45: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~124-~124: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated

- The staking module is the single source of truth for membership and voting power.
- Create / Edit / Unbond msgs emit ValidatorSetUpdate events every block; sequencer & attesters rebuild the bitmap each height.
- Joining — once bonded, a validator runs the attester daemon; missed signatures trigger normal jailing & slashing.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

In abci exec we would need to solely use the validator updates for the attester network?
We briefly mentioned it this morning, but this is currently what would be used to swap sequencer (which will probably not work for ibc, but let's forget that detail).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yes the valset updates are for the validator network/attester participants.


## Architecture & Interfaces

```mermaid
Copy link
Copy Markdown
Member

@julienrbrt julienrbrt May 26, 2025

Choose a reason for hiding this comment

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

could you add the commit to DA in this? I suppose it will happens after the attesters have "verifed" the block? Or is it solely for IBC packets?

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated

### Signing schemes

Different signature schemes can be used in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There appears to be a small typo in this sentence. "later one" should be "later on" in the phrase "To start we will support ED25519 and later one we plan on adding other signature schemes..."

Suggested change
Different signature schemes can be used in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
Different signature schemes can be used in conjunction with the validator network. To start we will support ED25519 and later on we plan on adding other signature schemes based on how user demand requires.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Copy link
Copy Markdown
Contributor

@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

♻️ Duplicate comments (2)
specs/lazy-adr/adr-022-validator-network.md (2)

45-45: Typo in “validtor”
The word “validtor” should be corrected to “validator” to fix the spelling.

- Stake mirror listens for staking snapshot events in order to re build the validtor set.
+ Stake mirror listens for staking snapshot events in order to re build the validator set.
🧰 Tools
🪛 LanguageTool

[misspelling] ~45-~45: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~45-~45: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


129-153: Missing closing fence for the gRPC proto block
The code block starting at line 129 with proto is not terminated. Add a closing after line 153 to ensure proper rendering:

 }
+```  
🧹 Nitpick comments (4)
specs/lazy-adr/adr-022-validator-network.md (4)

1-4: Ensure ADR header follows project conventions
The document header is clear, but consider aligning with the team’s ADR template by including fields like “Author” and a reference link to the ADR index (e.g., “See ADR-000 for general guidelines”). This will improve discoverability and consistency across ADRs.


8-8: Improve readability with commas around clauses
The sentence could benefit from additional commas to separate clauses and improve flow. For example:

-The validator network acts as an extra security layer and soft confirmation enabling the rollup to move faster than the underlying DA layer.
+The validator network acts as an extra security layer, and soft confirmation, enabling the rollup to move faster than the underlying DA layer.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~8-~8: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


10-10: Fix article, compound word, and remove unnecessary comma
Several small edits will improve grammar here:

-The original design and implementation was centered around IBC and adding a extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
+The original design and implementation was centered around IBC and adding an extra layer of security for counterparty chains so that the user is not solely trusting the sequencer to act correctly.
  • “a extra” → “an extra”
  • “counter party” → “counterparty”
  • remove comma before “so that”
🧰 Tools
🪛 LanguageTool

[misspelling] ~10-~10: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~10-~10: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~10-~10: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


27-27: Clarify phrasing and add missing comma
Small tweak for clarity and correctness:

-Different signature schemes can be used in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
+Different signature schemes can be used with the validator network. To start, we will support ED25519, and later on we plan to add other schemes based on user demand.
  • simplify “in conjunction with” → “with”
  • add comma after “To start”
  • “later one” → “later on”
🧰 Tools
🪛 LanguageTool

[style] ~27-~27: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...Different signature schemes can be used in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~27-~27: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~27-~27: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between d84060c and 54ad476.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~8-~8: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~10-~10: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~10-~10: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~10-~10: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~22-~22: Possible missing comma found.
Context: ...rrent bonded voting power have signed. (Optionally this step can be done async) 5. Final ...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~27-~27: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...Different signature schemes can be used in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~27-~27: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~27-~27: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[uncategorized] ~40-~40: A comma might be missing here.
Context: .... - Leaving — when voting power reaches 0 the sequencer drops the validator from ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~45-~45: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~45-~45: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~124-~124: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: rollkit-docker / docker-build (GHCR; ghcr.io/rollkit/rollkit)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

### Signing schemes

Different signature schemes can be doused in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There appears to be a minor typo in this section. The phrase "later one we plan" should be corrected to "later on we plan" for proper phrasing.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated

Rollkit will introduce a validator network in which there will be a set of validators verifying execution and construction. There are two options for how this can be done, blocking and non-blocking.

- Blocking: The blocking design is centered around the propser waiting for signatures to return to it in order to consider the block having a soft confirmation.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's a typo in this line: propser should be corrected to proposer.

Suggested change
- Blocking: The blocking design is centered around the propser waiting for signatures to return to it in order to consider the block having a soft confirmation.
+- Blocking: The blocking design is centered around the proposer waiting for signatures to return to it in order to consider the block having a soft confirmation.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Rollkit will introduce a validator network in which there will be a set of validators verifying execution and construction. There are two options for how this can be done, blocking and non-blocking.

- Blocking: The blocking design is centered around the propser waiting for signatures to return to it in order to consider the block having a soft confirmation.
- Non-blocking: The non-blocking design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's a typo in this sentence: "submit there attestations" should be "submit their attestations".

Suggested change
- Non-blocking: The non-blocking design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.
- Non-blocking: The non-blocking design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit their attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated
Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated
Copy link
Copy Markdown
Contributor

@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

♻️ Duplicate comments (2)
specs/lazy-adr/adr-022-validator-network.md (2)

33-34: Correct typo in signature schemes section
Replace “doused” with “used” and “later one” with “later on” to fix word choice.

- Different signature schemes can be doused in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
+ Different signature schemes can be used in conjunction with the validator network. To start we will support ED25519 and later on we plan on adding other signature schemes based on user demand.
🧰 Tools
🪛 LanguageTool

[style] ~33-~33: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~33-~33: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~33-~33: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


54-57: Fix typos in the Reth/EVM integration description
Several misspellings and hyphenation issues here; update accordingly:

  • “re build” → “rebuild”
  • “validtor” → “validator”
  • “non blocking” → “non-blocking”
  • “attestestions” → “attestations”
  • “soft confiramation at with in an epoch” → “soft confirmation within an epoch”
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
- The EVM will work in the non blocking way. The validators will be able to join and leave as they please with the requirement that they submit attestestions of execution in order to provide a soft confiramation at with in an epoch if they would like a reward for their work.
+ Stake mirror listens for staking snapshot events in order to rebuild the validator set. The proposer will always be the same; we do not support rotation at this time. Once the validator set is rebuilt, any witnessed changes will be applied to the validator network.
+ The EVM will work in a non-blocking way. Validators may join and leave at will, provided they submit attestations of execution as a transaction within the epoch to qualify for a reward.
🧰 Tools
🪛 LanguageTool

[misspelling] ~55-~55: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~55-~55: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~56-~56: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~56-~56: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~56-~56: Consider a more concise word here.
Context: ... they submit attestestions of execution in order to provide a soft confiramation at with in...

(IN_ORDER_TO_PREMIUM)


[grammar] ~56-~56: Did you mean the adverb/preposition “within”?
Context: ...rder to provide a soft confiramation at with in an epoch if they would like a reward fo...

(WITH_IN)

🧹 Nitpick comments (3)
specs/lazy-adr/adr-022-validator-network.md (3)

10-11: Add missing comma for clarity
Insert a comma before “enabling” to improve readability in the sentence describing the extra security layer.

Proposed diff:

- The validator network acts as an extra security layer and soft confirmation enabling the rollup to move faster than the underlying DA layer.
+ The validator network acts as an extra security layer and soft confirmation, enabling the rollup to move faster than the underlying DA layer.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~10-~10: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


12-13: Correct article usage and remove unnecessary comma
Change “a extra layer” to “an extra layer” and remove the comma before “so that” for grammatical accuracy.

- The original design and implementation was centered around IBC and adding a extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
+ The original design and implementation was centered around IBC and adding an extra layer of security for counter party chains so that the user is not solely trusting the sequencer to act correctly
🧰 Tools
🪛 LanguageTool

[misspelling] ~12-~12: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


18-19: Fix multiple typos and improve phrasing
Several words are misspelled or misused in this decision paragraph. Update as follows:

  • “after fact” → “after the fact”
  • “there attestations” → “their attestations”
  • “attesttation” → “attestation”
  • “at with in an epoch” → “within an epoch”
- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.
+ The design is centered around the proposer producing blocks as fast as possible but asking for signatures after the fact. This design is optimized for block production performance. The validators will need to submit their attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attestation within the epoch, they will not be slashed but will instead forfeit any reward.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~18-~18: Possible missing article found.
Context: ...ossible but asking for signatures after fact. This design is optimized for block pro...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~18-~18: “there” seems less likely than “their” (belonging to them).
Context: ...nce. The validators will need to submit there attestations as a transaction to the st...

(AI_HYDRA_LEO_CPT_THERE_THEIR)


[uncategorized] ~18-~18: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...thin the epoch, they will not be slashed but instead they will not get a reward. ##...

(COMMA_COMPOUND_SENTENCE)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 54ad476 and 5c618b4.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[typographical] ~8-~8: Consider adding a comma.
Context: ...Context When a single sequencer is used there is a limited design space for the token...

(IF_THERE_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~12-~12: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...tion was centered around IBC and adding a extra layer of security for counter par...

(EN_A_VS_AN)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...nd adding a extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~18-~18: Possible missing article found.
Context: ...ossible but asking for signatures after fact. This design is optimized for block pro...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~18-~18: “there” seems less likely than “their” (belonging to them).
Context: ...nce. The validators will need to submit there attestations as a transaction to the st...

(AI_HYDRA_LEO_CPT_THERE_THEIR)


[uncategorized] ~18-~18: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...thin the epoch, they will not be slashed but instead they will not get a reward. ##...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~28-~28: Possible missing comma found.
Context: ...rrent bonded voting power have signed. (Optionally this step can be done async) 5. Final ...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~33-~33: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~33-~33: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~33-~33: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[uncategorized] ~43-~43: Possible missing comma found.
Context: ...sophy. #### Cosmos‑SDK For the Cosmos SDK the attester system will be located in ...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~48-~48: A comma might be missing here.
Context: .... - Leaving — when voting power reaches 0 the sequencer drops the validator from ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~55-~55: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~55-~55: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~56-~56: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~56-~56: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~56-~56: Consider a more concise word here.
Context: ... they submit attestestions of execution in order to provide a soft confiramation at with in...

(IN_ORDER_TO_PREMIUM)


[grammar] ~56-~56: Did you mean the adverb/preposition “within”?
Context: ...rder to provide a soft confiramation at with in an epoch if they would like a reward fo...

(WITH_IN)


[uncategorized] ~124-~124: Possible missing comma found.
Context: ...ail-over — once fast-leader-election is required we can revisit consensus (e.g., HotStuf...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~125-~125: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

Copy link
Copy Markdown
Contributor

@alpe alpe left a comment

Choose a reason for hiding this comment

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

Very nice work. I added some questions to the parts that are not very clear to me.
I found some typos but AI was faster :-)


Rollkit will introduce a validator network in which there will be a set of validators verifying execution and construction.

- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

but instead they will not get a reward.

nit: later you write "optionally jails low-participation validator" in the cosmos-sdk section.

• validates header → parent → state transition;
• (optionally) re-executes the block using a connected full node;
• signs bytesToSign = SHA-256(height || blockHash || stateRoot) with its private key.
3. Signature return — The attester sends SubmitSignature{height, blockHash, pubKey, signature} back to the sequencer (one-way unary gRPC).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 This back-channel could be extended for custom data like we had with vote-extensions to enable future features like oracles

3. Signature return — The attester sends SubmitSignature{height, blockHash, pubKey, signature} back to the sequencer (one-way unary gRPC).
4. Aggregation & quorum — The sequencer collects signatures until ≥ ⅔ of current bonded voting power have signed. (Optionally this step can be done async)
5. Final block commit — Sequencer writes the quorum attestation into BlockHeader.ValidatorHash and gossips the block via IBC.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can you elaborate why the block is gossiped via IBC? Who is receiving them?

• (optionally) re-executes the block using a connected full node;
• signs bytesToSign = SHA-256(height || blockHash || stateRoot) with its private key.
3. Signature return — The attester sends SubmitSignature{height, blockHash, pubKey, signature} back to the sequencer (one-way unary gRPC).
4. Aggregation & quorum — The sequencer collects signatures until ≥ ⅔ of current bonded voting power have signed. (Optionally this step can be done async)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it would be good to specify what happens when quorum was not reached within the block time?

- Joining — once bonded, a validator runs the attester daemon.
- Leaving — when voting power reaches 0 the sequencer drops the validator from the next bitmap, ignoring late sigs.

The design adds a dedicated x/attestation Cosmos-SDK module that intercepts every IBC message in the AnteHandler, parks it in a state-kept queue, and releases it only after ≥ ⅔ validator voting-power has submitted attestations. Validators sign a hash of the queued tx; the module tracks signatures with a compact bitmap, finalises transactions in EndBlock (executing them through the normal IBC router), rewards timely signers, and optionally jails low-participation validators. Parameters cover quorum fraction, attestation window, pruning window, and queue size, keeping the solution pluggable and light-touch on existing IBC code.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This part is not very clear to me. Why is this needed and how is this different to the normal block signing?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

we dont have the concept of block signing the same way it exists in comet. Here there is one block signer, but a set of validators verifying what was signed by the proposer is correct. If the quorum is reached for the block to have a soft confirmation then the IBC transaction can be broadcast to the counter party chain. Block signing would to modifications of rollkit while this design keeps it in the execution environment

• Double-sign protection — Deterministic bytesToSign makes replay impossible; Ed25519 prevents malleability.
• Slashing — Existing Cosmos evidence (MsgEvidence) for missed or duplicate signatures applies unchanged.
• Sybil resistance — validator power is staked; no separate token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Are there special requirements to the transport channels for block broadcast + signatures response?


Rollkit will introduce a validator network in which there will be a set of validators verifying execution and construction.

- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attesttation within the epoch, they will not be slashed but instead they will not get a reward.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I would remove the part of the transaction to the state machine, it won't be really a tx but the Sequencer writing directly the result that came from the gRPC.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

this is a different design to the previous one, its more akin to solana style, but we can make the txs free for users if we wanted to.

tac0turtle and others added 4 commits May 28, 2025 15:51
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
• signs bytesToSign = SHA-256(height || blockHash || stateRoot) with its private key.
3. Signature transaction submission — The attester sends vote as a transaction to the state machine. It will be included in subsequent blocks
4. Aggregation & quorum — The attester module or contract collects signatures until ≥ ⅔ of current bonded voting power have signed providing a soft confirmation of the block
- If qurorom is not met at the epoch boundry, the network will halt waiting for the signatures.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There are two spelling errors in this line: "qurorom" should be "quorum" and "boundry" should be "boundary".

Suggested change
- If qurorom is not met at the epoch boundry, the network will halt waiting for the signatures.
- If quorum is not met at the epoch boundary, the network will halt waiting for the signatures.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.


Rollkit will introduce a validator network in which there will be a set of validators verifying execution and construction.

- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attestation within the epoch, they will not be slashed but instead they will not get a reward.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's a typo in this sentence: the word "there" should be "their" in "The validators will need to submit their attestations as a transaction to the state machine before the end of the epoch."

Suggested change
- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit there attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attestation within the epoch, they will not be slashed but instead they will not get a reward.
- The design is centered around the proposer producing blocks as fast as possible but asking for signatures after fact. This design is optimized for block production performance. The validators will need to submit their attestations as a transaction to the state machine before the end of the epoch. If a validator does not submit their attestation within the epoch, they will not be slashed but instead they will not get a reward.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

• signs bytesToSign = SHA-256(height || blockHash || stateRoot) with its private key.
3. Signature transaction submission — The attester sends vote as a transaction to the state machine. It will be included in subsequent blocks
4. Aggregation & quorum — The attester module or contract collects signatures until ≥ ⅔ of current bonded voting power have signed providing a soft confirmation of the block
- If qurorom is not met at the epoch boundry, the network will halt waiting for the signatures.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There are two spelling errors in this line:

  • qurorom should be quorum
  • boundry should be boundary

The corrected sentence would read: "If quorum is not met at the epoch boundary, the network will halt waiting for the signatures."

Suggested change
- If qurorom is not met at the epoch boundry, the network will halt waiting for the signatures.
- If quorum is not met at the epoch boundary, the network will halt waiting for the signatures.

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Copy link
Copy Markdown
Contributor

@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 (9)
specs/lazy-adr/adr-022-validator-network.md (9)

1-4: Standardize the ADR title and metadata.

The title could be prefixed with "ADR 022:" and an "Author:" line added for clarity and consistency with existing ADRs.

- # 022 Validator Network
+ # ADR 022: Validator Network
  Date: 2025-05-25
+ Author: tac0turtle
  Status: Draft

10-12: Fix comma usage and compound terms for clarity.

  • Add a comma after "Secondly":
    - Secondly a validator network introduces...
    + Secondly, a validator network introduces...
  • Combine "counter party" into "counterparty":
    - security for counter party chains
    + security for counterparty chains
🧰 Tools
🪛 LanguageTool

[uncategorized] ~10-~10: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...d adding an extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


18-19: Correct grammar and possessive pronoun.

  • Replace "there attestations" with "their attestations".
  • Consider adding a comma before "but" to improve readability.
- The validators will need to submit there attestations as a transaction...
+ The validators will need to submit their attestations as a transaction...
🧰 Tools
🪛 LanguageTool

[uncategorized] ~18-~18: Possible missing article found.
Context: ...ossible but asking for signatures after fact. This design is optimized for block pro...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~18-~18: “there” seems less likely than “their” (belonging to them).
Context: ...nce. The validators will need to submit there attestations as a transaction to the st...

(AI_HYDRA_LEO_CPT_THERE_THEIR)


[uncategorized] ~18-~18: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...thin the epoch, they will not be slashed but instead they will not get a reward. ##...

(COMMA_COMPOUND_SENTENCE)


29-29: Fix spelling of "quorum" and "boundary".

- If qurorom is not met at the epoch boundry...
+ If quorum is not met at the epoch boundary...

34-35: Correct verb choice and phrasing.

  • Change "doused" to "used".
  • Change "later one" to "later on".
- Different signature schemes can be doused in conjunction...
+ Different signature schemes can be used in conjunction...
- To start we will support ED25519 and later one we plan...
+ To start we will support ED25519 and later on we plan...
🧰 Tools
🪛 LanguageTool

[style] ~34-~34: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~34-~34: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~34-~34: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


56-57: Fix typos and hyphenation.

  • "re build" → "rebuild"
  • "validtor" → "validator"
  • Use "non-blocking" with a hyphen.
  • Add a comma after "at this time".
- re build the validtor set.
+ rebuild the validator set.
- The EVM will work in the non blocking way. The validators...
+ The EVM will work in the non-blocking way. The validators...
- we do not support rotation at this time. Once...
+ we do not support rotation at this time, once...
🧰 Tools
🪛 LanguageTool

[misspelling] ~56-~56: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~56-~56: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~57-~57: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~57-~57: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~57-~57: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)


61-71: Use proper code fence language for syntax highlighting.

The Solidity snippet should use solidity instead of sol:

- ```sol
+ ```solidity

22-30: Unify list formatting.

The numbered steps and sub-bullets mix spaces and symbols (1., , -). For consistency, switch to standard Markdown lists and consistent indentation:

1. Block broadcast — For every height h…
   - The sequencer broadcasts the canonical BlockBundle(h) to all active attesters.
2. Local verification — Each attester independently:
   - Validates header → parent → state transition
   - (Optionally) re-executes the block…
🧰 Tools
🪛 LanguageTool

[uncategorized] ~27-~27: Possible missing article found.
Context: ...saction submission — The attester sends vote as a transaction to the state machine. ...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~30-~30: Possible missing comma found.
Context: ...— After the block is included in the DA layer it will be considered to have a hard co...

(AI_HYDRA_LEO_MISSING_COMMA)


96-105: Standardize bullet style in Sequencer & Attester sections.

These use bullets; convert them to - (or *) for a uniform look:

- • /broadcastBlock (server-stream): ...
- • /SubmitSignature (rpc): ...
+ - /broadcastBlock (server-stream): ...
+ - /SubmitSignature (rpc): ...
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 5c618b4 and 5be3d97.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[typographical] ~8-~8: Consider adding a comma.
Context: ...Context When a single sequencer is used there is a limited design space for the token...

(IF_THERE_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...ve faster than the underlying DA layer. Secondly a validator network introduces the oppo...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...d adding an extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~18-~18: Possible missing article found.
Context: ...ossible but asking for signatures after fact. This design is optimized for block pro...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~18-~18: “there” seems less likely than “their” (belonging to them).
Context: ...nce. The validators will need to submit there attestations as a transaction to the st...

(AI_HYDRA_LEO_CPT_THERE_THEIR)


[uncategorized] ~18-~18: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...thin the epoch, they will not be slashed but instead they will not get a reward. ##...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~27-~27: Possible missing article found.
Context: ...saction submission — The attester sends vote as a transaction to the state machine. ...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~30-~30: Possible missing comma found.
Context: ...— After the block is included in the DA layer it will be considered to have a hard co...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~34-~34: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~34-~34: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~34-~34: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[uncategorized] ~44-~44: Possible missing comma found.
Context: ...sophy. #### Cosmos‑SDK For the Cosmos SDK the attester system will be located in ...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~49-~49: A comma might be missing here.
Context: .... - Leaving — when voting power reaches 0 the sequencer drops the validator from ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~56-~56: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~56-~56: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~57-~57: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~57-~57: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~57-~57: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~125-~125: Possible missing comma found.
Context: ...ail-over — once fast-leader-election is required we can revisit consensus (e.g., HotStuf...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~126-~126: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: rollkit-docker / docker-build (GHCR; ghcr.io/rollkit/rollkit)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Run EVM Execution Tests
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

Val->>App: MsgAttest{h, sig}
loop within epoch
App->>App: store sig, update bitmap
App->>App:EndBlock{ValidatorHash, CommitHash}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's a formatting inconsistency in the Mermaid diagram. The line App->>App:EndBlock{ValidatorHash, CommitHash} is missing a space after the colon, unlike other sequence diagram entries. For consistency with the rest of the diagram, it should be formatted as App->>App: EndBlock{ValidatorHash, CommitHash}.

Suggested change
App->>App:EndBlock{ValidatorHash, CommitHash}
App->>App: EndBlock{ValidatorHash, CommitHash}

Spotted by Diamond

Is this helpful? React 👍 or 👎 to let us know.

Copy link
Copy Markdown
Contributor

@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: 4

♻️ Duplicate comments (2)
specs/lazy-adr/adr-022-validator-network.md (2)

29-29: Typo in quorum/boundary warning
This exact issue was flagged previously.


34-34: Signature schemes wording typos
“doused” → “used” and “later one” → “later on.” This matches earlier suggestions.

🧰 Tools
🪛 LanguageTool

[style] ~34-~34: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~34-~34: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~34-~34: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)

🧹 Nitpick comments (8)
specs/lazy-adr/adr-022-validator-network.md (8)

1-5: Consolidate ADR metadata into a standard header
Most ADRs follow the “ADR : <Title>” convention and include a YAML front-matter or a structured metadata block. Consider renaming the title to ADR 022: Validator Network and, if you have a template, adding a Title: field for consistency across your ADR library.


27-28: Polish Signature submission bullets

  • Add the definite article: “sends the vote as a transaction.”
  • Terminate each bullet with a period.
  • Add a comma before “providing.”
- 3. Signature transaction submission — The attester sends vote as a transaction to the state machine. It will be included in subsequent blocks
+ 3. Signature transaction submission — The attester sends the vote as a transaction to the state machine. It will be included in subsequent blocks.

- 4. Aggregation & quorum — The attester module or contract collects signatures until ≥ ⅔ of current bonded voting power have signed providing a soft confirmation of the block
+ 4. Aggregation & quorum — The attester module or contract collects signatures until ≥ ⅔ of current bonded voting power have signed, providing a soft confirmation of the block.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~27-~27: Possible missing article found.
Context: ...saction submission — The attester sends vote as a transaction to the state machine. ...

(AI_HYDRA_LEO_MISSING_THE)


46-46: Add missing punctuation after “in-app”
Insert a colon or period to separate the clause:

- Hashes produced in-app During EndBlock, x/network gathers the attestation bitmap…
+ Hashes produced in-app: during EndBlock, x/network gathers the attestation bitmap…

68-71: Clarify “Missing participation” section
This call‐out is hard to parse as a standalone sentence. Consider rephrasing:

- Missing participation at the epoch boundary x/network evaluates participation:
+ In cases of insufficient participation at the epoch boundary, x/network evaluates the following:
🧰 Tools
🪛 LanguageTool

[uncategorized] ~71-~71: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...by x/network (their stake remains bonded but they cease to sign until they re‑declar...

(COMMA_COMPOUND_SENTENCE)


85-85: Resolve the inline TODO or track it as an issue
The placeholder question about DA inclusion and IBC timeouts should be answered or turned into a follow‐up issue to avoid leaving critical open questions in the ADR.


94-94: Use a recognized code fence lang for Solidity
Change sol to solidity for proper syntax highlighting.


133-133: Tweak “State hooks” description
Make the timing explicit and improve readability:

- • State hooks: listens to staking.ValidatorSetUpdate to rebuild ActiveValidatorBitmap each height.
+ • State hooks: listens for `staking.ValidatorSetUpdate` events to rebuild `ActiveValidatorBitmap` at each block height.

140-144: Normalize verifier pipeline formatting
Capitalize steps and standardize punctuation:

- 1. basic header checks;
- 2. optional re-execution (--verify-full=true flag);
- 3. produce signature;
- 4. async submit with retries.
+ 1. Basic header checks.
+ 2. Optional re-execution (`--verify-full=true` flag).
+ 3. Produce signature.
+ 4. Asynchronously submit with retries.
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 5be3d97 and 22bdcc9.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[typographical] ~8-~8: Consider adding a comma.
Context: ...Context When a single sequencer is used there is a limited design space for the token...

(IF_THERE_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...d adding an extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~18-~18: Possible missing article found.
Context: ...ossible but asking for signatures after fact. This design is optimized for block pro...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~18-~18: “there” seems less likely than “their” (belonging to them).
Context: ...nce. The validators will need to submit there attestations as a transaction to the st...

(AI_HYDRA_LEO_CPT_THERE_THEIR)


[uncategorized] ~18-~18: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...thin the epoch, they will not be slashed but instead they will not get a reward. ##...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~27-~27: Possible missing article found.
Context: ...saction submission — The attester sends vote as a transaction to the state machine. ...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~30-~30: Possible missing comma found.
Context: ...— After the block is included in the DA layer it will be considered to have a hard co...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~34-~34: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~34-~34: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~34-~34: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[uncategorized] ~50-~50: Possible missing comma found.
Context: ...source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~71-~71: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...by x/network (their stake remains bonded but they cease to sign until they re‑declar...

(COMMA_COMPOUND_SENTENCE)


[typographical] ~83-~83: It appears that a comma is missing.
Context: ...ss quorum | disabled | In this design there is no need to queue IBC transacti...

(DURING_THAT_TIME_COMMA)


[style] ~83-~83: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...ions as the light client update message can not be relayed to the counter party chain. ...

(CAN_NOT_PREMIUM)


[grammar] ~83-~83: This word is normally spelled as one word.
Context: ...pdate message can not be relayed to the counter party chain. <!-- TODO: should we wait for i...

(COUNTER_COMPOUNDS)


[misspelling] ~89-~89: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~89-~89: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~90-~90: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~90-~90: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~90-~90: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~159-~159: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: rollkit-docker / docker-build (GHCR; ghcr.io/rollkit/rollkit)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Run EVM Execution Tests
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary
🔇 Additional comments (2)
specs/lazy-adr/adr-022-validator-network.md (2)

148-150: Security considerations look solid
The section is clear, concise, and covers the main threat models.


156-160: Future work items well-scoped
The roadmap is realistic and clearly outlines next steps without overcommitting.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~159-~159: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... proofs — expose AttestationProof object so external bridges can verify signedVotin...

(COMMA_COMPOUND_SENTENCE_2)

Comment on lines +50 to +51
Validatorset updates from the staking module (x/staking) remains the single source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/network subscribes and mirrors
the active validator bitmap. On a set‑change (say at height 100) the EndBlock hook updates x/network's bitmap before computing the hashes for the next height.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Grammar and sentence break for ValidatorSet updates

  • Change “Validatorset updates … remains” → “Validator set updates … remain.”
  • Merge the broken sentence (“x/network subscribes and mirrors the active validator bitmap.”)
- Validatorset updates from the staking module (x/staking) remains the single source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/network subscribes and mirrors
- the active validator bitmap.
+ Validator set updates from the staking module (x/staking) remain the single source of truth for bonded power. Every block emits a ValidatorSetUpdate event, and x/network subscribes to mirror the active validator bitmap.
📝 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.

Suggested change
Validatorset updates from the staking module (x/staking) remains the single source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/network subscribes and mirrors
the active validator bitmap. On a setchange (say at height 100) the EndBlock hook updates x/network's bitmap before computing the hashes for the next height.
Validator set updates from the staking module (x/staking) remain the single source of truth for bonded power. Every block emits a ValidatorSetUpdate event, and x/network subscribes to mirror the active validator bitmap.
On a set-change (say at height 100) the EndBlock hook updates x/network's bitmap before computing the hashes for the next height.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~50-~50: Possible missing comma found.
Context: ...source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/...

(AI_HYDRA_LEO_MISSING_COMMA)

🤖 Prompt for AI Agents
In specs/lazy-adr/adr-022-validator-network.md around lines 50 to 51, correct
the grammar by changing "Validatorset updates ... remains" to "Validator set
updates ... remain" and merge the fragmented sentence "x/network subscribes and
mirrors the active validator bitmap." into the preceding sentence to improve
readability and flow.

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated
Comment on lines +89 to +90
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
- The EVM will work in the non blocking way. The validators will be able to join and leave as they please with the requirement that they submit attestations of execution in order to provide a soft confirmation within an epoch if they would like a reward for their work.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Multiple typos in Reth/EVM flow

  • “re build” → “rebuild”
  • “validtor” → “validator”
  • “non blocking” → “non-blocking”
  • Add commas for readability.
- - Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
+ - Stake mirror listens for staking snapshot events in order to rebuild the validator set. The proposer will always be the same, as we do not support rotation at this time. Once the validator set is rebuilt, any witnessed changes are applied to the validator network.

- - The EVM will work in the non blocking way. The validators will be able to join and leave as they please with the requirement that they submit attestations of execution in order to provide a soft confirmation within an epoch if they would like a reward for their work.
+ - The EVM will operate in a non-blocking mode. Validators may join or leave freely but must submit attestations of execution to provide a soft confirmation within an epoch if they wish to earn rewards.
📝 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.

Suggested change
- Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
- The EVM will work in the non blocking way. The validators will be able to join and leave as they please with the requirement that they submit attestations of execution in order to provide a soft confirmation within an epoch if they would like a reward for their work.
- Stake mirror listens for staking snapshot events in order to rebuild the validator set. The proposer will always be the same, as we do not support rotation at this time. Once the validator set is rebuilt, any witnessed changes are applied to the validator network.
- The EVM will operate in a non-blocking mode. Validators may join or leave freely but must submit attestations of execution to provide a soft confirmation within an epoch if they wish to earn rewards.
🧰 Tools
🪛 LanguageTool

[misspelling] ~89-~89: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~89-~89: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~90-~90: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~90-~90: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~90-~90: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)

🤖 Prompt for AI Agents
In specs/lazy-adr/adr-022-validator-network.md around lines 89 to 90, fix typos
by changing "re build" to "rebuild", "validtor" to "validator", and "non
blocking" to "non-blocking". Also, add commas where needed to improve
readability in the sentences describing the staking snapshot events and EVM
behavior.

Comment on lines +8 to +12
When a single sequencer is used there is a limited design space for the token and a limited set of security guarantees. The validator network offers an alternative to using a full consensus protocol, but offers security guarantees with more than one participant verifying the execution and ordering.

The validator network acts as an extra security layer and soft confirmation enabling the rollup to move faster than the underlying DA layer. Secondly a validator network introduces the opportunity to do more with the token of the chain.

The original design and implementation was centered around IBC and adding an extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix punctuation, agreement, and compound words in Context

  • Add a comma after “used” (“When a single sequencer is used, …”).
  • Change “counter party chains” → “counterparty chains” (one word).
  • Remove the comma before “so that” or split into two sentences.
  • Change “was centered” → “were centered” for “design and implementation.”
  • Add a comma after “Secondly” (“Secondly, a validator network …”).
- When a single sequencer is used there is a limited design space for the token and a limited set of security guarantees.
+ When a single sequencer is used, there is a limited design space for the token and a limited set of security guarantees.

- The original design and implementation was centered around IBC and adding an extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
+ The original design and implementation were centered around IBC and adding an extra layer of security for counterparty chains so that users are not solely trusting the sequencer to act correctly.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 LanguageTool

[typographical] ~8-~8: Consider adding a comma.
Context: ...Context When a single sequencer is used there is a limited design space for the token...

(IF_THERE_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...d adding an extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)

🤖 Prompt for AI Agents
In specs/lazy-adr/adr-022-validator-network.md around lines 8 to 12, fix
punctuation and word agreement by adding a comma after "used," changing "counter
party chains" to "counterparty chains," removing the comma before "so that" or
splitting into two sentences, changing "was centered" to "were centered" to
agree with "design and implementation," and adding a comma after "Secondly."

@alpe
Copy link
Copy Markdown
Contributor

alpe commented Jun 5, 2025

After reading this again, some more bad actor scenarios came up:

  • How can we ensure that the attesters process the TXs for the blocks they sign and not simply query the hash from the sequencer?
  • When the sequencer aggregates the signatures, how can we prevent malicious behaviour? I may got this wrong but ideally, there is a way that signatures can be checked by other parties so manipulation is not possible.

@tac0turtle
Copy link
Copy Markdown
Contributor Author

  • How can we ensure that the attesters process the TXs for the blocks they sign and not simply query the hash from the sequencer?

we cant verify this on comet as well. this is something we cant really avoid. There are computational proofs we could add but that would open a rabbit hole of possible designs.

  • When the sequencer aggregates the signatures, how can we prevent malicious behaviour? I may got this wrong but ideally, there is a way that signatures can be checked by other parties so manipulation is not possible.

Signature verification or aggregation, if supported, would be part of the statemachine/forkchoice rule meaning that if the sequencer acted maliciously it would cause the apphash to be incorrect compared to what was witnessed by others. This is because the attestations are transactions themselves.

Copy link
Copy Markdown
Contributor

@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: 1

♻️ Duplicate comments (4)
specs/lazy-adr/adr-022-validator-network.md (4)

8-12: Fix punctuation & compound-word issues (already pointed out).

The sentence still lacks the commas after “used” and “Secondly,” and “counter party” should be the single word “counterparty.”
Please apply the prior correction.


49-50: Typos in signing-schemes paragraph (already flagged).

Replace “doused” → “used” and “later one” → “later on”.


65-66: Grammar: “Validator set updates … remain” (already flagged).

The subject is plural, so the verb should be “remain,” and “Validator set” should be two words.


106-108: Recurring typos (re-build, validtor, non blocking) still present.

Please apply the earlier suggested fixes or they will keep resurfacing.

🧹 Nitpick comments (4)
specs/lazy-adr/adr-022-validator-network.md (4)

35-37: Grammar: “what it signs” not “what is signs”.

- • after processing the last block of the epoch, what is signs is up to the execution environment.
+ • after processing the last block of the epoch, what it signs is up to the execution environment.

100-100: Multiple typos & “cannot” usage.

- … message can not be relayed to the counter party chain. Secondly, IBC transactions are alos blocked …
+ … message cannot be relayed to the counterparty chain. Secondly, IBC transactions are also blocked …

83-87: Clarify “Missing participation” paragraph.

Consider re-phrasing to separate the introductory clause and ensure the two bullet points render as bullets:

-Missing participation at the epoch boundary x/network evaluates participation:
+If quorum is missing at the epoch boundary, x/network evaluates participation:

This improves readability and avoids the run-on sentence.


27-29: Spelling: “maximises” vs. “maximizes”.

Unless the project style guide prefers UK spelling, use the more common US spelling:

-This maximises throughput while still
+This maximizes throughput while still
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 22bdcc9 and fad7660.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[typographical] ~8-~8: Consider adding a comma.
Context: ...Context When a single sequencer is used there is a limited design space for the token...

(IF_THERE_COMMA)


[uncategorized] ~10-~10: Possible missing comma found.
Context: ...cts as an extra security layer and soft confirmation enabling the rollup to move faster than...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~10-~10: A comma might be missing here.
Context: ...nderlying DA layer with added security. Secondly a validator network introduces the oppo...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~12-~12: This word is normally spelled as one word.
Context: ...d adding an extra layer of security for counter party chains, so that the user is not solely ...

(COUNTER_COMPOUNDS)


[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...yer of security for counter party chains, so that the user is not solely trusting the seq...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~21-~21: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...g the window does not incur slashing but the validator forfeits rewards for that...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~23-~23: Possible missing comma found.
Context: ... NonParticipationEpochs consecutive epochs it is automatically removed from the ac...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~33-~33: A comma might be missing here.
Context: ... 1. Block broadcast — For every height h the sequencer broadcasts the canonical ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~45-~45: Possible missing comma found.
Context: ...— After the block is included in the DA layer it will be considered to have a hard co...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~49-~49: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[typographical] ~49-~49: It seems that a comma is missing.
Context: ...junction with the validator network. To start we will support ED25519 and later one w...

(IN_ORDER_TO_VB_COMMA)


[style] ~49-~49: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[uncategorized] ~65-~65: Possible missing comma found.
Context: ...source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~86-~86: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...by x/network (their stake remains bonded but they cease to sign until they re‑declar...

(COMMA_COMPOUND_SENTENCE)


[typographical] ~100-~100: It appears that a comma is missing.
Context: ...ss quorum | disabled | In this design there is no need to queue IBC transacti...

(DURING_THAT_TIME_COMMA)


[style] ~100-~100: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...ions as the light client update message can not be relayed to the counter party chain. ...

(CAN_NOT_PREMIUM)


[grammar] ~100-~100: This word is normally spelled as one word.
Context: ...pdate message can not be relayed to the counter party chain. Secondly, IBC transactions are a...

(COUNTER_COMPOUNDS)


[misspelling] ~106-~106: This expression is normally spelled as one or with a hyphen.
Context: ...for staking snapshot events in order to re build the validtor set. The proposer will alw...

(EN_COMPOUNDS_RE_BUILD)


[uncategorized] ~106-~106: A comma might be missing here.
Context: ...at this time. Once the validator set is rebuilt any changes that are witnessed will be ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[misspelling] ~107-~107: This word is normally spelled with a hyphen.
Context: ...tor network. - The EVM will work in the non blocking way. The validators will be able to joi...

(EN_COMPOUNDS_NON_BLOCKING)


[uncategorized] ~107-~107: Possible missing comma found.
Context: ... will be able to join and leave as they please with the requirement that they submit a...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~107-~107: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~166-~166: Possible missing comma found.
Context: ...ail-over — once fast-leader-election is required we can revisit consensus purely for seq...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)
specs/lazy-adr/adr-022-validator-network.md

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

(MD012, no-multiple-blanks)

⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: lint / markdown-lint
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Run Integration Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

1. basic header checks;
2. optional re-execution (--verify-full=true flag);
3. produce signature;
4. async submit transaction with signautres
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Misspelling: “signautres” → “signatures”.

- 4. async submit transaction with signautres
+ 4. async submit transaction with signatures
📝 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.

Suggested change
4. async submit transaction with signautres
4. async submit transaction with signatures
🤖 Prompt for AI Agents
In specs/lazy-adr/adr-022-validator-network.md at line 152, correct the
misspelling of "signautres" to "signatures" in the phrase "async submit
transaction with signautres".

julienrbrt
julienrbrt previously approved these changes Jun 30, 2025
Copy link
Copy Markdown
Member

@julienrbrt julienrbrt left a comment

Choose a reason for hiding this comment

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

ACK.

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated
In this design there is no need to queue IBC transactions as the light client update message can not be relayed to the counter party chain. Secondly, IBC transactions are alos blocked on DA inclusion of the data and header.


#### Reth/EVM Rollup
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ACKed but I am unable to verify the feasibility of this (does it mean a bridge needs to query the contract to verify something before trusting other contracts?).

Comment thread specs/lazy-adr/adr-022-validator-network.md Outdated
Copy link
Copy Markdown
Contributor

@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 (7)
specs/lazy-adr/adr-022-validator-network.md (7)

8-13: Fix punctuation & compound-word errors in Context paragraph

-When a single sequencer is used there is a limited design space for the token and a limited set of security guarantees.
+When a single sequencer is used, there is a limited design space for the token and a limited set of security guarantees.

-The validator network acts as an extra security layer and soft confirmation enabling the rollup to move faster than the underlying DA layer with added security. Secondly a validator network introduces the opportunity to do more with the token of the chain.
+The validator network adds an extra security layer and soft confirmation, enabling the rollup to move faster than the underlying DA layer while maintaining safety. Secondly, a validator network introduces opportunities to do more with the chain’s token.

-The original design and implementation was centered around IBC and adding an extra layer of security for counter party chains, so that the user is not solely trusting the sequencer to act correctly
+The original design and implementation were centered around IBC and adding an extra layer of security for counterparty chains so that the user is not solely trusting the sequencer to act correctly.

33-38: Grammar fix & clarify signing step

-• after processing the last block of the epoch, what is signs is up to the execution environment.
+• after processing the last block of the epoch, what gets signed is defined by the execution environment.

49-52: Correct typos in Signing schemes section

-Different signature schemes can be doused in conjunction with the validator network. To start we will support ED25519 and later one we plan on adding other signature schemes based on how user demand requires.
+Different signature schemes can be used with the validator network. To start, we will support ED25519 and later on we plan to add other signature schemes based on user demand.

65-67: Subject–verb agreement & sentence merge

-Validatorset updates from the staking module (x/staking) remains the single source of truth for bonded power. Every block it emits a ValidatorSetUpdate event. x/network subscribes and mirrors
-the active validator bitmap.
+Validator set updates from the staking module (x/staking) remain the single source of truth for bonded power. Every block emits a `ValidatorSetUpdate` event, and x/network subscribes to mirror the active validator bitmap.

91-93: Spelling & hyphenation fixes in Reth/EVM flow

-Stake mirror listens for staking snapshot events in order to re build the validtor set. The proposer will always be the same, we do not support rotation at this time. Once the validator set is rebuilt any changes that are witnessed will be applied to the validator network.
-The EVM will work in the non blocking way. The validators will be able to join and leave as they please with the requirement that they submit attestations of execution in order to provide a soft confirmation within an epoch if they would like a reward for their work.
+Stake mirror listens for staking snapshot events to rebuild the validator set. The proposer will always be the same; we do not support rotation at this time. Once the validator set is rebuilt, any witnessed changes are applied to the validator network.
+The EVM operates in a non-blocking mode. Validators can join and leave at will but must submit attestations of execution to provide a soft confirmation within an epoch if they wish to earn rewards.

110-116: Liveness edge-case deserves mitigation detail

The design halts block production if quorum is not met. Consider documenting:

  1. A maximum halt duration before auto-entering EmergencyMode.
  2. How halted state affects IBC timeouts & user experience.

Adding explicit parameters will help operational teams script monitoring & alerting.


131-137: Fix typo and improve step description

-3. async submit transaction with signautres
+3. asynchronously submit a transaction containing the signatures
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between fad7660 and 1d3189d.

📒 Files selected for processing (1)
  • specs/lazy-adr/adr-022-validator-network.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: S1nus
PR: rollkit/rollkit#1374
File: block/manager.go:0-0
Timestamp: 2024-06-10T19:23:16.839Z
Learning: The overriding of `DataHash` and `Commit` in `block/manager.go` is necessary for the block to pass basic validation when `applyBlock` is called. The user has added a comment to document this requirement.
Learnt from: S1nus
PR: rollkit/rollkit#1374
File: block/manager.go:0-0
Timestamp: 2024-10-08T18:35:32.960Z
Learning: The overriding of `DataHash` and `Commit` in `block/manager.go` is necessary for the block to pass basic validation when `applyBlock` is called. The user has added a comment to document this requirement.
specs/lazy-adr/adr-022-validator-network.md (3)
Learnt from: S1nus
PR: rollkit/rollkit#1368
File: state/executor.go:130-134
Timestamp: 2024-06-10T19:23:16.839Z
Learning: The user indicated that the library used for Ed25519 public keys does not provide a method for validation and that its methods do not fail cleanly. This suggests that in some cases, users might be limited by the capabilities of the libraries they are using, and it might be necessary to suggest workarounds or custom implementations.
Learnt from: S1nus
PR: rollkit/rollkit#1374
File: block/manager.go:0-0
Timestamp: 2024-10-08T18:35:32.960Z
Learning: The overriding of `DataHash` and `Commit` in `block/manager.go` is necessary for the block to pass basic validation when `applyBlock` is called. The user has added a comment to document this requirement.
Learnt from: S1nus
PR: rollkit/rollkit#1374
File: block/manager.go:0-0
Timestamp: 2024-06-10T19:23:16.839Z
Learning: The overriding of `DataHash` and `Commit` in `block/manager.go` is necessary for the block to pass basic validation when `applyBlock` is called. The user has added a comment to document this requirement.
🪛 LanguageTool
specs/lazy-adr/adr-022-validator-network.md

[style] ~49-~49: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...fferent signature schemes can be doused in conjunction with the validator network. To start we will...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[grammar] ~49-~49: Ensure spelling is correct
Context: ...start we will support ED25519 and later one we plan on adding other signature schem...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~49-~49: Try using a more formal synonym here to elevate your writing.
Context: ...e will support ED25519 and later one we plan on adding other signature schemes based on how us...

(PLAN_ON_INTEND)


[grammar] ~91-~91: Ensure spelling is correct
Context: ...napshot events in order to re build the validtor set. The proposer will always be the sa...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~92-~92: Consider a more concise word here.
Context: ...t they submit attestations of execution in order to provide a soft confirmation within an e...

(IN_ORDER_TO_PREMIUM)


[grammar] ~136-~136: Ensure spelling is correct
Context: ...ture; 3. async submit transaction with signautres ## Security considerations • Double-...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Run Integration Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary
🔇 Additional comments (2)
specs/lazy-adr/adr-022-validator-network.md (2)

18-26: Clarify automatic ejection policy

Auto-removing validators after NonParticipationEpochs could be weaponised (e.g., DoS on attesters’ connectivity). Please document how a removed validator can safely re-join and whether any grace/appeal mechanism exists.


40-45: Specify behaviour of EmergencyMode

What concrete actions can the sequencer take once EmergencyMode is toggled? Clarifying this helps operators reason about liveness guarantees and potential governance abuse.

@tac0turtle tac0turtle enabled auto-merge July 14, 2025 08:52
@tac0turtle tac0turtle added this pull request to the merge queue Jul 14, 2025
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 14, 2025
@tac0turtle tac0turtle added this pull request to the merge queue Jul 14, 2025
Merged via the queue into main with commit 80178ab Jul 14, 2025
27 of 29 checks passed
@tac0turtle tac0turtle deleted the marko/adr22 branch July 14, 2025 09:54
@github-project-automation github-project-automation Bot moved this to Done in Evolve Jul 14, 2025
@tac0turtle tac0turtle removed this from Evolve Aug 25, 2025
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.

4 participants