BBetterSignΒ· Rotatable identity for blockchain validators 1 / 5

A validator's identity is its public key β€” consensus and its peer-to-peer transport both key off it
πŸ›‘οΈ
validator node
peerID = 0xPUBKEY
frozen to one key + algorithm
🌐
every other peer
knows the node only by that key
Rotating a validator key means re-coordinating every peer and the chain at once β€” so painful it is basically never done. The key, and the algorithm behind it, are frozen for the life of the node.
The bootstrap validators each create a VLAD in BetterSign β€” a durable identity keys hang beneath
πŸ›‘οΈ validator A
β†’ create VLAD β€” stable identity
β†’ /consensus sign key Β· /libp2p comms key
βœ“ comes online
πŸ›‘οΈ validator B
β†’ create VLAD β€” stable identity
β†’ /consensus sign key Β· /libp2p comms key
βœ“ comes online
The VLAD is the identity; the consensus signing key and the libp2p comms key live under it as current state β€” either can change later without changing who the validator is.
The active set runs BFT consensus and votes the configuration onto the chain
β›“ on-chain validator set Β· committed by BFT vote of the active set
─ VLAD_A β†’ sign: ml-dsa-65 Β· comms: /libp2p key Β· algo set
─ VLAD_B β†’ sign: ed25519 Β· comms: /libp2p key Β· algo set
genesis / bootstrap config also committed on chain β€” the newcomer recipe
Every validator's VLAD, current public keys, and algorithms are written on chain by vote β€” shared, public, and tightly controlled by the active set. It ends up on chain anyway, so BetterSign just makes the transitions verifiable.
Keys rotate independently β€” announced to peers via BetterSign, accepted by BFT vote
πŸ“‘ rotate comms key
peer-to-peer Β· e.g. libp2p
β‘  new key β†’ signed plog entry
β‘‘ announced to peers via BetterSign
β‘’ chain accepts after BFT vote
↻ on its own cadence
✍️ rotate / upgrade signing key
consensus Β· pluggable algorithm
β‘  new key β€” or new algorithm (PQ)
β‘‘ signed plog entry β†’ peers
β‘’ chain records the change
↻ on its own cadence
The VLAD never changes, so rotation is finally painless. Crypto is pluggable β€” a validator can move to a stronger or post-quantum algorithm without a new identity.
A new validator joins with a single config-pull β€” config from chain, trust from the active validator it followed
πŸ†•
joining validator
has nothing yet
πŸ›‘οΈ
any active validator
followed & trusted
β›“
on-chain config
voted by the active set
bs config pull <ACTIVE_VALIDATOR_VLAD>
β†’ config read from the on-chain set (voted by the active set)
β†’ follow + trust the active validator you pulled from
β†’ verify plog, sync state, request admission
βœ“ voted in by the active set β€” now part of the active set
The config comes from the chain; trust flows from the active validator it followed. Once the set votes it in, the newcomer becomes part of the active set.