This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:xapend:xapend.k_consensus:start [2021/07/18 16:20] nick |
dido:public:ra:xapend:xapend.k_consensus:start [2022/04/18 21:21] (current) nick |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Appendix K: DIDO Consensus ====== | + | ====== Appendix K: DIDO Consensus Algorithms ====== |
| [[dido:public:ra | Return to Reference Architecture (RA)]] or [[dido:public:ra:xapend | Return to Appendices]] | [[dido:public:ra | Return to Reference Architecture (RA)]] or [[dido:public:ra:xapend | Return to Appendices]] | ||
| + | [[dido:public:ra:xapend:xapend.a_glossary:c:consensus_algorithm | Consensus Algorithms ]] are essential in establishing confidence in a DIDO. Consensus helps overcome the Two Generals Problem and the [[dido:public:ra:xapend:xapend.a_glossary:b:byzantine_generals_problem|Byzantine Generals problem]]. Two Generals' Problem is about establishing trust between the endpoints to ensure the data has not been tampered with. This is usually accomplished by encrypting the data flows between the two generals where each has a key to access the data. | ||
| + | The Byzantine Generals problem ensures that everyone gets the same updates (i.e., transactions) and that the transactions are verified. This is generally accomplished by obtaining Consensus among all the generals about any decision (i.e., transaction). There are currently 30+ Consensus mechanisms in use within the DIDO communities (i.e., Blockchain, [[dido:public:ra:xapend:xapend.a_glossary:d:distributed_ledgers|Distributed Ledger]], Directed Acyclical Graphs, etc). See: [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]]. | ||
| - | ===== Why is it important ===== | ||
| - | |||
| - | |||
| - | |||
| - | [[dido:public:ra:xapend:xapend.a_glossary:c:consensus_algorithm]] are essential in establishing confidence in a DIDO. | ||
| Thus there are various types of consensus algorithms in blockchain prospect, some of them are explained below(( | Thus there are various types of consensus algorithms in blockchain prospect, some of them are explained below(( | ||
| Line 19: | Line 16: | ||
| )) | )) | ||
| - | * [[dido:public:ra:xapend:xapend.k_consensus:01_definition:start]] | ||
| - | * [[dido:public:ra:xapend:xapend.k_consensus:02_mechanism:start]] | ||
| - | * [[dido:public:ra:xapend:xapend.k_consensus:05_algorithm:start]] | ||
| - | * [[dido:public:ra:xapend:xapend.k_consensus:09_ref:start]] | ||
| - | * [[dido:public:ra:xapend:xapend.k_consensus:platform]] | ||
| - | |||
| - | |||
| - | <table ConsensusAlorithym> | ||
| - | <caption></caption> | ||
| - | |||
| - | ^ Consensus Alorithym ^ Description ^ Platform Examples ^ Pros ^ Cons ^ Type ^ | ||
| - | ^ Proof of Work (PoW) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | Bitcoin, Litecoin, ZCash, Primecoin, Monero, Vertcoin | ||
| - | </WRAP> |<WRAP> | ||
| - | Less opportunity for 51% attack | ||
| - | Better Security | ||
| - | </WRAP> |<WRAP> | ||
| - | Greater energy consumption | ||
| - | Centralization of Miners | ||
| - | </WRAP> |<WRAP> | ||
| - | Competitive Consensus[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP>| | ||
| - | ^ Proof of Stake (PoS) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | Ethereum, Dash, Peercoin, Decred, Reddcoin, PivX | ||
| - | </WRAP> |<WRAP> | ||
| - | * Energy efficient [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | * More expensive to attack for attackers [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | * Not susceptible to economies of scale [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> |<WRAP> | ||
| - | * nothing-at-stake problem [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> |<WRAP> | ||
| - | Competitive Consensus [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP>| | ||
| - | ^ Delegated Proof of Stake (DPoS) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | * Steem, EOS, and BitShares [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | * BitShares, Steemit, EOS, Lisk, Ark [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> |<WRAP> | ||
| - | * Energy efficient. [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | * Fast. Steemit, a high traffic blogging site uses it. EOS has a block-time of 0.5 sec. [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> |<WRAP> | ||
| - | * A bit centralized.[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | * Participants with high stakes can vote themselves in to become a validator. Something which is seen recently in EOS.[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> | <WRAP> | ||
| - | Collaborative consensus[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> | | ||
| - | ^ Leased Proof of Stake (LPoS) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | Waves | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Proof of Elapsed Time (PoET) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | Hyperledger Sawtooth, Resource-Efficient Mining (REM) | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Practical Byzantine Fault Tolerance (PBFT) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | Stellar, Ripple, Hyperledger Fabric[[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Simplified Byzantine Fault Tolerance (SBFT) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | Chain | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Delegated Byzantine Fault Tolerance (DBFT) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | NEO [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Directed Acyclic Graphs (DAG) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | Iota, Hedera Hashgraph [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Proof of Activity (PoA) | <WRAP> | ||
| - | |||
| - | </WRAP> |<WRAP> | ||
| - | * Espers and Decred [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | * Decred [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | Collaborative consensus[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | ||
| - | </WRAP> | | ||
| - | ^ Proof of Indentity (PoI) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ Proof of Importance (PoI) | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | NEM | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | </WRAP> | | ||
| - | ^ <WRAP> | ||
| - | Proof of Capacity (PoC) | ||
| - | |||
| - | Proof of Space (PoS) | ||
| - | </WRAP> | <WRAP> | ||
| - | </WRAP> |<WRAP> | ||
| - | Burstcoin and SpaceMint [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | ||
| - | </WRAP> |<WRAP> | ||
| - | * Similar to PoW but uses space instead of computation. Thus much environmental friendly. | ||
| - | * Can be used for malware detection, by determining whether the L1 cache of a processor is empty (e.g., has enough space to evaluate the PoSpace routine without cache misses) or contains a routine that resisted being evicted. | ||
| - | * Can be used for anti-spam measures and denial of service attack prevention. | ||
| - | * PoC can use any regular hard drives including those with Android-based systems. | ||
| - | * It is reportedly up to 30-times more energy efficient than the ASIC-based mining of the bitcoin cryptocurrency. | ||
| - | * There is no need for dedicated hardware or constant upgrading of hard drives. | ||
| - | * Mining data can be easily wiped-off and the drive can be reused for any other data storage purpose. | ||
| - | |||
| - | [[https://www.investopedia.com/terms/p/proof-capacity-cryptocurrency.asp]] | ||
| - | </WRAP> |<WRAP> | ||
| - | * Not many developers have adopted the system. | ||
| - | * It is possible for malware to affect mining activities. | ||
| - | * Widespread adoption of PoC could start an "arms race" to produce higher capacity hard drives. | ||
| - | [[https://www.investopedia.com/terms/p/proof-capacity-cryptocurrency.asp]] | + | <nspages -tree dido:public:ra:xapend:xapend.k_consensus: -exclude -subns -pagesInNs -h1 -textNs=""> |
| - | </WRAP> |<WRAP> | + | |
| - | Collaborative consensus[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | + | |
| - | </WRAP> | | + | |
| - | ^ Proof of Burn (PoB) | <WRAP> | + | |
| - | </WRAP> |<WRAP> | + | |
| - | Slim Coin [[dido:public:ra:xapend:xapend.k_consensus:09_ref:bhardwaj]] | + | |
| - | </WRAP> |<WRAP> | + | |
| - | </WRAP> |<WRAP> | + | |
| - | </WRAP> |<WRAP> | + | |
| - | </WRAP> | | + | |
| - | ^ Proof of Weight (PoW) | <WRAP> | + | |
| - | </WRAP> |<WRAP> | + | |
| - | Algorand, Filecoin, Chia | + | |
| - | </WRAP> |<WRAP> | + | |
| - | * Energy efficient.[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | + | |
| - | * Highly Customisable and scalable.[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | + | |
| - | </WRAP> |<WRAP> | + | |
| - | * Incentivization can be hard.[[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | + | |
| - | </WRAP> |<WRAP> | + | |
| - | Competitive consensus [[dido:public:ra:xapend:xapend.k_consensus:09_ref:saini]] | + | |
| - | </WRAP> | | + | |
| - | </table> | + | <color blue><todo @char>New Section -- review </todo></color> \\ |
| + | <color blue><todo @char #char:2021-11-09>change the list above to nspages</todo></color> \\ | ||
| + | <color blue><todo @char #char:2021-11-09> Change the subsection page names to K.1, K.2, etc. similar to App F</todo></color> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||