Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1SINna-0004sV-QG for bitcoin-development@lists.sourceforge.net; Thu, 12 Apr 2012 17:27:10 +0000 X-ACL-Warn: Received: from nm39-vm7.bullet.mail.ne1.yahoo.com ([98.138.229.167]) by sog-mx-2.v43.ch3.sourceforge.com with smtp (Exim 4.76) id 1SINnW-0004eo-Hz for bitcoin-development@lists.sourceforge.net; Thu, 12 Apr 2012 17:27:10 +0000 Received: from [98.138.90.50] by nm39.bullet.mail.ne1.yahoo.com with NNFMP; 12 Apr 2012 17:24:19 -0000 Received: from [98.138.88.235] by tm3.bullet.mail.ne1.yahoo.com with NNFMP; 12 Apr 2012 17:24:18 -0000 Received: from [127.0.0.1] by omp1035.mail.ne1.yahoo.com with NNFMP; 12 Apr 2012 17:24:18 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 953297.8515.bm@omp1035.mail.ne1.yahoo.com Received: (qmail 64731 invoked by uid 60001); 12 Apr 2012 17:24:18 -0000 X-YMail-OSG: i3S72FMVM1lz.C.eCkvYqjxIDFz09nPvQ7B5C6hmHbXKqch bOWQRjNB7cf294PEMCc3g9kNPt_xEE2_9ynxrMbZ16hEazTDBB8H4eoWd4qk CjxBwazdvGVt1.kokZdUNoHN8mN4v2WOD_uqVl38RPWNUQYoKcylbUKv4eya 7SLNeTZSmtBzUb5jObYfAxV8pgEOz94FsdK2fi0q5a4cIITT4AEGRBCfD_Bd EuY7utVnN6Ek213EM.jZUwOBuBVM2XFv8kfpvuEgOn1smwQ0f7Qkqo2Tff75 x308OONhGj2slKpsDpVmWYlEj.94J8kQXNkcjb40ON4kVAOfLKmZHeUgWtEC EMlWne8wxxtt2Qt9XYznsUK0ZRDjsR8UjrEKyQf_XJr8B4RxFsQ6x219779k x3G8cuC33BtIrLGGuVvgZUM8W8N8DU8UShGOmNZs5IpwTxRVPm6qBV45Rm_k 5lkXIt1nfJZ.I7rf0Ld1g82E6_QoPqpA- Received: from [92.20.151.121] by web121005.mail.ne1.yahoo.com via HTTP; Thu, 12 Apr 2012 10:24:18 PDT X-Mailer: YahooMailWebService/0.8.117.340979 References: Message-ID: <1334251458.43194.YahooMailNeo@web121005.mail.ne1.yahoo.com> Date: Thu, 12 Apr 2012 10:24:18 -0700 (PDT) From: Amir Taaki To: "bitcoin-development@lists.sourceforge.net" In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.4 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [98.138.229.167 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (zgenjix[at]yahoo.com) -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.5 AWL AWL: From: address is in the auto white-list X-Headers-End: 1SINnW-0004eo-Hz Subject: Re: [Bitcoin-development] Adding request/reply id in messages X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list Reply-To: Amir Taaki List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Apr 2012 17:27:10 -0000 Jeff elaborated the problems very well, but I just want to add this:=0A=0AY= our change is essentially relying (trusting) the server to track a piece of= information (your state). Anytime you start depending on another node in s= ome way, it is opening yourself up to be exploited. Nodes should be doing t= heir owning state maintainance, not relying on external parties.=0A=0A=0AI = am very much against the change. As someone who has implemented the complet= e bitcoin protocol, I had no problems implementing the blockchain download.= In fact, I dislike that nodes have to store the last inventory they sent a= s part of a getblocks in order to trigger the next round. It's be better if= there was no state whatsoever.=0A=0A________________________________=0AFro= m: Jeff Garzik =0ATo: sirk390@gmail.com =0ACc: bitcoin= -development@lists.sourceforge.net =0ASent: Thursday, April 12, 2012 6:12 P= M=0ASubject: Re: [Bitcoin-development] Adding request/reply id in messages= =0A=0AOn Wed, Apr 11, 2012 at 2:39 PM, Christian Bodt w= rote:=0A> Hi,=0A>=0A> I would like to discuss the following bitcoin protoco= l improvement proposal:=0A>=0A> =A0 =A0 =A0 =A0 =A0Adding request/reply id = in all messages (in the message header,=0A> based on what was done for the = "checksum" field)=0A>=0A> The original reason is that I found it very hard = to implement robust=0A> blockchain downloading as we are missing context in= formation:=0A> The download protocol relies on the other peer sending one (= or more) "inv"=0A> reponse(s) to "getblocks" and sending the "hashContinue"= .=0A> But if the other peer doesn't send a response to getblock, send a par= tial=0A> response to getblocks, mixes it with some unrelated blocks invento= ries=0A> or=A0doesn't send the "hashContinue"=A0it is very hard to detect a= nd handle=0A> (e.g. ban the peer and switch to another). =A0This could caus= e some DoS=0A> attacks by misbehaving peers.=0A=0AIf the peer is misbehavin= g, then disconnect.=A0 Your protocol change=0Adoes not offer any clear bene= fits in this area, as these sorts of=0Aattacks/misbehaviors/bugs are still = just as possible, and just as=0Adamaging (or not).=0A=0AJust disconnect the= strange peer!=0A=0A> The problems are that 1/ we don't know how many "inv"= messages to wait for=0A> after "getblocks"=A0and 2/ we don't know how to= =A0distinguish between result of=0A> "getblocks" and spontaneous "inv" noti= fications.=0A> The same is true for =A0"addr" messages (it is both a notifi= cation and reply)=0A> but this is less of a problem as a lack of response t= o getaddr=0A> doesn't=A0constitute=A0a DoS.=0A>=0A> The idea would be to ad= d a new "requestid" field in messages and define the=0A> following:=0A=0A= =0AStateless protocols have a lot of value.=A0 They are easiest to=0Aimplem= ent, and easier to prove correct.=A0 Existing clients like=0AArtForz' half-= a-node, variants of which are deployed all over the=0Aplace in bitcoin-land= , rely on the stateless-ness to one degree or=0Aanother.=0A=0AStateful prot= ocols, too, have their problems as well.=A0 One must add=0Acode to help rem= ain "synchronized" between local and remote states,=0Awhich your suggested = change only hints at.=A0 NFSv4 and RPC have a long=0Ahistory of dealing wit= h stateful-ness issues.=A0 Obviously bitcoin P2P=0Ais nowhere near as compl= ex, but the history of NFS development offers=0Aseveral lessons applicable = to your proposed change.=0A=0AOverall, IMO your listed reasons for needing = this major change=0A(stateless->stateful) do not really justify the change.= =A0 Handling=0Ainitial block download can be accomplished in a number of wa= ys, and=0Apeer(s) may crash or return odd results.=A0 You must handle these= cases=0Aproperly, regardless of the presence of req/reply id's.=0A=0A-- = =0AJeff Garzik=0AexMULTI, Inc.=0Ajgarzik@exmulti.com=0A=0A-----------------= -------------------------------------------------------------=0AFor Develop= ers, A Lot Can Happen In A Second.=0ABoundary is the first to Know...and Te= ll You.=0AMonitor Your Applications in Ultra-Fine Resolution. Try it FREE!= =0Ahttp://p.sf.net/sfu/Boundary-d2dvs2=0A__________________________________= _____________=0ABitcoin-development mailing list=0ABitcoin-development@list= s.sourceforge.net=0Ahttps://lists.sourceforge.net/lists/listinfo/bitcoin-de= velopment