record Block : Type where
constructor ⟨_,_,_⟩
field parentHash : Hash
epoch : Epoch
payload : List Transaction
These blocks are the ones that are transmitted in messages.
record SignedBlock : Type where
constructor _signed-by_
field block : Block
node : Pid
--We assume the signature is correct.
--Otherwise we have to add a property that signatures are valid
-- or at least that they are determined by the block and pid,
-- in order to be able to say that it is enough to compare node and block.
signature : Signature
signature = sign (node ∙sk) block
signBlock : Pid → Block → SignedBlock
signBlock pid b = b signed-by pid