dedis/cothority

Add the genesis header to the proof

ineiti opened this issue · 0 comments

To verify a proof of byzcoin, the client not only needs the genesis-ID, but also the genesis-header. If he doesn't have this information, he cannot verify whether the first forward-link is valid or not! Thus an attacker could create a false roster for the genesis block and send this along with the proof and proof any state he wants.

The current code takes care of this by downloading the genesis-header manually. But this makes it so that the verifier needs an internet connection. I propose to:

  • update the documentation at byzcoin/DataStructures.md
  • add an optional GenesisHeader field to the Proof structure
  • create a Proof.VerifyGenesis that takes into account the verification of the genesis-block and returns an error if the genesis-block is not present - both for go, and javascript