<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1huz53hq26gu7nc0qhw3uj6tr9hk5q2ngpywduxep5zy4ay9unftsm9q4u3.rss" />
  <link href="https://nostr.ae/npub1huz53hq26gu7nc0qhw3uj6tr9hk5q2ngpywduxep5zy4ay9unftsm9q4u3" />
  <id>https://nostr.ae/npub1huz53hq26gu7nc0qhw3uj6tr9hk5q2ngpywduxep5zy4ay9unftsm9q4u3</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqsxlvvr90dnvmn8f90gj0znlr4g4jtwz0rja35nvgdeup4jtrkj9jszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wvdr3wq</id>
    
      <title type="html">📅 Original date posted:2017-11-29 📝 Original message: I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxlvvr90dnvmn8f90gj0znlr4g4jtwz0rja35nvgdeup4jtrkj9jszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wvdr3wq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsflyvc90zf2j3utunjy8a2aky7rms7yctqurzparszjj0jr7s306q5s72fp&#39;&gt;nevent1q…72fp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-11-29&lt;br/&gt;📝 Original message:&lt;br/&gt;I noticed the Commitment Transaction Output script is weak to malleability,&lt;br/&gt;this can be used to delay confirmation of the revocation.&lt;br/&gt;Luckily, fixing the situation does not require lots of development.&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;OP_IF&lt;br/&gt;    # Penalty transaction&lt;br/&gt;    &amp;lt;revocationkey&amp;gt;&lt;br/&gt;OP_ELSE&lt;br/&gt;    `to_self_delay`&lt;br/&gt;    OP_CSV&lt;br/&gt;    OP_DROP&lt;br/&gt;    &amp;lt;local_delayedkey&amp;gt;&lt;br/&gt;OP_ENDIF&lt;br/&gt;OP_CHECKSIG&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;An attacker can delay the Penalty Transaction by malleating it. Which can&lt;br/&gt;lead to very bad outcome as Lightning dependant on time locks.&lt;br/&gt;&lt;br/&gt;The penalty transaction would have.&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;&amp;lt;revocation_sig&amp;gt; 1&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;Problem is that Eve could malleate OP_1 into a positive, huge number. This&lt;br/&gt;would have for effect to fill the mempool of nodes/miners with the&lt;br/&gt;malleated version which will have an higher fee rate, delaying the&lt;br/&gt;confirmation of the penalty transaction.&lt;br/&gt;&lt;br/&gt;Now, there is a policy rule called SCRIPT_VERIFY_MINIMALIF by jl2012 which&lt;br/&gt;was merged into v0.15.1. (&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/commit/c72c5b1e3bd42e84465677e94aa83316ff3d9a14&#34;&gt;https://github.com/bitcoin/bitcoin/commit/c72c5b1e3bd42e84465677e94aa83316ff3d9a14&lt;/a&gt;&lt;br/&gt;)&lt;br/&gt;&lt;br/&gt;I guess that by the time LN is ready, 0.15.1 will be spread enough among&lt;br/&gt;miners, but still I think a 2 bytes overhead is well worth the fix.&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;1 OP_EQUAL OP_IF&lt;br/&gt;    # Penalty transaction&lt;br/&gt;    &amp;lt;revocationkey&amp;gt;&lt;br/&gt;OP_ELSE&lt;br/&gt;    `to_self_delay`&lt;br/&gt;    OP_CSV&lt;br/&gt;    OP_DROP&lt;br/&gt;    &amp;lt;local_delayedkey&amp;gt;&lt;br/&gt;OP_ENDIF&lt;br/&gt;OP_CHECKSIG&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;Nicolas,&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20171129/50ea31fc/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20171129/50ea31fc/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:47:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgcsz86cfgp4jhhy44u8j28km7xap4gz62nc2zkq7rv2h2f9j68cczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wa52wj5</id>
    
      <title type="html">📅 Original date posted:2017-02-07 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgcsz86cfgp4jhhy44u8j28km7xap4gz62nc2zkq7rv2h2f9j68cczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wa52wj5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg3d9sne09ka39p43y50smwurag02kyayjzn9t2j2y8yzh5l8fy2c4mkwxq&#39;&gt;nevent1q…kwxq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-07&lt;br/&gt;📝 Original message:&lt;br/&gt;Good point, actually, a simpler way to do it, is for TX2 to be nTimelocked&lt;br/&gt;after bounty&amp;#39;s expiration.&lt;br/&gt;If Alice see bob not signing it, she can reclaim the bounty fast.&lt;br/&gt;If bob sign it, Alice can&amp;#39;t broadcast it immediately.&lt;br/&gt;&lt;br/&gt;On Tue, Feb 7, 2017 at 5:02 AM, Tier Nolan &amp;lt;tier.nolan at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Feb 6, 2017 at 4:32 PM, Nicolas Dorier &amp;lt;nicolas.dorier at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think you do not need the second timeout.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; TX2 would be signed by Bob only once he could get back the second Output&lt;br/&gt;&amp;gt;&amp;gt; of  TX1.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice must have a fully signed version of TX2 before the timeout finishes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If she doesn&amp;#39;t, then Bob can reclaim TX1/1 once the timeout expires and&lt;br/&gt;&amp;gt; then refuse to sign TX2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice has a signed version of TX2, then she can broadcast it and&lt;br/&gt;&amp;gt; immediately close the channel (claiming TX1/0).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once that has been accepted, she can then claim TX1/1.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So Bob does not have to worry about Alice closing the channel with TX2.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Nicolas,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170207/d4f959a1/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170207/d4f959a1/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:47:01Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8uyjgqhynpupw6z6y42g2wf3vsjwxdkmfeks5ul2kfkmuafg28sczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wfjg3jd</id>
    
      <title type="html">📅 Original date posted:2017-02-06 📝 Original message: I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8uyjgqhynpupw6z6y42g2wf3vsjwxdkmfeks5ul2kfkmuafg28sczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wfjg3jd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqy374tmv9ygqjdgyqx0fn3r5fc4fa3mgvn2jeq6dcq99326m56gl7h7l3&#39;&gt;nevent1q…h7l3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-06&lt;br/&gt;📝 Original message:&lt;br/&gt;I think you do not need the second timeout.&lt;br/&gt;&lt;br/&gt;TX2 would be signed by Bob only once he could get back the second Output of&lt;br/&gt; TX1.&lt;br/&gt;So Bob does not have to worry about Alice closing the channel with TX2.&lt;br/&gt;&lt;br/&gt;Nicolas,&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170207/29b9367f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170207/29b9367f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:47:01Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspfg2l6u35k2xus9sar03gz760t878a7v5f8xhc40vrdystm62v5gzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wct56s9</id>
    
      <title type="html">📅 Original date posted:2017-02-06 📝 Original message: Alice ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspfg2l6u35k2xus9sar03gz760t878a7v5f8xhc40vrdystm62v5gzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wct56s9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfagz5xyalvrudumfmll43c7xsdsg7jmjzejykkl3mrm3xxqevppqzrsefv&#39;&gt;nevent1q…sefv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Alice opening channel of 1BTC&lt;br/&gt;&lt;br/&gt;Input:&lt;br/&gt;1 BTC From Alice&lt;br/&gt;1 BTC From Bob&lt;br/&gt;Output:&lt;br/&gt;1 BTC Alice&#43;Bob OR Bob&#43;AliceSecret&lt;br/&gt;1 BTC Bob&#43;Timeout OR Alice&#43;AliceSecret (aka the bounty)&lt;br/&gt;&lt;br/&gt;If bob is unresponsive, Alice can get the bounty.&lt;br/&gt;If Alice unresponsive, bob can get the bounty after timeout.&lt;br/&gt;If Alice takes the bounty, Bob can take the escrow .&lt;br/&gt;&lt;br/&gt;If Alice responsive, bob wait for getting the bounty. The use of the&lt;br/&gt;channel will start after bob get the bounty back.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170206/465ae0f1/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20170206/465ae0f1/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:47:00Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs22p9fszq3rzgv2t5kd8nsdk9j4jkdh35uatzw2ugxx369ushreeszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wrvv7p2</id>
    
      <title type="html">📅 Original date posted:2016-03-08 📝 Original message: I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs22p9fszq3rzgv2t5kd8nsdk9j4jkdh35uatzw2ugxx369ushreeszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wrvv7p2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ksnqpsagf7kn4t0u8kzfzl40pkg3mx3ch6ytu0aujvdekqtljjg6dh7vp&#39;&gt;nevent1q…h7vp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-03-08&lt;br/&gt;📝 Original message:&lt;br/&gt;I don&amp;#39;t understand your point, but that may come from me not having&lt;br/&gt;deep enough knowledge about the latest great things happening on&lt;br/&gt;Lightning.&lt;br/&gt;&lt;br/&gt;I exposed the case of a simple bipayment channel, without HTLC in the&lt;br/&gt;equation, where all payments are sequential.&lt;br/&gt;&lt;br/&gt;You can&amp;#39;t make commitment n&#43;2 before accepting commitment n&#43;1.&lt;br/&gt;&lt;br/&gt;My mental model might be incomplete as I&amp;#39;m followed only remotely&lt;br/&gt;the improvements of lightning until now.&lt;br/&gt;&lt;br/&gt;On Wed, Mar 9, 2016 at 12:53 AM, Mats Jerratsch &amp;lt;mats at blockchain.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not saying they close the channel. Alice could want to receive more&lt;br/&gt;&amp;gt; money and accept other payments, but not a particular one. But by doing&lt;br/&gt;&amp;gt; so, she would automatically disclose R for any old payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Am 08/03/2016 um 15:51 schrieb Nicolas Dorier:&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m not sure what you mean Alice don&amp;#39;t have to disclose R if she does&lt;br/&gt;&amp;gt; &amp;gt; not want to.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Mats Jerratsch&lt;br/&gt;&amp;gt; Backend Engineer, Blockchain&lt;br/&gt;&amp;gt; e: mats at blockchain.com&lt;br/&gt;&amp;gt; PGP: &lt;a href=&#34;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0x7F3EC6CA&#34;&gt;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0x7F3EC6CA&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160309/da779a3b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160309/da779a3b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdk3eq7jffrnel4d3kqrwtj0teexgknczhh2u5knfcy0s7a5jjpkqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wptrsne</id>
    
      <title type="html">📅 Original date posted:2016-03-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdk3eq7jffrnel4d3kqrwtj0teexgknczhh2u5knfcy0s7a5jjpkqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wptrsne" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf33tn7rdr4gq6y9u0ev5quvey72zgx7jznsjwymyx45hx43an7wqy7mcy7&#39;&gt;nevent1q…mcy7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-03-08&lt;br/&gt;📝 Original message:&lt;br/&gt;I&amp;#39;m not sure what you mean Alice don&amp;#39;t have to disclose R if she does not&lt;br/&gt;want to.&lt;br/&gt;Bob can&amp;#39;t know the next R because R(n&#43;1) = PreImage(R(n))&lt;br/&gt;&lt;br/&gt;On Wed, Mar 9, 2016 at 12:16 AM, Mats Jerratsch &amp;lt;mats at blockchain.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; What about if Alice does not want to disclose R? Bob could have taken&lt;br/&gt;&amp;gt; too much fee and Alice does not agree to accept a payment too small.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While there is technically not really a security problem in disclosing&lt;br/&gt;&amp;gt; the R values when the payment isn&amp;#39;t in the current commitment, the whole&lt;br/&gt;&amp;gt; idea of &amp;#39;proof-of-payment&amp;#39;/&amp;#39;pay-to-contract&amp;#39; relies on only revealing R&lt;br/&gt;&amp;gt; for an accepted payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Otherwise, knowing R is no longer proof of having made a payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Am 08/03/2016 um 07:19 schrieb CJP:&lt;br/&gt;&amp;gt; &amp;gt; I was wondering: how does deriving R values from a tree structure work&lt;br/&gt;&amp;gt; &amp;gt; for larger Lightning networks? I guess it could work between two nodes,&lt;br/&gt;&amp;gt; &amp;gt; if they keep track of the same tree, but if different transactions&lt;br/&gt;&amp;gt; &amp;gt; follow different routes, does that mean the tree structure somehow has&lt;br/&gt;&amp;gt; &amp;gt; to be shared across all nodes? The alternative is that intermediate&lt;br/&gt;&amp;gt; &amp;gt; nodes still have to remember old R values.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; CJP&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Nicolas Dorier schreef op di 08-03-2016 om 13:53 [&#43;0900]:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Great, indeed we had same idea, I don&amp;#39;t see how it solve the hashes in&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; advance.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; As Alice knows&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; H(1000000) = &amp;lt;random secret seed&amp;gt;).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; If she need the hash to the first commitment she need to hash the&lt;br/&gt;&amp;gt; random secret&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; seed 1000000 times. I think it is exactly the same problem as it is the&lt;br/&gt;&amp;gt; exact&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; same idea said differently.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; On Tue, Mar 8, 2016 at 8:31 AM, Rusty Russell &amp;lt;rusty at rustcorp.com.au&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         Nicolas Dorier &amp;lt;nicolas.dorier at gmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         &amp;gt; One way deterministic RValue Generation&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         Hi Nicolas,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;                 Yes, in fact shachain is a variant of this which&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         avoids&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         generating several million hashes in advance.  Interesting, I&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         suggested&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         using hashing in the Deployable Lightning paper but didn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         actually&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         spell out the idea.  Hmm....&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         Seems like it orignated from Adam Back:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.blockstream.io/pipermail/lightning-dev/2015-May/000000.html&#34;&gt;https://lists.blockstream.io/pipermail/lightning-dev/2015-May/000000.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         Cheers,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;         Rusty.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Mats Jerratsch&lt;br/&gt;&amp;gt; Backend Engineer, Blockchain&lt;br/&gt;&amp;gt; e: mats at blockchain.com&lt;br/&gt;&amp;gt; PGP: &lt;a href=&#34;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0x7F3EC6CA&#34;&gt;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0x7F3EC6CA&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160309/1419e43d/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160309/1419e43d/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9gvft3k055ys927nutlly6susguzjyf6dqdg5qmcnnwgj77jssmqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wlal5sh</id>
    
      <title type="html">📅 Original date posted:2016-03-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9gvft3k055ys927nutlly6susguzjyf6dqdg5qmcnnwgj77jssmqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wlal5sh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs88qlznrnm0zk9r0hsh94gv9zkunamg9tqgvvw4n757g505r3tsygwlj9cq&#39;&gt;nevent1q…j9cq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-03-08&lt;br/&gt;📝 Original message:&lt;br/&gt;Great, indeed we had same idea, I don&amp;#39;t see how it solve the hashes in&lt;br/&gt;advance.&lt;br/&gt;As Alice knows&lt;br/&gt;&lt;br/&gt;H(1000000) = &amp;lt;random secret seed&amp;gt;).&lt;br/&gt;&lt;br/&gt;If she need the hash to the first commitment she need to hash the random secret&lt;br/&gt;seed 1000000 times. I think it is exactly the same problem as it is the exact&lt;br/&gt;same idea said differently.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Mar 8, 2016 at 8:31 AM, Rusty Russell &amp;lt;rusty at rustcorp.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Nicolas Dorier &amp;lt;nicolas.dorier at gmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; &amp;gt; One way deterministic RValue Generation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi Nicolas,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;         Yes, in fact shachain is a variant of this which avoids&lt;br/&gt;&amp;gt; generating several million hashes in advance.  Interesting, I suggested&lt;br/&gt;&amp;gt; using hashing in the Deployable Lightning paper but didn&amp;#39;t actually&lt;br/&gt;&amp;gt; spell out the idea.  Hmm....&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Seems like it orignated from Adam Back:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.blockstream.io/pipermail/lightning-dev/2015-May/000000.html&#34;&gt;https://lists.blockstream.io/pipermail/lightning-dev/2015-May/000000.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Rusty.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160308/a4994ce6/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160308/a4994ce6/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs28j5zsk25g8t9dmx6qzyvnp087ufe6t4y0u49ha8vezmhucqymhgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wagwy3a</id>
    
      <title type="html">📅 Original date posted:2016-03-07 📝 Original message: One ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs28j5zsk25g8t9dmx6qzyvnp087ufe6t4y0u49ha8vezmhucqymhgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wagwy3a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs924y0yhek24njatuxs0rnesr75nx5w0ylt4xzqt339fan24nvqxqn5zwgu&#39;&gt;nevent1q…zwgu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-03-07&lt;br/&gt;📝 Original message:&lt;br/&gt;One way deterministic RValue Generation&lt;br/&gt;&lt;br/&gt;My previous proposal, while saving space on chain, does not&lt;br/&gt;solve the fact that we need to save offchain one signature per&lt;br/&gt;commitment.&lt;br/&gt;&lt;br/&gt;I have another proposal, so you don&amp;#39;t need any data to store for&lt;br/&gt;each commitment.&lt;br/&gt;Keep the actual HTLC/Payment channel contracts, but make&lt;br/&gt;the &amp;#34;RValues&amp;#34; backward deterministic.&lt;br/&gt;&lt;br/&gt;Choose RValue such that:&lt;br/&gt;&lt;br/&gt;RValue(n&#43;1) = PreImage(RValue(n))&lt;br/&gt;Where n is the commitment index.&lt;br/&gt;&lt;br/&gt;Imagine Alice cheats Bob at commitment 100, by sending revocated&lt;br/&gt;commitment 50.&lt;br/&gt;&lt;br/&gt;Bob only have to remember RValue(99) from the 99th revocation, and&lt;br/&gt;then hash this value 49 times to find out RValue(50)&lt;br/&gt;&lt;br/&gt;However, Bob does not know RValue(100) because&lt;br/&gt;RValue(100) = PreImage(99)&lt;br/&gt;&lt;br/&gt;For Alice, she only have to generate a random number, then generate let&amp;#39;s&lt;br/&gt;say, 1000 hashes. Then she use hashes 1000 for RValue(0), hashes 999 for&lt;br/&gt;RValue(1)&lt;br/&gt;etc...&lt;br/&gt;&lt;br/&gt;Commitment Revocation is only accepted by the party if RValue(n&#43;1) =&lt;br/&gt;PreImage(RValue(n))&lt;br/&gt;&lt;br/&gt;The only downside is that Alice need to regenerate all hashes everytimes&lt;br/&gt;she need&lt;br/&gt;a new commitment. This can be mitigated by her storing some pre computed&lt;br/&gt;values&lt;br/&gt;along the path.&lt;br/&gt;&lt;br/&gt;Nicolas,&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160307/92040252/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20160307/92040252/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:54Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs09mku7j5qluskx8v73yxh9ny3qzheshjmnq7ywx5tlz7r0tx20egzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w9cp6yq</id>
    
      <title type="html">📅 Original date posted:2015-11-27 📝 Original message: By ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs09mku7j5qluskx8v73yxh9ny3qzheshjmnq7ywx5tlz7r0tx20egzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w9cp6yq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfw62y5luag65snda7r0uqtkn6d9zcvvk0nwvg5xx4xzj8c3sagjstt9qpc&#39;&gt;nevent1q…9qpc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-11-27&lt;br/&gt;📝 Original message:&lt;br/&gt;By adapting an idea from gmaxwell (&lt;br/&gt;&lt;a href=&#34;https://bitcointalk.org/index.php?topic=303088.0&#34;&gt;https://bitcointalk.org/index.php?topic=303088.0&lt;/a&gt;) it is possible to open a&lt;br/&gt;channel without suffering from malleability attack.&lt;br/&gt;&lt;br/&gt;The process for A to open channel with B is the following:&lt;br/&gt;&lt;br/&gt;* A asks B pubkey&lt;br/&gt;* A create the first commitment transaction&lt;br/&gt;* A extract the hash that B needs to sign to be able to broadcast the&lt;br/&gt;commitment&lt;br/&gt;* A asks B to sign the hash, but do not disclose the commitment&lt;br/&gt;* A broadcast the anchor&lt;br/&gt;* After confirmation, A announce the anchor to B.&lt;br/&gt;&lt;br/&gt;B can&amp;#39;t identify A&amp;#39;s anchor before announcement because he does not know&lt;br/&gt;the P2SH of the multisig.&lt;br/&gt;&lt;br/&gt;Am I missing something ?&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151127/f2d6361b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151127/f2d6361b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:18Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspfw4p3lyqa76sew8phhstk8ycnd8tak2rndx6ep6u0knhgxsjklszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wg3p44f</id>
    
      <title type="html">📅 Original date posted:2015-11-27 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspfw4p3lyqa76sew8phhstk8ycnd8tak2rndx6ep6u0knhgxsjklszyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wg3p44f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsypqv2s3ml8p87ye4k7p7z8uvt64nsgzy3xrz4627dxmdnlw4ysmqdl9npc&#39;&gt;nevent1q…9npc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-11-27&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; A also passes the original unsigned commitment to B, who verifies that&lt;br/&gt;&amp;gt; it&amp;#39;s in the right format (ie, can be revoked), and hashes to the hash&lt;br/&gt;&amp;gt; that he signed.&lt;br/&gt;&lt;br/&gt;No, if A pass the unsigned commitment to B then B can malleate the anchor.&lt;br/&gt;(because B would know the txid of the anchor at broadcast time)&lt;br/&gt;B does not have to verify it is in right format, because he does not have&lt;br/&gt;anything to loose by signing a random hash.&lt;br/&gt;B can verify he signed the hash of the first commitment after A announce&lt;br/&gt;his already confirmed anchor.&lt;br/&gt;&lt;br/&gt;&amp;gt; Someone other than B (ie a third party) could malleate the anchor between&lt;br/&gt;&amp;gt; broadcast and confirmation just for their own amusement.&lt;br/&gt;&lt;br/&gt;Yes, actually the only malleability vector which B can use to his advantage&lt;br/&gt;is HighS, not all BIP62 vectors.&lt;br/&gt;Knowing miners will most likely run at least 0.11.2 (if CLTV is acceepted)&lt;br/&gt;HighS should be more likely rejected.&lt;br/&gt;&lt;br/&gt;&amp;gt; B can&amp;#39;t reuse pubkeys between different channels with this protocol&lt;br/&gt;&amp;gt; either, but that&amp;#39;s good practice anyway.&lt;br/&gt;&lt;br/&gt;Right, neither A should. If A reuse a key, then B can guess the redeem&lt;br/&gt;hash, then would identify the transaction to malleate at broadcast time,&lt;br/&gt;before A&amp;#39;s announcement.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d prefer seggregated witness to fix the problem cleanly, but I think that&lt;br/&gt;opening the channel as I said is a good enough workaround until it happen.&lt;br/&gt;The only attack B can try is malleate all transaction to HighS.&lt;br/&gt;When CLTV will pass, there is not lot of probability of such attack to&lt;br/&gt;succeed, because bitcoind should block HighS.&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;#39;without timeout&amp;#39; is only possible with OP_CSV - not naturally&lt;br/&gt;with what we have currently. ;)&lt;br/&gt;&lt;br/&gt;The anchor does not have to use OP_CSV at all. But yes, for commitment, I&amp;#39;m&lt;br/&gt;assuming OP_CSV passed.&lt;br/&gt;&lt;br/&gt;&amp;gt; To be able to build a valid payment channel on top of the anchor,&lt;br/&gt;B has to be sure that A cannot get her money back at any point in the&lt;br/&gt;future. Given just a hash that B should sign, B has no clue what is&lt;br/&gt;the output of the transaction he just signed.&lt;br/&gt;&lt;br/&gt;Actually B do not care about it. Remember I am separating &amp;#34;A&amp;#39;s anchor&lt;br/&gt;broadcast&amp;#34; from &amp;#34;A&amp;#39;s announcement of anchor to B&amp;#34;.&lt;br/&gt;When A announce the anchor, then B can check if he really signed the first&lt;br/&gt;commitment or something else, but he can&amp;#39;t malleate anything since the&lt;br/&gt;anchor is already confirmed.&lt;br/&gt;B does not have anything to loose by signing unknown hash. (if he use a non&lt;br/&gt;reusable key)&lt;br/&gt;&lt;br/&gt;Again, yes, a network-wide HighS attack would be the only way to malleate&lt;br/&gt;the anchor.&lt;br/&gt;If CLTV fork pass, then it is fair to consider that the odd of such attack&lt;br/&gt;succeeding is very low. HighS should be blocked from 0.11.1 if I remember&lt;br/&gt;well.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Nov 27, 2015 at 6:09 PM, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Nov 27, 2015 at 04:37:04PM &#43;0900, Nicolas Dorier wrote:&lt;br/&gt;&amp;gt; &amp;gt; By adapting an idea from gmaxwell (&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://bitcointalk.org/index.php?topic=303088.0&#34;&gt;https://bitcointalk.org/index.php?topic=303088.0&lt;/a&gt;) it is possible to&lt;br/&gt;&amp;gt; open a&lt;br/&gt;&amp;gt; &amp;gt; channel without suffering from malleability attack.&lt;br/&gt;&amp;gt; &amp;gt; The process for A to open channel with B is the following:&lt;br/&gt;&amp;gt; &amp;gt; * A asks B pubkey&lt;br/&gt;&amp;gt; &amp;gt; * A create the first commitment transaction&lt;br/&gt;&amp;gt; &amp;gt; * A extract the hash that B needs to sign to be able to broadcast the&lt;br/&gt;&amp;gt; &amp;gt; commitment&lt;br/&gt;&amp;gt; &amp;gt; * A asks B to sign the hash, but do not disclose the commitment&lt;br/&gt;&amp;gt; &amp;gt; * A broadcast the anchor&lt;br/&gt;&amp;gt; &amp;gt; * After confirmation, A announce the anchor to B.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A also passes the original unsigned commitment to B, who verifies that&lt;br/&gt;&amp;gt; it&amp;#39;s in the right format (ie, can be revoked), and hashes to the hash&lt;br/&gt;&amp;gt; that he signed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; B can&amp;#39;t identify A&amp;#39;s anchor before announcement because he does not know&lt;br/&gt;&amp;gt; &amp;gt; the P2SH of the multisig.&lt;br/&gt;&amp;gt; &amp;gt; Am I missing something ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Someone other than B (ie a third party) could malleate the anchor between&lt;br/&gt;&amp;gt; broadcast and confirmation just for their own amusement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; B can&amp;#39;t reuse pubkeys between different channels with this protocol&lt;br/&gt;&amp;gt; either, but that&amp;#39;s good practice anyway.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From the same forum post, using child-pays-for-parent seems plausible.&lt;br/&gt;&amp;gt; Doing:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   txA: spend 6 BTC to&lt;br/&gt;&amp;gt;      5 BTC to A&amp;amp;B&lt;br/&gt;&amp;gt;      1 BTC to A&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   txB: spend 1 BTC from txA:1 to&lt;br/&gt;&amp;gt;      0.999 BTC to A&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; should be pretty safe: either someone malleates txA and mines it for&lt;br/&gt;&amp;gt; 0 fee; or they mine both txA&#43;txB for 0.001 BTC fee, and txA can&amp;#39;t be&lt;br/&gt;&amp;gt; malleated. But CPFP doesn&amp;#39;t work yet, and segregated witness seems like&lt;br/&gt;&amp;gt; it&amp;#39;ll happen sooner anyway?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151128/454bf694/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151128/454bf694/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:18Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsysqjvspkt257gvctx7fxz7w5g28tll9ku8zvnsx33884uyk4jd3szyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wu7utcw</id>
    
      <title type="html">📅 Original date posted:2020-05-16 📝 Original message:I am ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsysqjvspkt257gvctx7fxz7w5g28tll9ku8zvnsx33884uyk4jd3szyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wu7utcw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg25uu2t8dmeecgw4fkgwyt96yzph30e5ss9yxrtk6sk5mnztq2rcscf88d&#39;&gt;nevent1q…f88d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-05-16&lt;br/&gt;📝 Original message:I am requesting a BIP number to be allocated for this simple payjoin proposal.&lt;br/&gt;This proposal is already being implemented by several service and&lt;br/&gt;wallets and incorporate the feedback of the community at&lt;br/&gt;&lt;a href=&#34;https://github.com/NicolasDorier/bips/pull/3&#34;&gt;https://github.com/NicolasDorier/bips/pull/3&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I opened a pull request at: &lt;a href=&#34;https://github.com/bitcoin/bips/pull/923&#34;&gt;https://github.com/bitcoin/bips/pull/923&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I am not checking my mail very often, so I suggest give me feedback&lt;br/&gt;directly on the opened pull request.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;  BIP: ?&lt;br/&gt;  Layer: Applications&lt;br/&gt;  Title: A Simple Payjoin Proposal&lt;br/&gt;  Author: Nicolas Dorier &amp;lt;nicolas.dorier at gmail.com&amp;gt;&lt;br/&gt;  Comments-Summary: No comments yet.&lt;br/&gt;  Comments-URI: &lt;a href=&#34;https://github.com/bitcoin/bips/wiki/Comments:BIP-X&#34;&gt;https://github.com/bitcoin/bips/wiki/Comments:BIP-X&lt;/a&gt;&lt;br/&gt;  Status: Draft&lt;br/&gt;  Type: Standards Track&lt;br/&gt;  Created: 2019-05-01&lt;br/&gt;  License: BSD-2-Clause&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;==Introduction==&lt;br/&gt;&lt;br/&gt;===Abstract===&lt;br/&gt;&lt;br/&gt;This document proposes a protocol for two parties&lt;br/&gt;to negotiate a coinjoin transaction during a payment between them.&lt;br/&gt;&lt;br/&gt;===Copyright===&lt;br/&gt;&lt;br/&gt;This BIP is licensed under the 2-clause BSD license.&lt;br/&gt;&lt;br/&gt;===Motivation===&lt;br/&gt;&lt;br/&gt;When two parties (later referred to as sender and receiver) want to transact,&lt;br/&gt;most of the time, the sender creates a transaction spending their own&lt;br/&gt;Unspent Transaction Outputs (UTXOs), signs&lt;br/&gt;it and broadcasts it on the network.&lt;br/&gt;&lt;br/&gt;This simple model gave birth to several heuristics impacting the&lt;br/&gt;privacy of the parties and of the network as a whole.&lt;br/&gt;&lt;br/&gt;* Common input ownership heuristic: In most transactions, all the&lt;br/&gt;inputs belong to the same party.&lt;br/&gt;* Change identification from scriptPubKey type: If all inputs are&lt;br/&gt;spending UTXOs of a certain scriptPubKey type, then the change output&lt;br/&gt;is likely to have the same scriptPubKey type, too.&lt;br/&gt;* Change identification from round amount: If an output in the&lt;br/&gt;transaction has a round amount, it is likely an output belonging to&lt;br/&gt;the receiver.&lt;br/&gt;&lt;br/&gt;We will designate these three heuristics as &amp;lt;code&amp;gt;common-input&amp;lt;/code&amp;gt;,&lt;br/&gt;&amp;lt;code&amp;gt;change-scriptpubkey&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;change-round-amount&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;The problems we aim to solve are:&lt;br/&gt;* For the receiver, there is a missed opportunity to consolidate their&lt;br/&gt;own UTXOs or making payment in the sender&amp;#39;s transaction.&lt;br/&gt;* For the sender, there are privacy leaks regarding their wallet that&lt;br/&gt;happen when someone applies the heuristics detailed above to their&lt;br/&gt;transaction.&lt;br/&gt;&lt;br/&gt;Our proposal gives an opportunity for the receiver to consolidate&lt;br/&gt;their UTXOs while also batching their own payments, without creating a&lt;br/&gt;new transaction. (Saving fees in the process)&lt;br/&gt;For the sender, it allows them to invalidate the three heuristics&lt;br/&gt;above. With the receiver&amp;#39;s involvement, the heuristics can even be&lt;br/&gt;poisoned. (ie, using the heuristics to intentionally mislead&lt;br/&gt;blockchain analysis)&lt;br/&gt;&lt;br/&gt;Note that the existence of this proposal is also improving the privacy&lt;br/&gt;of parties who are not using it by making the three heuristics&lt;br/&gt;unreliable to the network as a whole.&lt;br/&gt;&lt;br/&gt;=== Relation to BIP79 (Bustapay) ===&lt;br/&gt;&lt;br/&gt;Another implementation proposal has been written:&lt;br/&gt;[[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0079.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0079.mediawiki&lt;/a&gt;|BIP79&lt;br/&gt;Bustapay]].&lt;br/&gt;&lt;br/&gt;We decided to deviate from it for several reasons:&lt;br/&gt;* It was not using PSBT, so if the receiver wanted to bump the fee,&lt;br/&gt;they would need the full UTXO set.&lt;br/&gt;* The receiver was responsible to pay the additional fee, not the sender.&lt;br/&gt;* It was requiring at least one input to be contributed by the receiver.&lt;br/&gt;* Inability to change the payment output to match scriptPubKey type.&lt;br/&gt;* Lack of basic versioning negotiation if the protocol evolves.&lt;br/&gt;* No standardization of error condition for proper feedback to the sender.&lt;br/&gt;&lt;br/&gt;Other than that, our proposal is very similar.&lt;br/&gt;&lt;br/&gt;==Specification==&lt;br/&gt;&lt;br/&gt;===Protocol===&lt;br/&gt;&lt;br/&gt;In a payjoin payment, the following steps happen:&lt;br/&gt;&lt;br/&gt;* The receiver of the payment, presents a [[bip-021.mediawiki|BIP 21&lt;br/&gt;URI]] to the sender with a parameter &amp;lt;code&amp;gt;pj&amp;lt;/code&amp;gt; describing an&lt;br/&gt;https (or http if it is a Tor hidden service) link to the payjoin&lt;br/&gt;endpoint.&lt;br/&gt;* The sender creates a signed, finalized PSBT with witness UTXO or&lt;br/&gt;previous transactions of the inputs. We call this PSBT the&lt;br/&gt;&amp;lt;code&amp;gt;original&amp;lt;/code&amp;gt;.&lt;br/&gt;* The receiver replies back with a signed PSBT containing his own&lt;br/&gt;signed inputs/outputs and those of the sender. We call this PSBT&lt;br/&gt;&amp;lt;code&amp;gt;Payjoin proposal&amp;lt;/code&amp;gt;.&lt;br/&gt;* The sender verifies the proposal, re-signs his inputs and broadcasts&lt;br/&gt;the transaction to the Bitcoin network. We call this transaction&lt;br/&gt;&amp;lt;code&amp;gt;Payjoin transaction&amp;lt;/code&amp;gt;.&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;&#43;----------&#43;                        &#43;--------&#43;         &#43;-----------------&#43;&lt;br/&gt;| Receiver |                        | Sender |         | Bitcoin Network |&lt;br/&gt;&#43;----&#43;-----&#43;                        &#43;---&#43;----&#43;         &#43;-------&#43;---------&#43;&lt;br/&gt;     |       &#43;-----------------&#43;        |                      |&lt;br/&gt;     &#43;-------&#43; BIP21 with ?pj= &#43;-------&amp;gt;&#43;                      |&lt;br/&gt;     |       &#43;-----------------&#43;        |                      |&lt;br/&gt;     |                                  |                      |&lt;br/&gt;     |        &#43;---------------&#43;         |                      |&lt;br/&gt;     &#43;&amp;lt;-------&#43; Original PSBT &#43;---------&#43;                      |&lt;br/&gt;     |        &#43;---------------&#43;         |                      |&lt;br/&gt;     |                                  |                      |&lt;br/&gt;     |       &#43;------------------&#43;       |                      |&lt;br/&gt;     |       | Payjoin Proposal |       |                      |&lt;br/&gt;     &#43;-------&#43;      PSBT        &#43;------&amp;gt;&#43;                      |&lt;br/&gt;     |       &#43;------------------&#43;       |                      |&lt;br/&gt;     |                                  |   &#43;--------------&#43;   |&lt;br/&gt;     |                                  |---&#43; Payjoin      |   |&lt;br/&gt;     |                                  |   | transaction  &#43;--&amp;gt;&#43;&lt;br/&gt;     |                                  |   &#43;--------------&#43;   |&lt;br/&gt;     &#43;                                  &#43;                      &#43;&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;The original PSBT is sent in the HTTP POST request body, base64&lt;br/&gt;serialized, with &amp;lt;code&amp;gt;text/plain&amp;lt;/code&amp;gt; in the&lt;br/&gt;&amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; HTTP header and &amp;lt;code&amp;gt;Content-Length&amp;lt;/code&amp;gt;&lt;br/&gt;set correctly.&lt;br/&gt;The payjoin proposal PSBT is sent in the HTTP response body, base64&lt;br/&gt;serialized with HTTP code 200.&lt;br/&gt;&lt;br/&gt;To ensure compatibility with web-wallets and browser-based-tools, all&lt;br/&gt;responses (including errors) must contain the HTTP header&lt;br/&gt;&amp;lt;code&amp;gt;Access-Control-Allow-Origin: *&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;The sender must ensure that the url refers to a scheme or protocol&lt;br/&gt;using authenticated encryption, for example TLS with certificate&lt;br/&gt;validation, or a .onion link to a hidden service whose public key&lt;br/&gt;identifier has already been communicated via a TLS connection. Senders&lt;br/&gt;MUST NOT accept a url representing an unencrypted or unauthenticated&lt;br/&gt;connection.&lt;br/&gt;&lt;br/&gt;===Receiver&amp;#39;s well known errors===&lt;br/&gt;&lt;br/&gt;If for some reason the receiver is unable to create a payjoin&lt;br/&gt;proposal, it will reply with a HTTP code different than 200.&lt;br/&gt;The receiver is not constrained to specific set of errors, some are&lt;br/&gt;specified in this proposal.&lt;br/&gt;&lt;br/&gt;The errors have the following format:&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;{&lt;br/&gt;    &amp;#34;errorCode&amp;#34;: &amp;#34;leaking-data&amp;#34;,&lt;br/&gt;    &amp;#34;message&amp;#34;: &amp;#34;Key path information or GlobalXPubs should not be&lt;br/&gt;included in the original PSBT.&amp;#34;&lt;br/&gt;}&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;The well-known error codes are:&lt;br/&gt;{| class=&amp;#34;wikitable&amp;#34;&lt;br/&gt;!Error code&lt;br/&gt;!Meaning&lt;br/&gt;|-&lt;br/&gt;|leaking-data&lt;br/&gt;|Key path information or GlobalXPubs should not be included in the&lt;br/&gt;original PSBT.&lt;br/&gt;|-&lt;br/&gt;|psbt-not-finalized&lt;br/&gt;|The original PSBT must be finalized.&lt;br/&gt;|-&lt;br/&gt;|unavailable&lt;br/&gt;|The payjoin endpoint is not available for now.&lt;br/&gt;|-&lt;br/&gt;|out-of-utxos&lt;br/&gt;|The receiver does not have any UTXO to contribute in a payjoin proposal.&lt;br/&gt;|-&lt;br/&gt;|not-enough-money&lt;br/&gt;|The receiver added some inputs but could not bump the fee of the&lt;br/&gt;payjoin proposal.&lt;br/&gt;|-&lt;br/&gt;|insane-psbt&lt;br/&gt;|Some consistency check on the PSBT failed.&lt;br/&gt;|-&lt;br/&gt;|version-unsupported&lt;br/&gt;|This version of payjoin is not supported.&lt;br/&gt;|-&lt;br/&gt;|need-utxo-information&lt;br/&gt;|The witness UTXO or non witness UTXO is missing&lt;br/&gt;|-&lt;br/&gt;|invalid-transaction&lt;br/&gt;|The original transaction is invalid for payjoin&lt;br/&gt;|}&lt;br/&gt;&lt;br/&gt;The receiver is allowed to return implementation specific errors which&lt;br/&gt;may assist the sender to diagnose any issue.&lt;br/&gt;&lt;br/&gt;However, it is important that error codes that are not well-known and&lt;br/&gt;that the message do not appear on the sender&amp;#39;s software user&lt;br/&gt;interface.&lt;br/&gt;Such error codes or messages could be used maliciously to phish a non&lt;br/&gt;technical user.&lt;br/&gt;Instead those errors or messages can only appear in debug logs.&lt;br/&gt;&lt;br/&gt;It is advised to hard code the description of the error codes into the&lt;br/&gt;sender&amp;#39;s software.&lt;br/&gt;&lt;br/&gt;===Receiver&amp;#39;s original PSBT checklist===&lt;br/&gt;&lt;br/&gt;The receiver needs to do some check on the original PSBT before proceeding:&lt;br/&gt;&lt;br/&gt;* Non-interactive receivers (like a payment processor) need to check&lt;br/&gt;that the original PSBT is broadcastable. &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;&lt;br/&gt;* If the sender included inputs in the original PSBT owned by the&lt;br/&gt;receiver, the receiver must either return error&lt;br/&gt;&amp;lt;code&amp;gt;invalid-transaction&amp;lt;/code&amp;gt; or make sure they do not sign those&lt;br/&gt;inputs in the payjoin proposal.&lt;br/&gt;* If the sender&amp;#39;s inputs are all from the same scriptPubKey type, the&lt;br/&gt;receiver must match the same type. If the receiver can&amp;#39;t match the&lt;br/&gt;type, they must return error &amp;lt;code&amp;gt;out-of-utxos&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;: Interactive receivers are not required to validate the&lt;br/&gt;original PSBT because they are not exposed to probing attacks.&lt;br/&gt;&lt;br/&gt;===Sender&amp;#39;s payjoin proposal checklist===&lt;br/&gt;&lt;br/&gt;The sender should check the payjoin proposal before signing it to&lt;br/&gt;prevent a malicious receiver from stealing money.&lt;br/&gt;&lt;br/&gt;* Check that all the spent outpoints in the original PSBT still exist&lt;br/&gt;in the coinjoin PSBT.&lt;br/&gt;* Check that all the spent outpoints in the original PSBT do not have&lt;br/&gt;any partial signature.&lt;br/&gt;* If the sender is not using inputs with mixed types, check that the&lt;br/&gt;receiver inputs type match the inputs type of the sender. (ie. both&lt;br/&gt;using P2SH-P2WPKH or both using P2WPKH)&lt;br/&gt;* Check that any inputs added by the receiver are finalized.&lt;br/&gt;* Check that the transaction version, and nLockTime are unchanged.&lt;br/&gt;* Check that the sender&amp;#39;s inputs&amp;#39; sequence numbers are unchanged.&lt;br/&gt;* If the sender&amp;#39;s inputs&amp;#39; sequence numbers the homogenous, check that&lt;br/&gt;the receiver&amp;#39;s contributed inputs match those.&lt;br/&gt;* Check that the sender&amp;#39;s outputs have not been modified (but&lt;br/&gt;potentially shuffled), except for paying increased fee&lt;br/&gt;* If sender specified &amp;lt;code&amp;gt;feebumpindex=&amp;lt;/code&amp;gt; (see later), the fee&lt;br/&gt;should have been subtracted from the output at the same index in the&lt;br/&gt;original PSBT.&lt;br/&gt;* Check that the sent amount in the payjoin proposal is less than or&lt;br/&gt;equal to the sent amount of the original transaction.&lt;br/&gt;&lt;br/&gt;If the sent amount in the payjoin proposal is above the amount sent in&lt;br/&gt;the original PSBT&lt;br/&gt;* Check that the additional paid amount has been add paid to the fee.&lt;br/&gt;* Check that the estimated fee rate of the payjoin proposal is not&lt;br/&gt;more than the fee rate of the original PSBT. (fee estimation is hard,&lt;br/&gt;so we should allow ~2 satoshi per inputs as margin of error)&lt;br/&gt;* If &amp;lt;code&amp;gt;maxfeebumpcontribution=&amp;lt;/code&amp;gt; was specified, check the&lt;br/&gt;additional paid amount is less than or equal to this amount.&lt;br/&gt;* If &amp;lt;code&amp;gt;maxfeebumpcontribution=&amp;lt;/code&amp;gt; was not specified, the&lt;br/&gt;sender&amp;#39;s software should ask an interactive confirmation to the user.&lt;br/&gt;&lt;br/&gt;The sender must be careful to only sign the inputs that were present&lt;br/&gt;in the original PSBT and nothing else.&lt;br/&gt;&lt;br/&gt;Note:&lt;br/&gt;* The sender should allow the payment output to be modified by the&lt;br/&gt;receiver (The receiver may substitute a P2WPKH payment to P2SH payment&lt;br/&gt;to increase privacy)&lt;br/&gt;* The sender must allow the receiver to add outputs.&lt;br/&gt;* The sender must allow the receiver to not add any input. Useful for&lt;br/&gt;the receiver to change the paymout output scriptPubKey type.&lt;br/&gt;* If no input has been added, the sender&amp;#39;s wallet should accept the&lt;br/&gt;payjoin proposal, but should not mark the transaction as an actual&lt;br/&gt;payjoin in the user interface.&lt;br/&gt;&lt;br/&gt;Our method of checking the fee allows the receiver and the sender to&lt;br/&gt;batch payments in the payjoin transaction.&lt;br/&gt;It also allows the receiver to pay the fee for batching adding his own outputs.&lt;br/&gt;&lt;br/&gt;===Optional parameters===&lt;br/&gt;&lt;br/&gt;When the payjoin sender posts the original PSBT to the receiver, he&lt;br/&gt;can optionally specify the following HTTP query string parameters:&lt;br/&gt;&lt;br/&gt;* &amp;lt;code&amp;gt;v=&amp;lt;/code&amp;gt;, the version number of the payjoin protocol that the&lt;br/&gt;sender is using. The current version is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;This can be used in the future so the receiver can reject a payjoin if&lt;br/&gt;the sender is using a version which is not supported via an error HTTP&lt;br/&gt;400, &amp;lt;code&amp;gt;version-unsupported&amp;lt;/code&amp;gt;.&lt;br/&gt;If not specified, the receiver will assume the sender is &amp;lt;code&amp;gt;v=1&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;If the receiver does not support the version of the sender, they&lt;br/&gt;should send an error with the list of supported versions:&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;{&lt;br/&gt;    &amp;#34;errorCode&amp;#34;: &amp;#34;version-unsupported&amp;#34;,&lt;br/&gt;    &amp;#34;supported&amp;#34; : [ 2, 3, 4 ],&lt;br/&gt;    &amp;#34;message&amp;#34;: &amp;#34;The version is not supported anymore&amp;#34;&lt;br/&gt;}&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;* &amp;lt;code&amp;gt;feebumpindex=&amp;lt;/code&amp;gt;, the preferred output from which to&lt;br/&gt;increase the fee for the added inputs. (default: &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;)&lt;br/&gt;&lt;br/&gt;If the &amp;lt;code&amp;gt;feebumpindex&amp;lt;/code&amp;gt; is out of bounds or pointing to the&lt;br/&gt;payment ouptut meant for the receiver, the receiver should ignore the&lt;br/&gt;parameter.&lt;br/&gt;&lt;br/&gt;* &amp;lt;code&amp;gt;maxfeebumpcontribution=&amp;lt;/code&amp;gt;, an integer defining the&lt;br/&gt;maximum amount in satoshis that the sender is willing to contribute&lt;br/&gt;towards fees for the additional inputs.&lt;br/&gt;&amp;lt;code&amp;gt;maxfeebumpcontribution&amp;lt;/code&amp;gt; must be ignored if set to less&lt;br/&gt;than zero. (default: -1)&lt;br/&gt;&lt;br/&gt;Note that if &amp;lt;code&amp;gt;maxfeebumpcontribution&amp;lt;/code&amp;gt; is too low, the&lt;br/&gt;sender should create a transaction with RBF disabled, as the original&lt;br/&gt;transaction could replace the payjoin transaction.&lt;br/&gt;&lt;br/&gt;==Rationale==&lt;br/&gt;&lt;br/&gt;There is several consequences of our proposal:&lt;br/&gt;&lt;br/&gt;* The receiver can bump the fee of the original transaction.&lt;br/&gt;* The receiver can modify the outputs of the original PSBT.&lt;br/&gt;* The sender must provide the UTXO information (Witness or previous&lt;br/&gt;transaction) in the PSBT.&lt;br/&gt;&lt;br/&gt;===Respecting the minimum relay fee policy===&lt;br/&gt;&lt;br/&gt;To be properly relayed, a Bitcoin transaction needs to pay at least 1&lt;br/&gt;satoshi per virtual byte.&lt;br/&gt;When fees are low, the original transaction is already 1 satoshi per&lt;br/&gt;virtual byte, so if the receiver adds their own input, they need to&lt;br/&gt;make sure the fee is increased such that the rate does not drop below&lt;br/&gt;1 satoshi per virtual byte.&lt;br/&gt;&lt;br/&gt;===Preventing mempool replacement===&lt;br/&gt;&lt;br/&gt;A safe way to implement payjoin, is for both the sender and receiver&lt;br/&gt;to try broadcasting the original transaction at some fixed interval&lt;br/&gt;period regardless of the state of the payjoin.&lt;br/&gt;&lt;br/&gt;If the receiver was not properly adding fees to the payjoin&lt;br/&gt;transaction, the original transaction would end up replacing the&lt;br/&gt;payjoin transaction in the mempool.&lt;br/&gt;&lt;br/&gt;===Defeating heuristics based on the fee calculation===&lt;br/&gt;&lt;br/&gt;Most wallets are creating a round fee rate (like 2 sat/b).&lt;br/&gt;If the payjoin transaction&amp;#39;s fee was not increased by the added size,&lt;br/&gt;then those payjoin transactions could easily be identifiable on the&lt;br/&gt;blockchain.&lt;br/&gt;&lt;br/&gt;Not only would those transactions stand out by not having a round fee&lt;br/&gt;(like 1.87 sat/b), but any suspicion of payjoin could be confirmed by&lt;br/&gt;checking if removing one input would create a round fee rate.&lt;br/&gt;&lt;br/&gt;===Receiver does not need to be a full node===&lt;br/&gt;&lt;br/&gt;Because the receiver needs to bump the fee to keep the same fee rate&lt;br/&gt;as the original PSBT, it needs the input&amp;#39;s UTXO information to know&lt;br/&gt;what is the original fee rate. Without PSBT, light wallets like Wasabi&lt;br/&gt;Wallet would not be able to receive a payjoin transaction.&lt;br/&gt;&lt;br/&gt;The validation (policy and consensus) of the original transaction is&lt;br/&gt;optional: a receiver without a full node can decide to create the&lt;br/&gt;payjoin transaction and automatically broadcast the original&lt;br/&gt;transaction after a timeout of 1 minute, and only verify that it has&lt;br/&gt;been propagated in the network.&lt;br/&gt;&lt;br/&gt;However, non-interactive receivers (like a payment processor) need to&lt;br/&gt;verify the transaction to prevent UTXO probing attacks.&lt;br/&gt;&lt;br/&gt;This is not a concern for interactive receivers like Wasabi Wallet,&lt;br/&gt;because those receivers can just limit the number of original PSBT&lt;br/&gt;proposals of a specific address to one. With such wallets, the&lt;br/&gt;attacker has no way to generate new deposit addresses to probe the&lt;br/&gt;UTXOs.&lt;br/&gt;&lt;br/&gt;===Spare change donation===&lt;br/&gt;&lt;br/&gt;Small change inside wallets are detrimental to privacy. Mixers like&lt;br/&gt;Wasabi wallet, because of its protocol, eventually generate such&lt;br/&gt;[[&lt;a href=&#34;https://docs.wasabiwallet.io/using-wasabi/ChangeCoins.html#first-round-coinjoin-change&#34;&gt;https://docs.wasabiwallet.io/using-wasabi/ChangeCoins.html#first-round-coinjoin-change&lt;/a&gt;|small&lt;br/&gt;change]].&lt;br/&gt;&lt;br/&gt;A common way to protect your privacy is to donate those spare changes,&lt;br/&gt;to deposit them in an exchange or on your favorite merchant&amp;#39;s store&lt;br/&gt;account. Those kind of transactions can easily be spotted on the&lt;br/&gt;blockchain: There is only one output.&lt;br/&gt;&lt;br/&gt;However, if you donate via payjoin, it will look like a normal transaction.&lt;br/&gt;&lt;br/&gt;On top of this the receiver can poison analysis by randomly faking a&lt;br/&gt;round amount of satoshi for the additional output.&lt;br/&gt;&lt;br/&gt;===Payment output substitution===&lt;br/&gt;&lt;br/&gt;The receiver is free to change the output paying to himself.&lt;br/&gt;For example, if the sender&amp;#39;s scriptPubKey type is P2WPKH while the&lt;br/&gt;receiver&amp;#39;s payment output in the original PSBT is P2SH, then the&lt;br/&gt;receiver can substitute the payment output to be P2WPKH to match the&lt;br/&gt;sender&amp;#39;s scriptPubKey type.&lt;br/&gt;&lt;br/&gt;===Impacted heuristics===&lt;br/&gt;&lt;br/&gt;Our proposal of payjoin is breaking the following blockchain heuristics:&lt;br/&gt;&lt;br/&gt;* Common inputs heuristics.&lt;br/&gt;&lt;br/&gt;Because payjoin is mixing the inputs of the sender and receiver, this&lt;br/&gt;heuristic becomes unreliable.&lt;br/&gt;&lt;br/&gt;* Change identification from scriptPubKey type heuristics&lt;br/&gt;&lt;br/&gt;When Alice pays Bob, if Alice is using P2SH but Bob&amp;#39;s deposit address&lt;br/&gt;is P2WPKH, the heuristic would assume that the P2SH output is the&lt;br/&gt;change address of Alice.&lt;br/&gt;This is now however a broken assumption, as the payjoin receiver has&lt;br/&gt;the freedom to mislead analytics by purposefully changing the&lt;br/&gt;invoice&amp;#39;s address in the payjoin transaction.&lt;br/&gt;&lt;br/&gt;Alternatively, if the original address of Bob is P2WPKH and Alice&amp;#39;s&lt;br/&gt;address is also P2WPKH, Bob can change the receiving address in the&lt;br/&gt;payjoin to P2SH. The heuristic would wrongfully identify the payjoin&amp;#39;s&lt;br/&gt;receiving address as the change address of the transaction.&lt;br/&gt;&lt;br/&gt;See payment output substitution above.&lt;br/&gt;&lt;br/&gt;* Change identification from round change amount&lt;br/&gt;&lt;br/&gt;If Alice pays Bob, she might be tempted to pay him a round amount,&lt;br/&gt;like &amp;lt;code&amp;gt;1.23000000 BTC&amp;lt;/code&amp;gt;. When this happens, blockchain&lt;br/&gt;analysis often identifies the output without the round amount as the&lt;br/&gt;change of the transaction.&lt;br/&gt;&lt;br/&gt;For this reason, during a [spare&lt;br/&gt;change](Payjoin-spec.md#spare-change-donation) situation, we randomly&lt;br/&gt;round the amount in the output added by the receiver to the payjoin&lt;br/&gt;transaction.&lt;br/&gt;&lt;br/&gt;==Attack vectors==&lt;br/&gt;&lt;br/&gt;===On the receiver side: UTXO probing attack===&lt;br/&gt;&lt;br/&gt;When the receiver creates a payjoin proposal, they expose one or more&lt;br/&gt;inputs belonging to them.&lt;br/&gt;&lt;br/&gt;An attacker could create multiple original transactions in order to&lt;br/&gt;learn the UTXOs of the receiver, while not broadcasting the payjoin&lt;br/&gt;proposal.&lt;br/&gt;&lt;br/&gt;While we cannot prevent this type of attack entirely, we implemented&lt;br/&gt;the following mitigations:&lt;br/&gt;&lt;br/&gt;* When the receiver detects an original transaction being broadcast,&lt;br/&gt;or if the receiver detects that the original transaction has been&lt;br/&gt;double spent, then they will reuse the UTXO that was exposed for the&lt;br/&gt;next payjoin.&lt;br/&gt;* While the exposed UTXO will be reused in priority to not leak other&lt;br/&gt;UTXOs, there is no strong guarantee about it. This prevents the&lt;br/&gt;attacker from detecting with certainty the next payjoin of the&lt;br/&gt;merchant to another peer.&lt;br/&gt;&lt;br/&gt;Note that probing attacks are only a problem for automated payment&lt;br/&gt;systems such as BTCPay Server. End-user wallets with payjoin&lt;br/&gt;capabilities are not affected, as the attacker can&amp;#39;t create multiple&lt;br/&gt;invoices to force the receiver to expose their UTXOs.&lt;br/&gt;&lt;br/&gt;===On the sender side: Double payment risk for hardware wallets===&lt;br/&gt;&lt;br/&gt;For a successful payjoin to happen, the sender needs to sign two&lt;br/&gt;transactions double spending each other: The original transaction and&lt;br/&gt;the payjoin proposal.&lt;br/&gt;&lt;br/&gt;The sender&amp;#39;s software wallet can verify that the payjoin proposal is&lt;br/&gt;legitimate by the sender&amp;#39;s checklist.&lt;br/&gt;&lt;br/&gt;However, a hardware wallet can&amp;#39;t verify that this is indeed the case.&lt;br/&gt;This means that the security guarantee of the hardware wallet is&lt;br/&gt;decreased. If the sender&amp;#39;s software is compromised, the hardware&lt;br/&gt;wallet would sign two valid transactions, thus sending two payments.&lt;br/&gt;&lt;br/&gt;Without payjoin, the maximum amount of money that could be lost by a&lt;br/&gt;compromised software is equal to one payment (via address&lt;br/&gt;substitution).&lt;br/&gt;&lt;br/&gt;With payjoin, the maximum amount of money that can be lost is equal to&lt;br/&gt;two payments.&lt;br/&gt;&lt;br/&gt;==Implementations==&lt;br/&gt;&lt;br/&gt;* [[&lt;a href=&#34;https://github.com/BlueWallet/BlueWallet&#34;&gt;https://github.com/BlueWallet/BlueWallet&lt;/a&gt;|BlueWallet]] is in the&lt;br/&gt;process of implementing the protocol.&lt;br/&gt;* [[&lt;a href=&#34;https://github.com/btcpayserver/btcpayserver&#34;&gt;https://github.com/btcpayserver/btcpayserver&lt;/a&gt;|BTCPay Server]] has&lt;br/&gt;implemented sender and receiver side of this protocol.&lt;br/&gt;* [[&lt;a href=&#34;https://github.com/zkSNACKs/WalletWasabi/&#34;&gt;https://github.com/zkSNACKs/WalletWasabi/&lt;/a&gt;|Wasabi Wallet]] has&lt;br/&gt;merged sender&amp;#39;s support.&lt;br/&gt;* [[&lt;a href=&#34;https://github.com/JoinMarket-Org/joinmarket-clientserver&#34;&gt;https://github.com/JoinMarket-Org/joinmarket-clientserver&lt;/a&gt;|Join&lt;br/&gt;Market]] is in the process of implementing the protocol.&lt;br/&gt;* [[&lt;a href=&#34;https://github.com/junderw/payjoin-client-js&#34;&gt;https://github.com/junderw/payjoin-client-js&lt;/a&gt;|JavaScript sender&lt;br/&gt;implementation]].&lt;br/&gt;&lt;br/&gt;==Special thanks==&lt;br/&gt;&lt;br/&gt;Special thanks to Kukks for developing the initial support to BTCPay&lt;br/&gt;Server, to junderw, AdamISZ, lukechilds, ncoelho, nopara73, yahiheb&lt;br/&gt;for all the feedback we received since our first implementation.&lt;br/&gt;Thanks also to RHavar who wrote the&lt;br/&gt;[[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0079.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0079.mediawiki&lt;/a&gt;|BIP79&lt;br/&gt;Bustapay]] proposal, this gave a good starting point for our proposal.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200517/b8701197/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200517/b8701197/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:24:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0atk2cqug40x2ufjh82g39z0vj687meecqhc4v477gkedn3wsf0qzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wvlgmda</id>
    
      <title type="html">📅 Original date posted:2019-04-03 📝 Original message:James, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0atk2cqug40x2ufjh82g39z0vj687meecqhc4v477gkedn3wsf0qzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wvlgmda" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd29prhqt2tcnje4lvhudntmldm28uz08v2gdsd23cperesuzwv5qtlux5j&#39;&gt;nevent1q…ux5j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-04-03&lt;br/&gt;📝 Original message:James,&lt;br/&gt;&lt;br/&gt;You might be interested by my work which is currently used in production,&lt;br/&gt;without any change to bitcoin core.&lt;br/&gt;&lt;br/&gt;I properly explain how to verify the utxoset independently.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/btcpayserver/btcpayserver-docker/blob/master/contrib/FastSync/README.md&#34;&gt;https://github.com/btcpayserver/btcpayserver-docker/blob/master/contrib/FastSync/README.md&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;People are using it, since I get around 10 download a day.&lt;br/&gt;What can be done to help at Bitcoin Core level is actually very minimal.&lt;br/&gt;&lt;br/&gt;First, instead of asking signers of by UTXOSet to sign the utxoset hash&lt;br/&gt;from gettxoutsetinfo, I ask them to sign the hash of the tarball of my UTXO&lt;br/&gt;Set.&lt;br/&gt;&lt;br/&gt;The reason is that it is currently impossible to stop BitcoinD on a&lt;br/&gt;specific block then asking the serialized hash of the UTXO Set.&lt;br/&gt;&lt;br/&gt;So instead, a verifier download the tarball (300 blocks &#43; utxoset at&lt;br/&gt;specific height), sync to the latest block, then compare the&lt;br/&gt;gettxoutsetinfo of the newly synched node with another trusted node. If it&lt;br/&gt;match, the verifier sign the tarball.&lt;br/&gt;&lt;br/&gt;I create a new utxoset snapshot every 6 months, so people have time to&lt;br/&gt;verify it and add their signatures. (Approximately once every bitcoin core&lt;br/&gt;release)&lt;br/&gt;&lt;br/&gt;The easiest thing that could be done at Bitcoin Core level does not require&lt;br/&gt;any code change, but a change in the release process.&lt;br/&gt;&lt;br/&gt;The new process would be to ask to the gitian signers to not only build the&lt;br/&gt;source themselves, but also verify a tarball following the procedure I&lt;br/&gt;explain in the link above.&lt;br/&gt;&lt;br/&gt;More complicated solution like signing the serialized utxoset itself, while&lt;br/&gt;possible, would require bothersome code changes.&lt;br/&gt;&lt;br/&gt;Nicolas,&lt;br/&gt;&lt;br/&gt;On Wed, Apr 3, 2019 at 9:25 AM &amp;lt;&lt;br/&gt;bitcoin-dev-request at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Send bitcoin-dev mailing list submissions to&lt;br/&gt;&amp;gt;         bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To subscribe or unsubscribe via the World Wide Web, visit&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; or, via email, send a message with subject or body &amp;#39;help&amp;#39; to&lt;br/&gt;&amp;gt;         bitcoin-dev-request at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You can reach the person managing the list at&lt;br/&gt;&amp;gt;         bitcoin-dev-owner at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When replying, please edit your Subject line so it is more specific&lt;br/&gt;&amp;gt; than &amp;#34;Re: Contents of bitcoin-dev digest...&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Today&amp;#39;s Topics:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    1. BIP: Bitcoin Integrated Address Feature? (nathanw at tutanota.com)&lt;br/&gt;&amp;gt;    2. Re: BIP: Bitcoin Integrated Address Feature? (htimSxelA)&lt;br/&gt;&amp;gt;    3. assumeutxo and UTXO snapshots (James O&amp;#39;Beirne)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ----------------------------------------------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Message: 1&lt;br/&gt;&amp;gt; Date: Tue, 2 Apr 2019 18:53:11 &#43;0200 (CEST)&lt;br/&gt;&amp;gt; From: &amp;lt;nathanw at tutanota.com&amp;gt;&lt;br/&gt;&amp;gt; To: &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt; Subject: [bitcoin-dev] BIP: Bitcoin Integrated Address Feature?&lt;br/&gt;&amp;gt; Message-ID: &amp;lt;LbTxyE4--3-1 at tutanota.com&amp;gt;&lt;br/&gt;&amp;gt; Content-Type: text/plain; charset=&amp;#34;utf-8&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To whom it may concern,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe a missing feature in Bitcoin is the ability to have an&lt;br/&gt;&amp;gt; &amp;#34;integrated address&amp;#34;, where the address resolves into a Bitcoin address,&lt;br/&gt;&amp;gt; and also a transaction message or some other kind of identifier.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; By having this feature we could enhance the security of exchange&lt;br/&gt;&amp;gt; cold-wallet systems, by allowing them to easily receive all payments to a&lt;br/&gt;&amp;gt; single address from an infinite number of customers. We would also greatly&lt;br/&gt;&amp;gt; simplify the process of setting up and managing exchange cold-wallet&lt;br/&gt;&amp;gt; systems, because we would eliminate the &amp;#34;sweeping&amp;#34; step required to move&lt;br/&gt;&amp;gt; multiple customer deposits from a hot address into a single cold address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Although it would be nice to have all customers deposit directly into cold&lt;br/&gt;&amp;gt; addresses, this quickly becomes impractical when large amounts of customers&lt;br/&gt;&amp;gt; begin to use exchange wallets as their personal web-wallet, frequently&lt;br/&gt;&amp;gt; depositing and withdrawing without trading action. You end up needing to&lt;br/&gt;&amp;gt; have a staff member moving funds away from cold deposit addresses as a full&lt;br/&gt;&amp;gt; time job - if you wish to handle customer funds in a completely secure&lt;br/&gt;&amp;gt; manner.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus we see that most exchanges now use the hot-deposit system, where&lt;br/&gt;&amp;gt; customers deposit into a hot address that is then automatically swept into&lt;br/&gt;&amp;gt; a singular cold address, by a service which holds customers private keys&lt;br/&gt;&amp;gt; online. You can observe this service at work simply by making a deposit to&lt;br/&gt;&amp;gt; most major exchanges (including the largest exchange Binance), as you will&lt;br/&gt;&amp;gt; see the funds quickly being &amp;#34;swept&amp;#34; to their cold wallet address in a&lt;br/&gt;&amp;gt; manner which heavily suggests automation by a program which possesses&lt;br/&gt;&amp;gt; private keys to the address you are sending funds to. This means there is&lt;br/&gt;&amp;gt; always the danger of a sophisticated hacker being able to capture private&lt;br/&gt;&amp;gt; keys to customer deposit addresses (as they are clearly being held online).&lt;br/&gt;&amp;gt; An integrated address would allow all exchanges using this automated&lt;br/&gt;&amp;gt; hot-deposit service to easily switch to a far more secure alternative of&lt;br/&gt;&amp;gt; having all customers depositing directly into their singular cold wallet&lt;br/&gt;&amp;gt; address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are several other more minor advantages such a feature would have,&lt;br/&gt;&amp;gt; including:&lt;br/&gt;&amp;gt; - Lower fees for exchanges (which could be passed onto customers), by&lt;br/&gt;&amp;gt; reducing a transaction step out of the deposit-to-withdrawal flow.&lt;br/&gt;&amp;gt; - Less need for large rescans after loading huge amounts of customer&lt;br/&gt;&amp;gt; addresses into client software.&lt;br/&gt;&amp;gt; - Exchanges can more easily provision deposit addresses to new customers&lt;br/&gt;&amp;gt; in a secure manner, by simply generating a hex or other value, creating an&lt;br/&gt;&amp;gt; integrated address from the cold wallet address, and then providing this to&lt;br/&gt;&amp;gt; the customer.&lt;br/&gt;&amp;gt; - By providing a singular cold address for exchanges publicly, customers&lt;br/&gt;&amp;gt; can more easily verify that no man-in-the-middle has given them an&lt;br/&gt;&amp;gt; incorrect address to deposit to.&lt;br/&gt;&amp;gt; The integrated address could work by combining the Bitcoin address&lt;br/&gt;&amp;gt; together with some kind of hex or other value, allowing users to choose the&lt;br/&gt;&amp;gt; amount they wish to deposit themselves, but ensuring their deposits are&lt;br/&gt;&amp;gt; uniquely trackable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not sure if some kind of functionality already exists in BTC, as I&lt;br/&gt;&amp;gt; haven&amp;#39;t been able to find it. If not, can I submit a proposal to implement&lt;br/&gt;&amp;gt; this? This feature would be a godsend to all exchange developers if it was&lt;br/&gt;&amp;gt; widely accepted.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for your time.&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nathan Worsley&lt;br/&gt;&amp;gt; CTO - LocalCoinSwap.Com&lt;br/&gt;&amp;gt; -------------- next part --------------&lt;br/&gt;&amp;gt; An HTML attachment was scrubbed...&lt;br/&gt;&amp;gt; URL: &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/400c1e1b/attachment-0001.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/400c1e1b/attachment-0001.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Message: 2&lt;br/&gt;&amp;gt; Date: Tue, 02 Apr 2019 20:01:34 &#43;0000&lt;br/&gt;&amp;gt; From: htimSxelA &amp;lt;htimsxela at protonmail.com&amp;gt;&lt;br/&gt;&amp;gt; To: &amp;#34;nathanw at tutanota.com&amp;#34; &amp;lt;nathanw at tutanota.com&amp;gt;,      Bitcoin Protocol&lt;br/&gt;&amp;gt;         Discussion &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt; Subject: Re: [bitcoin-dev] BIP: Bitcoin Integrated Address Feature?&lt;br/&gt;&amp;gt; Message-ID:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;wtbAF1FAGePDAkY3xkqANuFJtAhEXvz0JeGWnc_OZcGEyFQb-1B590I3IbwtW2FBivur0yONbSQtxaWqiQTJeoDdadivtbGkWwJnLnnzQQE=@&lt;br/&gt;&amp;gt; protonmail.com&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Content-Type: text/plain; charset=&amp;#34;utf-8&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I see two immediate issues with this:&lt;br/&gt;&amp;gt; 1. Increased resource requirements per transaction&lt;br/&gt;&amp;gt; 2. Embedding identifying information into the blockchain is generally bad&lt;br/&gt;&amp;gt; for privacy&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It may help your case to provide some technical details of how you&amp;#39;d like&lt;br/&gt;&amp;gt; to see this implemented, but without overcoming the issues mentioned above&lt;br/&gt;&amp;gt; I think this proposal will be a very tough sell.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ...this quickly becomes impractical when large amounts of customers&lt;br/&gt;&amp;gt; begin to use exchange wallets as their personal web-wallet, frequently&lt;br/&gt;&amp;gt; depositing and withdrawing without trading action. You end up needing to&lt;br/&gt;&amp;gt; have a staff member moving funds away from cold deposit addresses as a full&lt;br/&gt;&amp;gt; time job - if you wish to handle customer funds in a completely secure&lt;br/&gt;&amp;gt; manner.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I am not sure if I see how this issue is solved by your proposal.&lt;br/&gt;&amp;gt; Assumedly, a human will still need to manually approve cold-wallet&lt;br/&gt;&amp;gt; withdrawals in order to maintain security. So it seems to me that removing&lt;br/&gt;&amp;gt; the &amp;#39;hot-wallet&amp;#39; component of the backend would only amplify the need for&lt;br/&gt;&amp;gt; human interaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I assume you are familiar with hierarchical deterministic wallets? They&lt;br/&gt;&amp;gt; can allow an exchange to assign/identify user deposits based on address&lt;br/&gt;&amp;gt; derivation path. Keys for deposit addresses can be kept offline if wanted,&lt;br/&gt;&amp;gt; and a proper implementation of an HD wallet system should also remove the&lt;br/&gt;&amp;gt; need for rescans of user deposit addresses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is also a functionality built into Bitcoin that allows a user to&lt;br/&gt;&amp;gt; prove that they own the private keys to some address: signing an agreed&lt;br/&gt;&amp;gt; upon message using the private key that controls that address.&lt;br/&gt;&amp;gt; Unfortunately I don&amp;#39;t think this is a workable solution for you, since the&lt;br/&gt;&amp;gt; majority of modern wallet software does not include this feature-- but&lt;br/&gt;&amp;gt; perhaps worth mentioning nonetheless.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Alex&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ??????? Original Message ???????&lt;br/&gt;&amp;gt; On Tuesday, April 2, 2019 9:53 AM, Nathan Worsley via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; To whom it may concern,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I believe a missing feature in Bitcoin is the ability to have an&lt;br/&gt;&amp;gt; &amp;#34;integrated address&amp;#34;, where the address resolves into a Bitcoin address,&lt;br/&gt;&amp;gt; and also a transaction message or some other kind of identifier.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; By having this feature we could enhance the security of exchange&lt;br/&gt;&amp;gt; cold-wallet systems, by allowing them to easily receive all payments to a&lt;br/&gt;&amp;gt; single address from an infinite number of customers. We would also greatly&lt;br/&gt;&amp;gt; simplify the process of setting up and managing exchange cold-wallet&lt;br/&gt;&amp;gt; systems, because we would eliminate the &amp;#34;sweeping&amp;#34; step required to move&lt;br/&gt;&amp;gt; multiple customer deposits from a hot address into a single cold address.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Although it would be nice to have all customers deposit directly into&lt;br/&gt;&amp;gt; cold addresses, this quickly becomes impractical when large amounts of&lt;br/&gt;&amp;gt; customers begin to use exchange wallets as their personal web-wallet,&lt;br/&gt;&amp;gt; frequently depositing and withdrawing without trading action. You end up&lt;br/&gt;&amp;gt; needing to have a staff member moving funds away from cold deposit&lt;br/&gt;&amp;gt; addresses as a full time job - if you wish to handle customer funds in a&lt;br/&gt;&amp;gt; completely secure manner.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Thus we see that most exchanges now use the hot-deposit system, where&lt;br/&gt;&amp;gt; customers deposit into a hot address that is then automatically swept into&lt;br/&gt;&amp;gt; a singular cold address, by a service which holds customers private keys&lt;br/&gt;&amp;gt; online. You can observe this service at work simply by making a deposit to&lt;br/&gt;&amp;gt; most major exchanges (including the largest exchange Binance), as you will&lt;br/&gt;&amp;gt; see the funds quickly being &amp;#34;swept&amp;#34; to their cold wallet address in a&lt;br/&gt;&amp;gt; manner which heavily suggests automation by a program which possesses&lt;br/&gt;&amp;gt; private keys to the address you are sending funds to. This means there is&lt;br/&gt;&amp;gt; always the danger of a sophisticated hacker being able to capture private&lt;br/&gt;&amp;gt; keys to customer deposit addresses (as they are clearly being held online).&lt;br/&gt;&amp;gt; An integrated address would allow all exchanges using this automated&lt;br/&gt;&amp;gt; hot-deposit service to easily switch to a far more secure alternative of&lt;br/&gt;&amp;gt; having all customers depositing directly into their singular cold wallet&lt;br/&gt;&amp;gt; address.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are several other more minor advantages such a feature would have,&lt;br/&gt;&amp;gt; including:&lt;br/&gt;&amp;gt; &amp;gt; - Lower fees for exchanges (which could be passed onto customers), by&lt;br/&gt;&amp;gt; reducing a transaction step out of the deposit-to-withdrawal flow.&lt;br/&gt;&amp;gt; &amp;gt; - Less need for large rescans after loading huge amounts of customer&lt;br/&gt;&amp;gt; addresses into client software.&lt;br/&gt;&amp;gt; &amp;gt; - Exchanges can more easily provision deposit addresses to new customers&lt;br/&gt;&amp;gt; in a secure manner, by simply generating a hex or other value, creating an&lt;br/&gt;&amp;gt; integrated address from the cold wallet address, and then providing this to&lt;br/&gt;&amp;gt; the customer.&lt;br/&gt;&amp;gt; &amp;gt; - By providing a singular cold address for exchanges publicly, customers&lt;br/&gt;&amp;gt; can more easily verify that no man-in-the-middle has given them an&lt;br/&gt;&amp;gt; incorrect address to deposit to.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The integrated address could work by combining the Bitcoin address&lt;br/&gt;&amp;gt; together with some kind of hex or other value, allowing users to choose the&lt;br/&gt;&amp;gt; amount they wish to deposit themselves, but ensuring their deposits are&lt;br/&gt;&amp;gt; uniquely trackable.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m not sure if some kind of functionality already exists in BTC, as I&lt;br/&gt;&amp;gt; haven&amp;#39;t been able to find it. If not, can I submit a proposal to implement&lt;br/&gt;&amp;gt; this? This feature would be a godsend to all exchange developers if it was&lt;br/&gt;&amp;gt; widely accepted.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Thanks for your time.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Regards,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Nathan Worsley&lt;br/&gt;&amp;gt; &amp;gt; CTO - LocalCoinSwap.Com&lt;br/&gt;&amp;gt; -------------- next part --------------&lt;br/&gt;&amp;gt; An HTML attachment was scrubbed...&lt;br/&gt;&amp;gt; URL: &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/ade34235/attachment-0001.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/ade34235/attachment-0001.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Message: 3&lt;br/&gt;&amp;gt; Date: Tue, 2 Apr 2019 16:43:11 -0400&lt;br/&gt;&amp;gt; From: &amp;#34;James O&amp;#39;Beirne&amp;#34; &amp;lt;james.obeirne at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; To: bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; Subject: [bitcoin-dev] assumeutxo and UTXO snapshots&lt;br/&gt;&amp;gt; Message-ID:&lt;br/&gt;&amp;gt;         &amp;lt;CAPfvXf&#43;JS6ZhXUieWVxiaNa4uhhWwafCk3odMKy5F_yi=&lt;br/&gt;&amp;gt; XwngA at mail.gmail.com&amp;gt;&lt;br/&gt;&amp;gt; Content-Type: text/plain; charset=&amp;#34;utf-8&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d like to discuss assumeutxo, which is an appealing and simple&lt;br/&gt;&amp;gt; optimization in the spirit of assumevalid[0].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Motivation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To start a fully validating bitcoin client from scratch, that client&lt;br/&gt;&amp;gt; currently&lt;br/&gt;&amp;gt; needs to perform an initial block download. To the surprise of no one, IBD&lt;br/&gt;&amp;gt; takes a linear amount time based on the length of the chain&amp;#39;s history. For&lt;br/&gt;&amp;gt; clients running on modest hardware under limited bandwidth constraints,&lt;br/&gt;&amp;gt; say a mobile device, completing IBD takes a considerable amount of time&lt;br/&gt;&amp;gt; and thus poses serious usability challenges.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a result, having fully validating clients run on such hardware is rare&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; basically unrealistic. Clients with even moderate resource constraints&lt;br/&gt;&amp;gt; are encouraged to rely on the SPV trust model. Though we have promising&lt;br/&gt;&amp;gt; improvements to existing SPV modes pending deployment[1], it&amp;#39;s worth&lt;br/&gt;&amp;gt; thinking about a mechanism that would allow such clients to use trust&lt;br/&gt;&amp;gt; models closer to full validation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The subject of this mail is a proposal for a complementary alternative to&lt;br/&gt;&amp;gt; SPV&lt;br/&gt;&amp;gt; modes, and which is in the spirit of an existing default, `assumevalid`. It&lt;br/&gt;&amp;gt; may&lt;br/&gt;&amp;gt; help modest clients transact under a security model that closely resembles&lt;br/&gt;&amp;gt; full validation within minutes instead of hours or days.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # assumeutxo&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The basic idea is to allow nodes to initialize using a serialized version&lt;br/&gt;&amp;gt; of the&lt;br/&gt;&amp;gt; UTXO set rendered by another node at some predetermined height. The&lt;br/&gt;&amp;gt; initializing node syncs the headers chain from the network, then obtains&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; loads one of these UTXO snapshots (i.e. a serialized version of the UTXO&lt;br/&gt;&amp;gt; set&lt;br/&gt;&amp;gt; bundled with the block header indicating its &amp;#34;base&amp;#34; and some other&lt;br/&gt;&amp;gt; metadata).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Based upon the snapshot, the node is able to quickly reconstruct its&lt;br/&gt;&amp;gt; chainstate,&lt;br/&gt;&amp;gt; and compares a hash of the resulting UTXO set to a preordained hash&lt;br/&gt;&amp;gt; hard-coded&lt;br/&gt;&amp;gt; in the software a la assumevalid. This all takes ~23 minutes, not&lt;br/&gt;&amp;gt; accounting for&lt;br/&gt;&amp;gt; download of the 3.2GB snapshot[2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The node then syncs to the network tip and afterwards begins a simultaneous&lt;br/&gt;&amp;gt; background validation (i.e., a conventional IBD) up to the base height of&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; snapshot in order to achieve full validation. Crucially, even while the&lt;br/&gt;&amp;gt; background validation is happening the node can validate incoming blocks&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; transact with the benefit of the full (assumed-valid) UTXO set.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Snapshots could be obtained from multiple separate peers in the same manner&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; block download, but I haven&amp;#39;t put much thought into this. In concept it&lt;br/&gt;&amp;gt; doesn&amp;#39;t&lt;br/&gt;&amp;gt; matter too much where the snapshots come from since their validity is&lt;br/&gt;&amp;gt; determined via content hash.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Security&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Obviously there are some security implications due consideration. While&lt;br/&gt;&amp;gt; this&lt;br/&gt;&amp;gt; proposal is in the spirit of assumevalid, practical attacks may become&lt;br/&gt;&amp;gt; easier.&lt;br/&gt;&amp;gt; Under assumevalid, a user can be tricked into transacting under a false&lt;br/&gt;&amp;gt; history&lt;br/&gt;&amp;gt; if an attacker convinces them to start bitcoind with a malicious&lt;br/&gt;&amp;gt; `-assumevalid`&lt;br/&gt;&amp;gt; parameter, sybils their node, and then feeds them a bogus chain&lt;br/&gt;&amp;gt; encompassing&lt;br/&gt;&amp;gt; all of the hard-coded checkpoints[3].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The same attack is made easier in assumeutxo because, unlike in&lt;br/&gt;&amp;gt; assumevalid,&lt;br/&gt;&amp;gt; the attacker need not construct a valid PoW chain to get the victim&amp;#39;s node&lt;br/&gt;&amp;gt; into&lt;br/&gt;&amp;gt; a false state; they simply need to get the user to accept a bad&lt;br/&gt;&amp;gt; `-assumeutxo`&lt;br/&gt;&amp;gt; parameter and then supply them an easily made UTXO snapshot containing,&lt;br/&gt;&amp;gt; say, a&lt;br/&gt;&amp;gt; false coin assignment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For this reason, I recommend that if we were to implement assumeutxo, we&lt;br/&gt;&amp;gt; not&lt;br/&gt;&amp;gt; allow its specification via commandline argument[4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Beyond this risk, I can&amp;#39;t think of material differences in security&lt;br/&gt;&amp;gt; relative to&lt;br/&gt;&amp;gt; assumevalid, though I appeal to the list for help with this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # More fully validating clients&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A particularly exciting use-case for assumeutxo is the possibility of&lt;br/&gt;&amp;gt; mobile&lt;br/&gt;&amp;gt; devices functioning as fully validating nodes with access to the complete&lt;br/&gt;&amp;gt; UTXO&lt;br/&gt;&amp;gt; set (as an alternative to SPV models). The total resource burden needed to&lt;br/&gt;&amp;gt; start a node&lt;br/&gt;&amp;gt; from scratch based on a snapshot is, at time of writing, a ~(3.2GB&lt;br/&gt;&amp;gt; &#43; blocks_to_tip * 4MB) download and a few minutes of processing time, which&lt;br/&gt;&amp;gt; sounds&lt;br/&gt;&amp;gt; manageable for many mobile devices currently in use.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A mobile user could initialize an assumed-valid bitcoin node within an&lt;br/&gt;&amp;gt; hour,&lt;br/&gt;&amp;gt; transact immediately, and complete a pruned full validation of their&lt;br/&gt;&amp;gt; assumed-valid chain over the next few days, perhaps only doing the&lt;br/&gt;&amp;gt; background&lt;br/&gt;&amp;gt; IBD when their device has access to suitable high-bandwidth connections.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If we end up implementing an accumulator-based UTXO scaling design[5][6]&lt;br/&gt;&amp;gt; down&lt;br/&gt;&amp;gt; the road, it&amp;#39;s easy to imagine an analogous process that would allow very&lt;br/&gt;&amp;gt; fast&lt;br/&gt;&amp;gt; startup using an accumulator of a few kilobytes in lieu of a multi-GB&lt;br/&gt;&amp;gt; snapshot.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve created a related issue at our Github repository here:&lt;br/&gt;&amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/15605&#34;&gt;https://github.com/bitcoin/bitcoin/issues/15605&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; and have submitted a draft implementation of snapshot usage via RPC here:&lt;br/&gt;&amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15606&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15606&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d like to discuss here whether this is a good fit for Bitcoin&lt;br/&gt;&amp;gt; conceptually. Concrete&lt;br/&gt;&amp;gt; plans for deployment steps should be discussed in the Github issue, and&lt;br/&gt;&amp;gt; after all&lt;br/&gt;&amp;gt; that my implementation may be reviewed as a sketch of the specific software&lt;br/&gt;&amp;gt; changes necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; James&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&#34;&gt;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&lt;/a&gt;&lt;br/&gt;&amp;gt; [1]: &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]: as tested at height 569895, on a 12 core Intel Xeon Silver 4116 CPU @&lt;br/&gt;&amp;gt; 2.10GHz&lt;br/&gt;&amp;gt; [3]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&#34;&gt;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]: Marco Falke is due credit for this point&lt;br/&gt;&amp;gt; [5]: utreexo: &lt;a href=&#34;https://www.youtube.com/watch?v=edRun-6ubCc&#34;&gt;https://www.youtube.com/watch?v=edRun-6ubCc&lt;/a&gt;&lt;br/&gt;&amp;gt; [6]: Boneh, Bunz, Fisch on accumulators: &lt;a href=&#34;https://eprint.iacr.org/2018/1188&#34;&gt;https://eprint.iacr.org/2018/1188&lt;/a&gt;&lt;br/&gt;&amp;gt; -------------- next part --------------&lt;br/&gt;&amp;gt; An HTML attachment was scrubbed...&lt;br/&gt;&amp;gt; URL: &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/46b25dd8/attachment.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/46b25dd8/attachment.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; End of bitcoin-dev Digest, Vol 47, Issue 6&lt;br/&gt;&amp;gt; ******************************************&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190403/7a1cb47c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190403/7a1cb47c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:17:31Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy6nxh44zndpgwzzas2esa4hhgqzw5f9dm5h0t4695jnrtejfe65czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w7f5xlh</id>
    
      <title type="html">📅 Original date posted:2017-12-20 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy6nxh44zndpgwzzas2esa4hhgqzw5f9dm5h0t4695jnrtejfe65czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w7f5xlh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvpvdes7yugwncekd0hykj5u3aaqtpxcx5alaqlleghyvknn5qt0cuzsekj&#39;&gt;nevent1q…sekj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-12-20&lt;br/&gt;📝 Original message:Hi everyone,&lt;br/&gt;&lt;br/&gt;As some of you know, I am working on a complete open source replacement of&lt;br/&gt;Bitpay for allowing merchant to accept cryptocurrency payments while having&lt;br/&gt;a way to sell automatically.&lt;br/&gt;&lt;br/&gt;A crucial, missing part, is fiat conversion. And I figured out a simple&lt;br/&gt;protocol that exchanges (or adapters) can implement to allow any merchant&lt;br/&gt;to cash out BTC in fiat while giving them the freedom to choose their own&lt;br/&gt;payment processor solution.&lt;br/&gt;&lt;br/&gt;This also have positive impact on scalability: Before, a merchant would&lt;br/&gt;receive the bitcoin from the customer then would send to the exchange,&lt;br/&gt;resulting in two transactions.&lt;br/&gt;With this specification, it would be one transaction.&lt;br/&gt;&lt;br/&gt;Special thanks to anditto and kallewoof for reviewing. I am waiting for&lt;br/&gt;your feedback:&lt;br/&gt;&lt;br/&gt;Github link:&lt;br/&gt;&lt;a href=&#34;https://github.com/NicolasDorier/bips/blob/master/bip-xxx.mediawiki&#34;&gt;https://github.com/NicolasDorier/bips/blob/master/bip-xxx.mediawiki&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;  BIP: XXX&lt;br/&gt;  Layer: Applications&lt;br/&gt;  Title: Crypto Open Exchange Protocol (COX)&lt;br/&gt;  Author: Nicolas Dorier &amp;lt;nicolas.dorier at gmail.com&amp;gt;&lt;br/&gt;  Comments-Summary: No comments yet.&lt;br/&gt;  Comments-URI: &lt;a href=&#34;https://github.com/bitcoin/bips/wiki/Comments:BIP-XXX&#34;&gt;https://github.com/bitcoin/bips/wiki/Comments:BIP-XXX&lt;/a&gt;&lt;br/&gt;  Status: Draft&lt;br/&gt;  Type: Standards Track&lt;br/&gt;  Created: 2017-12-20&lt;br/&gt;  License: BSD-3-Clause&lt;br/&gt;           CC0-1.0&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;==Abstract==&lt;br/&gt;&lt;br/&gt;A simple protocol for decoupling payment processor solutions from exchanges.&lt;br/&gt;&lt;br/&gt;==Motivation==&lt;br/&gt;&lt;br/&gt;Cryptocurrency merchant adoption is mainly driven by availability, ease of&lt;br/&gt;use and means of acceptance.&lt;br/&gt;We call such solutions `Payment Processors`.&lt;br/&gt;&lt;br/&gt;Until now, payment processing solutions fall into one of the two following&lt;br/&gt;categories:&lt;br/&gt;&lt;br/&gt;# Self-hosted with the customer paying in cryptocurrency and the merchant&lt;br/&gt;receiving it directly.&lt;br/&gt;# Centralized, coupled with an exchange feature, with the customer paying&lt;br/&gt;in cryptocurrency to the merchant, and receiving fiat or cryptocurrency on&lt;br/&gt;his exchange account.&lt;br/&gt;&lt;br/&gt;The self-hosted solution has two issues:&lt;br/&gt;&lt;br/&gt;# The merchant becomes vulnerable to the wild volatility of&lt;br/&gt;cryptocurrencies.&lt;br/&gt;# It is wasteful of blockchain space, if the merchant does not pay&lt;br/&gt;suppliers in crypto, as they need a second transaction to change to his&lt;br/&gt;exchange,&lt;br/&gt;&lt;br/&gt;The centralized solution has two issues:&lt;br/&gt;&lt;br/&gt;# It locks-in the merchant to a particular payment processor whose&lt;br/&gt;intentions might not be aligned (e.g. Bitpay who tried to redefine Bitcoin&lt;br/&gt;as being a different chain, without merchant approval)&lt;br/&gt;# It has to deal with local regulations (e.g. Bitpay does not provide fiat&lt;br/&gt;CAD to canadian merchants)&lt;br/&gt;&lt;br/&gt;The goal of this BIP is to specify a simple protocol which makes possible&lt;br/&gt;decoupling of payment processors from exchanges.&lt;br/&gt;&lt;br/&gt;We believe this BIP will gather a lot of interest among local exchanges&lt;br/&gt;which do not have the resources to develop their own payment solutions.&lt;br/&gt;&lt;br/&gt;Their customers can decide which payment processor solution they prefer,&lt;br/&gt;while the exchanges give them a way to protect against cryptocurrency&lt;br/&gt;volatility.&lt;br/&gt;&lt;br/&gt;==Summary==&lt;br/&gt;&lt;br/&gt;The merchant log in to its exchange website, go into &amp;#34;Address sources&amp;#34;&lt;br/&gt;section of it, an click on &amp;#34;Create a new address source&amp;#34;.&lt;br/&gt;&lt;br/&gt;The address source creation wizard asks him questions about what to do when&lt;br/&gt;crypto currency is sent to this the address source. (Cryptocurrency, Market&lt;br/&gt;sell order, limit order of past day average etc...)&lt;br/&gt;&lt;br/&gt;The merchant receives an &amp;#34;address source URI&amp;#34; which they can input inside&lt;br/&gt;the payment processor.&lt;br/&gt;&lt;br/&gt;An exchange compatible with the Crypto Open Exchange Protocol would reply&lt;br/&gt;to any HTTP POST request to this  &amp;#34;address source URI&amp;#34; returning the&lt;br/&gt;following information (more details in the Specification part)&lt;br/&gt;&lt;br/&gt;# A deposit address for accepting a payment&lt;br/&gt;# The current rate&lt;br/&gt;# Optional: If the exchange is willing to take the risk of rate&lt;br/&gt;fluctuation, until when this rate is guaranteed and under which conditions.&lt;br/&gt;&lt;br/&gt;&amp;lt;img src=&amp;#34;bip-xxx/overview.png&amp;#34;&amp;gt;&amp;lt;/img&amp;gt;&lt;br/&gt;&lt;br/&gt;===Interaction===&lt;br/&gt;&lt;br/&gt;* Manny (the &amp;#34;merchant&amp;#34;) wants to accept Bitcoin payments on his e-commerce&lt;br/&gt;website.&lt;br/&gt;* Manny chooses the payment processor &amp;#34;PROCCO&amp;#34; which has a powerful plugin&lt;br/&gt;for his e-commerce website.&lt;br/&gt;* Manny is based in Canada and already has an account on the exchange&lt;br/&gt;&amp;#34;MYCOIN&amp;#34; which supports the Crypto Open Exchange Protocol.&lt;br/&gt;* Manny connects to the exchange website, and creates a new address source.&lt;br/&gt;* In the configuration screen of the address source, for each payment sent&lt;br/&gt;to this address source, Manny decides to keep 30% in Bitcoin and place a&lt;br/&gt;market sell order for the remaining 70% of the amount.&lt;br/&gt;* &amp;#34;MYCOIN&amp;#34; creates the address source, and gives the &amp;#34;address source URI&amp;#34;&lt;br/&gt;to the merchant. (e.g. &lt;a href=&#34;https://example.com/addresssources/abd29ddn92&#34;&gt;https://example.com/addresssources/abd29ddn92&lt;/a&gt;)&lt;br/&gt;* Manny copies the address source URI and goes inside &amp;#34;PROCCO&amp;#34; settings,&lt;br/&gt;and configures his store to use this address source URI.&lt;br/&gt;&lt;br/&gt;Now a customer, Carol, wants to order a brand new phone for 0.01 BTC on&lt;br/&gt;Manny&amp;#39;s store and decides to pay in Bitcoin.&lt;br/&gt;&lt;br/&gt;* The E-Commerce website plugin requests the creation of an invoice from&lt;br/&gt;PROCCO.&lt;br/&gt;* PROCCO queries the &amp;#34;address source URI&amp;#34; and retrieves the rate, the&lt;br/&gt;expiration of this rate and conditions.&lt;br/&gt;* PROCCO can now show the Bitcoin Payment Checkout page.&lt;br/&gt;* Carla pays.&lt;br/&gt;* PROCCO marks the payment as paid and redirects to the e-commerce website.&lt;br/&gt;* MYCOIN, under its own policy (typically after 6 confirmations), credits&lt;br/&gt;Manny&amp;#39;s account of 0.01 BTC and simultaneously creates a market sell order&lt;br/&gt;of 0.007 BTC on behalf of Manny.&lt;br/&gt;&lt;br/&gt;==Specification==&lt;br/&gt;&lt;br/&gt;The payment processor sends a POST request to the &amp;#34;address source URI&amp;#34;, the&lt;br/&gt;response from a Crypto Open Exchange Protocol exchange would be:&lt;br/&gt;&lt;br/&gt;If the exchange does not guarantee the rate:&lt;br/&gt;&lt;br/&gt;    {&lt;br/&gt;        &amp;#34;depositAddress&amp;#34; : &amp;#34;13....abd&amp;#34;,&lt;br/&gt;        &amp;#34;currencyCode&amp;#34; : &amp;#34;CAD&amp;#34;,&lt;br/&gt;        &amp;#34;cryptoCurrencyCode&amp;#34; : &amp;#34;BTC&amp;#34;,&lt;br/&gt;        &amp;#34;rate&amp;#34; : &amp;#34;15600&amp;#34;,&lt;br/&gt;        # When the merchant account get credited on the exchange&lt;br/&gt;        &amp;#34;requiredConfirmations&amp;#34; : blockcount&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If the exchange guarantee the rate:&lt;br/&gt;&lt;br/&gt;    {&lt;br/&gt;        &amp;#34;depositAddress&amp;#34; : &amp;#34;13....abd&amp;#34;,&lt;br/&gt;        &amp;#34;currencyCode&amp;#34; : &amp;#34;CAD&amp;#34;,&lt;br/&gt;        &amp;#34;cryptoCurrencyCode&amp;#34; : &amp;#34;BTC&amp;#34;,&lt;br/&gt;        &amp;#34;rate&amp;#34; : &amp;#34;15600&amp;#34;,&lt;br/&gt;        &amp;#34;requiredConfirmations&amp;#34; : blockcount&lt;br/&gt;        &amp;#34;conditions&amp;#34; :&lt;br/&gt;        {&lt;br/&gt;            # When the transaction should be seen on the blockchain to&lt;br/&gt;guarantee the rate&lt;br/&gt;            &amp;#34;receivedBefore&amp;#34; : timestamp,&lt;br/&gt;            # When the transaction should be confirmed on the blockchain to&lt;br/&gt;guarantee the rate&lt;br/&gt;            &amp;#34;confirmedBefore&amp;#34; : timestamp&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The payment processor is responsible for giving feedback to the customer if&lt;br/&gt;the fees of the received transaction are not enough to guarantee the rate.&lt;br/&gt;&lt;br/&gt;==Note on adoption==&lt;br/&gt;&lt;br/&gt;While local exchanges have incentives to implement this simple protocol, it&lt;br/&gt;is not strictly needed.&lt;br/&gt;&lt;br/&gt;An alternative is to develop an adapter server which expose Crypto Open&lt;br/&gt;Exchange Protocol endpoint and connect to underlying exchange&amp;#39;s API.&lt;br/&gt;&lt;br/&gt;The only downside is that the rate can&amp;#39;t be guaranteed.&lt;br/&gt;&lt;br/&gt;==Copyright==&lt;br/&gt;&lt;br/&gt;This document is dual licensed as BSD 3-clause, and Creative Commons CC0&lt;br/&gt;1.0 Universal.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Nicolas,&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20171220/d0b0422b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20171220/d0b0422b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:08:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv4djxrhmqf45wt6838nmkkk2edqyfphzjskmdzdqvt59cmk40dlczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9weyyr02</id>
    
      <title type="html">📅 Original date posted:2016-05-25 📝 Original message:Open ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv4djxrhmqf45wt6838nmkkk2edqyfphzjskmdzdqvt59cmk40dlczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9weyyr02" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdc5femr36pgzym062dqhywnnva5u0adtldc2wu4glr6k3d77qy4cznc8dp&#39;&gt;nevent1q…c8dp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-25&lt;br/&gt;📝 Original message:Open Asset is a simple and well known colored coin protocol made by Flavien&lt;br/&gt;Charlon, which has been around for more than two years ago.&lt;br/&gt;Open Asset is OP_RETURN to store coin&amp;#39;s color. Since then, the only&lt;br/&gt;modification to the protocol has been for allowing OA data to be into any&lt;br/&gt;push into an OP_RETURN.&lt;br/&gt;&lt;br/&gt;The protocol is here:&lt;br/&gt;&lt;a href=&#34;https://github.com/OpenAssets/open-assets-protocol/blob/master/specification.mediawiki&#34;&gt;https://github.com/OpenAssets/open-assets-protocol/blob/master/specification.mediawiki&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I asked to Flavien Charlon if he was OK if I submit the protocol to the&lt;br/&gt;mailing list before posting.&lt;br/&gt;&lt;br/&gt;Additional BIP number might be required to cover for example the &amp;#34;colored&lt;br/&gt;address&amp;#34; format:&lt;br/&gt;&lt;a href=&#34;https://github.com/OpenAssets/open-assets-protocol/blob/master/address-format.mediawiki&#34;&gt;https://github.com/OpenAssets/open-assets-protocol/blob/master/address-format.mediawiki&lt;/a&gt;&lt;br/&gt;But I will do it in a separate request.&lt;br/&gt;&lt;br/&gt;Here is the core of the Open Asset specification:&lt;br/&gt;&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;  Title: Open Assets Protocol (OAP/1.0)&lt;br/&gt;  Author: Flavien Charlon &amp;lt;flavien at charlon.net&amp;gt;&lt;br/&gt;  Created: 2013-12-12&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;==Abstract==&lt;br/&gt;&lt;br/&gt;This document describes a protocol used for storing and transferring&lt;br/&gt;custom, non-native assets on the Blockchain. Assets are represented by&lt;br/&gt;tokens called colored coins.&lt;br/&gt;&lt;br/&gt;An issuer would first issue colored coins and associate them with a&lt;br/&gt;formal or informal promise that he will redeem the coins according to&lt;br/&gt;terms he has defined. Colored coins can then be transferred using&lt;br/&gt;transactions that preserve the quantity of every asset.&lt;br/&gt;&lt;br/&gt;==Motivation==&lt;br/&gt;&lt;br/&gt;In the current Bitcoin implementation, outputs represent a quantity of&lt;br/&gt;Bitcoin, secured by an output script. With the Open Assets Protocol,&lt;br/&gt;outputs can encapsulate a quantity of a user-defined asset on top of&lt;br/&gt;that Bitcoin amount.&lt;br/&gt;&lt;br/&gt;There are many applications:&lt;br/&gt;&lt;br/&gt;* A company could issue colored coins representing shares. The shares&lt;br/&gt;could then be traded frictionlessly through the Bitcoin&lt;br/&gt;infrastructure.&lt;br/&gt;* A bank could issue colored coins backed by a cash reserve. People&lt;br/&gt;could withdraw and deposit money in colored coins, and trade those, or&lt;br/&gt;use them to pay for goods and services. The Blockchain becomes a&lt;br/&gt;system allowing to transact not only in Bitcoin, but in any currency.&lt;br/&gt;* Locks on cars or houses could be associated with a particular type&lt;br/&gt;of colored coins. The door would only open when presented with a&lt;br/&gt;wallet containing that specific coin.&lt;br/&gt;&lt;br/&gt;==Protocol Overview==&lt;br/&gt;&lt;br/&gt;Outputs using the Open Assets Protocol to store an asset have two new&lt;br/&gt;characteristics:&lt;br/&gt;* The &amp;#39;&amp;#39;&amp;#39;asset ID&amp;#39;&amp;#39;&amp;#39; is a 160 bits hash, used to uniquely identify the&lt;br/&gt;asset stored on the output.&lt;br/&gt;* The &amp;#39;&amp;#39;&amp;#39;asset quantity&amp;#39;&amp;#39;&amp;#39; is an unsigned integer representing how&lt;br/&gt;many units of that asset are stored on the output.&lt;br/&gt;&lt;br/&gt;This document describes how the asset ID and asset quantity of an&lt;br/&gt;output are calculated.&lt;br/&gt;&lt;br/&gt;Each output in the Blockchain can be either colored or uncolored:&lt;br/&gt;* Uncolored outputs have no asset ID and no asset quantity (they are&lt;br/&gt;both undefined).&lt;br/&gt;* Colored outputs have a strictly positive asset quantity, and a&lt;br/&gt;non-null asset ID.&lt;br/&gt;&lt;br/&gt;The ID of an asset is the RIPEMD-160 hash of the SHA-256 hash of the&lt;br/&gt;output script referenced by the first input of the transaction that&lt;br/&gt;initially issued that asset (&amp;lt;code&amp;gt;script_hash =&lt;br/&gt;RIPEMD160(SHA256(script))&amp;lt;/code&amp;gt;). An issuer can reissue more of an&lt;br/&gt;already existing asset as long as they retain the private key for that&lt;br/&gt;asset ID. Assets on two different outputs can only be mixed together&lt;br/&gt;if they have the same asset ID.&lt;br/&gt;&lt;br/&gt;Like addresses, asset IDs can be represented in base 58. They must use&lt;br/&gt;version byte 23 (115 in TestNet3) when represented in base 58. The&lt;br/&gt;base 58 representation of an asset ID therefore starts with the&lt;br/&gt;character &amp;#39;A&amp;#39; in MainNet.&lt;br/&gt;&lt;br/&gt;The process to generate an asset ID and the matching private key is&lt;br/&gt;described in the following example:&lt;br/&gt;# The issuer first generates a private key:&lt;br/&gt;&amp;lt;code&amp;gt;18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725&amp;lt;/code&amp;gt;.&lt;br/&gt;# He calculates the corresponding address:&lt;br/&gt;&amp;lt;code&amp;gt;16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM&amp;lt;/code&amp;gt;.&lt;br/&gt;# Next, he builds the Pay-to-PubKey-Hash script associated to that&lt;br/&gt;address: &amp;lt;code&amp;gt;OP_DUP OP_HASH160&lt;br/&gt;010966776006953D5567439E5E39F86A0D273BEE OP_EQUALVERIFY&lt;br/&gt;OP_CHECKSIG&amp;lt;/code&amp;gt;.&lt;br/&gt;# The script is hashed: &amp;lt;code&amp;gt;36e0ea8e93eaa0285d641305f4c81e563aa570a2&amp;lt;/code&amp;gt;&lt;br/&gt;# Finally, the hash is converted to a base 58 string with checksum&lt;br/&gt;using version byte 23:&lt;br/&gt;&amp;lt;code&amp;gt;ALn3aK1fSuG27N96UGYB1kUYUpGKRhBuBC&amp;lt;/code&amp;gt;.&lt;br/&gt;&lt;br/&gt;The private key from the first step is required to issue assets&lt;br/&gt;identified by the asset ID&lt;br/&gt;&amp;lt;code&amp;gt;ALn3aK1fSuG27N96UGYB1kUYUpGKRhBuBC&amp;lt;/code&amp;gt;. This acts as a&lt;br/&gt;digital signature, and gives the guarantee that nobody else but the&lt;br/&gt;original issuer is able to issue assets identified by this specific&lt;br/&gt;asset ID.&lt;br/&gt;&lt;br/&gt;==Open Assets Transactions==&lt;br/&gt;&lt;br/&gt;Transactions relevant to the Open Assets Protocol must have a special&lt;br/&gt;output called the marker output. This allows clients to recognize such&lt;br/&gt;transactions. Open Assets transactions can be used to issue new&lt;br/&gt;assets, or transfer ownership of assets.&lt;br/&gt;&lt;br/&gt;Transactions that are not recognized as an Open Assets transaction are&lt;br/&gt;considered as having all their outputs uncolored.&lt;br/&gt;&lt;br/&gt;===Marker output===&lt;br/&gt;&lt;br/&gt;The marker output can have a zero or non-zero value. The marker output&lt;br/&gt;starts with the OP_RETURN opcode, and can be followed by any sequence&lt;br/&gt;of opcodes, but it must contain a PUSHDATA opcode containing a&lt;br/&gt;parsable Open Assets marker payload. If multiple parsable PUSHDATA&lt;br/&gt;opcodes exist in the same output, the first one is used, and the other&lt;br/&gt;ones are ignored.&lt;br/&gt;&lt;br/&gt;If multiple valid marker outputs exist in the same transaction, the&lt;br/&gt;first one is used and the other ones are considered as regular&lt;br/&gt;outputs. If no valid marker output exists in the transaction, all&lt;br/&gt;outputs are considered uncolored.&lt;br/&gt;&lt;br/&gt;The payload as defined by the Open Assets protocol has the following format:&lt;br/&gt;&lt;br/&gt;{|&lt;br/&gt;! Field                !! Description !! Size&lt;br/&gt;|-&lt;br/&gt;! OAP Marker           || A tag indicating that this transaction is an&lt;br/&gt;Open Assets transaction. It is always 0x4f41. || 2 bytes&lt;br/&gt;|-&lt;br/&gt;! Version number       || The major revision number of the Open Assets&lt;br/&gt;Protocol. For this version, it is 1 (0x0100). || 2 bytes&lt;br/&gt;|-&lt;br/&gt;! Asset quantity count || A&lt;br/&gt;[&lt;a href=&#34;https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer&#34;&gt;https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer&lt;/a&gt;&lt;br/&gt;var-integer] representing the number of items in the &amp;lt;code&amp;gt;asset&lt;br/&gt;quantity list&amp;lt;/code&amp;gt; field. || 1-9 bytes&lt;br/&gt;|-&lt;br/&gt;! Asset quantity list  || A list of zero or more&lt;br/&gt;[&lt;a href=&#34;http://en.wikipedia.org/wiki/LEB128&#34;&gt;http://en.wikipedia.org/wiki/LEB128&lt;/a&gt; LEB128-encoded] unsigned integers&lt;br/&gt;representing the asset quantity of every output in order (excluding&lt;br/&gt;the marker output). || Variable&lt;br/&gt;|-&lt;br/&gt;! Metadata length      || The&lt;br/&gt;[&lt;a href=&#34;https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer&#34;&gt;https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer&lt;/a&gt;&lt;br/&gt;var-integer] encoded length of the &amp;lt;code&amp;gt;metadata&amp;lt;/code&amp;gt; field. || 1-9&lt;br/&gt;bytes&lt;br/&gt;|-&lt;br/&gt;! Metadata             || Arbitrary metadata to be associated with&lt;br/&gt;this transaction. This can be empty. || Variable&lt;br/&gt;|}&lt;br/&gt;&lt;br/&gt;Possible formats for the &amp;lt;code&amp;gt;metadata&amp;lt;/code&amp;gt; field are outside of&lt;br/&gt;scope of this protocol, and may be described in separate protocol&lt;br/&gt;specifications building on top of this one.&lt;br/&gt;&lt;br/&gt;The &amp;lt;code&amp;gt;asset quantity list&amp;lt;/code&amp;gt; field is used to determine the&lt;br/&gt;asset quantity of each output. Each integer is encoded using variable&lt;br/&gt;length [&lt;a href=&#34;http://en.wikipedia.org/wiki/LEB128&#34;&gt;http://en.wikipedia.org/wiki/LEB128&lt;/a&gt; LEB128] encoding (also&lt;br/&gt;used in [&lt;a href=&#34;https://developers.google.com/protocol-buffers/docs/encoding#varints&#34;&gt;https://developers.google.com/protocol-buffers/docs/encoding#varints&lt;/a&gt;&lt;br/&gt;Google Protocol Buffers]). If the LEB128-encoded asset quantity of any&lt;br/&gt;output exceeds 9 bytes, the marker output is deemed invalid. The&lt;br/&gt;maximum valid asset quantity for an output is 2&amp;lt;sup&amp;gt;63&amp;lt;/sup&amp;gt; - 1&lt;br/&gt;units.&lt;br/&gt;&lt;br/&gt;If the marker output is malformed, it is considered non-parsable.&lt;br/&gt;Coinbase transactions and transactions with zero inputs cannot have a&lt;br/&gt;valid marker output, even if it would be otherwise considered valid.&lt;br/&gt;&lt;br/&gt;If there are less items in the &amp;lt;code&amp;gt;asset quantity list&amp;lt;/code&amp;gt; than&lt;br/&gt;the number of colorable outputs (all the outputs except the marker&lt;br/&gt;output), the outputs in excess receive an asset quantity of zero. If&lt;br/&gt;there are more items in the &amp;lt;code&amp;gt;asset quantity list&amp;lt;/code&amp;gt; than the&lt;br/&gt;number of colorable outputs, the marker output is deemed invalid. The&lt;br/&gt;marker output is always uncolored.&lt;br/&gt;&lt;br/&gt;After the &amp;lt;code&amp;gt;asset quantity list&amp;lt;/code&amp;gt; has been used to assign an&lt;br/&gt;asset quantity to every output, asset IDs are assigned to outputs.&lt;br/&gt;Outputs before the marker output are used for asset issuance, and&lt;br/&gt;outputs after the marker output are used for asset transfer.&lt;br/&gt;&lt;br/&gt;====Example====&lt;br/&gt;&lt;br/&gt;This example illustrates how a marker output is decoded. Assuming the&lt;br/&gt;marker output is output 1:&lt;br/&gt;&lt;br/&gt;    Data in the marker output      Description&lt;br/&gt;    -----------------------------&lt;br/&gt;-------------------------------------------------------------------&lt;br/&gt;    0x6a                           The OP_RETURN opcode.&lt;br/&gt;    0x10                           The PUSHDATA opcode for a 16 bytes payload.&lt;br/&gt;    0x4f 0x41                      The Open Assets Protocol tag.&lt;br/&gt;    0x01 0x00                      Version 1 of the protocol.&lt;br/&gt;    0x03                           There are 3 items in the asset quantity list.&lt;br/&gt;    0xac 0x02 0x00 0xe5 0x8e 0x26  The asset quantity list:&lt;br/&gt;                                   - &amp;#39;0xac 0x02&amp;#39; means output 0 has an&lt;br/&gt;asset quantity of 300.&lt;br/&gt;                                   - Output 1 is skipped and has an&lt;br/&gt;asset quantity of 0&lt;br/&gt;                                     because it is the marker output.&lt;br/&gt;                                   - &amp;#39;0x00&amp;#39; means output 2 has an&lt;br/&gt;asset quantity of 0.&lt;br/&gt;                                   - &amp;#39;0xe5 0x8e 0x26&amp;#39; means output 3&lt;br/&gt;has an asset quantity of 624,485.&lt;br/&gt;                                   - Outputs after output 3 (if any)&lt;br/&gt;have an asset quantity of 0.&lt;br/&gt;    0x04                           The metadata is 4 bytes long.&lt;br/&gt;    0x12 0x34 0x56 0x78            Some arbitrary metadata.&lt;br/&gt;&lt;br/&gt;===Asset issuance outputs===&lt;br/&gt;&lt;br/&gt;All the outputs before the marker output are used for asset issuance.&lt;br/&gt;&lt;br/&gt;All outputs preceding the marker output and with a non-zero asset&lt;br/&gt;quantity get assigned the asset ID defined as the RIPEMD-160 hash of&lt;br/&gt;the SHA-256 hash of the output script referenced by the first input of&lt;br/&gt;the transaction. Outputs that have an asset quantity of zero are&lt;br/&gt;uncolored.&lt;br/&gt;&lt;br/&gt;===Asset transfer outputs===&lt;br/&gt;&lt;br/&gt;All the outputs after the marker output are used for asset transfer.&lt;br/&gt;&lt;br/&gt;The asset IDs of those outputs are determined using a method called&lt;br/&gt;order-based coloring.&lt;br/&gt;&lt;br/&gt;Inputs are seen as a sequence of asset units, each having an asset ID.&lt;br/&gt;Similarly, outputs are seen as a sequence of asset units to be&lt;br/&gt;assigned an asset ID. These two sequences are built by taking each&lt;br/&gt;input or output in order, each of them adding a number of asset units&lt;br/&gt;equal to their asset quantity. The process starts with the first input&lt;br/&gt;of the transaction and the first output after the marker output.&lt;br/&gt;&lt;br/&gt;After the sequences have been built, the asset ID of every asset unit&lt;br/&gt;in the input sequence is assigned to the asset unit at the same&lt;br/&gt;position in the output sequence until all the asset units in the&lt;br/&gt;output sequence have received an asset ID. If there are less asset&lt;br/&gt;units in the input sequence than in the output sequence, the marker&lt;br/&gt;output is considered invalid.&lt;br/&gt;&lt;br/&gt;Finally, for each transfer output, if the asset units forming that&lt;br/&gt;output all have the same asset ID, the output gets assigned that asset&lt;br/&gt;ID. If any output is mixing units with more than one distinct asset&lt;br/&gt;ID, the marker output is considered invalid. Outputs with an asset&lt;br/&gt;quantity of zero are always considered uncolored.&lt;br/&gt;&lt;br/&gt;===Example===&lt;br/&gt;&lt;br/&gt;This is an example of an Open Assets transaction.&lt;br/&gt;&lt;br/&gt;The coloring process starts by retrieving the asset quantities and&lt;br/&gt;asset IDs of the outputs referenced by each input of the transaction.&lt;br/&gt;Then, the marker output is identified. In this example, it is output&lt;br/&gt;2, and the &amp;lt;code&amp;gt;asset quantity list&amp;lt;/code&amp;gt; field contains the&lt;br/&gt;following values:&lt;br/&gt;&lt;br/&gt;    0, 10, 6, 0, 7, 3&lt;br/&gt;&lt;br/&gt;This list is used to assign asset quantities to outputs.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;    Inputs                          Outputs - Initial state&lt;br/&gt;Outputs - Final result&lt;br/&gt;    =============================   =============================&lt;br/&gt;=============================&lt;br/&gt;    Input 0                         Output 0 (Issuance)&lt;br/&gt;Output 0 (Issuance)&lt;br/&gt;      Asset quantity:     3           Asset quantity:     0&lt;br/&gt;Asset quantity:     &amp;lt;NULL&amp;gt;&lt;br/&gt;      Asset ID:           A1          Asset ID:&lt;br/&gt;Asset ID:           &amp;lt;NULL&amp;gt;&lt;br/&gt;    -----------------------------   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;    Input 1                         Output 1 (Issuance)&lt;br/&gt;Output 1 (Issuance)&lt;br/&gt;      Asset quantity:     2           Asset quantity:     10&lt;br/&gt;Asset quantity:     10&lt;br/&gt;      Asset ID:           A1          Asset ID:&lt;br/&gt;Asset ID:           H&lt;br/&gt;    -----------------------------   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;    Input 2                         Output 2 (Marker)&lt;br/&gt;Output 2 (Marker)&lt;br/&gt;      Asset quantity:     &amp;lt;NULL&amp;gt;      Asset quantity:     &amp;lt;NULL&amp;gt;&lt;br/&gt;Asset quantity:     &amp;lt;NULL&amp;gt;&lt;br/&gt;      Asset ID:           &amp;lt;NULL&amp;gt;      Asset ID:           &amp;lt;NULL&amp;gt;&lt;br/&gt;Asset ID:           &amp;lt;NULL&amp;gt;&lt;br/&gt;    -----------------------------   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;    Input 3                         Output 3 (Transfer)&lt;br/&gt;Output 3 (Transfer)&lt;br/&gt;      Asset quantity:     5           Asset quantity:     6&lt;br/&gt;Asset quantity:     6&lt;br/&gt;      Asset ID:           A1          Asset ID:&lt;br/&gt;Asset ID:           A1&lt;br/&gt;    -----------------------------   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;    Input 4                         Output 4 (Transfer)&lt;br/&gt;Output 4 (Transfer)&lt;br/&gt;      Asset quantity:     3           Asset quantity:     0&lt;br/&gt;Asset quantity:     &amp;lt;NULL&amp;gt;&lt;br/&gt;      Asset ID:           A1          Asset ID:&lt;br/&gt;Asset ID:           &amp;lt;NULL&amp;gt;&lt;br/&gt;    -----------------------------   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;    Input 5                         Output 5 (Transfer)&lt;br/&gt;Output 5 (Transfer)&lt;br/&gt;      Asset quantity:     9           Asset quantity:     7&lt;br/&gt;Asset quantity:     7&lt;br/&gt;      Asset ID:           A2          Asset ID:&lt;br/&gt;Asset ID:           A1&lt;br/&gt;    =============================   -----------------------------&lt;br/&gt;-----------------------------&lt;br/&gt;                                    Output 6 (Transfer)&lt;br/&gt;Output 6 (Transfer)&lt;br/&gt;                                      Asset quantity:     3&lt;br/&gt;Asset quantity:     3&lt;br/&gt;                                      Asset ID:&lt;br/&gt;Asset ID:           A2&lt;br/&gt;                                    =============================&lt;br/&gt;=============================&lt;br/&gt;&lt;br/&gt;Outputs are colored from the first to the last. Outputs before the&lt;br/&gt;marker output are issuance outputs:&lt;br/&gt;* Output 0 has an asset quantity of zero, so it is considered uncolored.&lt;br/&gt;* Output 1 gets assigned the asset ID defined by &amp;lt;code&amp;gt;H =&lt;br/&gt;RIPEMD160(SHA256((S))&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; is the output script&lt;br/&gt;referenced by the first input of the transaction (input 0).&lt;br/&gt;&lt;br/&gt;Output 2 is the marker output, separating issuance outputs from&lt;br/&gt;transfer outputs. The marker output is always uncolored.&lt;br/&gt;&lt;br/&gt;Transfer outputs are then colored:&lt;br/&gt;* Output 3 receives 3 units from input 0, 2 units from input 1, 0 unit&lt;br/&gt;from input 2 and 1 unit from input 3. All the 6 units have the same&lt;br/&gt;asset ID &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt;, so the asset ID &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt; is assigned&lt;br/&gt;to output 3.&lt;br/&gt;* Output 4 has an asset quantity of zero, so it is considered uncolored.&lt;br/&gt;* Output 5 receives the remaining 4 units of input 3, and 3 units from&lt;br/&gt;input 4. All the 7 units have the same asset ID &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt;, so&lt;br/&gt;the asset ID &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt; is assigned to output 5.&lt;br/&gt;* Output 6 receives the first 3 units of input 5. Input 5 has the&lt;br/&gt;asset ID &amp;lt;code&amp;gt;A2&amp;lt;/code&amp;gt; so the asset ID &amp;lt;code&amp;gt;A2&amp;lt;/code&amp;gt; is assigned&lt;br/&gt;to output 6.&lt;br/&gt;&lt;br/&gt;==Rationale==&lt;br/&gt;&lt;br/&gt;This approach offers a number of desirable characteristics:&lt;br/&gt;&lt;br/&gt;# Economical: The cost of issuing or transferring an asset is&lt;br/&gt;completely independent from the quantity issued or transferred.&lt;br/&gt;# Clients have a way to identify colored outputs simply by traversing&lt;br/&gt;the Blockchain, without needing to be fed external data. Transactions&lt;br/&gt;relevant to the Open Assets Protocol are identified by the special&lt;br/&gt;marker output.&lt;br/&gt;# It is possible to determine the asset ID and asset quantity of an&lt;br/&gt;output by traversing only a limited number of transactions.&lt;br/&gt;# Assets are pseudonymous. They are represented by an asset ID, which&lt;br/&gt;is enough to identify each asset uniquely, while still providing an&lt;br/&gt;adequate level of anonymity for both the issuer and users of the&lt;br/&gt;asset.&lt;br/&gt;# This approach uses the recommended way to embed data in the&lt;br/&gt;Blockchain (OP_RETURN), and therefore does not pollute the UTXO.&lt;br/&gt;# The whole cryptographic infrastructure that Bitcoin provides for&lt;br/&gt;securing the spending of outputs is reused for securing the ability to&lt;br/&gt;issue assets. There is a symmetry between &amp;#39;&amp;#39;an address &#43; private key&amp;#39;&amp;#39;&lt;br/&gt;as a way to spend Bitcoins, and &amp;#39;&amp;#39;an address &#43; private key&amp;#39;&amp;#39; as a way&lt;br/&gt;to issue assets.&lt;br/&gt;# Generating a new type of asset is as simple as generating an&lt;br/&gt;address, can be done offline, and for free.&lt;br/&gt;# Reissuing more of an existing asset is easy and can be done quickly&lt;br/&gt;and at no cost (except for the transaction fee) as long as the issuer&lt;br/&gt;retains the private key for the asset ID.&lt;br/&gt;# Single-issuance assets can be achieved by destroying the private key&lt;br/&gt;used to issue the asset immediately after issuing it.&lt;br/&gt;# Since issuance is based on standard Bitcoin output scripts, it is&lt;br/&gt;possible to create an asset that requires multiple signatures for&lt;br/&gt;issuance.&lt;br/&gt;&lt;br/&gt;==Compatibility==&lt;br/&gt;&lt;br/&gt;For backward compatibility reasons, we consider than an older client&lt;br/&gt;is allowed to see a colored output as uncolored.&lt;br/&gt;&lt;br/&gt;===Backward compatibility with existing Bitcoin protocol===&lt;br/&gt;&lt;br/&gt;The Open Assets Protocol sits on top of the Bitcoin protocol. It does&lt;br/&gt;not require any change to the existing Bitcoin protocol. Existing&lt;br/&gt;clients that don&amp;#39;t support the Open Assets Protocol will see all&lt;br/&gt;outputs as uncolored, and will not be able to perform transfer&lt;br/&gt;transactions.&lt;br/&gt;&lt;br/&gt;===Compatibility between different versions of OAP===&lt;br/&gt;&lt;br/&gt;New versions with the same major version number (e.g. 1.1) should be&lt;br/&gt;backwards compatible. New versions with a different major version&lt;br/&gt;number (e.g. 2.0) can introduce breaking changes, but transactions&lt;br/&gt;created by newer clients will be identifiable by a different version&lt;br/&gt;number in the output 0 of genesis and transfer transactions.&lt;br/&gt;&lt;br/&gt;==Copyright==&lt;br/&gt;&lt;br/&gt;This document has been placed in the public domain.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Nicolas Dorier,&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20160526/7b874290/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20160526/7b874290/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:50:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvnpme978autaea4phe5s70m552ts5t8csr0ly50k5ke7vjsspdkqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wu900ae</id>
    
      <title type="html">📅 Original date posted:2016-05-08 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvnpme978autaea4phe5s70m552ts5t8csr0ly50k5ke7vjsspdkqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wu900ae" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgfwvhdrg4r45ewj9shamre3dgpj5tdc5ulneghvlz7k24df8zutsmjnfeu&#39;&gt;nevent1q…nfeu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-08&lt;br/&gt;📝 Original message:Interesting, can you provide some historical context around it so I&lt;br/&gt;understand better ?&lt;br/&gt;Actually I know that your relay&amp;#39;s protocol (and about what I see in&lt;br/&gt;abstract) was about optimizing propagation time and not bandwidth.&lt;br/&gt;&lt;br/&gt;And I agree that bandwidth is what need to be optimized for nodes.&lt;br/&gt;So far there was two other proposal that I know only from name and theory&lt;br/&gt;which is xthin block and ILBT which would also have decreased bandwidth.&lt;br/&gt;&lt;br/&gt;Can you quickly describe how does it compares to them ?&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20160508/eaaba9dc/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20160508/eaaba9dc/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:50:23Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8ht26l72ww3f539caay65n0v7fm5l08wq2m9yyvv8p3dg7d3gvkgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wltexeu</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8ht26l72ww3f539caay65n0v7fm5l08wq2m9yyvv8p3dg7d3gvkgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wltexeu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg0aqkpjfndkald7gnlvkxqmagpsdepmgzetpsajll6fw9l6cm3nsm3xkmc&#39;&gt;nevent1q…xkmc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:Decision making is not the goal of this site, it is only a way to see&lt;br/&gt;various pros and cons of various devs on various proposals in a single&lt;br/&gt;place.&lt;br/&gt;This is for the community to have a coherent view about what you are&lt;br/&gt;talking about now spread into reddit/mailing/forums.&lt;br/&gt;&lt;br/&gt;If you did not analyzed a proposal yet, you don&amp;#39;t have to fill out your&lt;br/&gt;opinion veto or approval.&lt;br/&gt;It is only to show what you would you &amp;#34;approve&amp;#34; and what you would &amp;#34;veto&amp;#34;,&lt;br/&gt;after your analysis.&lt;br/&gt;Then point out all the discussions in the opinion section that lead you to&lt;br/&gt;your conclusion.&lt;br/&gt;&lt;br/&gt;You can change edit your position as you progress into your analysis and as&lt;br/&gt;new BIP get redacted.&lt;br/&gt;I&amp;#39;m eager to include the new proposals.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2015 at 1:45 PM, Gregory Maxwell &amp;lt;gmaxwell at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wed, Aug 19, 2015 at 4:57 AM, Nicolas Dorier via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; I created a small website which show a chart of your approvals about&lt;br/&gt;&amp;gt; various&lt;br/&gt;&amp;gt; &amp;gt; BIPs (which you must fill by yourself with a signed pgp message)&lt;br/&gt;&amp;gt; &amp;gt; For each BIP, you can fill if you approve or not, and give comments.&lt;br/&gt;&amp;gt; (HTML&lt;br/&gt;&amp;gt; &amp;gt; accepted, so you can link stuff you your posts)&lt;br/&gt;&amp;gt; &amp;gt; It would help the community a lot, so I hope you will do it !&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m open to add other important devs, big miners, or other proposal that&lt;br/&gt;&amp;gt; I&lt;br/&gt;&amp;gt; &amp;gt; missed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this is a bit well, sad, at the moment--  a basic principle in&lt;br/&gt;&amp;gt; sound decision making is that one should try to withhold judgement&lt;br/&gt;&amp;gt; until after the analysis and options are laid out to avoid prematurely&lt;br/&gt;&amp;gt; laying down &amp;#34;battle lines&amp;#34; which then they&amp;#39;re socially and politically&lt;br/&gt;&amp;gt; committed to a particular answer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are several other BIPs in the works right now that aren&amp;#39;t out&lt;br/&gt;&amp;gt; there yet, as well (as presumably) new insight from the workshop. It&lt;br/&gt;&amp;gt; would be a shame if these things would be for naught because of being&lt;br/&gt;&amp;gt; decided prematurely.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/82dc4ac7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/82dc4ac7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:36:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8adwv2mrl5qzhaaxevs8ldtfjzs9uz8udvm5h6wdzdxk4nhv2hrgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wwk6jjn</id>
    
      <title type="html">📅 Original date posted:2015-08-19 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8adwv2mrl5qzhaaxevs8ldtfjzs9uz8udvm5h6wdzdxk4nhv2hrgzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wwk6jjn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp8l3qqe44d0zmur90jsg3qtd6uwjdcwc3jtmvxhduxn77uq3sfkqhtnfzh&#39;&gt;nevent1q…nfzh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-19&lt;br/&gt;📝 Original message:I created a small website which show a chart of your approvals about&lt;br/&gt;various BIPs (which you must fill by yourself with a signed pgp message)&lt;br/&gt;&lt;br/&gt;For each BIP, you can fill if you approve or not, and give comments. (HTML&lt;br/&gt;accepted, so you can link stuff you your posts)&lt;br/&gt;&lt;br/&gt;It would help the community a lot, so I hope you will do it !&lt;br/&gt;I&amp;#39;m open to add other important devs, big miners, or other proposal that I&lt;br/&gt;missed.&lt;br/&gt;&lt;br/&gt;Please, respond on BTC Talk or github. (I don&amp;#39;t read the mailing anymore&lt;br/&gt;because of the spam :( )&lt;br/&gt;&lt;br/&gt;Link : &lt;a href=&#34;http://bipsxdevs.azurewebsites.net/&#34;&gt;http://bipsxdevs.azurewebsites.net/&lt;/a&gt;&lt;br/&gt;BtcTalk Topic : &lt;a href=&#34;https://bitcointalk.org/index.php?topic=1156164&#34;&gt;https://bitcointalk.org/index.php?topic=1156164&lt;/a&gt;&lt;br/&gt;Github : &lt;a href=&#34;https://github.com/NicolasDorier/BIPxDevs&#34;&gt;https://github.com/NicolasDorier/BIPxDevs&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150819/247efaba/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150819/247efaba/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:36:49Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsva5x65863q25rp4k5nh3s3tp34hzwnk935n6zmy84zjq25v348rczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w8u4t2g</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsva5x65863q25rp4k5nh3s3tp34hzwnk935n6zmy84zjq25v348rczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w8u4t2g" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszgx3t7j53nvc444fwnznee8pwtgsjv97mtqc56qu0mpdagpsms8c0jec34&#39;&gt;nevent1q…ec34&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:Thanks, btcdrak, I just added the column and you in the list. (looks nicer)&lt;br/&gt;&lt;br/&gt;What I am calling &amp;#34;core devs&amp;#34; in the website is only &amp;#34;commit access&lt;br/&gt;people&amp;#34;, should I rename this group ?&lt;br/&gt;I just want a way to improve readability of the website by grouping, I am&lt;br/&gt;open to all subjection on different way of grouping.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m good for adding Mike Hearn, Adam Back, Mark Friedenback, Jorge Timons,&lt;br/&gt;Nick Szabo, Meni Rosenfeld, Charlee Lee.&lt;br/&gt;&lt;br/&gt;If some of you are reading this list, please send me your PGP public key.&lt;br/&gt;For the others, any idea where I can hunt their PGP public keys ?&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2015 at 12:10 PM, Btc Drak &amp;lt;btcdrak at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I was looking at this site recently and it&amp;#39;s not very clear that by&lt;br/&gt;&amp;gt; clicking the name you get their opinion. I would make that a separate&lt;br/&gt;&amp;gt; column stated, Technical Opinion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you need to include more of the developers/technical people,&lt;br/&gt;&amp;gt; Adam Back, Mark Friedenback, Jorge Timons, (all of who are core&lt;br/&gt;&amp;gt; developers). You need&lt;br/&gt;&amp;gt; Peter Todd is a core dev btw, as is thebluematt.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You need other experts, I would include Nick Szabo, Meni Rosenfeld,&lt;br/&gt;&amp;gt; Charlie Lee might be a good one. You should get the pools on there&lt;br/&gt;&amp;gt; too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You&amp;#39;re missing Mike Hearn of course.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My key is 0xE5D138F5E73A1AF2&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Aug 19, 2015 at 5:57 AM, Nicolas Dorier via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; I created a small website which show a chart of your approvals about&lt;br/&gt;&amp;gt; various&lt;br/&gt;&amp;gt; &amp;gt; BIPs (which you must fill by yourself with a signed pgp message)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For each BIP, you can fill if you approve or not, and give comments.&lt;br/&gt;&amp;gt; (HTML&lt;br/&gt;&amp;gt; &amp;gt; accepted, so you can link stuff you your posts)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It would help the community a lot, so I hope you will do it !&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m open to add other important devs, big miners, or other proposal that&lt;br/&gt;&amp;gt; I&lt;br/&gt;&amp;gt; &amp;gt; missed.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Please, respond on BTC Talk or github. (I don&amp;#39;t read the mailing anymore&lt;br/&gt;&amp;gt; &amp;gt; because of the spam :( )&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Link : &lt;a href=&#34;http://bipsxdevs.azurewebsites.net/&#34;&gt;http://bipsxdevs.azurewebsites.net/&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; BtcTalk Topic : &lt;a href=&#34;https://bitcointalk.org/index.php?topic=1156164&#34;&gt;https://bitcointalk.org/index.php?topic=1156164&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; Github : &lt;a href=&#34;https://github.com/NicolasDorier/BIPxDevs&#34;&gt;https://github.com/NicolasDorier/BIPxDevs&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/0aaf53d6/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/0aaf53d6/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:48:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszgx3t7j53nvc444fwnznee8pwtgsjv97mtqc56qu0mpdagpsms8czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9we3j9u9</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:My UX ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszgx3t7j53nvc444fwnznee8pwtgsjv97mtqc56qu0mpdagpsms8czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9we3j9u9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf6ezvmwpf8ahcu4e65szejek23cevnjjyklkvcy9z7k0c5mxzldq0ej52y&#39;&gt;nevent1q…j52y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:My UX skills are lacking a bit. You can edit all your thoughts about each&lt;br/&gt;BIP, HTML is accepted, so you can link to other posts you made somewhere&lt;br/&gt;else.&lt;br/&gt;When you click on a cell in the grid, it forward you to the page that the&lt;br/&gt;dev edited for this BIP.&lt;br/&gt;&lt;br/&gt;This website is not only to say &amp;#34;approve&amp;#34;, &amp;#34;disapprove&amp;#34;, nor is it about a&lt;br/&gt;formal process for reaching agreement.&lt;br/&gt;This is a tool, a portal, which educates people, and permit you to link all&lt;br/&gt;of your thoughts about the various BIP and show it to others.&lt;br/&gt;&lt;br/&gt;With the opinions browse able from the same website, you will notice in a&lt;br/&gt;gleam as soon as one of those proposal reach consensus. (I think SIPA&amp;#39;s BIP&lt;br/&gt;has a chance to do so, but nobody knows it yet)&lt;br/&gt;Sadly, the most controversial is a BIP, the noisier it is, at the expense&lt;br/&gt;of those which are not. (like sipa&amp;#39;s one).&lt;br/&gt;&lt;br/&gt;It irritates me a lot that the debate in public mind is &amp;#34;XT or not&amp;#34; /&lt;br/&gt;&amp;#34;Bigger blocks or not&amp;#34;, when in reality there is lots of different&lt;br/&gt;proposals that might also reach consensus but are lost in the noise.&lt;br/&gt;I will add any BIP that at least one voter approve and want to push forward.&lt;br/&gt;I plan to add merchants/wallet providers/mining pools later.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2015 at 6:35 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; -----BEGIN PGP SIGNED MESSAGE-----&lt;br/&gt;&amp;gt; Hash: SHA512&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 21 August 2015 02:31:51 GMT-07:00, Btc Drak &amp;lt;btcdrak at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;On Fri, Aug 21, 2015 at 10:29 AM, Peter Todd via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; What might be valuable is to ask devs to explain what their threat&lt;br/&gt;&amp;gt; &amp;gt;models are, what should be at the root of their thinking about the&lt;br/&gt;&amp;gt; &amp;gt;blocksize.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;That&amp;#39;s exactly what the &amp;#34;Technical Opinion&amp;#34; column is for.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What if could be used for; theres value in being more explicit.&lt;br/&gt;&amp;gt; -----BEGIN PGP SIGNATURE-----&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; iQE9BAEBCgAnIBxQZXRlciBUb2RkIDxwZXRlQHBldGVydG9kZC5vcmc&#43;BQJV1vDG&lt;br/&gt;&amp;gt; AAoJEMCF8hzn9Lncz4MIAIMtLLA4q7KJiwrYrpjFWme1ys9iyPZiADJGQWG3qKlH&lt;br/&gt;&amp;gt; Q4pEcwWt69jfTUCjLYfegsDW4eEMarejs568iSF70hvGB4OPWrYK3YiM1cWlWtDD&lt;br/&gt;&amp;gt; seN3G/4dJjehL7h1Nz&#43;/OTjTlePkguHctRlJTavel8sI7fg356iMJc1Ggm5Q1ZFl&lt;br/&gt;&amp;gt; CLrivr/CEO7Qk9Uo5ewhnwConKjLygSyv67SSaMJW7pZB06uTX6M3lk11c/RB/C6&lt;br/&gt;&amp;gt; JKPqxkvOmNIX9U8S/G3Y2pYf3/up72IhP0Ugp31iOsz629B2WvEsDYu/0SP61&#43;oZ&lt;br/&gt;&amp;gt; za9HrP2g8OsxVq6SUD3MukmbRVKklvcnro4vk5sOlYI=&lt;br/&gt;&amp;gt; =Jfl&#43;&lt;br/&gt;&amp;gt; -----END PGP SIGNATURE-----&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150822/e8603b17/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150822/e8603b17/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:48:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr2f375e9h72hrskx6dmc0ayqr54ucm0zk9w7azdzckhqswme742czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wx4kypa</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr2f375e9h72hrskx6dmc0ayqr54ucm0zk9w7azdzckhqswme742czyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wx4kypa" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0mqel8pk95d8g2x2wds7ae4kw9kcws05r4kty0fhvwuce2krzfusdf93e2&#39;&gt;nevent1q…93e2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:Decision making is not the goal of this site, it is only a way to see&lt;br/&gt;various pros and cons of various devs on various proposals in a single&lt;br/&gt;place.&lt;br/&gt;This is for the community to have a coherent view about what you are&lt;br/&gt;talking about now spread into reddit/mailing/forums.&lt;br/&gt;&lt;br/&gt;If you did not analyzed a proposal yet, you don&amp;#39;t have to fill out your&lt;br/&gt;opinion veto or approval.&lt;br/&gt;It is only to show what you would you &amp;#34;approve&amp;#34; and what you would &amp;#34;veto&amp;#34;,&lt;br/&gt;after your analysis.&lt;br/&gt;Then point out all the discussions in the opinion section that lead you to&lt;br/&gt;your conclusion.&lt;br/&gt;&lt;br/&gt;You can change edit your position as you progress into your analysis and as&lt;br/&gt;new BIP get redacted.&lt;br/&gt;I&amp;#39;m eager to include the new proposals.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2015 at 1:45 PM, Gregory Maxwell &amp;lt;gmaxwell at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wed, Aug 19, 2015 at 4:57 AM, Nicolas Dorier via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; I created a small website which show a chart of your approvals about&lt;br/&gt;&amp;gt; various&lt;br/&gt;&amp;gt; &amp;gt; BIPs (which you must fill by yourself with a signed pgp message)&lt;br/&gt;&amp;gt; &amp;gt; For each BIP, you can fill if you approve or not, and give comments.&lt;br/&gt;&amp;gt; (HTML&lt;br/&gt;&amp;gt; &amp;gt; accepted, so you can link stuff you your posts)&lt;br/&gt;&amp;gt; &amp;gt; It would help the community a lot, so I hope you will do it !&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m open to add other important devs, big miners, or other proposal that&lt;br/&gt;&amp;gt; I&lt;br/&gt;&amp;gt; &amp;gt; missed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this is a bit well, sad, at the moment--  a basic principle in&lt;br/&gt;&amp;gt; sound decision making is that one should try to withhold judgement&lt;br/&gt;&amp;gt; until after the analysis and options are laid out to avoid prematurely&lt;br/&gt;&amp;gt; laying down &amp;#34;battle lines&amp;#34; which then they&amp;#39;re socially and politically&lt;br/&gt;&amp;gt; committed to a particular answer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are several other BIPs in the works right now that aren&amp;#39;t out&lt;br/&gt;&amp;gt; there yet, as well (as presumably) new insight from the workshop. It&lt;br/&gt;&amp;gt; would be a shame if these things would be for naught because of being&lt;br/&gt;&amp;gt; decided prematurely.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/82dc4ac7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/82dc4ac7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:48:22Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdt7nz32a68lx2ja83za2gc8t3qadtdj0msautfpve9kny0du7xnczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w3lzc9r</id>
    
      <title type="html">📅 Original date posted:2015-08-19 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdt7nz32a68lx2ja83za2gc8t3qadtdj0msautfpve9kny0du7xnczyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9w3lzc9r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgzcf22tjklgq976ld9ngyk5tv0uyz7qphum0dg9s897qwm9c5uzg6pk840&#39;&gt;nevent1q…k840&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-19&lt;br/&gt;📝 Original message:I created a small website which show a chart of your approvals about&lt;br/&gt;various BIPs (which you must fill by yourself with a signed pgp message)&lt;br/&gt;&lt;br/&gt;For each BIP, you can fill if you approve or not, and give comments. (HTML&lt;br/&gt;accepted, so you can link stuff you your posts)&lt;br/&gt;&lt;br/&gt;It would help the community a lot, so I hope you will do it !&lt;br/&gt;I&amp;#39;m open to add other important devs, big miners, or other proposal that I&lt;br/&gt;missed.&lt;br/&gt;&lt;br/&gt;Please, respond on BTC Talk or github. (I don&amp;#39;t read the mailing anymore&lt;br/&gt;because of the spam :( )&lt;br/&gt;&lt;br/&gt;Link : &lt;a href=&#34;http://bipsxdevs.azurewebsites.net/&#34;&gt;http://bipsxdevs.azurewebsites.net/&lt;/a&gt;&lt;br/&gt;BtcTalk Topic : &lt;a href=&#34;https://bitcointalk.org/index.php?topic=1156164&#34;&gt;https://bitcointalk.org/index.php?topic=1156164&lt;/a&gt;&lt;br/&gt;Github : &lt;a href=&#34;https://github.com/NicolasDorier/BIPxDevs&#34;&gt;https://github.com/NicolasDorier/BIPxDevs&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150819/247efaba/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150819/247efaba/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:48:21Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9znp2d0t8tdkgw6qygwt3gh8kvrde9cwxs99r0smcs5jua9l9yyqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wh4pldr</id>
    
      <title type="html">📅 Original date posted:2015-01-28 📝 Original message:Mike, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9znp2d0t8tdkgw6qygwt3gh8kvrde9cwxs99r0smcs5jua9l9yyqzyzls2jxuptfrn60puza68jtfvvk76sp2dqy3ehsmyxsgjh5shjd9wh4pldr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswjx49g8t0pjhe20m2yks6xnmefdesjkmjchgr87jr7f3fd43mg8qryzuer&#39;&gt;nevent1q…zuer&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-01-28&lt;br/&gt;📝 Original message:Mike, I am not denying it is impossible to do all of that.&lt;br/&gt;Just that it is not a trivial stuff to do to make it works everywhere, and&lt;br/&gt;I think that it is not a good thing for a client side technology.&lt;br/&gt;BIP70 has its use, and I understand why there is case where it is good to&lt;br/&gt;ship the certs in the message and not depends on the transport.&lt;br/&gt;&lt;br/&gt;But a standard that just use JSON and HTTPS, even if less flexible that&lt;br/&gt;BIP70, would make it easier and sufficient for today&amp;#39;s use case.&lt;br/&gt;&lt;br/&gt;On Wed, Jan 28, 2015 at 5:55 PM, Mike Hearn &amp;lt;mike at plan99.net&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; My point is not that there is a limitation in BIP70. My point is that you&lt;br/&gt;&amp;gt;&amp;gt; put the burden of certificate verification on developer&amp;#39;s shoulder when we&lt;br/&gt;&amp;gt;&amp;gt; can just leverage built in HTTPS support of the platform.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Platforms that support HTTPS but not certificate handling are rare - I&lt;br/&gt;&amp;gt; know HTML5 is such a platform but such apps are inherently dependent on the&lt;br/&gt;&amp;gt; server anyway and the server can just do the parsing and validation work&lt;br/&gt;&amp;gt; itself. If WinRT is such a platform, OK, too bad.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The embedding of the certificates is not arbitrary or pointless, by the&lt;br/&gt;&amp;gt; way. It&amp;#39;s there for a very good reason - it makes the signed payment&lt;br/&gt;&amp;gt; request verifiable by third parties. Effectively you can store the signed&lt;br/&gt;&amp;gt; message and present it later to someone else, it&amp;#39;s undeniable. Combined&lt;br/&gt;&amp;gt; with the transactions and merkle branches linking them to the block chain,&lt;br/&gt;&amp;gt; what you have is a form of digital receipt ... a proof of purchase that can&lt;br/&gt;&amp;gt; be automatically verified as legitimate. This has all kinds of use cases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Because of how HTTPS works, you can&amp;#39;t easily prove to a third party that a&lt;br/&gt;&amp;gt; server gave you a piece of data. Doing so requires staggeringly complex&lt;br/&gt;&amp;gt; hacks (see tls notary) and when we designed BIP70, those hacks didn&amp;#39;t even&lt;br/&gt;&amp;gt; exist. So we&amp;#39;d lose the benefit of having a digitally signed request.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Additionally, doing things this way means BIP70 requests can be signed by&lt;br/&gt;&amp;gt; things which are not HTTPS servers. For example you can sign with an email&lt;br/&gt;&amp;gt; address cert, an EV certificate i.e. a company, a certificate issued by&lt;br/&gt;&amp;gt; some user forum, whatever else we end up wanting. Not every payment&lt;br/&gt;&amp;gt; recipient can be identified by a domain name &#43; dynamic session.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, if you want to use your plateform&amp;#39;s store, then you are toasted&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That&amp;#39;s a bit melodramatic. BitcoinJ is able to use the Android, JRE,&lt;br/&gt;&amp;gt; Windows and Mac certificate stores all using the same code or very minor&lt;br/&gt;&amp;gt; variants on it (e.g. on Mac you have to specify you want the system store&lt;br/&gt;&amp;gt; but it&amp;#39;s a one-liner).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, that&amp;#39;s not *every* platform. Some will require custom binding glue&lt;br/&gt;&amp;gt; and it depends what abstractions and languages you are using.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Have you tried to do that on windows RT and IOS ? I tried, and I quickly&lt;br/&gt;&amp;gt;&amp;gt; stopped doing that since it is not worth the effort. (Frankly I am not even&lt;br/&gt;&amp;gt;&amp;gt; sure you can on win rt, since the API is a stripped down version of windows)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is code to do iOS using the Apple APIs here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/voisine/breadwallet/blob/master/BreadWallet/BRPaymentProtocol.m#L391&#34;&gt;https://github.com/voisine/breadwallet/blob/master/BreadWallet/BRPaymentProtocol.m#L391&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Why have you not heard about the problem ? (until now, because I have&lt;br/&gt;&amp;gt;&amp;gt; this problem because I need to have the same codebase on&lt;br/&gt;&amp;gt;&amp;gt; winrt/win/android/ios/tablets)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; WinRT is a minority platform in the extreme, and all the other platforms&lt;br/&gt;&amp;gt; you mentioned have the necessary APIs. Java abstracts you from them. So I&lt;br/&gt;&amp;gt; think you are encountering this problem because you desire to target WinRT&lt;br/&gt;&amp;gt; and other platforms with a single codebase. That&amp;#39;s an unusual constraint.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; AFAIK the only other people who encountered this are BitPay, because they&lt;br/&gt;&amp;gt; want to do everything in Javascript which doesn&amp;#39;t really provide any major&lt;br/&gt;&amp;gt; APIs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Also, you bundle mozilla&amp;#39;s store in bitcoinj, what happen when the store&lt;br/&gt;&amp;gt;&amp;gt; change and your customer have not intent to use bitcoinj new version ? by&lt;br/&gt;&amp;gt;&amp;gt; leveraging the plateform you benefit from automatic updates.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, there are pros and cons to bundling a custom root store.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Also, does java stores deals with certificate revocations ? sure you can&lt;br/&gt;&amp;gt;&amp;gt; theorically code that too... or just let the plateform deals with it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It can do OCSP checks, yes, although I believe no wallets currently do so.&lt;br/&gt;&amp;gt; A better solution would be to implement an OCSP stapling extension to BIP70&lt;br/&gt;&amp;gt; though.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150128/0b7e5cdf/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150128/0b7e5cdf/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:28:44Z</updated>
  </entry>

</feed>