Skip to content

Signature Schemes in Consensus Protocols

  • date: 2023-02-05
  • last updated: 2023-02-04

Overview

Both sides of the bridge need to verify what happened on the other side. To do that, the verification logic is often encapsulated inside a light client, manifested as a smart contract on the chain which the verification needs to be executed. The light client needs to follow consensus and signature verification mechanisms based on the signing algorithm and the elliptical curve used on the other side. For example, if chain A has 21 validators signing each block using ECDSA algorithm on secp256k1 curves, then chain A's light client, executed on chain B, must extract the signatures from the block headers presented to the light client, and follow the ECDSA signature verification algorithm to verify the content of the block header indeeds produces the 21 signatures contained in the block header, given the public keys of the 21 validators.

Here, we present a reference table for these signature schemes and how they are used in the consensus protocols of different blockchains. We limit our initial scope to Ethereum, Polygon, Avalanche, BSC, Harmony, Cosmos, and Polkadot only (and their undelying technologies). Note that we are only looking at how signatures are used in consensus, not elsewhere in the blockchain stack, as all these protocols use ECDSA on secp256k1 for accounts in EVM interactions.

AlgorithmCurveProtocolCodeNote
ECDSAsecp256k1PolygonlibModified Tendermint validator signature scheme
BSClib usageDerived from Clique, then improved
BLSBN254EthereumEVMAdded by EIP-196,197; Mainly for use in smart contracts, such as zk-snark verification. See explainer
BLS12-381Ethereumprysm lighthouseSee PoS design and explainer
Harmonylib usageSee design and protocol review
RSAN/AAvalancheverification generationUses X.509 certificate which potentially allows many algorithms; Moving towards BLS12-381 and added implementations recently
EdDSACurve25519IBClib usageUsed by all chains in Cosmos network, including Cosmos Hub
SchnorrCurve25519SubstratelibSee also brief intro from Polkadot

Resources

Algorithms

ECDSA

BLS

EdDSA

Curves

secp256k1

BLS12-381

BN254

Usage in ZKP

Signing Implementations

The Standard Curve Database is a good starting point for existing signing algorithms. Base implementations such as golang crypto and rust crypto provide good reference codebases.