* added fault checking in the net framework
* check that the node in the fault report is not faulty
* simplified a condition
* made error on fault a parameter of VirtualNet
* updated the BA test to error on fault
* explained errors and refactored an assignment
* typo fix
This includes a threshold signature in each batch that can be used as a
pseudorandom value.
Also moves `EncryptionSchedule` from `threshold_decrypt` to
`honey_badger`.
The `network` test module now verifies that correct nodes are never
reported as faulty.
The `DuplicateAck` fault is removed for now, because the same ack is
usually handled multiple times in DHB.
`QueueingHoneyBadger` now waits after an output, and only makes its
proposal for the next epoch when:
* there are pending transactions in the queue,
* there are pending key generation or vote messages, or
* _f + 1_ other validators have already made their proposal.
This rule should work well for small networks: With 1 - 3 nodes, it will
produce a new batch whenever at least one of them has transactions to
contribute. In larger networks, it prevents an adversary controlling _f_
nodes from producing lots of empty epochs.
An exception is made for a currently joining validator: We will commit
up to _(N + 1)² + 1_ key generation messages for them, which is the
maximum number a correct node will send.