Closed
Description
Miner 2 proposes block #156
- Signer 2 accepts: This wasn’t a confirmed block, needs to see lack of confirmation
- Signer 1 accepts
- Signer 0 rejects, because it saw burn block 134 before seeing the proposal
- 3/8 signing power rejects so the block is not accepted
All miners see burn block #134
- Miner 2 ends its tenure
- Miner 0 starts its tenure
Miner 0 (correctly) builds from block 155 and proposes block #156 to the signers
- Signer 2 rejects the block (because it is reorging the previous block Exception in thread Thread-1 & Caught Exception from bitcoind #156 that it accepted)
- Signer 0 accepts the block
- Signer 1 rejects the block (same reason)
- 5/8 reject the block so it is not accepted
This repeats forever
Discussion:
- Timer needs reset, legit bug
- Fix the Signer to see the lack of confirmation
- In this case they shouldn’t accept the last block (Exception in thread Thread-1 & Caught Exception from bitcoind #156) as canonical until signature threshold is reached
- Subscribe to the mined blocks , to update their internal state.
- Signer could poll the node too
- Will not necessarily add latency as a result , this is needed as a fallback for Signers
- Integration test to split the Signer set to have different visibility of blocks
- Safety check: If a block is seen as rejected, it should be always rejected
Miner doesn’t properly track whether a block rejection already came from a signer
- In begin_sign_v0, gathered_signatures isn’t updated with rejections
- Not the root cause, but needs improvement
Metadata
Assignees
Type
Projects
Status
Status: ✅ Done