diff --git a/docs/spec/_proposals/bonded-proof-of-stake/Makefile b/docs/spec/_proposals/bonded-proof-of-stake/Makefile new file mode 100644 index 000000000000..86530d004990 --- /dev/null +++ b/docs/spec/_proposals/bonded-proof-of-stake/Makefile @@ -0,0 +1,6 @@ +all: doc + +doc: + pandoc --mathjax --toc --number-sections -o bpos.pdf bpos.pdc + +.PHONY: all doc diff --git a/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdc b/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdc new file mode 100644 index 000000000000..27f20e402868 --- /dev/null +++ b/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdc @@ -0,0 +1,65 @@ +--- +title: Bonded Proof-of-Stake +author: Tendermint/Cosmos Team +date: \textit{Working Draft} +abstract: Bonded proof-of-stake is the Sybil-resistance construction utilized by the Cosmos Hub in conjunction with Tendermint BFT consensus to provide a quantifiably secure distributed ledger backbone. +urlcolor: cyan +header-includes: + - \usepackage{fancyhdr} + - \usepackage{graphicx} + - \usepackage{hyperref} + - \pagestyle{fancy} + - \fancyhead[RE,LO]{BPoS} + - \fancyhead[LE,RO]{[logo]} + - \fancyhead[CO,CE]{} + - \fancyfoot[CO,CE]{} + - \fancyfoot[LE,RO]{\thepage} +--- + +## Prerequisites + +- BFT voting consensus algorithm +- Scarce fungible token in the state machine + +## Desiderata + +- Imposition of scarcity on voting within an unbonding period (both full nodes / lite clients) +- Imposition of cost on downtime +- Maximize amount of bonded stake + +## Terminology + +- Stakers: validators, delegators +- Validators: bonded, unbonding, unbonded +- Slash +- Equivocation +- Unbonding period + +## Implementation + +- Tracking of what stake contributed to which vote +- Proportional slashing of contributing stake on equivocation discovery +- Microslashing for prolonged downtime +- Split of stakers into validators / delegators due to TM O(n^2) voting (and desire for stake to be bonded) +- Inflation to pay for risk + operation of voting + +### Particulars + +- Instant redelegation + +### Deviations + +- Simplified accounting in slashing for past infractions +- Tombstone (limited to one slash event while bonded) + +### Idiosyncrasies + +- Must limit liquidity of stake due to proposer reward +- Unbonding delegations, redelegations cannot be canceled + +## Future Improvements + +### Light Client Efficiency + +- Bisectable light client proofs +- Must slash for signatures when not bonded. diff --git a/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdf b/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdf new file mode 100644 index 000000000000..57e2a7fda2b3 Binary files /dev/null and b/docs/spec/_proposals/bonded-proof-of-stake/bpos.pdf differ