Unknown messages are "extracted" from justifications?
justifications are represented as the hashes of the latest message from each validator, and messages are justified and stored to receiver only when thery arrived, so there are no way to extract unknown messages from justifications.
How efficiently check whether some data is valid message or valid state?
When sending or receiving message, each validator and global state do that
If at least one of the justification of received message A is not actually justified, the message is marked as pending.
After that, If that validator receives the message B which is included in the justification of pending message A, both A and B are justified.
? Each Message has sequence_number added by validator, and if the sequence number of justified message is larger than existing latest messages’ from the same sender, the message is added to latest messages.