Modify the protocol so that blocks that reference invalid pointers (or pointers whose relevant blocks haven't been received yet) are still considered syntactically valid.
This can solve several of our other issues:
[ ] #20 (if we allow dangling pointers, it's enough for each honest user to store a single pair of "bad" blocks per identity -- and it's ok if they don't store the same pair)
[ ] #24 (if we allow dangling pointers, honest users can ignore old blocks that don't have enough weight to change history, even if they are pointed to by malicious blocks).
Modify the protocol so that blocks that reference invalid pointers (or pointers whose relevant blocks haven't been received yet) are still considered syntactically valid.
This can solve several of our other issues: