Odysseia - Consensus

Odysseia - Consensus
Photo by Element5 Digital / Unsplash

The consensus that Odysseia ships with is inspired by Tendermint but comes with a few differences. The main goal of the new consensus is to limit it to validators instead of 66% of all network participants. This makes it less prone to attacks because a majority of validators would have to act maliciously rather than a majority of network participants.

Proposals

A proposal is at the beginning of a block's lifecycle. It

  1. If the proposed block doesn't have a height of lastBlockHeight + 1 the proposal will be rejected.
  2. If the proposed block doesn't match the expected generator public key the proposal will be rejected.
  3. If the block hash, signature and generator public key don't match the proposal will be rejected.
  4. If the block hash that was proposed and the block hash that was computed for verification don't match the proposal will be rejected.
  5. If the proposal already exists and the generator public key is the same the proposal will be rejected.
  6. If the proposal already exists and the generator public key is different the proposal will be replaced.
  7. If none of the above criteria match the proposal will be accepted and broadcasted to all peers.
  8. Additionally to the previous step the proposal will also be signed with all private keys that are configured on a validator node.

Signatures

  1. If the signature length doesn't match 192 characters the signature will be rejected. This length is specific to schnorr and consists of 128 characters for the signature and 64 for the public key. This will be different for 3.0!
  2. If the signature already exists the signature will be rejected.
  3. If the signature is not for the block that matches lastBlockHeight + 1  the signature will be rejected.
  4. If the public key that created the signature is not a participant of the current round the signature will be rejected.
  5. If the signature and block hash (proposal) can't be verified the signature will be rejected.
  6. If none of the above criteria match the signature will be accepted and broadcasted to all peers.