I. INTRODUCTION

II. PREVIOUS SURVEYS AND TUTORIALS

III. FAULT-TOLERANT DISTRIBUTED CONSENSUS

IV. AN OVERVIEW OF BLOCKCHAIN CONSENSUS

V. THE NAKAMOTO CONSENSUS PROTOCOL AND VARIATIONS

VI. PROOF-OF-STAKE BASED CONSENSUS PROTOCOLS

VII. OTHER EMERGING BLOCKCHAIN CONSENSUS MECHANISMS AND PROTOCOLS

VIII. COMPARISON AND DISCUSSION

IX. ON DESIGNING BLOCKCHAIN CONSENSUS PROTOCOL

X. CONCLUSION