Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

DynComms [4/n]: Implement Dynamic Commitments Negotiation #8756

Draft
wants to merge 29 commits into
base: master
Choose a base branch
from

Conversation

ProofOfKeags
Copy link
Collaborator

Change Description

THIS IS A WORK IN PROGRESS

Steps to Test

Steps for reviewers to follow to test the change.

Pull Request Checklist

Testing

  • Your PR passes all CI checks.
  • Tests covering the positive and negative (error paths) are included.
  • Bug fixes contain tests triggering the bug to prevent regressions.

Code Style and Documentation

📝 Please see our Contribution Guidelines for further guidance.

Copy link
Contributor

coderabbitai bot commented May 14, 2024

Important

Review skipped

Auto reviews are limited to specific labels.

🏷️ Labels to auto review (1)
  • llm-review

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

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

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

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai 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.

@ProofOfKeags ProofOfKeags force-pushed the feature/dyncomm-negotiator branch from 9203c9b to ae3abc2 Compare June 10, 2024 19:25
@ProofOfKeags ProofOfKeags force-pushed the feature/dyncomm-negotiator branch from ae3abc2 to 1dd6845 Compare June 28, 2024 22:54
@ProofOfKeags ProofOfKeags force-pushed the feature/dyncomm-negotiator branch 2 times, most recently from 7fa0f9d to 9a13916 Compare July 11, 2024 00:16
@ProofOfKeags ProofOfKeags added dynamic commitments incomplete WIP PR, not fully finalized, but light review possible labels Aug 15, 2024
@ProofOfKeags ProofOfKeags added this to the v0.19.0 milestone Aug 15, 2024
@ProofOfKeags ProofOfKeags changed the title DynComms [3/n]: Implement Dynamic Commitments Negotiation DynComms [4/n]: Implement Dynamic Commitments Negotiation Oct 3, 2024
@ProofOfKeags ProofOfKeags force-pushed the feature/dyncomm-negotiator branch 5 times, most recently from 48a377a to 85e8f97 Compare October 8, 2024 08:58
htlcswitch: add drive method to quiescer
htlcswitch: use quiescer drive method in link stfu implementation

This commit amends the implementation presented in the last one
by taking advantage of the quiescer drive method. This allows us
to centralize quiescence logic better rather than diffusing it
throughout the link. h/t @carlaKC
In this commit we defer processRemoteAdds using a new mechanism on
the quiescer where we capture a closure that needs to be run. We
do this because we need to avoid the scenario where we send back
immediate resolutions to the newly added HTLCs when quiescent as
it is a protocol violation. It is not enough for us to simply defer
sending the messages since the purpose of quiescence itself is to
have well-defined and agreed upon channel state. If, for whatever
reason, the node (or connection) is restarted between when these
hooks are captured and when they are ultimately run, they will
be resolved by the resolveFwdPkgs logic when the link comes back
up.

In a future commit we will explicitly call the quiescer's resume
method when it is OK for htlc traffic to commence.
In this commit we implement a noop quiescer that we will use when
the feature hasn't been negotiated. This will make it far easier to
manage quiescence operations without having a number of if statements
in the link logic.
Here we add a flag where we can disable quiescence. This will be used
in the case where the feature is not negotiated with our peer.
This commit takes the CommitChainEpochHistory defined in the last
commit and adds it to the OpenChannel structure. As of this commit
it is essentially redundant with the ChanCfgs but it will capture
the history of the ChanCfgs when we add the ability to update them.
…each

This commit changes the way we create breach retributions to use the
CsvDelay we compute from the CommitChainEpochHistory so as to account
for the possibility that the channel parameters have changed since
opening.
@ProofOfKeags ProofOfKeags force-pushed the feature/dyncomm-negotiator branch from 85e8f97 to 72f6fe8 Compare October 14, 2024 22:57
@saubyk saubyk assigned yyforyongyu and unassigned ProofOfKeags Dec 13, 2024
@saubyk saubyk modified the milestones: v0.19.0, 0.20.0 Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dynamic commitments incomplete WIP PR, not fully finalized, but light review possible
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants