You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug - Coordinator can delay formal rejection of withdrawal
1. Description
Before signing a stacks transaction rejecting a withdrawal, the signers have 3 main checks:
Whether the withdrawal has expired,
Whether a sweep transaction fulfilling the withdrawal is in the "mempool", and
Whether a sweep transaction (without an output fulfilling the withdrawal) has 6 confirmations since the last time the withdrawal has been considered in a sweep transaction.
The issue is with conditions (2) and (3). The coordinator can disrupt the rejection of the withdrawal request by pretending to "consider" the withdrawal request. In this case, the other signers will reject the attempt, however this attempt still counts as toward the withdrawal being considered in a sweep transaction and being in the "mempool".
2. Technical Details:
There are at least a couple of solutions:
Only consider withdrawals that have passed validation when checking the database for whether the withdrawal has been considered or in the mempool.
Change the smart contract to be fork aware, so that we can skip check (3) altogether.
I propose we do both. The change in (1) is easy to make, while the change in (3) offers a better user experience since check (3) would be gone and the signers could reject a withdrawal sooner.
2.1 Acceptance Criteria:
It is not possible for a malicious signer to delay rejection of a withdrawal request by pretending to consider a withdrawal request for inclusion in a sweep transaction.
Because of #620, the purpose of rejecting withdrawals has drifted from the original design. Originally, withdrawals were only accepted or rejected because of the signers' votes. A withdrawal can be accepted by votes but practically rejected because of the fees are too low.
The text was updated successfully, but these errors were encountered:
Bug - Coordinator can delay formal rejection of withdrawal
1. Description
Before signing a stacks transaction rejecting a withdrawal, the signers have 3 main checks:
The issue is with conditions (2) and (3). The coordinator can disrupt the rejection of the withdrawal request by pretending to "consider" the withdrawal request. In this case, the other signers will reject the attempt, however this attempt still counts as toward the withdrawal being considered in a sweep transaction and being in the "mempool".
2. Technical Details:
There are at least a couple of solutions:
I propose we do both. The change in (1) is easy to make, while the change in (3) offers a better user experience since check (3) would be gone and the signers could reject a withdrawal sooner.
2.1 Acceptance Criteria:
3. Related Issues and Pull Requests (optional):
4. Appendix
Because of #620, the purpose of rejecting withdrawals has drifted from the original design. Originally, withdrawals were only accepted or rejected because of the signers' votes. A withdrawal can be accepted by votes but practically rejected because of the fees are too low.
The text was updated successfully, but these errors were encountered: