Return-Path: <jeremy.l.rubin@gmail.com> Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id EBBE5C002D for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 19 Oct 2022 15:43:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id C72DE81368 for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 19 Oct 2022 15:43:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C72DE81368 Authentication-Results: smtp1.osuosl.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=JYZkH1p8 X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -2.088 X-Spam-Level: X-Spam-Status: No, score=-2.088 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Rj4uSO--oGUc for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 19 Oct 2022 15:43:42 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org E3B498134B Received: from mail-yb1-xb31.google.com (mail-yb1-xb31.google.com [IPv6:2607:f8b0:4864:20::b31]) by smtp1.osuosl.org (Postfix) with ESMTPS id E3B498134B for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 19 Oct 2022 15:43:41 +0000 (UTC) Received: by mail-yb1-xb31.google.com with SMTP id y72so3404177yby.13 for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 19 Oct 2022 08:43:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=txm3n7P78BVEUf5kGFhIFtTBJey8rte75VLBC1TheIU=; b=JYZkH1p8xv/hiwgoyhtft5u2MJWHAG3n2E5IoYvS7lU2pb739RP8n0oRwka+GlJaWC 2LPHEzzyoDpkjKBsWhhe9L5hfKXwGka+MWoMXn2u7P4WEnfWM9lqzfO2XC3+KSu5I0NP jQbZLu1Xmwr3AL0AJEqE0019IkcVFLplzXfrdvl6E44H9Y1n1Nq0rPCmMP4ODPfUpOJ4 fMu8wElag/k984ckhPnd4qYZp6IFGPl27vcgXyUq2jbhASP8nbtUF59Req/FX4jNcSqG h/zKblu2WAR39EnPprLclaQ8oOHZiBTTvmkDQAIgqUnDSjhm0rIG2eGX1QYyo3RRGNiN 8gEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=txm3n7P78BVEUf5kGFhIFtTBJey8rte75VLBC1TheIU=; b=1MYkPh+BNxsDJwOLdfSoccrrS5MvxDDLXC8T65R10IA7k/XQqqpTkEmUe/Ulx9hbPA dCHRzofdFqJupHaO6bO/6g1/rJCbdHgPEIIXIZXhtZz+uuEIVX9aAkS4kPlui9B7qrQl 52PQtQMVYgy6dlOASEWPsc32IDPgL36SnnqTOgU0uV5J17DA3q45clliP0y/swHRXtJE H6R6pts2eH5DnV27cuOxFSNh5rZR57XLquBdZDjrXcXlyl9KF/jdf6taj+UqD7QvSM8i xGmWmDEL6Rq75Uc4FlIvm9mMjkV3Y1eUxeCc1kNn1irSuS9a5DJL4CUzbzdMmNPbhO6A n68A== X-Gm-Message-State: ACrzQf16pa3U1TdsLXKJDzxfpEgWJUZw4ANKSuLK5VlMOEbcRJLuA6Hv ibVqlDrLQkMCrRyqWkMpAW3uLVd2Il9CNlbtEcs= X-Google-Smtp-Source: AMsMyM7J8ROMwKmaxihLbO0i/fKquDD4r2IZNhvGYGLok2DPJcl7nsfBKY6yaLXuClW6+9Qzf2aojL/xGEVP5tICO2Y= X-Received: by 2002:a25:c704:0:b0:6c1:9494:f584 with SMTP id w4-20020a25c704000000b006c19494f584mr7375788ybe.98.1666194220706; Wed, 19 Oct 2022 08:43:40 -0700 (PDT) MIME-Version: 1.0 References: <CABZBVTC5kh7ca3KhVkFPdQjnsPhP4Kun1k3K6cPkarrjUiTJpA@mail.gmail.com> <CABZBVTCgiQFtxEyeOU=-SGDQUDthyy7sOgPwiT+OVi35LVivyA@mail.gmail.com> In-Reply-To: <CABZBVTCgiQFtxEyeOU=-SGDQUDthyy7sOgPwiT+OVi35LVivyA@mail.gmail.com> From: Jeremy Rubin <jeremy.l.rubin@gmail.com> Date: Wed, 19 Oct 2022 08:43:28 -0700 Message-ID: <CAD5xwhjFWgNTT5URX31jrULMb-iTxWih7673tpueD10AGbV=Gg@mail.gmail.com> To: Sergej Kotliar <sergej@bitrefill.com>, Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org> Content-Type: multipart/alternative; boundary="000000000000a6f05505eb651273" Subject: Re: [bitcoin-dev] [Opt-in full-RBF] Zero-conf apps in immediate danger X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol 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: Wed, 19 Oct 2022 15:43:44 -0000 --000000000000a6f05505eb651273 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable If they do this to you, and the delta is substantial, can't you sweep all such abusers with a cpfp transaction replacing their package and giving you the original txn? On Wed, Oct 19, 2022, 7:33 AM Sergej Kotliar via bitcoin-dev < bitcoin-dev@lists.linuxfoundation.org> wrote: > Hi all, > > Chiming in on this thread as I feel like the real dangers of RBF as > default policy aren't sufficiently elaborated here. It's not only about t= he > zero-conf (I'll get to that) but there is an even bigger danger called th= e > american call option, which risks endangering the entirety of BIP21 "Scan > this QR code with your wallet to buy this product" model that I believe > we've all come to appreciate. Specifically, in a scenario with high > volatility and many transactions in the mempools (which is where RBF woul= d > come in handy), a user can make a low-fee transaction and then wait for > hours, days or even longer, and see whether BTCUSD moves. If BTCUSD moves > up, user can cancel his transaction and make a new - cheaper one. The > biggest risk in accepting bitcoin payments is in fact not zeroconf risk > (it's actually quite easily managed), it's FX risk as the merchant must > commit to a certain BTCUSD rate ahead of time for a purchase. Over time > some transactions lose money to FX and others earn money - that evens out > in the end. But if there is an _easily accessible in the wallet_ feature = to > "cancel transaction" that means it will eventually get systematically > abused. A risk of X% loss on many payments that's easy to systematically > abuse is more scary than a rare risk of losing 100% of one occasional > payment. It's already possible to execute this form of abuse with opt-in > RBF, which may lead to us at some point refusing those payments (even wit= h > confirmation) or cumbersome UX to work around it, such as crediting the > bitcoin to a custodial account. > > To compare zeroconf risk with FX risk: I think we've had one incident in = 8 > years of operation where a user successfully fooled our server to accept = a > payment that in the end didn't confirm. To successfully fool (non-RBF) > zeroconf one needs to have access to mining infrastructure and probabilit= y > of success is the % of hash rate controlled. This is simply due to the fa= ct > that the network currently won't propagage the replacement transaction to > the miner, which is what's being discussed here. American call option ris= k > would however be available to 100% of all users, needs nothing beyond the > wallet app, and has no cost to the user - only upside. > > Bitrefill currently processes 1500-2000 onchain payments every day. For > us, a world where bitcoin becomes de facto RBF by default, means that we > would likely turn off the BIP21 model for onchain payments, instruct > Bitcoin users to use Lightning or deposit onchain BTC to a custodial > account that we have. > This option is however not available for your typical > BTCPayServer/CoinGate/Bitpay/IBEX/OpenNode et al. Would be great to hear > from other merchants or payment providers how they see this new behavior > and how they would counteract it. > > Currently Lightning is somewhere around 15% of our total bitcoin payments= . > This is very much not nothing, and all of us here want Lightning to grow, > but I think it warrants a serious discussion on whether we want Lightning > adoption to go to 100% by means of disabling on-chain commerce. For me > personally it would be an easier discussion to have when Lightning is at > 80%+ of all bitcoin transactions. Currently far too many bitcoin users > simply don't have access to Lightning, and of those that do and hold thei= r > own keys Muun is the biggest wallet per our data, not least due to their > ease-of-use which is under threat per the OP. It's hard to assess how man= y > users would switch to Lightning in such a scenario, the communication > around it would be hard. My intuition says that the majority of the curre= nt > 85% of bitcoin users that pay onchain would just not use bitcoin anymore, > probably shift to an alt. The benefits of Lightning are many and obvious, > we don't need to limit onchain to make Lightning more appealing. As an > anecdote, we did experiment with defaulting to bech32 addresses some year= s > back. The result was that simply users of the wallets that weren't able t= o > pay to bech32 didn't complete the purchase, no support ticket or anything= , > just "it didn't work =F0=9F=A4=B7=E2=80=8D=E2=99=82=EF=B8=8F" and user mo= ved on. We rolled it back, and later > implemented a wallet selector to allow modern wallets to pay to bech32 > while other wallets can pay to P2SH. This type of thing is clunky, and > requires a certain level of scale to be able to do, we certainly wouldn't > have had the manpower for that when we were starting out. This why I'm > cautious about introducing more such clunkiness vectors as they are > centralizing factors. > > I'm well aware of the reason for this policy being suggested and the > potential pinning attack vector for LN and other smart contracts, but I > think these two risks/costs need to be weighed against eachother first an= d > thoroughly discussed because the costs are non-trivial on both sides. > > Sidenote: On the efficacy of RBF to "unstuck" stuck transactions > After interacting with users during high-fee periods I've come to not > appreciate RBF as a solution to that issue. Most users (80% or so) simply > don't have access to that functionality, because their wallet doesn't > support it, or they use a custodial (exchange) wallet etc. Of those that > have the feature - only the power users understand how RBF works, and > explaining how to do RBF to a non-power-user is just too complex, for the > same reason why it's complex for wallets to make sensible non-power-user = UI > around it. Current equilibrium is that mostly only power users have acces= s > to RBF and they know how to handle it, so things are somewhat working. Bu= t > rolling this out to the broad market is something else and would likely > cause more confusion. > CPFP is somewhat more viable but also not perfect as it would require lot= s > of edge case code to handle abuse vectors: What if users abuse a generous > CPFP policy to unstuck past transactions or consolidate large wallets. Be= st > is for CPFP to be done on the wallet side, not the merchant side, but the= re > too are the same UX issues as with RBF. > In the end a risk-based approach to decide on which payments are > non-trivial to reverse is the easiest, taking account user experience and > such. Remember that in the fiat world card payments have up to 5% > chargebacks, whereas we in zero-conf bitcoin land we deal with "fewer tha= n > 1 in a million" accepted transactions successfully reversed. These days w= e > have very few support issues related to bitcoin payments. The few that do > come in are due to accidental RBF users venting frustration about waiting > for their tx to confirm. > "In theory, theory and practice are the same. In practice, they are not" > > All the best, > Sergej Kotliar > CEO Bitrefill.com > > > -- > > Sergej Kotliar > > CEO > > > Twitter: @ziggamon <https://twitter.com/ziggamon> > > > www.bitrefill.com > > Twitter <https://www.twitter.com/bitrefill> | Blog > <https://www.bitrefill.com/blog/> | Angellist <https://angel.co/bitrefill= > > > > -- > > Sergej Kotliar > > CEO > > > Twitter: @ziggamon <https://twitter.com/ziggamon> > > > www.bitrefill.com > > Twitter <https://www.twitter.com/bitrefill> | Blog > <https://www.bitrefill.com/blog/> | Angellist <https://angel.co/bitrefill= > > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev > --000000000000a6f05505eb651273 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto">If they do this to you, and the delta is substantial, can= 't you sweep all such abusers with a cpfp transaction replacing their p= ackage and giving you the original txn?</div><br><div class=3D"gmail_quote"= ><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Oct 19, 2022, 7:33 AM Sergej= Kotliar via bitcoin-dev <<a href=3D"mailto:bitcoin-dev@lists.linuxfound= ation.org">bitcoin-dev@lists.linuxfoundation.org</a>> wrote:<br></div><b= lockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px = #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><d= iv dir=3D"ltr">Hi all,<div><br></div><div>Chiming in on this thread as I fe= el like the real dangers of RBF as default policy aren't sufficiently e= laborated here. It's not only about the zero-conf (I'll get to that= ) but there is an even bigger danger called the american call option, which= risks endangering the entirety of BIP21 "Scan this QR code with your = wallet to buy this product" model that I believe we've all come to= appreciate. Specifically, in a scenario with high volatility and many tran= sactions in the mempools (which is where RBF would come in handy), a user c= an make a low-fee transaction and then wait for hours, days or even longer,= and see whether BTCUSD moves. If BTCUSD moves up, user can cancel his tran= saction and make a new - cheaper one. The biggest risk in accepting bitcoin= payments is in fact not zeroconf risk (it's actually quite easily mana= ged), it's FX risk as the merchant must commit to a certain BTCUSD rate= ahead of time for a purchase. Over time some transactions lose money to FX= and others earn money - that evens out in the end. But if there is an _eas= ily accessible in the wallet_ feature to "cancel transaction" tha= t means it will eventually get systematically abused. A risk of X% loss on = many payments that's easy to systematically abuse is more scary than a = rare risk of losing 100% of one occasional payment. It's already possib= le to execute this form of abuse with opt-in RBF, which may lead to us at s= ome point refusing those payments (even with confirmation) or cumbersome UX= to work around it, such as crediting the bitcoin to a custodial account.</= div><div><br></div><div>To compare zeroconf risk with FX risk: I think we&#= 39;ve had one incident in 8 years of operation where a user successfully fo= oled our server to accept a payment that in the end didn't confirm. To = successfully fool (non-RBF) zeroconf one needs to have access to mining inf= rastructure and probability of success is the % of hash rate controlled. Th= is is simply due to the fact that the network currently won't propagage= the replacement transaction to the miner, which is what's being discus= sed here. American call option risk would however be available to 100% of a= ll users, needs nothing beyond the wallet app, and has no cost to the user = - only upside.<br></div><div><br></div><div>Bitrefill currently processes 1= 500-2000 onchain payments every day. For us, a world where bitcoin becomes = de facto RBF by default, means that we would likely turn off the BIP21 mode= l for onchain payments, instruct Bitcoin users to use Lightning or deposit = onchain BTC to a custodial account that we have.=C2=A0<br></div><div>This o= ption is however not available for your typical BTCPayServer/CoinGate/Bitpa= y/IBEX/OpenNode et al. Would be great to hear from other merchants or payme= nt providers how they see this new behavior and how they would counteract i= t.</div><div><br></div><div>Currently Lightning is somewhere around 15% of = our total bitcoin payments. This is very much not nothing, and all of us he= re want Lightning to grow, but I think it warrants a serious discussion on = whether we want Lightning adoption to go to 100% by means of disabling on-c= hain commerce. For me personally it would be an easier discussion to have w= hen Lightning is at 80%+ of all bitcoin transactions. Currently far too man= y bitcoin users simply don't have access to Lightning, and of those tha= t do and hold their own keys Muun is the biggest wallet per our data, not l= east due to their ease-of-use which is under threat per the OP. It's ha= rd to assess how many users would switch to Lightning in such a scenario, t= he communication around it would be hard. My intuition says that the majori= ty of the current 85% of bitcoin users that pay onchain would just not use = bitcoin anymore, probably shift to an alt. The benefits of Lightning are ma= ny and obvious, we don't need to limit onchain to make Lightning more a= ppealing. As an anecdote, we did experiment with defaulting to bech32 addre= sses some years back. The result was that simply users of the wallets that = weren't able to pay to bech32 didn't complete the purchase, no supp= ort ticket or anything, just "it didn't work =F0=9F=A4=B7=E2=80=8D= =E2=99=82=EF=B8=8F" and user moved on. We rolled it back, and later im= plemented a wallet selector to allow modern wallets to pay to bech32 while = other wallets can pay to P2SH. This type of thing=C2=A0 is clunky, and requ= ires a certain level of scale to be able to do, we certainly wouldn't h= ave had the manpower for that when we were starting out. This why I'm c= autious about introducing more such clunkiness vectors as they are centrali= zing factors.</div><div><br></div><div>I'm well aware of the reason for= this policy being suggested and the potential pinning attack vector for LN= and other smart contracts, but I think these two risks/costs need to be we= ighed against eachother first and thoroughly discussed because the costs ar= e non-trivial on both sides.<br clear=3D"all"><div><br></div><div>Sidenote:= On the efficacy of RBF to "unstuck" stuck transactions</div><div= >After interacting with users during high-fee periods I've come to not = appreciate RBF as a solution to that issue. Most users (80% or so) simply d= on't have access to that functionality, because their wallet doesn'= t support it, or they use a custodial (exchange) wallet etc. Of those that = have the feature - only the power users understand how RBF works, and expla= ining how to do RBF to a non-power-user is just too complex, for the same r= eason why it's complex for wallets to make sensible non-power-user UI a= round it. Current equilibrium is that mostly only power users have access t= o RBF and they know how to handle it, so things are somewhat working. But r= olling this out to the broad market is something else and would likely caus= e more confusion.=C2=A0</div><div>CPFP is somewhat more viable but also not= perfect as it would require lots of edge case code to handle abuse vectors= : What if users abuse a generous CPFP policy to unstuck past transactions o= r consolidate large wallets. Best is for CPFP to be done on the wallet side= , not the merchant side, but there too are the same UX issues as with RBF.= =C2=A0</div><div>In the end a risk-based approach to decide on which paymen= ts are non-trivial to reverse is the easiest, taking account user experienc= e and such. Remember that in the fiat world card payments have up to 5% cha= rgebacks, whereas we in zero-conf bitcoin land we deal with "fewer tha= n 1 in a million" accepted transactions successfully reversed. These d= ays we have very few support issues related to bitcoin payments. The few th= at do come in are due to accidental RBF users venting frustration about wai= ting for their tx to confirm.</div><div>"In theory, theory and practic= e are the same. In practice, they are not"</div><div><br></div><div>Al= l the best,=C2=A0</div><div>Sergej Kotliar</div><div>CEO Bitrefill.com</div= ><div><br></div><div><br></div>-- <br><div dir=3D"ltr" data-smartmail=3D"gm= ail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir= =3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr= "><div dir=3D"ltr"><div dir=3D"ltr"><p dir=3D"ltr" style=3D"line-height:1.3= 8;margin-top:0pt;margin-bottom:0pt"><span style=3D"font-size:9.5pt;font-fam= ily:Arial;color:#000000;background-color:transparent;font-weight:700;font-s= tyle:normal;font-variant:normal;text-decoration:none;vertical-align:baselin= e;white-space:pre-wrap;white-space:pre-wrap">Sergej Kotliar</span></p><p di= r=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span= style=3D"font-size:9.5pt;font-family:Arial;color:#000000;background-color:= transparent;font-weight:700;font-style:normal;font-variant:normal;text-deco= ration:none;vertical-align:baseline;white-space:pre-wrap;white-space:pre-wr= ap">CEO</span></p><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;m= argin-bottom:0pt"><b style=3D"font-weight:normal"><br></b></p><p dir=3D"ltr= " style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style= =3D"font-size:11pt;font-family:Arial;color:#666666;background-color:transpa= rent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:= none;vertical-align:baseline;white-space:pre-wrap;white-space:pre-wrap"><sp= an style=3D"border:none;display:inline-block;overflow:hidden;width:220px;he= ight:80px"><img src=3D"https://lh4.googleusercontent.com/wU5i7e8boCd7o3P52c= UTKrqeTa7jV2dPEXluijGtPBy0f1F0R2_zIg_zOQ2kigkbVbSWqLlVdwuBYgo_txXMKkCWdMfBF= RNhsDhFpNv1QrRZsD-gPxDui-4l0tZI1QcjtefCDkNG" width=3D"220" height=3D"80" st= yle=3D"margin-left:0px;margin-top:0px"></span></span></p><p dir=3D"ltr" sty= le=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style=3D"fon= t-size:9.5pt;font-family:Arial;color:#666666;background-color:transparent;f= ont-weight:400;font-style:normal;font-variant:normal;text-decoration:none;v= ertical-align:baseline;white-space:pre-wrap;white-space:pre-wrap">Twitter: = @</span><a href=3D"https://twitter.com/ziggamon" style=3D"text-decoration:n= one" target=3D"_blank" rel=3D"noreferrer"><span style=3D"font-size:9.5pt;fo= nt-family:Arial;color:#666666;background-color:transparent;font-weight:400;= font-style:normal;font-variant:normal;text-decoration:underline;vertical-al= ign:baseline;white-space:pre-wrap;white-space:pre-wrap">ziggamon</span></a>= <span style=3D"font-size:9.5pt;font-family:Arial;color:#666666;background-c= olor:transparent;font-weight:400;font-style:normal;font-variant:normal;text= -decoration:none;vertical-align:baseline;white-space:pre-wrap;white-space:p= re-wrap">=C2=A0</span></p><p dir=3D"ltr" style=3D"line-height:1.38;margin-t= op:0pt;margin-bottom:0pt"><b style=3D"font-weight:normal"><br></b></p><p di= r=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><a hr= ef=3D"http://www.bitrefill.com/" style=3D"text-decoration:none" target=3D"_= blank" rel=3D"noreferrer"><span style=3D"font-size:9.5pt;font-family:Arial;= color:#666666;background-color:transparent;font-weight:400;font-style:norma= l;font-variant:normal;text-decoration:underline;vertical-align:baseline;whi= te-space:pre-wrap;white-space:pre-wrap">www.bitrefill.com</span></a></p><p = dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><a = href=3D"https://www.twitter.com/bitrefill" target=3D"_blank" rel=3D"norefer= rer"><span style=3D"font-size:9.5pt;font-family:Arial;color:rgb(102,102,102= );background-color:transparent;vertical-align:baseline;white-space:pre-wrap= ">Twitter</span></a><span style=3D"font-size:9.5pt;font-family:Arial;color:= rgb(102,102,102);background-color:transparent;vertical-align:baseline;white= -space:pre-wrap"> | </span><a href=3D"https://www.bitrefill.com/blog/" targ= et=3D"_blank" rel=3D"noreferrer"><span style=3D"font-size:9.5pt;font-family= :Arial;color:rgb(102,102,102);background-color:transparent;vertical-align:b= aseline;white-space:pre-wrap">Blog</span></a><span style=3D"font-size:9.5pt= ;font-family:Arial;color:rgb(102,102,102);background-color:transparent;vert= ical-align:baseline;white-space:pre-wrap"> | </span><a href=3D"https://ange= l.co/bitrefill" target=3D"_blank" rel=3D"noreferrer"><span style=3D"font-si= ze:9.5pt;font-family:Arial;color:rgb(102,102,102);background-color:transpar= ent;vertical-align:baseline;white-space:pre-wrap">Angellist </span></a><br>= </p></div></div></div></div></div></div></div></div></div></div></div></div= ></div> </div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr" data-smartma= il=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><= div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir= =3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><p dir=3D"ltr" style=3D"line-hei= ght:1.38;margin-top:0pt;margin-bottom:0pt"><span style=3D"font-size:9.5pt;f= ont-family:Arial;color:#000000;background-color:transparent;font-weight:700= ;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:= baseline;white-space:pre-wrap;white-space:pre-wrap">Sergej Kotliar</span></= p><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt= "><span style=3D"font-size:9.5pt;font-family:Arial;color:#000000;background= -color:transparent;font-weight:700;font-style:normal;font-variant:normal;te= xt-decoration:none;vertical-align:baseline;white-space:pre-wrap;white-space= :pre-wrap">CEO</span></p><p dir=3D"ltr" style=3D"line-height:1.38;margin-to= p:0pt;margin-bottom:0pt"><b style=3D"font-weight:normal"><br></b></p><p dir= =3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span = style=3D"font-size:11pt;font-family:Arial;color:#666666;background-color:tr= ansparent;font-weight:700;font-style:normal;font-variant:normal;text-decora= tion:none;vertical-align:baseline;white-space:pre-wrap;white-space:pre-wrap= "><span style=3D"border:none;display:inline-block;overflow:hidden;width:220= px;height:80px"><img src=3D"https://lh4.googleusercontent.com/wU5i7e8boCd7o= 3P52cUTKrqeTa7jV2dPEXluijGtPBy0f1F0R2_zIg_zOQ2kigkbVbSWqLlVdwuBYgo_txXMKkCW= dMfBFRNhsDhFpNv1QrRZsD-gPxDui-4l0tZI1QcjtefCDkNG" width=3D"220" height=3D"8= 0" style=3D"margin-left:0px;margin-top:0px"></span></span></p><p dir=3D"ltr= " style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style= =3D"font-size:9.5pt;font-family:Arial;color:#666666;background-color:transp= arent;font-weight:400;font-style:normal;font-variant:normal;text-decoration= :none;vertical-align:baseline;white-space:pre-wrap;white-space:pre-wrap">Tw= itter: @</span><a href=3D"https://twitter.com/ziggamon" style=3D"text-decor= ation:none" target=3D"_blank" rel=3D"noreferrer"><span style=3D"font-size:9= .5pt;font-family:Arial;color:#666666;background-color:transparent;font-weig= ht:400;font-style:normal;font-variant:normal;text-decoration:underline;vert= ical-align:baseline;white-space:pre-wrap;white-space:pre-wrap">ziggamon</sp= an></a><span style=3D"font-size:9.5pt;font-family:Arial;color:#666666;backg= round-color:transparent;font-weight:400;font-style:normal;font-variant:norm= al;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;white-= space:pre-wrap">=C2=A0</span></p><p dir=3D"ltr" style=3D"line-height:1.38;m= argin-top:0pt;margin-bottom:0pt"><b style=3D"font-weight:normal"><br></b></= p><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt= "><a href=3D"http://www.bitrefill.com/" style=3D"text-decoration:none" targ= et=3D"_blank" rel=3D"noreferrer"><span style=3D"font-size:9.5pt;font-family= :Arial;color:#666666;background-color:transparent;font-weight:400;font-styl= e:normal;font-variant:normal;text-decoration:underline;vertical-align:basel= ine;white-space:pre-wrap;white-space:pre-wrap">www.bitrefill.com</span></a>= </p><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0= pt"><a href=3D"https://www.twitter.com/bitrefill" target=3D"_blank" rel=3D"= noreferrer"><span style=3D"font-size:9.5pt;font-family:Arial;color:rgb(102,= 102,102);background-color:transparent;vertical-align:baseline;white-space:p= re-wrap">Twitter</span></a><span style=3D"font-size:9.5pt;font-family:Arial= ;color:rgb(102,102,102);background-color:transparent;vertical-align:baselin= e;white-space:pre-wrap"> | </span><a href=3D"https://www.bitrefill.com/blog= /" target=3D"_blank" rel=3D"noreferrer"><span style=3D"font-size:9.5pt;font= -family:Arial;color:rgb(102,102,102);background-color:transparent;vertical-= align:baseline;white-space:pre-wrap">Blog</span></a><span style=3D"font-siz= e:9.5pt;font-family:Arial;color:rgb(102,102,102);background-color:transpare= nt;vertical-align:baseline;white-space:pre-wrap"> | </span><a href=3D"https= ://angel.co/bitrefill" target=3D"_blank" rel=3D"noreferrer"><span style=3D"= font-size:9.5pt;font-family:Arial;color:rgb(102,102,102);background-color:t= ransparent;vertical-align:baseline;white-space:pre-wrap">Angellist </span><= /a><br></p></div></div></div></div></div></div></div></div></div></div></di= v></div> _______________________________________________<br> bitcoin-dev mailing list<br> <a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_blank" = rel=3D"noreferrer">bitcoin-dev@lists.linuxfoundation.org</a><br> <a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" = rel=3D"noreferrer noreferrer" target=3D"_blank">https://lists.linuxfoundati= on.org/mailman/listinfo/bitcoin-dev</a><br> </blockquote></div> --000000000000a6f05505eb651273--