  This paper presents LinSBFT, a Byzantine Fault Tolerance (BFT) protocol with
the capacity of processing over 2000 smart contract transactions per second in
production. LinSBFT applies to a permissionless, public blockchain system, in
which there is no public-key infrastructure, based on the classic PBFT with 4
improvements: (\romannumeral1) LinSBFT achieves $O(n)$ worst-case communication
volume, in contract to PBFT's $O(n^4)$; (\romannumeral2) LinSBFT rotates the
leader of protocol randomly to reduce the risk of denial-of-service attacks on
leader; and (\romannumeral3) each run of LinSBFT finalizes one block, which is
robust against participants that are honest in one run of the protocol, and
dishonest in another, and the set of participants is dynamic, which is update
periodically. (\romannumeral4) LinSBFT helps the delayed nodes to catch up via
a synchronization mechanism to promise the liveness. Further, in the ordinary
case, LinSBFT involves only a single round of voting instead of two in PBFT,
which reduces both communication overhead and confirmation time, and employs
the \emph{proof-of-stake} scheme to reward all participants. Extensive
experiments using data obtained from the Ethereum demonstrate that LinSBFT
consistently and significantly outperforms existing in-production BFT protocols
for blockchains.
