<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: The Byzantine Generals Problem</title>
	<atom:link href="http://marknelson.us/2007/07/23/byzantine/feed/" rel="self" type="application/rss+xml" />
	<link>http://marknelson.us/2007/07/23/byzantine/</link>
	<description>Programming, mostly.</description>
	<lastBuildDate>Sun, 20 May 2012 20:52:57 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Quora</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-489041</link>
		<dc:creator>Quora</dc:creator>
		<pubDate>Sun, 04 Mar 2012 12:41:43 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-489041</guid>
		<description>&lt;strong&gt;If I&#039;d like to have an informed opinion about Bitcoin which books should I read?...&lt;/strong&gt;

The field is moving so quickly that research articles and wikis are probably more important than books at this point. The bitcoin protocol is built using well-known cryptographic primitives so the specific advance was more related to the distributed na...</description>
		<content:encoded><![CDATA[<p><strong>If I&#8217;d like to have an informed opinion about Bitcoin which books should I read?&#8230;</strong></p>
<p>The field is moving so quickly that research articles and wikis are probably more important than books at this point. The bitcoin protocol is built using well-known cryptographic primitives so the specific advance was more related to the distributed na&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: aureliano</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-341976</link>
		<dc:creator>aureliano</dc:creator>
		<pubDate>Fri, 31 Dec 2010 00:33:49 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-341976</guid>
		<description>Hi Mark!

thanks for the opportunity to discuss the algorithm here. Your analysis help me a lot understanding what Lamport meant. What Swinn says, though, is in my opinion correct. 

What we see in your tree as leaves in Figure 5 -- OM(0) -- are the messages sent already by everyone. So everyone is possesing these. Now Lamport says &quot;let v_j be the value Lieutenant i received from Lieutenant j&quot;, and then &quot;Lieutenant i uses the value majority (v_1, ... , v_{n-1} )&quot;. 

Thus, the messages {0, 132, 0}, {0, 142, 0}, {0, 152, 0}, {X, 162, X}, and {X,172, X} were sent by Lieutenant 2, which itself reveived it from Lieutenant 4, 5, 6, 7! So we need to apply the mayority function on this messages, to know, what node 2 will decide. 

Really interesting =)

Hope to get an answer if I might be wrong. 

Best regards
aureliano</description>
		<content:encoded><![CDATA[<p>Hi Mark!</p>
<p>thanks for the opportunity to discuss the algorithm here. Your analysis help me a lot understanding what Lamport meant. What Swinn says, though, is in my opinion correct. </p>
<p>What we see in your tree as leaves in Figure 5 &#8212; OM(0) &#8212; are the messages sent already by everyone. So everyone is possesing these. Now Lamport says &#8220;let v_j be the value Lieutenant i received from Lieutenant j&#8221;, and then &#8220;Lieutenant i uses the value majority (v_1, &#8230; , v_{n-1} )&#8221;. </p>
<p>Thus, the messages {0, 132, 0}, {0, 142, 0}, {0, 152, 0}, {X, 162, X}, and {X,172, X} were sent by Lieutenant 2, which itself reveived it from Lieutenant 4, 5, 6, 7! So we need to apply the mayority function on this messages, to know, what node 2 will decide. </p>
<p>Really interesting =)</p>
<p>Hope to get an answer if I might be wrong. </p>
<p>Best regards<br />
aureliano</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Byzantine Generals Problem Coding Sample at ZenSRC</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-327088</link>
		<dc:creator>Byzantine Generals Problem Coding Sample at ZenSRC</dc:creator>
		<pubDate>Mon, 24 May 2010 03:34:20 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-327088</guid>
		<description>[...] Several months ago, while going through the motions of updating my resume package, I realized that I didn&#8217;t have an up to date coding sample. So began the process of becoming intimately familiar with the Byzantine Generals Problem. For a great analysis of the problem and one potential implementation, check out Mark Nelson&#8217;s post on this very problem. [...]</description>
		<content:encoded><![CDATA[<p>[...] Several months ago, while going through the motions of updating my resume package, I realized that I didn&#8217;t have an up to date coding sample. So began the process of becoming intimately familiar with the Byzantine Generals Problem. For a great analysis of the problem and one potential implementation, check out Mark Nelson&#8217;s post on this very problem. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Schwinn</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-324286</link>
		<dc:creator>Schwinn</dc:creator>
		<pubDate>Wed, 31 Mar 2010 20:56:34 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-324286</guid>
		<description>Unlike your description, the original algorithm only sends values, does not return values. However, I can&#039;t tell for sure if your description achieves the same effect.</description>
		<content:encoded><![CDATA[<p>Unlike your description, the original algorithm only sends values, does not return values. However, I can&#8217;t tell for sure if your description achieves the same effect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nelson</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-324285</link>
		<dc:creator>Mark Nelson</dc:creator>
		<pubDate>Wed, 31 Mar 2010 20:39:08 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-324285</guid>
		<description>@Schwinn:

&gt;as far as I can tell from the original algorithm,

Good luck actually taking the original algorithm description and putting it into practice! I find it to be a bit elusive.

However, I do believe my implementation is faithful to the spirit and the letter of the original paper.

- Mark</description>
		<content:encoded><![CDATA[<p>@Schwinn:</p>
<p>&gt;as far as I can tell from the original algorithm,</p>
<p>Good luck actually taking the original algorithm description and putting it into practice! I find it to be a bit elusive.</p>
<p>However, I do believe my implementation is faithful to the spirit and the letter of the original paper.</p>
<p>- Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Schwinn</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-324283</link>
		<dc:creator>Schwinn</dc:creator>
		<pubDate>Wed, 31 Mar 2010 20:15:57 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-324283</guid>
		<description>The example shown with two faults is illustrative. However, as far as I can tell from the original algorithm, there is no &quot;roll up&quot; of the output values as described above. Notice that the algorithm does not use the term &quot;output&quot; at all.

Instead, the input values received in the previous step are used for the majority decision (in step 3 of the algorithm). For example, in Figure 5, I think the correct &quot;outputs&quot; would be the same as shown, but they would be calculated differently. As an example, the output of {0, 12, ?} in OM(1) would be calculated from the outputs of {0, 132, 0}, {0, 142, 0}, {0, 152, 0}, {X, 162, X}, and {X,172, X}, because those are the input values received by 2 in OM(0).</description>
		<content:encoded><![CDATA[<p>The example shown with two faults is illustrative. However, as far as I can tell from the original algorithm, there is no &#8220;roll up&#8221; of the output values as described above. Notice that the algorithm does not use the term &#8220;output&#8221; at all.</p>
<p>Instead, the input values received in the previous step are used for the majority decision (in step 3 of the algorithm). For example, in Figure 5, I think the correct &#8220;outputs&#8221; would be the same as shown, but they would be calculated differently. As an example, the output of {0, 12, ?} in OM(1) would be calculated from the outputs of {0, 132, 0}, {0, 142, 0}, {0, 152, 0}, {X, 162, X}, and {X,172, X}, because those are the input values received by 2 in OM(0).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-248955</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 01 Dec 2008 22:26:42 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-248955</guid>
		<description>@Mark,

I found the answer to my own question! :-) It&#039;s in the original paper:

&quot;A traitorous commander may decide not to send any order. Since the lieutenants must obey some order, they need some default order to obey in this case. We let RETREAT be this default order.&quot; 

By extension, I believe this should be extended to &quot;In the presence of a tie in the majority voting, use the default order.&quot; This would handle the case I presented above, and others similar to it.

Thanks,

Paul</description>
		<content:encoded><![CDATA[<p>@Mark,</p>
<p>I found the answer to my own question! :-) It&#8217;s in the original paper:</p>
<p>&#8220;A traitorous commander may decide not to send any order. Since the lieutenants must obey some order, they need some default order to obey in this case. We let RETREAT be this default order.&#8221; </p>
<p>By extension, I believe this should be extended to &#8220;In the presence of a tie in the majority voting, use the default order.&#8221; This would handle the case I presented above, and others similar to it.</p>
<p>Thanks,</p>
<p>Paul</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-248954</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 01 Dec 2008 22:15:51 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-248954</guid>
		<description>Hi Mark,

I agree. That&#039;s kind of what I meant: they agree on something, but this is what was bugging me... one last question (I hope) as a followup. Let&#039;s assume three things: (1) The commanding general is the only traitor. (2) A traitor can put out any single character, not just X and 0. (3) There are 4 generals (so N &gt;= 3M + 1). The commanding general sends a different order value to each of the lieutenants (ie, &#039;1&#039;=&#039;Attack&#039; to lieutenant #1, &#039;2&#039;=&#039;Stay Put&#039; to lieutenant 2, and &#039;3&#039;=&#039;Retreat&#039; to lieutenant 3), and each of these loyal lieutenants report exactly what they were told to the others... how do they have any kind of agreement? Yet this scenario seems to fit within the parameters of a succesful execution of the problem? That&#039;s why I assumed there must be some default action they take. If I am correct in my assumption (which I may not be) then the protocol is limited to binary orders/messages? I&#039;ve thought of even more involved possibilities than this.

Paul</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>I agree. That&#8217;s kind of what I meant: they agree on something, but this is what was bugging me&#8230; one last question (I hope) as a followup. Let&#8217;s assume three things: (1) The commanding general is the only traitor. (2) A traitor can put out any single character, not just X and 0. (3) There are 4 generals (so N &gt;= 3M + 1). The commanding general sends a different order value to each of the lieutenants (ie, &#8217;1&#8242;=&#8217;Attack&#8217; to lieutenant #1, &#8217;2&#8242;=&#8217;Stay Put&#8217; to lieutenant 2, and &#8217;3&#8242;=&#8217;Retreat&#8217; to lieutenant 3), and each of these loyal lieutenants report exactly what they were told to the others&#8230; how do they have any kind of agreement? Yet this scenario seems to fit within the parameters of a succesful execution of the problem? That&#8217;s why I assumed there must be some default action they take. If I am correct in my assumption (which I may not be) then the protocol is limited to binary orders/messages? I&#8217;ve thought of even more involved possibilities than this.</p>
<p>Paul</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nelson</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-248937</link>
		<dc:creator>Mark Nelson</dc:creator>
		<pubDate>Mon, 01 Dec 2008 20:52:03 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-248937</guid>
		<description>@Paul:

No, the lieutenants don&#039;t have any way of knowing that a command is good. If you have a commander sending out bad commands, all we know for sure after the algorithm runs is that all the honest lieutenants will arrive at the same command. They won&#039;t actually know if it is from an honest leader or not. At least they will all do the same thing.

We also know that if the leader is honest, all honest lieutenants will get the proper command. 

- Mark</description>
		<content:encoded><![CDATA[<p>@Paul:</p>
<p>No, the lieutenants don&#8217;t have any way of knowing that a command is good. If you have a commander sending out bad commands, all we know for sure after the algorithm runs is that all the honest lieutenants will arrive at the same command. They won&#8217;t actually know if it is from an honest leader or not. At least they will all do the same thing.</p>
<p>We also know that if the leader is honest, all honest lieutenants will get the proper command. </p>
<p>- Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://marknelson.us/2007/07/23/byzantine/comment-page-1/#comment-248919</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 01 Dec 2008 19:07:50 +0000</pubDate>
		<guid isPermaLink="false">/2006/08/13/byzantine/#comment-248919</guid>
		<description>Mark, you&#039;re right. I wasn&#039;t thinking in terms of design, rather in terms of maintenance and error avoidance in an operating environment.

I did my own implementation and had a question. Let&#039;s say we have 7 generals including 2 traitors, one of which is the commander. Therefore, I had the commander randomly generate a &quot;X&quot; or a 0 to send to the other N-1 generals.  If enough X&#039;s are sent out by the commander, then the majority voting could turn out to have a predominance of X&#039;s at the end of the process. Yet, an X could mean anything: non-existence of a message or any random screwed up message (ie, a Y,Z,B,D,... not just an X). So I would imagine each loyal general that calc&#039;s an X as the majority would say &quot;Hmmm... the commander is a traitor, or there are too many traitors in our midst. I have to go with the default order (of retreat or attack&quot;). Is this the correct way to interpret the algorithm in your opinion?

Thanks,

Paul</description>
		<content:encoded><![CDATA[<p>Mark, you&#8217;re right. I wasn&#8217;t thinking in terms of design, rather in terms of maintenance and error avoidance in an operating environment.</p>
<p>I did my own implementation and had a question. Let&#8217;s say we have 7 generals including 2 traitors, one of which is the commander. Therefore, I had the commander randomly generate a &#8220;X&#8221; or a 0 to send to the other N-1 generals.  If enough X&#8217;s are sent out by the commander, then the majority voting could turn out to have a predominance of X&#8217;s at the end of the process. Yet, an X could mean anything: non-existence of a message or any random screwed up message (ie, a Y,Z,B,D,&#8230; not just an X). So I would imagine each loyal general that calc&#8217;s an X as the majority would say &#8220;Hmmm&#8230; the commander is a traitor, or there are too many traitors in our midst. I have to go with the default order (of retreat or attack&#8221;). Is this the correct way to interpret the algorithm in your opinion?</p>
<p>Thanks,</p>
<p>Paul</p>
]]></content:encoded>
	</item>
</channel>
</rss>

