we had made a mistake in how the sim treated tipsets, whereby null blocks were used as tipsets (breaking the abstraction that they are just more tickets in the array).
The consequence here was this:
take blocks C and D, both mined on top of a null block, themselves both mined on top of a tipset made of blocks A and B. C and D can be assembled into a tipset by a new block E but were not as E was seeing their parents as the null blocks rather than A and B.
The rule is in fact:
Tipsets are only composed of live blocks
Tipsets are composed of live blocks who share parents AND were mined in the same round
Spot check please:
we had made a mistake in how the sim treated tipsets, whereby null blocks were used as tipsets (breaking the abstraction that they are just more tickets in the array).
The consequence here was this:
take blocks C and D, both mined on top of a null block, themselves both mined on top of a tipset made of blocks A and B. C and D can be assembled into a tipset by a new block E but were not as E was seeing their parents as the null blocks rather than A and B.
The rule is in fact:
Replaced this.