create account

Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works by basiccrypto

View this thread on: hive.blogpeakd.comecency.com
· @basiccrypto · (edited)
$3.08
Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works
<html>
<p>https://steemitimages.com/DQmZN9b65rvED42vahTmyz6HYiV4NvrkuFRjFGRv9njqqeE/neo-consensu-algorithm.png</p>
<p>In <a href="https://steemit.com/cryptocurrency/@basiccrypto/almost-everything-you-wanted-to-know-about-neo-part-1-of-2">Part 1</a> and <a href="https://steemit.com/cryptocurrency/@basiccrypto/almost-everything-you-wanted-to-know-about-neo-part-2-of-2">Part 2</a> of our series on the Neo Smart Economy we gave a broad overview of how the Chinese blockchain platform works and discussed some of the economics behind the coin. &nbsp;Today we shift our focus to Neo’s proposed Consensus Mechanism.</p>
<p><strong>The Byzantine Generals’ Problem&nbsp;</strong></p>
<p>The best known consensus mechanisms are Proof of Work (e.g. Bitcoin) and Proof of Stake (e.g. NXT). &nbsp;Neo proposes an improvement by using Delegated Byzantine Fault Tolerance (dBFT) as its consensus mechanism. &nbsp;Since dBFT is a new protocol this has led many people to question how it works and why it is an improvement over other consensus mechanisms. &nbsp;The <a href="https://github.com/neo-project/docs/blob/master/en-us/index.md">updated Neo whitepaper</a>, <a href="http://docs.neo.org/en-us/node/consensus.html">Neo documentation site</a>, and <a href="https://neo.org/Files/A8A0E2.pdf">DBFT Whitepaper</a> provide the framework for Neo’s dBFT model if you want to read more.</p>
<p>The <a href="https://en.wikipedia.org/wiki/Byzantine_fault_tolerance#Byzantine_Generals.27_Problem">Byzantine Generals’ Problem</a> (<a href="http://www-inst.eecs.berkeley.edu/~cs162/fa12/hand-outs/Original_Byzantine.pdf">original paper</a>) occurs anytime we try to determine the TRUE outcome of a vote. &nbsp;Imagine 9 Generals for the Byzantine empire have encircled the city of Rome with their armies. &nbsp;In order to successfully take Rome the generals must attack or strategically retreat in unison. &nbsp;If any general acts opposite the consensus decision then the armies will be routed and defeated. &nbsp;The decision to attack or retreat is put to a daily vote and whichever option receives &gt;50% of the vote is what the generals agree to do. &nbsp;Since each General is commanding their army in separate geographic locations around the city they utilize courier’s to carry their vote to the other generals.</p>
<p>This system has inherent flaws. &nbsp;First, any number of the Byzantine Generals could be bribed by the Romans to betray the Byzantine army, these would be Traitorous Generals. &nbsp;Second, any general cold make an inappropriate decision as to whether they should attack or retreat, these are Improperly Functioning Generals. &nbsp;Third, the couriers carrying the votes of the generals could be bribed by the Romans to alter the votes in a traitorous way. &nbsp;And fourth, the couriers could fail to deliver their message or deliver the wrong message.</p>
<p>The Byzantine Generals’ scenario is an analogy for the problem faced by distributed computing systems: How do we reach consensus when faced with untrustworthy &nbsp;and malfunctioning actors that threaten to destabilize the ecosystem?</p>
<p><strong>Delegated Byzantine Fault Tolerance</strong></p>
<p>Numerous protocols have been developed to solve the Byzantine Generals’ Problem. &nbsp;Hyperledger, for instance, uses Practical Byzantine Fault Tolerance in its Proof of Work algorithm. &nbsp;Neo, on the other hand, implements <a href="https://neo.org/Files/A8A0E2.pdf">Delegated Byzantine Fault Tolerance</a> to solve the Byzantine Generals’ Problem. &nbsp;The Neo creators chose this protocol because it should allow for better scaling and performance when compared to currently existing solutions.</p>
<p>Scalability is a major issue for any blockchain. &nbsp;As the number of transactions and network size increase, the blockchain must be able to scale proportionally. &nbsp;If it cannot scale with demand then transactions will be delayed or never processed at all. &nbsp;We see this issue currently with the Bitcoin scaling debate and SegWit2x that threaten to fork the blockchain.</p>
<p>To explain how dBFT works we will use a simplified analogy as follows. &nbsp;There is a country called Neo. &nbsp;Every citizen in the country is given the right to vote on who will be their leader, also called a delegate. &nbsp;The delegates make the laws of the country. &nbsp;If the citizens disagree with how a delegate voted on a law then they can vote for a different delegate next time.Citizens then tell all of the delegates what will make them happiest. &nbsp;Every delegate must keep track of the demands of all of the citizens and document it on a ledger. &nbsp;These demands will be added up to pass laws aimed at making the citizens happy.</p>
<p>When it is time to pass a law a Speaker is randomly assigned from the group of delegates. &nbsp;The Speaker then proposes the law based off of the demands of the citizens. &nbsp;In the speaker’s proposed law he calculates how the law will affect the country’s Happiness Number (a measure of how happy they are). &nbsp;Next, the speaker individually hands out to the delegates his proposed law. &nbsp;The delegates then decide if the Speaker’s calculation matches their own and confer with the other delegates to verify the calculated Happiness Number is correct. &nbsp;If 66% percent of the delegates agree that the Speaker’s calculated Happiness Number is correct then the Law passes and is finalized.</p>
<p>https://steemitimages.com/DQmNzj5pxfnbwcVU9ynViwXUFL5dHqp6hi5r2XEQn5ui6z7/Neo%20Consensus.png<br><em>Figure 1: All nodes acting honestly with 100% Consensus. &nbsp;Law A (the block) will be verified.</em></p>
<p>If less than 66% of the delegates are in agreement then a new Speaker is randomly selected and the process starts over. &nbsp;This system is designed to protect against traitors/evil-doers and dysfunctional leaders (i.e. leaders who aren’t malicious but simply have trouble calculating the Happiness value).</p>
<p>&nbsp;Applying this analogy to the Neo blockchain, anyone owning Neo is a citizen. &nbsp;The majority of Neo holders are Ordinary Nodes that can only transfer or exchange assets. &nbsp;Like citizens in the country of Neo, they do not participate in block validation. &nbsp;Delegates represent Bookkeeping Nodes in the Neo Economy. &nbsp;Bookkeeping Nodes verify each block written to the blockchain. &nbsp;To become a Bookkeeping Node certain requirements must be met, such as special equipment, dedicated internet connections, and a certain of amount of GAS (1,000 at the time of writing). &nbsp;We will discuss how to become a Bookkeeping Node in another post.</p>
<p>The demands of the citizens are the transactions made by Neo holders. &nbsp;The law represents the current block in the blockchain and the Happiness Number is the hash of the current block. Now let’s look at how the system protects itself.</p>
<p><strong>The Dishonest Speaker</strong></p>
<p>There is always a chance the Speaker, who is randomly selected from the Delegates, could be dishonest or malfunctions. &nbsp;In the following example the Speaker sends a malicious message (Law B) to 2 of the 3 Delegates and an accurate message (Law A) to 1 Delegate.</p>
<p>https://steemitimages.com/DQmaWnvchtYpBdy8GiTnQ9mrVCJQunuAZvgE1CYiPtuQZEn/Neo%20Dishonest%20Speaker.png<br><em>Figure 2: The dishonest Speaker sends an accurate message (A) to the Left Node but sends a malicious message (B) to the Middle and Right Nodes.</em></p>
<p>In this scenario the law proposal will be rejected. &nbsp;The Middle Delegate and the Right Delegate will not calculate the same Happiness Number as the one was proposed by the Speaker’s communication and cannot verify the Speaker’s law, resulting in 2 rejections of the law. &nbsp;The Left Delegate, who was sent the accurate law, would confirm the Happiness Number sent by the speaker resulting in 1 verification of the law. &nbsp;This proposal would be rejected because it did not receive 66% consensus (2 votes needed) and a new Speaker would be randomly chosen, starting the process all over again.</p>
<p><strong>The Dishonest Delegate</strong></p>
<p>In this situation the Speaker is honest and one of the Delegates is misbehaving.</p>
<p>https://steemitimages.com/DQmUt5H1wGLiHrNwzg3sudmZmNXFA2wnryf1vsqM1hbtgWt/Neo%20Dishonest%20Delegate.png<br><em>Image 3: The Right Delegate sends incorrect messages (B) to the other Delegates.</em></p>
<p>This would lead to validation of Law A proposed by the Speaker. &nbsp;The Honest Delegates (Left &nbsp;and Middle) would be able to verify the Honest Speaker’s proposed Law A and thus achieve 66% consensus. &nbsp;The Delegates could also determine that either the Speaker lied to the Right Node or that the Right Node was dishonest.It is not clear at this time, but it is likely that data about the honesty/functioning of each Delegate will be available for Citizens to review. &nbsp;This will guide voters’ decisions about which Delegate is the most trustworthy and, by extension, who to vote for.</p>
<p><strong>More to Come</strong></p>
<p>Neo is still developing their Delegated Byzantine Fault Tolerance protocol. &nbsp;This article is meant to describe the protocol in simplified terms while leaving out many proposed complexities. &nbsp;Also, because dBFT and the Neo blockchain are still being developed, many aspects of how this protocol will work on the Neo blockchain are not yet known. &nbsp;Very soon we will discuss how to become a Bookkeeping Node in the Neo Economy as well as pose some important questions we hope get answered by the Neo Development Team.<br>
&nbsp;</p>
<p>&nbsp;<strong>Tip Jar</strong></p>
<p>Bitcoin - 1CFSxj1dy4a9B4ZYwvDmdds8zB3unNSW2t</p>
<p>Litecoin - LZxBp3QAZ2SDheN8FaRVHg4nuWPnWAQSdP</p>
<p>Ethereum - 0x009561fC7CF8656c53EB0874c601DC359E40f76f</p>
<p>NEO - ANwvg4giWPxrZeJtR3ro9TJf4dUHk5wjKe</p>
<p>Dash - XkAGSD83Mb9TD4whTeJ6SQawBh56WjwUEM</p>
<p>Ripple - rEfV4j3Jhzj1BW8948ePHTPEnqCf9cxt7w</p>
<p>IOTA - YMPFQWXQYHT9DDJVGDGY9SNCSB9F999UDAVWLGXGEIBPHUXJYHQDVWMFFWCTSUTMIUDFNQIBUTQUJGSWZCKMHUOKTB<br>
&nbsp;</p>
</html>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorbasiccrypto
permlinkneo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works
categoryneo
json_metadata{"tags":["neo","antshares","cryptocurrency","crypto","blockchain"],"image":["https://steemitimages.com/DQmZN9b65rvED42vahTmyz6HYiV4NvrkuFRjFGRv9njqqeE/neo-consensu-algorithm.png","https://steemitimages.com/DQmNzj5pxfnbwcVU9ynViwXUFL5dHqp6hi5r2XEQn5ui6z7/Neo%20Consensus.png","https://steemitimages.com/DQmaWnvchtYpBdy8GiTnQ9mrVCJQunuAZvgE1CYiPtuQZEn/Neo%20Dishonest%20Speaker.png","https://steemitimages.com/DQmUt5H1wGLiHrNwzg3sudmZmNXFA2wnryf1vsqM1hbtgWt/Neo%20Dishonest%20Delegate.png"],"links":["https://steemit.com/cryptocurrency/@basiccrypto/almost-everything-you-wanted-to-know-about-neo-part-1-of-2","https://steemit.com/cryptocurrency/@basiccrypto/almost-everything-you-wanted-to-know-about-neo-part-2-of-2","https://github.com/neo-project/docs/blob/master/en-us/index.md","http://docs.neo.org/en-us/node/consensus.html","https://neo.org/Files/A8A0E2.pdf","https://en.wikipedia.org/wiki/Byzantine_fault_tolerance#Byzantine_Generals.27_Problem","http://www-inst.eecs.berkeley.edu/~cs162/fa12/hand-outs/Original_Byzantine.pdf"],"app":"steemit/0.1","format":"html"}
created2017-07-26 21:08:48
last_update2017-07-26 23:28:51
depth0
children7
last_payout2017-08-02 21:08:48
cashout_time1969-12-31 23:59:59
total_payout_value2.338 HBD
curator_payout_value0.746 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length10,087
author_reputation79,511,935,746
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id9,839,172
net_rshares861,527,153,709
author_curate_reward""
vote details (63)
@amiramnoam ·
$0.08
wow , nice!
👍  
properties (23)
authoramiramnoam
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20170811t072434131z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2017-08-11 07:24:33
last_update2017-08-11 07:24:33
depth1
children0
last_payout2017-08-18 07:24:33
cashout_time1969-12-31 23:59:59
total_payout_value0.057 HBD
curator_payout_value0.019 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length11
author_reputation124,519,784,851,313
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id11,475,276
net_rshares22,627,170,847
author_curate_reward""
vote details (1)
@bertomsuarc ·
Well done!
properties (22)
authorbertomsuarc
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20180320t215045120z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2018-03-20 21:50:48
last_update2018-03-20 21:50:48
depth1
children0
last_payout2018-03-27 21:50:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length10
author_reputation631,509,788
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id45,624,859
net_rshares0
@eosfan · (edited)
>The best known consensus mechanisms are Proof of Work (e.g. Bitcoin) and Proof of Stake (e.g. NXT).  Neo proposes an improvement by using Delegated Byzantine Fault Tolerance (dBFT) as its consensus mechanism.  Since dBFT is a new protocol this has led many people to question how it works and why it is an improvement over other consensus mechanisms. 

The irony on saying this on a steem blockchain that uses dpos, protocol that invented delegation in 2014 with original bitshares project. also was first instance of 2/3 or 66% number implementation on live blockchain as well lmao
👍  
properties (23)
authoreosfan
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20171128t044037895z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2017-11-28 04:40:42
last_update2017-11-28 04:41:12
depth1
children0
last_payout2017-12-05 04:40:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length583
author_reputation540,339,664,293
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id21,741,487
net_rshares0
author_curate_reward""
vote details (1)
@matthewguo ·
Very nice, NEO is pretty good!
properties (22)
authormatthewguo
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20180108t113930147z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2018-01-08 11:39:30
last_update2018-01-08 11:39:30
depth1
children0
last_payout2018-01-15 11:39:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length30
author_reputation16,388,585,106
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id27,982,238
net_rshares0
@morex1 ·
Thanks for your explanation.
properties (22)
authormorex1
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20180316t231837396z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2018-03-16 23:18:30
last_update2018-03-16 23:18:30
depth1
children0
last_payout2018-03-23 23:18:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length28
author_reputation7,884,147,319
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id44,844,047
net_rshares0
@rrrmania ·
Very good blog written keep up the good work man. dBFT will not give more powers to the validators like EOS gives. EOS consensus algorithm of delegated proof of stakes gives more power to the arbitrators if they don't solve this issue their adoption will be slower.
👍  
properties (23)
authorrrrmania
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20180709t195342718z
categoryneo
json_metadata{"tags":["neo"],"app":"steemit/0.1"}
created2018-07-09 19:53:45
last_update2018-07-09 19:53:45
depth1
children0
last_payout2018-07-16 19:53:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length265
author_reputation26,711,408
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id64,073,033
net_rshares0
author_curate_reward""
vote details (1)
@salinapate011714 ·
Very good blog. I was about to post a similair thread. Buy and hold for the upcoming 2 to 5 years and the market will find it's way.  We do need to look better at the insights of every coin. What team is behind it, is there any management. How strong is the product, is there any product at all? Personally I always use:  https://www.coincheckup.com Complete Coin analysis about the team, product, communication transparency, advisors and investment statistics.
properties (22)
authorsalinapate011714
permlinkre-basiccrypto-neo-s-consensus-protocol-how-delegated-byzantine-fault-tolerance-works-20170925t121747774z
categoryneo
json_metadata{"tags":["neo"],"links":["https://www.coincheckup.com"],"app":"steemit/0.1"}
created2017-09-25 12:17:48
last_update2017-09-25 12:17:48
depth1
children0
last_payout2017-10-02 12:17:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length461
author_reputation-58,558,914,751
root_title"Neo's Consensus Protocol: How Delegated Byzantine Fault Tolerance Works"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,881,074
net_rshares0