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

Change behavior when miner times out waiting for block acceptance/rejection #5856

Open
obycode opened this issue Feb 24, 2025 · 2 comments
Open
Assignees
Milestone

Comments

@obycode
Copy link
Contributor

obycode commented Feb 24, 2025

Currently, the miner has a timeout when waiting for a block to be approved or rejected. When that timeout is reached, it essentially gives up on that block and proposes a new block. This new proposal will be guaranteed to be rejected by any signers that accepted the block initially proposed, so this is not helpful. It would be better for the miner to simply re-proposed the same block, just in case that somehow helps reach a signer which did not respond to the previous proposal.

See #5847 for background discussion.

@obycode
Copy link
Contributor Author

obycode commented Feb 24, 2025

The scenarios where this is necessary also highlight the need to begin punishing non-responsive signers so that they are incentivized to remain responsive. This scenario is happening more often than it should.

@obycode
Copy link
Contributor Author

obycode commented Feb 26, 2025

Note: this also requires an update on the signer side to re-consider the block when it receives the new proposal.

@aldur aldur added this to the 3.1.0.0.7 milestone Feb 26, 2025
@aldur aldur moved this from Status: 🆕 New to Status: 📋 Backlog in Stacks Core Eng Feb 26, 2025
@aldur aldur moved this from Status: 📋 Backlog to Status: 💻 In Progress in Stacks Core Eng Feb 27, 2025
@aldur aldur modified the milestones: 3.1.0.0.7, 3.1.0.0.8 Feb 27, 2025
obycode added a commit that referenced this issue Feb 28, 2025
When a miner times out waiting for signatures, instead of proposing a
new block, it should only re-propose the same block. Proposing a new
block is guaranteed to fail because signers that approved the original
block will reject any new block at the same height.

This implements the miner side of #5856. A change is still needed on the
signer side to allow a signer to accept a block that it previously
rejected.
obycode added a commit that referenced this issue Feb 28, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
obycode added a commit that referenced this issue Mar 3, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
obycode added a commit that referenced this issue Mar 3, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
obycode added a commit that referenced this issue Mar 3, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
obycode added a commit that referenced this issue Mar 4, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
obycode added a commit that referenced this issue Mar 4, 2025
Allows a signer to reconsider a block that it previously rejected if it
was rejected for certain reasons that may resolve themselves, for
example a testing directive, the parent block was unknown, or there was
a communication failure with the stacks-node.

Resolves #5856
@obycode obycode moved this from Status: 💻 In Progress to Status: In Review in Stacks Core Eng Mar 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Status: In Review
Development

No branches or pull requests

2 participants