The spec for prevoting is inconsistent with Substrate and the GRANDPA paper.
Best-PreVote-Candidate returns either the primaries block or the ghost of the prevotes apparently from this round r.
What the validator should prevote for is for the last audited block (or 3 blocks from the end in single-chain Substrate) in the longest chain (or chain with the most primary blocks for BABE) including a block B defined as follows
If the primaries' block is between the last finalused block L and the ghost of the prevotes from round r-1, then that is B
else use the ghost of the prevotes from round r-1.
We should probably check whether Substrate works like this.
The spec for prevoting is inconsistent with Substrate and the GRANDPA paper.
Best-PreVote-Candidate returns either the primaries block or the ghost of the prevotes apparently from this round r.
What the validator should prevote for is for the last audited block (or 3 blocks from the end in single-chain Substrate) in the longest chain (or chain with the most primary blocks for BABE) including a block B defined as follows
If the primaries' block is between the last finalused block L and the ghost of the prevotes from round r-1, then that is B
else use the ghost of the prevotes from round r-1.
We should probably check whether Substrate works like this.