Return-Path: <kalle@rosenbaum.se> Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 6579415D8 for <bitcoin-dev@lists.linuxfoundation.org>; Mon, 28 Sep 2015 08:30:44 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-ig0-f173.google.com (mail-ig0-f173.google.com [209.85.213.173]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 7518E1D6 for <bitcoin-dev@lists.linuxfoundation.org>; Mon, 28 Sep 2015 08:30:43 +0000 (UTC) Received: by igbkq10 with SMTP id kq10so47866258igb.0 for <bitcoin-dev@lists.linuxfoundation.org>; Mon, 28 Sep 2015 01:30:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=xrqwaDGO0qtO421Fb0h3/BQJmdqAupnLnbht86ZtYZo=; b=LWFDct2Wp63M+sFmBU6M8AKA/2vLv8TMk2qNOHsUN0veTMuohVTJPYB8xHIcYhB2wl EdcwkYsbfGMyHcYgxVAHHNRIzQbLRc3ORePoMP+Q/m+rxyjRm6w35Iuq/bvcVrU+kBGX XaIln9otWIDCso7PkocjOZqxPLAbNn86IG3R3/ppZBzgoLpBwKNa8h6CIPjl+/mDsy67 +uvBwRlBu6XoiYB8XVNw/SO/iOiS22hfhvsawwEsNWwhMQuwrKUYKCwB98CbqnA0aC3h QAY3HxHQ61W/CL6j6L4RNu2O4FotYP/HY52GDrOiGA3OKTezlhYRyN0uxjU8Ck1P9o9d njMA== X-Gm-Message-State: ALoCoQmmEK699GgPwE5N2j1qGxIJKqXixGNEh2zRrQZ+zH1grB89DI31T7TnQ0A8Qix+EBIIsRDi MIME-Version: 1.0 X-Received: by 10.50.43.134 with SMTP id w6mr4574657igl.74.1443429042880; Mon, 28 Sep 2015 01:30:42 -0700 (PDT) Received: by 10.107.189.195 with HTTP; Mon, 28 Sep 2015 01:30:42 -0700 (PDT) In-Reply-To: <CAAS2fgRX-LLiNwcmbHtF6ymEX+uUx3SNjqAe4iyxouhHj=4Abw@mail.gmail.com> References: <CABsx9T2+dG0AE+MgKRAU97KhkHTU1MuxXuwHKv3BgpJswZ5vVg@mail.gmail.com> <CABaSBaxcDRzw0X7-fAfxPJyLcWxTHigpHuAPb4aNQ5zk5NoDCQ@mail.gmail.com> <CAAS2fgTr-OuL3T6mXX-4xFC_LHnAiogTTcPMbcjsM7WtRisQEQ@mail.gmail.com> <CABsx9T3NFRO5nw3z=jrs0Hu3caVNkkTTTb1ibqR7LMWsoou9RQ@mail.gmail.com> <CAAS2fgRj+fE+znXZzFsXXBivKSxnJ2Lheo_g9us4FXN_yCLhgw@mail.gmail.com> <CAE-z3OU50cZBR27QrQsRT5Gtb0AVkE6K33XR0GebsyNWNrbf+w@mail.gmail.com> <CAPswA9xFNgdbH1JXBx+CqjT5HbkK0WGaWQLrJzm+BJCmrXRQcA@mail.gmail.com> <CAAS2fgRX-LLiNwcmbHtF6ymEX+uUx3SNjqAe4iyxouhHj=4Abw@mail.gmail.com> Date: Mon, 28 Sep 2015 10:30:42 +0200 Message-ID: <CAPswA9xei1UNMeNqi=XzSnZU=SeroaeKN_6xHJ0HfhgXBzY_mw@mail.gmail.com> From: Kalle Rosenbaum <kalle@rosenbaum.se> To: Gregory Maxwell <gmaxwell@gmail.com> Content-Type: multipart/alternative; boundary=089e01184b0c5c3fea0520ca8369 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org> Subject: Re: [bitcoin-dev] Weak block thoughts... X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Development Discussion <bitcoin-dev.lists.linuxfoundation.org> List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>, <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe> List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/> List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org> List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help> List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>, <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe> X-List-Received-Date: Mon, 28 Sep 2015 08:30:44 -0000 --089e01184b0c5c3fea0520ca8369 Content-Type: text/plain; charset=UTF-8 2015-09-27 21:50 GMT+02:00 Gregory Maxwell <gmaxwell@gmail.com>: > On Sun, Sep 27, 2015 at 3:10 PM, Kalle Rosenbaum via bitcoin-dev > <bitcoin-dev@lists.linuxfoundation.org> wrote: > > I was mansplaining weak blocks to my wife. She asked a simple question: > > > > Why would I, as a miner, publish a weak block if I find one? > > > > I don't know. > > Sure, I will get faster propagation for my solved block, should I find > one. > > On the other hand everybody else mining a similar block will enjoy the > same > > benefit. Assuming that I'm not a huge miner, it's unlikely that I will > > actually solve the block, so I'm probably just giving away fast > propagation > > times to someone else. > > So how does publishing a weak block benefit the producer of it more than > the > > other miners? Please help me understand this. > > Keep in mind, because of efficient differential transmission the cost > to you is effectively nothing if your transaction acceptance policy is > predictable, it's a hand-full of bytes sent. And by failing to send > yours you do little to nothing to deny others the improvement. > > Suppose that you've solved a block Z (weak or not) and you want to propagate it using a previous weak block Y. With "efficient differential transmission", I assume that you refer to the transmission of the differences between Y and Z to a peer? What encodings are discussed? I guess IBLTs are a hot candidate, but are there other schemes in the making? I suppose that sending something like "weak block Y plus transactions A, B, C minus transaction ids h(D), h(E)" is not considered an efficient differential transmission. Then that's part of the answer to my question. > Lets imagine an alternative weak-blockless weak block implementation: > > Every N seconds, every miner send to every other miner what they're > working on. This isn't totally crazy-- efficient differential > transmission will keep the amount transmitted small. > > Any block found can be referenced to any of these earlier worklists. > > What the effect be of not transmitting yours? > > If your block is unlike everyone elses, you would suffer great delays > in the event you found a block. > If your block is mostly like everyone elses, you wouldn't suffer as > much delay-- but the transmission costs would be negligible in that > case. ... the size sent is proportional to the improvement you get > when finding a block. > "the size sent is proportional to the improvement you get when finding a block." - This encapsulates the issue quite well! The more exotic block I'm building, the more I would benefit from publishing a weak block, but my weak block would also be larger. > > In either case, no one else is harmed by you not sending yours... they > still send their lists. > > A problem with that scheme is that unless you've layered an identity > based access control system on it anyone can DOS attack it, because > anyone can send as much as they want, they don't even have to be > actual miners. > > What weak blocks adds to that is using hashcash as a rate limiting > mechanism-- a coordination free lottery weighed by hash-power decides > who can transmit. > > What if you don't participate in the lottery and share your solutions? > No major harm for the other users... the other users will just choose > a somewhat lower weak-block threshold to get the updates at the > desired rate than they would otherwise. To the extent that what you > were working on was different from anyone else, you'll suffer because > you failed to make use of your chance to influence what could be > efficiently transmitted to include your own blocks. > Makes perfect sense. Also, if I'm working on an exotic block, the probability of someone extending my weak block would be low-ish, so I'm not necessarily "giving away fast propagation times to someone else" as I first thought. > You could also ask a question of why would you transitively relay > someone elses announcement-- well if it helped their blocks too (by > reflecting things they also want to mine) the answer is obvious. But > what if it was disjoint from the things they wanted to mine and didn't > help compared to the weak blocks they already relayed? In that case > it's still in likely in their interest to relay it because if a block > similar to it is produced and they extend that block they may end up > orphaned because of propagation delays their parent block suffered. > What if they receive an announcement which is so "ugly" that they > wouldn't extend the chain with the strong block version of it (they'd > intentionally try to fork it off?)-- in that case they wouldn't want > to relay it. So much the same logic as why you relay other parties > blocks applies, including-- relaying helps the network, but if you > don't it'll still get along fine without you. > Thank you very much for your explanation. /Kalle --089e01184b0c5c3fea0520ca8369 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">2015= -09-27 21:50 GMT+02:00 Gregory Maxwell <span dir=3D"ltr"><<a href=3D"mai= lto:gmaxwell@gmail.com" target=3D"_blank">gmaxwell@gmail.com</a>></span>= :<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo= rder-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:so= lid;padding-left:1ex"><span class=3D"">On Sun, Sep 27, 2015 at 3:10 PM, Kal= le Rosenbaum via bitcoin-dev<br> <<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@li= sts.linuxfoundation.org</a>> wrote:<br> > I was mansplaining weak blocks to my wife. She asked a simple question= :<br> ><br> > Why would I, as a miner, publish a weak block if I find one?<br> ><br> > I don't know.<br> > Sure, I will get faster propagation for my solved block, should I find= one.<br> > On the other hand everybody else mining a similar block will enjoy the= same<br> > benefit. Assuming that I'm not a huge miner, it's unlikely tha= t I will<br> > actually solve the block, so I'm probably just giving away fast pr= opagation<br> > times to someone else.<br> > So how does publishing a weak block benefit the producer of it more th= an the<br> > other miners? Please help me understand this.<br> <br> </span>Keep in mind, because of efficient differential transmission the cos= t<br> to you is effectively nothing if your transaction acceptance policy is<br> predictable, it's a hand-full of bytes sent. And by failing to send<br> yours you do little to nothing to deny others the improvement.<br> <br></blockquote><div>=C2=A0</div><div>Suppose that you've solved a blo= ck Z (weak or not) and you want to propagate it using a previous weak block= Y. With "efficient differential transmission", I assume that you= refer to the transmission of the differences between Y and Z to a peer? Wh= at encodings are discussed? I guess IBLTs are a hot candidate, but are ther= e other schemes in the making? I suppose that sending something like "= weak block Y plus transactions A, B, C minus transaction ids h(D), h(E)&quo= t; is not considered an efficient differential transmission. Then that'= s part of the answer to my question.<br></div><div>=C2=A0</div><blockquote = class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1= px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:= 1ex"> Lets imagine an alternative weak-blockless weak block implementation:<br> <br> Every N seconds, every miner send to every other miner what they're<br> working on.=C2=A0 This isn't totally crazy-- efficient differential<br> transmission will keep the amount transmitted small.<br> <br> Any block found can be referenced to any of these earlier worklists.<br> <br> What the effect be of not transmitting yours?<br> <br> If your block is unlike everyone elses, you would suffer great delays<br> in the event you found a block.<br> If your block is mostly like everyone elses, you wouldn't suffer as<br> much delay-- but the transmission costs would be negligible in that<br> case. ... the size sent is proportional to the improvement you get<br> when finding a block.<br></blockquote><div><br></div><div>"the size se= nt is proportional to the improvement you get when finding a block." -= This encapsulates the issue quite well! The more exotic block I'm buil= ding, the more I would benefit from publishing a weak block, but my weak bl= ock would also be larger.</div><div>=C2=A0</div><blockquote class=3D"gmail_= quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-= color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> <br> In either case, no one else is harmed by you not sending yours... they<br> still send their lists.<br> <br> A problem with that scheme is that unless you've layered an identity<br= > based access control system on it anyone can DOS attack it, because<br> anyone can send as much as they want, they don't even have to be<br> actual miners.<br> <br> What weak blocks adds to that is using hashcash as a rate limiting<br> mechanism-- a coordination free lottery weighed by hash-power decides<br> who can transmit.<br> <br> What if you don't participate in the lottery and share your solutions?<= br> =C2=A0No major harm for the other users... the other users will just choose= <br> a somewhat lower weak-block threshold to get the updates at the<br> desired rate than they would otherwise. To the extent that what you<br> were working on was different from anyone else, you'll suffer because<b= r> you failed to make use of your chance to influence what could be<br> efficiently transmitted to include your own blocks.<br></blockquote><div><b= r></div><div>Makes perfect sense. Also, if I'm working on an exotic blo= ck, the probability of someone extending my weak block would be low-ish, so= I'm not necessarily "giving away fast propagation times to someon= e else" as I first thought.</div><div>=C2=A0</div><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;borde= r-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> You could also ask a question of why would you transitively relay<br> someone elses announcement-- well if it helped their blocks too=C2=A0 (by<b= r> reflecting things they also want to mine) the answer is obvious. But<br> what if it was disjoint from the things they wanted to mine and didn't<= br> help compared to the weak blocks they already relayed?=C2=A0 In that case<b= r> it's still in likely in their interest to relay it because if a block<b= r> similar to it is produced and they extend that block they may end up<br> orphaned because of propagation delays their parent block suffered.<br> What if they receive an announcement which is so "ugly" that they= <br> wouldn't extend the chain with the strong block version of it (they'= ;d<br> intentionally try to fork it off?)-- in that case they wouldn't want<br= > to relay it.=C2=A0 So much the same logic as why you relay other parties<br= > blocks applies, including-- relaying helps the network, but if you<br> don't it'll still get along fine without you.<br> </blockquote></div><br></div><div class=3D"gmail_extra"><div class=3D"gmail= _extra">Thank you very much for your explanation.</div><div class=3D"gmail_= extra"><br></div><div class=3D"gmail_extra">/Kalle=C2=A0</div></div><div cl= ass=3D"gmail_extra"><br></div></div> --089e01184b0c5c3fea0520ca8369--