<?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/npub1glk4wtcgyl40v0zr2sz4vsxg5c00zx3ffrf3amr362pgx3fcd39q8l5ays.rss" />
  <link href="https://nostr.ae/npub1glk4wtcgyl40v0zr2sz4vsxg5c00zx3ffrf3amr362pgx3fcd39q8l5ays" />
  <id>https://nostr.ae/npub1glk4wtcgyl40v0zr2sz4vsxg5c00zx3ffrf3amr362pgx3fcd39q8l5ays</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqstsatyd7ld706d0fvuewam8fjflcmnfax0ngc0yf9p5ael5t0vgsczypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky53d9q7u</id>
    
      <title type="html">📅 Original date posted:2022-08-25 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstsatyd7ld706d0fvuewam8fjflcmnfax0ngc0yf9p5ael5t0vgsczypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky53d9q7u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrp7xzrfs9t8m49ehtl86cf8u46csy8sm4t08tkq5l0qfjdrd30yqg7fl5f&#39;&gt;nevent1q…fl5f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-25&lt;br/&gt;📝 Original message:&amp;gt; Not only is JSON limited to editing only through specific software or text editors, but (in the latter case) it is fragile enough that a single missing character can cause an entire file to fail parsing. CSV is more forgiving in this regard.&lt;br/&gt;&lt;br/&gt;I think quite simply: A forgiving format is not appropriate for a standard.&lt;br/&gt;&lt;br/&gt;It&amp;#39;d be hard to understate how much extra and pointless effort it creates for everyone, and every implementation ends up creating its own defacto standard for what it produces and accepts. Even doing something as simple as adding an extra column will not be possible in the future because it&amp;#39;ll break comparability with previous parsers.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve literally worked on projects where the csv parser has evolved into scan-ahead to use heuristics to understand &amp;#34;rules&amp;#34; of a csv file, and then do line-by-line heuristics to override those rules in pathological cases. Makes a bit of sense when you&amp;#39;re trying to achieve 30 years of backwards compatibility. Doesn&amp;#39;t make sense for much else..&lt;br/&gt;&lt;br/&gt;If your application users really like csv, then introduce an application-specific import-from-csv and export-to-csv with your own rules.&lt;br/&gt;-Ryan&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Thursday, August 25th, 2022 at 1:59 AM, Craig Raw &amp;lt;craigraw at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thanks for your thoughts Ryan.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Without reference to the quality feedback on this proposal, I was aware when submitting it for review that it provides an excellent opportunity for bike shedding. As developers, we have all experienced frustration with data formats. One thing that I did not perhaps make clear enough is that this format is not solely intended for developers, but general users who are probably not well represented on this list.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While doing research for this proposal I spoke to several professional users of Sparrow Wallet (who are not developers). They all expressed a desire for the format to integrate with their business processes, which are driven by business tools such as Excel. Labelling provides an important function in UTXO and address management in these scenarios, and needs to be accessible and manageable outside of wallet software.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If this is to be achieved, it immediately rules out JSON as a data format. Not only is JSON limited to editing only through specific software or text editors, but (in the latter case) it is fragile enough that a single missing character can cause an entire file to fail parsing. CSV is more forgiving in this regard. With respect to your comments on escaping, my expectation would be that developers will be using a mature CSV library rather than handling character escaping themselves. I would rather propose a format that is generally usable, even if occasionally a label is escaped incorrectly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, I&amp;#39;ll note that CSV files are already common and uncontroversial in Bitcoin wallet software. Bitcoin Core, Electrum, Sparrow (and no doubt many others) already export addresses and/or transactions with their labels as CSV files. This proposal simply attempts to create a standard for importing and exporting all the labels in a wallet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Craig&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Aug 24, 2022 at 9:01 PM &amp;lt;rhavar at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d strongly suggest not using CSV. Especially for a standard. I&amp;#39;ve worked with it as an interchange format many a times, and it&amp;#39;s always been a clusterfuck.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Right off the bat, you have stuff like &amp;#34;The fields may be quoted, but this is unnecessary as the first comma in the line will always be the delimiter&amp;#34; which invariably leads to some implementations doing it, some implementations not doing it, and others that are intolerant of the other way.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; And you have also made the classic mistake of not strictly defining escape rules. So everyone will pick their own (e.g. some will \, escape commas, others will not cause it&amp;#39;s quoted and escape quotes, and others will assume no escaping is required since its the last column in a csv).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Over time it morphs into its own mini-monster that introduces so much pain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On a similar note, allowing alternatives (like: txid&amp;gt;index vs txid:index) provides no benefit, but creates additional work for implementations (who quite likely only test formats they produce) and future incompatibilities.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I know everyone loves to hate on it, but really (line-separated?) json is the way to go.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; { &amp;#34;tx&amp;#34;: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;#34;, &amp;#34;label&amp;#34;: &amp;#34;wow, such label&amp;#34; }&lt;br/&gt;&amp;gt;&amp;gt; { &amp;#34;tx: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b&amp;#34;, &amp;#34;txout&amp;#34;: 4, &amp;#34;label&amp;#34;: &amp;#34;omg this is so easy to parse&amp;#34; }&lt;br/&gt;&amp;gt;&amp;gt; { &amp;#34;tx: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b&amp;#34;, &amp;#34;txin&amp;#34;: 0, &amp;#34;label&amp;#34;: &amp;#34;wow this is going to be extensible as well&amp;#34; }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; -Ryan&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt;&amp;gt; On Wednesday, August 24th, 2022 at 2:18 AM, Craig Raw via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I would like to propose a BIP that specifies a format for the export and import of labels from a wallet. While transferring access to funds across wallet applications has been made simple through standards such as BIP39, wallet labels remain siloed and difficult to extract despite their value, particularly in a privacy context.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The proposed format is a simple two column CSV file, with the reference to a transaction, address, input or output in the first column, and the label in the second column. CSV was chosen for its wide accessibility, especially to users without specific technical expertise. Similarly, the CSV file may be compressed using the ZIP format, and optionally encrypted using AES.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The full text of the BIP can be found at &lt;a href=&#34;https://github.com/craigraw/bips/blob/master/bip-wallet-labels.mediawiki&#34;&gt;https://github.com/craigraw/bips/blob/master/bip-wallet-labels.mediawiki&lt;/a&gt; and also copied below.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Feedback is appreciated.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Craig Raw&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; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; BIP: wallet-labels&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Layer: Applications&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Title: Wallet Labels Export Format&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Author: Craig Raw &amp;lt;craig at sparrowwallet.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Comments-URI: &lt;a href=&#34;https://github.com/bitcoin/bips/wiki/Comments:BIP-wallet-labels&#34;&gt;https://github.com/bitcoin/bips/wiki/Comments:BIP-wallet-labels&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Status: Draft&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Type: Informational&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Created: 2022-08-23&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; License: BSD-2-Clause&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This document specifies a format for the export of labels that may be attached to the transactions, addresses, input and outputs in a wallet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This BIP is licensed under the BSD 2-clause license.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The export and import of funds across different Bitcoin wallet applications is well defined through standards such as BIP39, BIP32, BIP44 etc.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; These standards are well supported and allow users to move easily between different wallets.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; There is, however, no defined standard to transfer any labels the user may have applied to the transactions, addresses, inputs or outputs in their wallet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The UTXO model that Bitcoin uses makes these labels particularly valuable as they may indicate the source of funds, whether received externally or as a result of change from a prior transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In both cases, care must be taken when spending to avoid undesirable leaks of private information.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Labels provide valuable guidance in this regard, and have even become mandatory when spending in several Bitcoin wallets.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Allowing users to export their labels in a standardized way ensures that they do not experience lock-in to a particular wallet application.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In addition, by using common formats, this BIP seeks to make manual or bulk management of labels accessible to users without specific technical expertise.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In order to make the import and export of labels as widely accessible as possible, this BIP uses the comma separated values (CSV) format, which is widely supported by consumer, business, and scientific applications.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Although the technical specification of CSV in RFC4180 is not always followed, the application of the format in this BIP is simple enough that compatibility should not present a problem.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Moreover, the simplicity and forgiving nature of CSV (over for example JSON) lends itself well to bulk label editing using spreadsheet and text editing tools.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A CSV export of labels from a wallet must be a UTF-8 encoded text file, containing one record per line, with records containing two fields delimited by a comma.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The fields may be quoted, but this is unnecessary, as the first comma in the line will always be the delimiter.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The first line in the file is a header, and should be ignored on import.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thereafter, each line represents a record that refers to a label applied in the wallet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The order in which these records appear is not defined.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The first field in the record contains a reference to the transaction, address, input or output in the wallet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This is specified as one of the following:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; * Transaction ID (&amp;lt;tt&amp;gt;txid&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; * Address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; * Input (rendered as &amp;lt;tt&amp;gt;txid&amp;lt;index&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; * Output (rendered as &amp;lt;tt&amp;gt;txid&amp;gt;index&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;txid:index&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The second field contains the label applied to the reference.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Exporting applications may omit records with no labels or labels of zero length.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Files exported should use the &amp;lt;tt&amp;gt;.csv&amp;lt;/tt&amp;gt; file extension.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In order to reduce file size while retaining wide accessibility, the CSV file may be compressed using the ZIP file format, using the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; file extension.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; file may optionally be encrypted using either AES-128 or AES-256 encryption, which is supported by numerous applications including Winzip and 7-zip.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In order to ensure that weak encryption does not proliferate, importers following this standard must refuse to import &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; files encrypted with the weaker Zip 2.0 standard.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The textual representation of the wallet&amp;#39;s extended public key (as defined by BIP32, with an &amp;lt;tt&amp;gt;xpub&amp;lt;/tt&amp;gt; header) should be used as the password.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Importing==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; When importing, a naive algorithm may simply match against any reference, but it is possible to disambiguate between transactions, addresses, inputs and outputs.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For example in the following pseudocode:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; if reference length &amp;lt; 64&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Set address label&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; else if reference length == 64&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Set transaction label&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; else if reference contains &amp;#39;&amp;lt;&amp;#39;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Set input label&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; else&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Set output label&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Importing applications may truncate labels if necessary.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Test Vectors==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The following fragment represents a wallet label export:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Reference,Label&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎,Transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1A69TXnEM2ms9fMaY9UuiJ7415X7xZaUSg,Address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;lt;0,Input&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;gt;0,Output&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎:0,Output (alternative)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Reference Implementation==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; TBD&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/20220825/b57b0503/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220825/b57b0503/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T23:13:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg5u0fucxctqc6hf3lgrvfc349tzme3rsvgdec3qcplwl4vlklyzqzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5x0j43h</id>
    
      <title type="html">📅 Original date posted:2022-08-24 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg5u0fucxctqc6hf3lgrvfc349tzme3rsvgdec3qcplwl4vlklyzqzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5x0j43h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx6c35nrxrxvj6xtrzmgycpz53c72kf4y8ud8329z9d89xdc8yhhg6vsnwl&#39;&gt;nevent1q…snwl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-24&lt;br/&gt;📝 Original message:I&amp;#39;d strongly suggest not using CSV. Especially for a standard. I&amp;#39;ve worked with it as an interchange format many a times, and it&amp;#39;s always been a clusterfuck.&lt;br/&gt;&lt;br/&gt;Right off the bat, you have stuff like &amp;#34;The fields may be quoted, but this is unnecessary as the first comma in the line will always be the delimiter&amp;#34; which invariably leads to some implementations doing it, some implementations not doing it, and others that are intolerant of the other way.&lt;br/&gt;&lt;br/&gt;And you have also made the classic mistake of not strictly defining escape rules. So everyone will pick their own (e.g. some will \, escape commas, others will not cause it&amp;#39;s quoted and escape quotes, and others will assume no escaping is required since its the last column in a csv).&lt;br/&gt;&lt;br/&gt;Over time it morphs into its own mini-monster that introduces so much pain.&lt;br/&gt;&lt;br/&gt;On a similar note, allowing alternatives (like: txid&amp;gt;index vs txid:index) provides no benefit, but creates additional work for implementations (who quite likely only test formats they produce) and future incompatibilities.&lt;br/&gt;&lt;br/&gt;I know everyone loves to hate on it, but really (line-separated?) json is the way to go.&lt;br/&gt;&lt;br/&gt;{ &amp;#34;tx&amp;#34;: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;#34;, &amp;#34;label&amp;#34;: &amp;#34;wow, such label&amp;#34; }&lt;br/&gt;{ &amp;#34;tx: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b&amp;#34;, &amp;#34;txout&amp;#34;: 4, &amp;#34;label&amp;#34;: &amp;#34;omg this is so easy to parse&amp;#34; }&lt;br/&gt;{ &amp;#34;tx: &amp;#34;c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b&amp;#34;, &amp;#34;txin&amp;#34;: 0, &amp;#34;label&amp;#34;: &amp;#34;wow this is going to be extensible as well&amp;#34; }&lt;br/&gt;&lt;br/&gt;-Ryan&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Wednesday, August 24th, 2022 at 2:18 AM, Craig Raw via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I would like to propose a BIP that specifies a format for the export and import of labels from a wallet. While transferring access to funds across wallet applications has been made simple through standards such as BIP39, wallet labels remain siloed and difficult to extract despite their value, particularly in a privacy context.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The proposed format is a simple two column CSV file, with the reference to a transaction, address, input or output in the first column, and the label in the second column. CSV was chosen for its wide accessibility, especially to users without specific technical expertise. Similarly, the CSV file may be compressed using the ZIP format, and optionally encrypted using AES.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The full text of the BIP can be found at &lt;a href=&#34;https://github.com/craigraw/bips/blob/master/bip-wallet-labels.mediawiki&#34;&gt;https://github.com/craigraw/bips/blob/master/bip-wallet-labels.mediawiki&lt;/a&gt; and also copied below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Feedback is appreciated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Craig Raw&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt; BIP: wallet-labels&lt;br/&gt;&amp;gt; Layer: Applications&lt;br/&gt;&amp;gt; Title: Wallet Labels Export Format&lt;br/&gt;&amp;gt; Author: Craig Raw &amp;lt;craig at sparrowwallet.com&amp;gt;&lt;br/&gt;&amp;gt; Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt; Comments-URI: &lt;a href=&#34;https://github.com/bitcoin/bips/wiki/Comments:BIP-wallet-labels&#34;&gt;https://github.com/bitcoin/bips/wiki/Comments:BIP-wallet-labels&lt;/a&gt;&lt;br/&gt;&amp;gt; Status: Draft&lt;br/&gt;&amp;gt; Type: Informational&lt;br/&gt;&amp;gt; Created: 2022-08-23&lt;br/&gt;&amp;gt; License: BSD-2-Clause&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This document specifies a format for the export of labels that may be attached to the transactions, addresses, input and outputs in a wallet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP is licensed under the BSD 2-clause license.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The export and import of funds across different Bitcoin wallet applications is well defined through standards such as BIP39, BIP32, BIP44 etc.&lt;br/&gt;&amp;gt; These standards are well supported and allow users to move easily between different wallets.&lt;br/&gt;&amp;gt; There is, however, no defined standard to transfer any labels the user may have applied to the transactions, addresses, inputs or outputs in their wallet.&lt;br/&gt;&amp;gt; The UTXO model that Bitcoin uses makes these labels particularly valuable as they may indicate the source of funds, whether received externally or as a result of change from a prior transaction.&lt;br/&gt;&amp;gt; In both cases, care must be taken when spending to avoid undesirable leaks of private information.&lt;br/&gt;&amp;gt; Labels provide valuable guidance in this regard, and have even become mandatory when spending in several Bitcoin wallets.&lt;br/&gt;&amp;gt; Allowing users to export their labels in a standardized way ensures that they do not experience lock-in to a particular wallet application.&lt;br/&gt;&amp;gt; In addition, by using common formats, this BIP seeks to make manual or bulk management of labels accessible to users without specific technical expertise.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In order to make the import and export of labels as widely accessible as possible, this BIP uses the comma separated values (CSV) format, which is widely supported by consumer, business, and scientific applications.&lt;br/&gt;&amp;gt; Although the technical specification of CSV in RFC4180 is not always followed, the application of the format in this BIP is simple enough that compatibility should not present a problem.&lt;br/&gt;&amp;gt; Moreover, the simplicity and forgiving nature of CSV (over for example JSON) lends itself well to bulk label editing using spreadsheet and text editing tools.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A CSV export of labels from a wallet must be a UTF-8 encoded text file, containing one record per line, with records containing two fields delimited by a comma.&lt;br/&gt;&amp;gt; The fields may be quoted, but this is unnecessary, as the first comma in the line will always be the delimiter.&lt;br/&gt;&amp;gt; The first line in the file is a header, and should be ignored on import.&lt;br/&gt;&amp;gt; Thereafter, each line represents a record that refers to a label applied in the wallet.&lt;br/&gt;&amp;gt; The order in which these records appear is not defined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The first field in the record contains a reference to the transaction, address, input or output in the wallet.&lt;br/&gt;&amp;gt; This is specified as one of the following:&lt;br/&gt;&amp;gt; * Transaction ID (&amp;lt;tt&amp;gt;txid&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt; * Address&lt;br/&gt;&amp;gt; * Input (rendered as &amp;lt;tt&amp;gt;txid&amp;lt;index&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt; * Output (rendered as &amp;lt;tt&amp;gt;txid&amp;gt;index&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;txid:index&amp;lt;/tt&amp;gt;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second field contains the label applied to the reference.&lt;br/&gt;&amp;gt; Exporting applications may omit records with no labels or labels of zero length.&lt;br/&gt;&amp;gt; Files exported should use the &amp;lt;tt&amp;gt;.csv&amp;lt;/tt&amp;gt; file extension.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In order to reduce file size while retaining wide accessibility, the CSV file may be compressed using the ZIP file format, using the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; file extension.&lt;br/&gt;&amp;gt; This &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; file may optionally be encrypted using either AES-128 or AES-256 encryption, which is supported by numerous applications including Winzip and 7-zip.&lt;br/&gt;&amp;gt; In order to ensure that weak encryption does not proliferate, importers following this standard must refuse to import &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; files encrypted with the weaker Zip 2.0 standard.&lt;br/&gt;&amp;gt; The textual representation of the wallet&amp;#39;s extended public key (as defined by BIP32, with an &amp;lt;tt&amp;gt;xpub&amp;lt;/tt&amp;gt; header) should be used as the password.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Importing==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When importing, a naive algorithm may simply match against any reference, but it is possible to disambiguate between transactions, addresses, inputs and outputs.&lt;br/&gt;&amp;gt; For example in the following pseudocode:&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt; if reference length &amp;lt; 64&lt;br/&gt;&amp;gt; Set address label&lt;br/&gt;&amp;gt; else if reference length == 64&lt;br/&gt;&amp;gt; Set transaction label&lt;br/&gt;&amp;gt; else if reference contains &amp;#39;&amp;lt;&amp;#39;&lt;br/&gt;&amp;gt; Set input label&lt;br/&gt;&amp;gt; else&lt;br/&gt;&amp;gt; Set output label&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Importing applications may truncate labels if necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Test Vectors==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The following fragment represents a wallet label export:&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt; Reference,Label&lt;br/&gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎,Transaction&lt;br/&gt;&amp;gt; 1A69TXnEM2ms9fMaY9UuiJ7415X7xZaUSg,Address&lt;br/&gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;lt;0,Input&lt;br/&gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎&amp;gt;0,Output&lt;br/&gt;&amp;gt; c3bdad6e7dcd7997e16a5b7b7cf4d8f6079820ff2eedd5fcbb2ad088f767b37b‎:0,Output (alternative)&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Reference Implementation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; TBD&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/20220824/f1fcaed1/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220824/f1fcaed1/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T23:13:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfjvwwddkn874zft7x2svagazjf5zd6tqa3vep9j7m5hyq30zv4ugzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5dppyqf</id>
    
      <title type="html">📅 Original date posted:2019-02-02 📝 Original message:More ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfjvwwddkn874zft7x2svagazjf5zd6tqa3vep9j7m5hyq30zv4ugzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5dppyqf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8hv242mpzw6ec9hjsay9uz4zz275u2dxz586ycp9ypch3mvutkzc4pvtg0&#39;&gt;nevent1q…vtg0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-02-02&lt;br/&gt;📝 Original message:More of a shower-thought than a BIP, but it&amp;#39;s something I&amp;#39;ve long wish (hardware) wallets supported:&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;Abstract: Bitcoin Wallets generally ask us to trust their seed generation is both correct and honest. Especially for hardware and air gapped wallets, this is both a big ask and more or less impossible to practically verify. So we propose a bring-your-own-entropy approach in which the wallet can function completely deterministically. Our method is based on shuffling physical deck of cards. There are 52!  (2^219.88) different shuffle order, which is a big enough space to be secure against collision and brute force attacks. Conveniently a shuffled deck of cards also can serve as a physical backup which is easy to hide in plain sight with great plausible deniability.&lt;br/&gt;&lt;br/&gt;Representation:&lt;br/&gt;&lt;br/&gt;Each card has a suit which can be represented by one of SCHD (spades, clubs, hearts, diamonds) and a value of one of 23456789TJQKA where the numbers are obvious and (T=ten, J=jack, Q=queen, K=king, A=ace) so &amp;#34;7 of clubs&amp;#34; would be represented by &amp;#34;7C&amp;#34; and a &amp;#34;Ten of Hearts&amp;#34; would be represented with &amp;#34;TH&amp;#34;.&lt;br/&gt;&lt;br/&gt;An deck of cards looks like:&lt;br/&gt;&lt;br/&gt;2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC,2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD&lt;br/&gt;&lt;br/&gt;And can be verified by making sure that every one of the 52 cards appears exactly once.&lt;br/&gt;&lt;br/&gt;Step 1.  Shuffle your deck of cards&lt;br/&gt;&lt;br/&gt;This is a lot harder than you&amp;#39;d imagine, so do it quite a few times, with quite a few different techniques. It is advised to do at *least* 7 good quality shuffles to achieve a true cryptographically secure shuffle. Do not look at the cards while shuffling (to avoid biasing) and don&amp;#39;t be afraid to also shuffle them face down on the table. Err on the side over over-shuffling.&lt;br/&gt;See also: &lt;a href=&#34;https://en.wikipedia.org/wiki/Shuffling#Sufficient_number_of_shuffles&#34;&gt;https://en.wikipedia.org/wiki/Shuffling#Sufficient_number_of_shuffles&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Step 2. Write out the order (comma separated)&lt;br/&gt;&lt;br/&gt;And example shuffle is:&lt;br/&gt;&lt;br/&gt;5C,7C,4C,AS,3C,KC,AD,QS,7S,2S,5H,4D,AC,9C,3H,6H,9D,4S,8D,TD,2H,7H,JD,QD,2D,JC,KH,9S,9H,4H,6C,7D,3D,6S,2C,AH,QC,TH,TC,JS,6D,8H,8C,JH,8S,KD,QH,5D,5S,KS,TS,3S&lt;br/&gt;&lt;br/&gt;Step 3.  Sha512 it to create a seed&lt;br/&gt;&lt;br/&gt;In the example above you should get:&lt;br/&gt;dc04e4c331b1bd347581d4361841335fe0b090d39dfe5e1c258c547255cd5cf1545e2387d8a7c4dc53e03cacca049a414a9269a2ac6954429955476c56038498&lt;br/&gt;&lt;br/&gt;Step 4. Interpret it&lt;br/&gt;&lt;br/&gt;e.g. For bip32 you would treat the first 32 bytes as the private key, and the second 32 bytes as as the extension code.&lt;br/&gt;&lt;br/&gt;-Ryan&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/20190202/5489fb15/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190202/5489fb15/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:16:17Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfk06jpuuf0dz9apsvl6lycxluk3dwadxjs7d92q8yj5vcdrr8s6czypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5uwe88j</id>
    
      <title type="html">📅 Original date posted:2019-01-27 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfk06jpuuf0dz9apsvl6lycxluk3dwadxjs7d92q8yj5vcdrr8s6czypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5uwe88j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg0k76a8s4w3pgt4vnqhn8l34zl0nv4lzk4vvmdaxhwzz3skgjfcqzl25c6&#39;&gt;nevent1q…25c6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-01-27&lt;br/&gt;📝 Original message:&amp;gt; Is there a missing word. &amp;#34;by giving a person..&amp;#34;? Not actually sure what&lt;br/&gt;&amp;gt; you&amp;#39;re getting at here but I suspect it&amp;#39;s again tangential to this BIP&lt;br/&gt;&amp;gt; discussion.&lt;br/&gt;&lt;br/&gt;Correct on both points. I meant to say &amp;#34;giving a (txid:vout:privkey)&amp;#34; to a person as means of payment.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; So I think the limiting factor is in fact creating a standard that a reasonable number&lt;br/&gt;&amp;gt; of people could agree with (and I like operational definitions, so&lt;br/&gt;&amp;gt; subjective as it is, I like the goal of &amp;#34;good/clear enough that it could&lt;br/&gt;&amp;gt; be incorporated into something like BtcPayServer&amp;#34;)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The problem with BtcPayServer (and a lot of similar software), is that it&amp;#39;s not very unsuitable for any sender/receiver coinjoin due to it not having its own wallet. As I understand the basic architecture is just a fancy wrapper around bip32 address generation and monitoring the payment to those addresses. This means that adding support is not only a large code change, but it also entails a substantial change for merchants (you can&amp;#39;t just have your payments flow into your trezor, but need to run a hot wallet)&lt;br/&gt;&lt;br/&gt;But I strongly believe that bustapay is good enough _right now_ for BtcPayServer integration (which I&amp;#39;d happily contribute myself, if it wasn&amp;#39;t for my unfamiliarity of the project and c#)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; But this relates back to my first &amp;#34;generic&amp;#34; point that you haven&amp;#39;t&lt;br/&gt;&amp;gt; addressed here - protocol versioning and the possibility of more than&lt;br/&gt;&amp;gt; one option. Perhaps more realistic (debatable): have the current version&lt;br/&gt;&amp;gt; be non-PSBT but with a plan to have a version bump with PSBT in future.&lt;br/&gt;&amp;gt; Stuff like that. It seems crazy to actually long term reject it.&lt;br/&gt;&lt;br/&gt;Adding backwards-compatible versioning at a later stage would be pretty trivial through either the URL or HTTP header (e.g  version=2)  and if breaking backwards compatible is desirable it can also easily been done (e.g. bump the bip21 or send an incompatible request/response). I don&amp;#39;t see this as a problem at all, and I&amp;#39;m not rejecting it long-term, I just don&amp;#39;t think it&amp;#39;s particularly helpful to bikeshed now, when adoption is pretty much zero.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t want to be that guy, but this was a central part of the proposal&lt;br/&gt;&amp;gt; that came of the meetup last summer and is in Haywood&amp;#39;s blogpost. I mean&lt;br/&gt;&amp;gt; if you came up it with separately, then cool :) But I was there, that&lt;br/&gt;&amp;gt; was established immediately as the right way of doing this to avoid a&lt;br/&gt;&amp;gt; trivial attack.&lt;br/&gt;&lt;br/&gt;Oh wow. had no idea. I saw the part about the receiver spamming the sender with a bunch of transactions, where only 1 of them are real and thought &amp;#34;ewww&amp;#34; and &amp;#34;came up&amp;#34; with the idea of a &amp;#34;template transaction&amp;#34; instead. I was always wondering why no one came up it, but now it makes sense. The transaction-spam stage was just an _additional_ layer of protection.&lt;br/&gt;&lt;br/&gt;Ok, now I feel like an idiot =)  Thanks for letting me know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The counterargument is Laurent&amp;#39;s statistics which I previously linked,&lt;br/&gt;&amp;gt; suggesting that maybe 30% of txs violate this anyway, today. I&amp;#39;m not&lt;br/&gt;&amp;gt; sure about that, will need more analysis; Core&amp;#39;s SRD algo may be one&lt;br/&gt;&amp;gt; reason, but anyway ... better to make things look like payments.&lt;br/&gt;&lt;br/&gt;I think it&amp;#39;s interesting, but I don&amp;#39;t think it particularly matters. Avoiding UIH1 I think is pretty much irrelevant, as it&amp;#39;ll likely just confuse any analysis into thinking the payment is the reverse of what it actually is. And wallets already don&amp;#39;t care about violating UIH2(as a way to do implicit consolidation). If 30% of tx&amp;#39;s are violating it, you can be pretty sure it means the _vast majority_ of wallets run coin selection in such a way that can violation UIH2.  Most wallets use a coin selection algorithm that you can approximate with:&lt;br/&gt;&lt;br/&gt;while !enoughMoney {&lt;br/&gt;    inputs &#43;= getAnotherInput();&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;and don&amp;#39;t run a final pass that would prune superfluous inputs.  Even coinsayer (shill alert) which I believe runs the most advanced coin selection algorithms, will routinely and intentionally violate UIH2 when it&amp;#39;s ideal (e.g. most classic case: when `consolidationFeeRate &amp;gt;= minFeeRate`).&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not trying to dismiss your analysis, as I find it interesting. I&amp;#39;m just against increasing the cognitive burden on implementations by mentioning all this stuff, when the truth is it (barely) matters.  If wallets routinely avoided UIH2 and making a UIH2 payment would &amp;#34;out&amp;#34; the transaction as much more likely to be a bustapay, then I&amp;#39;d definitely reconsider and provide a basic suggestion into how to try avoid it.&lt;br/&gt;&lt;br/&gt;And like I said, I also think there&amp;#39;s much more important things that go into &amp;#34;picking a contributed input&amp;#34; than just this.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; A last point, you also don&amp;#39;t see value in being more explicit about&lt;br/&gt;&amp;gt; simple things like transaction version and locktime? Even if you think&lt;br/&gt;&amp;gt; these things should not be controlled, e.g. the protocol should allow&lt;br/&gt;&amp;gt; either transaction version, then it&amp;#39;d be better to explicitly say so.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;My intention was that wallets create a transaction exactly like they normally would do, and use that as the template transaction. The only time I wanted to be prescriptive was when it would increase the implementation complexity (e.g. being non-segwit compatible is a pain in the ass. So I&amp;#39;d rather just be &amp;#34;pure segwit only&amp;#34; transactions). But something like locktime makes no difference as long as the transaction is mempool eligible, so I&amp;#39;d rather just wallets do what they do anyway.&lt;br/&gt;&lt;br/&gt;Although I think there should be a separate discussion on improving the uniformity of bitcoin transactions in general. The current state of affairs is really atrocious.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;P.S. I know I come across as obstinate, but it&amp;#39;s not really so. If you can come up with an alternative to bustapay with some traction, I&amp;#39;d love to get behind it and deprecate bustapay in favor of it. I just am pretty happy with the state of bustapay and it&amp;#39;s status a sort of &amp;#34;MVP of pay2endpoint&amp;#34;, and unless the argument is in the form: &amp;#34;We&amp;#39;d love to support it, but in order to do so we&amp;#39;d need X&amp;#34; I&amp;#39;m probably going to disagree.
    </content>
    <updated>2023-06-07T18:16:04Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd4mncuqs9nr5qm4gcun7n72fmwmlqyvrwy4hl9vphp2szsnvywkszypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky50j5hr8</id>
    
      <title type="html">📅 Original date posted:2019-01-27 📝 Original message:Thanks ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd4mncuqs9nr5qm4gcun7n72fmwmlqyvrwy4hl9vphp2szsnvywkszypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky50j5hr8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8sn2c6fhsrf4gpql07yjdve9lalz5uvkt9pltex909kchten3pmcrdchad&#39;&gt;nevent1q…chad&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-01-27&lt;br/&gt;📝 Original message:Thanks Adam,&lt;br/&gt;&lt;br/&gt;I have fixed the mistakes you have pointed out: &lt;a href=&#34;https://github.com/bitcoin/bips/pull/754&#34;&gt;https://github.com/bitcoin/bips/pull/754&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Thanks for the detailed look!&lt;br/&gt;&lt;br/&gt;&amp;gt; but its virtue of steganographic hiding means only minimal uptake&lt;br/&gt;&amp;gt; is still enormously interesting and worth pursuing; that&amp;#39;s my current feeling.&lt;br/&gt;&lt;br/&gt;I very much agree =) I really think anything that (silently) breaks the assumption of common ownership of transaction inputs offers outsized benefits for the whole ecosystem.&lt;br/&gt;&lt;br/&gt;One other idea I have  is (way) better support for moving utxo&amp;#39;s between wallets. The least controversial use case is moving funds between wallets you own. Like I might want to move *specific* utxo&amp;#39;s from/to my joinmarket wallet, but not create a (privacy losing / expensive) transaction. Both core and joinmarket fail at this at a practical point of view.&lt;br/&gt;&lt;br/&gt;Like imho it&amp;#39;d be pretty cool having a standardized format for (txid:vout:privatekey) with wallets showing it as &amp;#34;External UTXO&amp;#34; and preferentially spending it (and wallet not automatically importing any other utxo from that address).&lt;br/&gt;&lt;br/&gt;Taken a bit further (this is the part which everyone hates) you could send someone money (or withdraw it from a service) by giving a person. It&amp;#39;s not generally useful (for obvious reasons), but there&amp;#39;s a lot of cases I think it&amp;#39;s super cool.&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;Getting back on topic, without trying to do a point-by-point reply, I agree with pretty much everything you said but I am reluctant to make any changes.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t meant to be obtuse or anything, but I strongly believe the limiting factor to adoption to all these protocols is actually just getting people to implement it. I made multiple implementations of bustapay from both the sending/receiving end, so I could try develop the easiest to implement system that is still practical.&lt;br/&gt;&lt;br/&gt;For instance I like PSBT and it&amp;#39;s nice in theory. I actually had an original implementation using it, which is how I found some bugs in the core and golang version of PSBT). But in practice it&amp;#39;s hugely overkill and significantly increases the implementation complexity complexity and is poorly supported. Switching to just a raw transaction actually made everything easier. (And that&amp;#39;s not to criticise PSBT, I would definitely want to use it in other contexts).&lt;br/&gt;&lt;br/&gt;Anyway, a big motivation for me even writing it as a BIP was to formalize my little anti-DOS trick of privately creating a &amp;#34;template transaction&amp;#34; which can just be dumped on the network as punishment. So if nothing else, hopefully I&amp;#39;ll have demonstrated it&amp;#39;s a pretty practical way of doing things.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;&lt;br/&gt;Also your analysis on &amp;#34;Unnecessary Input Heuristic&amp;#34; is pretty cool, but I also don&amp;#39;t like telling people to &amp;#34;avoid the UIH2&amp;#34; without providing the actual algo they should use. But really I think it&amp;#39;s better off in a sort of article &amp;#34;how to pick contributed inputs&amp;#34; or something, as while it&amp;#39;s nice it&amp;#39;s not a huge deal and there&amp;#39;s a lot of debatable tradeoffs that can/should be used. For instance the implementation I wrote for bustabit.com currently just heavily biases tainted inputs (e.g. ones associated with address reuse).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;-Ryan&lt;br/&gt;&lt;br/&gt;‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;On Friday, January 25, 2019 6:47 AM, Adam Gibson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Ryan and list,&lt;br/&gt;&amp;gt; I want to add some commentary to this (BIP79) to see if we can get&lt;br/&gt;&amp;gt; further in standardizing this idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When I first mulled it over I thought it too impractical, but its virtue&lt;br/&gt;&amp;gt; of steganographic hiding means only minimal uptake is still enormously&lt;br/&gt;&amp;gt; interesting and worth pursuing; that&amp;#39;s my current feeling. I&amp;#39;ve offered&lt;br/&gt;&amp;gt; more detailed thoughts in my blog post[1] (def not required reading here).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Both Joinmarket and Samourai have started implementing this kind of&lt;br/&gt;&amp;gt; transaction. And while that&amp;#39;s interesting experimentally, some kind of&lt;br/&gt;&amp;gt; cross-wallet standard would be helpful, albeit there some differences&lt;br/&gt;&amp;gt; between that and the merchant/centralized service use-case.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We might imagine as a concrete goal for this BIP to create something&lt;br/&gt;&amp;gt; that would be acceptable for inclusion into a project like BTCPayServer,&lt;br/&gt;&amp;gt; so that it could be used in a realistic use case by smaller bitcoin&lt;br/&gt;&amp;gt; accepting merchants.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Comments to the BIP[2] as follows, with generic comments first, and then&lt;br/&gt;&amp;gt; specific comments for existing points in the BIP:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://joinmarket.me/blog/blog/payjoin&#34;&gt;https://joinmarket.me/blog/blog/payjoin&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &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;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Generic comments&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   Protocol versioning. Since inevitably (even if only merchants), this&lt;br/&gt;&amp;gt;     must be implemented by multiple wallets to be useful, the communication&lt;br/&gt;&amp;gt;     protocol will need versioning (for example i have in my&lt;br/&gt;&amp;gt;     simple/experimental Joinmarket PayJoin that sender sends min and max&lt;br/&gt;&amp;gt;     supported version and receiver responds with a chosen protocol version&lt;br/&gt;&amp;gt;     so we can update). I do understand that as a client-server model can&lt;br/&gt;&amp;gt;     apply here, we can ditch a lot of the complexities around network/p2p&lt;br/&gt;&amp;gt;     interaction, but this much at least seems necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   Although it has its logic, I don&amp;#39;t think &amp;#34;Bustapay&amp;#34; is a good name for&lt;br/&gt;&amp;gt;     this protocol. I prefer &amp;#34;PayJoin&amp;#34; which is neutral sounding and&lt;br/&gt;&amp;gt;     self-descriptive. Needless to say this is not a hill I intend to die on.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   PSBT/BIP174. I realise this has already been discussed, but this is a&lt;br/&gt;&amp;gt;     good example of what this standardisation was designed for, so I&amp;#39;d be&lt;br/&gt;&amp;gt;     against not including it, even given the reality that, as you correctly&lt;br/&gt;&amp;gt;     observe, it is not yet implemented in the majority of wallets and&lt;br/&gt;&amp;gt;     libraries. One way round that is to make it optional (possibly combined&lt;br/&gt;&amp;gt;     with above point about versioning). Note that for example you were&lt;br/&gt;&amp;gt;     observing the necessity to check the sequence number was unchanged; that&lt;br/&gt;&amp;gt;     would be encapsulated by checking equality of PSBT Input objects/fields.&lt;br/&gt;&amp;gt;     While one can make such software architecture arguments, the really&lt;br/&gt;&amp;gt;     fundamental point is the need for standards for x-wallet compatibility.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   Version, Locktime: Perhaps this is not needed; in a peer to peer&lt;br/&gt;&amp;gt;     wallet scenario I think there might be logic in trying to get cover&lt;br/&gt;&amp;gt;     traffic of (Core, Electrum, others), say, by using&lt;br/&gt;&amp;gt;     last-block-locktime-mostly, as they do. Version should be 2 and sequence&lt;br/&gt;&amp;gt;     is a function of your suggestion to use BIP125. Worth noting that BIP125&lt;br/&gt;&amp;gt;     is not currently widely used on the network, though (see&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://p2sh.info/dashboard/db/replace-by-fee?orgId=1&#34;&gt;https://p2sh.info/dashboard/db/replace-by-fee?orgId=1&lt;/a&gt;). For this reason&lt;br/&gt;&amp;gt;     it should perhaps be explicitly only optional.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   Avoidance of non-payment &amp;#34;Unnecessary Input Heuristic&amp;#34; (1, 2). For&lt;br/&gt;&amp;gt;     reference, see the definition here&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://gist.github.com/AdamISZ/4551b947789d3216bacfcb7af25e029e#gistcomment-2796539&#34;&gt;https://gist.github.com/AdamISZ/4551b947789d3216bacfcb7af25e029e#gistcomment-2796539&lt;/a&gt;&lt;br/&gt;&amp;gt;     and some data here&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://gist.github.com/AdamISZ/4551b947789d3216bacfcb7af25e029e#gistcomment-2800791&#34;&gt;https://gist.github.com/AdamISZ/4551b947789d3216bacfcb7af25e029e#gistcomment-2800791&lt;/a&gt;&lt;br/&gt;&amp;gt;     (whole comment thread may be of interest) - note this UIH name is afaik&lt;br/&gt;&amp;gt;     Chris Belcher&amp;#39;s invention, it seems useful as a categorisation.&lt;br/&gt;&amp;gt;     So, it seems that UIH2 is more important to avoid; while some more&lt;br/&gt;&amp;gt;     sophisticated wallet coin selection algorithms may occasionally pick&lt;br/&gt;&amp;gt;     an input set where one input is larger than any output, most won&amp;#39;t, and&lt;br/&gt;&amp;gt;     some in particular never will. So I think the text here should indicate&lt;br/&gt;&amp;gt;     that *the receiver&amp;#39;s contributed input(s) SHOULD be chosen to avoid&lt;br/&gt;&amp;gt;     triggering the UIH2 heuristic where possible, so that the final payjoin&lt;br/&gt;&amp;gt;     transaction is maximally plausible as an ordinary payment&amp;#34; or similar.&lt;br/&gt;&amp;gt;     UIH1 is a nice-to-have (meaning the plausibility extends to two&lt;br/&gt;&amp;gt;     different (both wrong) payment amounts, but it may not be necessary to&lt;br/&gt;&amp;gt;     mention it in the BIP.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     Specific comments&lt;br/&gt;&amp;gt;     =================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ====Step 4. Receiver validates, re-signs, and propagates on the&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; bitcoin network====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe this should say &amp;#34;Sender&amp;#34; not Receiver. Also for the next&lt;br/&gt;&amp;gt; sentence, s/receiver/sender/:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The receiver MUST validate the &amp;#39;&amp;#39;partial transaction&amp;#39;&amp;#39; was changed&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; correctly and non-maliciously (to allow using potentially untrusted&lt;br/&gt;&amp;gt; communication channels), re-sign its original inputs and propagate the&lt;br/&gt;&amp;gt; final transaction over the bitcoin network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Your very correct highlighting of the attack vector of &amp;#34;receiver gives&lt;br/&gt;&amp;gt; sender other inputs belonging to sender to unwittingly sign (described&lt;br/&gt;&amp;gt; below), should be highlighted here, perhaps with the phrase &amp;#34;re-sign its&lt;br/&gt;&amp;gt; ORIGINAL inputs&amp;#34; (only!)&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; When the sender is creating a &amp;#34;template transaction&amp;#34; it is done&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; almost identically to creating a normal send, with the exception that&lt;br/&gt;&amp;gt; only segwit inputs may be used. The sender is also encouraged to use a&lt;br/&gt;&amp;gt; slightly more aggressive feerate than usual as well as BIP125 (Opt-in&lt;br/&gt;&amp;gt; Full Replace-by-Fee Signaling), but neither is strictly required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;slightly more aggressive feerate than usual&amp;#34; - this I understand is to&lt;br/&gt;&amp;gt; make up for receiver contributed utxo, OK.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;only segwit inputs&amp;#34; - it certainly makes things simpler. One can work&lt;br/&gt;&amp;gt; with non-segwit inputs but especially considering (as mentioned below)&lt;br/&gt;&amp;gt; we really ought to &amp;#34;MUST&amp;#34; the part about matching input types, I tend to&lt;br/&gt;&amp;gt; agree that non-segwit should be disallowed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The receiver must add at least one input to the transaction (the&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;contributed inputs&amp;#34;). If the receiver has no inputs, it should use a&lt;br/&gt;&amp;gt; 500 internal server error, so the client can send the transaction as per&lt;br/&gt;&amp;gt; normal (or try again later).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would it not be much simpler for the server to return a different&lt;br/&gt;&amp;gt; (non-error) response indicating that it will broadcast the template tx&lt;br/&gt;&amp;gt; in this case?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Its generally advised to only add a single contributed input, however&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; they are circumstances where adding more than a single input can be useful.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t see a good reason to advise the use of only 1 input? (but this&lt;br/&gt;&amp;gt; will also connect with the above generic comment about &amp;#34;UIH&amp;#34;). I guess&lt;br/&gt;&amp;gt; it&amp;#39;s because of your approach to fees. I&amp;#39;d prefer not to create a&lt;br/&gt;&amp;gt; limitation here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; To prevent an attack where a receiver is continually sent variations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; of the same transaction to enumerate the receivers utxo set, it is&lt;br/&gt;&amp;gt; essential that the receiver always returns the same contributed inputs&lt;br/&gt;&amp;gt; when it&amp;#39;s seen the same inputs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is an approach to avoiding this problem which has the virtue of&lt;br/&gt;&amp;gt; simplicity, but it seems a little problematic. (1) You must keep a&lt;br/&gt;&amp;gt; mapping of proposed payment utxos to one&amp;#39;s proposed contributed input&lt;br/&gt;&amp;gt; utxos, but (2) how should this be updated if you need to spend the&lt;br/&gt;&amp;gt; contribution mentioned in (1)? Ironically use of payjoin exacerbates&lt;br/&gt;&amp;gt; this issue, because it results in a smaller number of utxos being held&lt;br/&gt;&amp;gt; by the receiver at any one time :) All this considered, I still see the&lt;br/&gt;&amp;gt; value in your approach, but it might end up with a re-attempted payment&lt;br/&gt;&amp;gt; being rejected. Certainly the more complex suggested solutions coming&lt;br/&gt;&amp;gt; out of the summer 2018 coinjoin workshop aren&amp;#39;t as practical as this,&lt;br/&gt;&amp;gt; and may be overkill for small merchants/receivers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; It is strongly preferable that the receiver makes an effort to pick a&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; contributed input of the same type as the other transaction inputs if&lt;br/&gt;&amp;gt; possible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have also thought about this and you could reasonably argue this&lt;br/&gt;&amp;gt; should be a MUST section in the BIP, that is, if the receiver cannot use&lt;br/&gt;&amp;gt; inputs of the same type, he should fall back to the template&lt;br/&gt;&amp;gt; transaction. A mixed-input payjoin/coinjoin is essentially&lt;br/&gt;&amp;gt; near-perfectly identifiable as such (there is almost zero other usage of&lt;br/&gt;&amp;gt; multi-type-input transactions), which is a very different thing than a&lt;br/&gt;&amp;gt; non-identifiable payjoin transaction. That may or may not be OK to the&lt;br/&gt;&amp;gt; sender. This is debatable though, for sure.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; After adding inputs to the transaction, the receiver generally will&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; want to adjust the output that pays himself by increasing it by the sum&lt;br/&gt;&amp;gt; of the contributed input amounts (minus any fees he wants to&lt;br/&gt;&amp;gt; contribute). However the only strict requirement is that the receiver&lt;br/&gt;&amp;gt; must never add or remove inputs, and must not ever decrease any&lt;br/&gt;&amp;gt; output amount.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;must never add or remove inputs&amp;#34; - did you mean &amp;#34;must never remove&lt;br/&gt;&amp;gt; inputs&amp;#34;? he surely has to add one! Or, perhaps you mean he must not&lt;br/&gt;&amp;gt; alter the list of inputs provided by the sender (in which case it should&lt;br/&gt;&amp;gt; be clarified).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;must not decrease any output amount&amp;#34; - I initally disagreed with this&lt;br/&gt;&amp;gt; but it is a better option than the one I currently chose in Joinmarket&lt;br/&gt;&amp;gt; payjoin (sender pays all fee as long as receiver utxos are not too&lt;br/&gt;&amp;gt; much). So this means that the receiver either consciously chooses to not&lt;br/&gt;&amp;gt; increase the fee, meaning the fee rate may be a bit low (hence your&lt;br/&gt;&amp;gt; earlier comment about being generous, got it), or contributes via the&lt;br/&gt;&amp;gt; payout amount. I guess the latter might break merchant software&lt;br/&gt;&amp;gt; expecting to have amount output fixed and fees determined by change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; Adam Gibson/waxwing&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 30. 08. 18 22:24, Ryan Havar via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;ve just finished writing an implementing of this, and extremely happy&lt;br/&gt;&amp;gt; &amp;gt; with how it turned out. So I&amp;#39;d like to go and try go down the path of&lt;br/&gt;&amp;gt; &amp;gt; more formally describing it and getting some comments and ultimately&lt;br/&gt;&amp;gt; &amp;gt; encourage its wide-spread use.&lt;br/&gt;&amp;gt; &amp;gt; ==Abstract==&lt;br/&gt;&amp;gt; &amp;gt; The way bitcoin transactions are overwhelming used is known to leak more&lt;br/&gt;&amp;gt; &amp;gt; information than desirable. This has lead to fungibility concerns in bitcoin&lt;br/&gt;&amp;gt; &amp;gt; and a raise of unreasonably effective blockchain analysis.&lt;br/&gt;&amp;gt; &amp;gt; Bustapay proposes a simple, practical way to bust these assumptions to&lt;br/&gt;&amp;gt; &amp;gt; immediate&lt;br/&gt;&amp;gt; &amp;gt; benefit of the sender and recievers. Furthermore it does so in such a&lt;br/&gt;&amp;gt; &amp;gt; way that&lt;br/&gt;&amp;gt; &amp;gt; helps recievers avoid utxo bloat, a constant problem for bitcoin merchants.&lt;br/&gt;&amp;gt; &amp;gt; ==Copyright==&lt;br/&gt;&amp;gt; &amp;gt; This BIP is in the public domain.&lt;br/&gt;&amp;gt; &amp;gt; ==Motivation==&lt;br/&gt;&amp;gt; &amp;gt; One of the most powerful heuristic&amp;#39;s employed by those whose goal is to&lt;br/&gt;&amp;gt; &amp;gt; undermine&lt;br/&gt;&amp;gt; &amp;gt; bitcoin&amp;#39;s fungiblity has been to assume all inputs of a transaction are&lt;br/&gt;&amp;gt; &amp;gt; signed by&lt;br/&gt;&amp;gt; &amp;gt; a single party. In the few cases this assumption does not hold, it is&lt;br/&gt;&amp;gt; &amp;gt; generally&lt;br/&gt;&amp;gt; &amp;gt; readibly recognizable (e.g. traditional coinjoins have a very obvious&lt;br/&gt;&amp;gt; &amp;gt; structure,&lt;br/&gt;&amp;gt; &amp;gt; or multisig outputs are most frequently validated onchain).&lt;br/&gt;&amp;gt; &amp;gt; Bustapay requires no changes to bitcoin and creates bitcoin transactions&lt;br/&gt;&amp;gt; &amp;gt; that are&lt;br/&gt;&amp;gt; &amp;gt; indistinguishable from normal ones.&lt;br/&gt;&amp;gt; &amp;gt; It is worth noting that this specification has been intentionally kept&lt;br/&gt;&amp;gt; &amp;gt; as simple&lt;br/&gt;&amp;gt; &amp;gt; as possible to encourage adoption. There are almost an endless amount of&lt;br/&gt;&amp;gt; &amp;gt; extensions&lt;br/&gt;&amp;gt; &amp;gt; possible but the harder the implementation of clients/server the less&lt;br/&gt;&amp;gt; &amp;gt; likely it&lt;br/&gt;&amp;gt; &amp;gt; will ever be done. Should bustapay enjoy widespread adoption, a &amp;#34;v2&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; specification&lt;br/&gt;&amp;gt; &amp;gt; will be created with desired extensions.&lt;br/&gt;&amp;gt; &amp;gt; ==Specification==&lt;br/&gt;&amp;gt; &amp;gt; A bustapay payment is made from a sender to a receiver.&lt;br/&gt;&amp;gt; &amp;gt; Step 1. Sender creates a bitcoin transaction paying the receiver&lt;br/&gt;&amp;gt; &amp;gt; This transaction must be fully valid, signed and all inputs must use&lt;br/&gt;&amp;gt; &amp;gt; segwit. This transaction is known as the &amp;#34;template transaction&amp;#34;. This&lt;br/&gt;&amp;gt; &amp;gt; transaction must not be propagated on the bitcoin network.&lt;br/&gt;&amp;gt; &amp;gt; Step 2. Sender gives the &amp;#34;template transaction&amp;#34; to the receiver&lt;br/&gt;&amp;gt; &amp;gt; This would generally be done as an HTTP POST. The exact URL to submit it&lt;br/&gt;&amp;gt; &amp;gt; to could be specified with a bip21 encoded address. Such as&lt;br/&gt;&amp;gt; &amp;gt; bitcoin:2NABbUr9yeRCp1oUCtVmgJF8HGRCo3ifpTT?bustapay=&lt;a href=&#34;https://bp.bustabit.com/submit&#34;&gt;https://bp.bustabit.com/submit&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; and the HTTP body should be the raw transaction hex encoded as text.&lt;br/&gt;&amp;gt; &amp;gt; Step 3. Receiver processes the transaction and returns a partially&lt;br/&gt;&amp;gt; &amp;gt; signed coinjoin&lt;br/&gt;&amp;gt; &amp;gt; The receiver validates the transaction is valid, pays himself and is&lt;br/&gt;&amp;gt; &amp;gt; eligible for propation. The receiver then adds one of his own inputs&lt;br/&gt;&amp;gt; &amp;gt; (known as the &amp;#34;contributed input&amp;#34;) and increase the output that pays&lt;br/&gt;&amp;gt; &amp;gt; himself by the contributed input amount. Doing so will invalidate the&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;template transaction&amp;#34;&amp;#39;s original input signatures, so the sender needs&lt;br/&gt;&amp;gt; &amp;gt; to return this &amp;#34;partial transaction&amp;#34; back to the receiver to sign. This&lt;br/&gt;&amp;gt; &amp;gt; is returned as a hex-encoded raw transaction a response to the original&lt;br/&gt;&amp;gt; &amp;gt; HTTP POST request.&lt;br/&gt;&amp;gt; &amp;gt; Step 4. Receiver validates, re-signs, and propagates on the bitcoin network&lt;br/&gt;&amp;gt; &amp;gt; The receiver is responsible in making sure the &amp;#34;partial transaction&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; returned by the sender was changed correctly (it should assume the&lt;br/&gt;&amp;gt; &amp;gt; connection has been MITM&amp;#39;d and act accordingly), resign its original&lt;br/&gt;&amp;gt; &amp;gt; inputs and propagates this transaction over the bitcoin network. The&lt;br/&gt;&amp;gt; &amp;gt; client must be aware that the server can reorder inputs and outputs.&lt;br/&gt;&amp;gt; &amp;gt; Step 5. Receiver observes the finalized transaction on the bitcoin network&lt;br/&gt;&amp;gt; &amp;gt; Once the receiver has seen the finalized transactions on the network&lt;br/&gt;&amp;gt; &amp;gt; (and has enough confirmations) it can process it like a normal payment&lt;br/&gt;&amp;gt; &amp;gt; for the sent amount (as opposed to the amount that it looks like on the&lt;br/&gt;&amp;gt; &amp;gt; network). If the receiver does not see the finalized transaction after a&lt;br/&gt;&amp;gt; &amp;gt; timeout will propagate the original &amp;#34;template transaction&amp;#34; to ensure the&lt;br/&gt;&amp;gt; &amp;gt; payment happens and function a strong anti-DoS mechanism.&lt;br/&gt;&amp;gt; &amp;gt; === Implementation Notes ===&lt;br/&gt;&amp;gt; &amp;gt; For anyone wanting to implement bustapay payments, here are some notes&lt;br/&gt;&amp;gt; &amp;gt; for receivers:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   A transaction can easily be checked if it&amp;#39;s suitable for the mempool&lt;br/&gt;&amp;gt; &amp;gt;     with testmempoolaccept in bitcoin core 0.17&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   Tracking transactions by txid is precarious. To keep your sanity make&lt;br/&gt;&amp;gt; &amp;gt;     sure all inputs are segwit. But remember segwit does not prevent txid&lt;br/&gt;&amp;gt; &amp;gt;     malleability unless you validate the transaction. So really make sure&lt;br/&gt;&amp;gt; &amp;gt;     you&amp;#39;re using testmempoolaccept at the very least&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   Bustapay could be abused by a malicious party to query if you own a&lt;br/&gt;&amp;gt; &amp;gt;     deposit address or not. So never accept a bustapay transaction that pays&lt;br/&gt;&amp;gt; &amp;gt;     an already used deposit address&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   You will need to keep a mapping of which utxos people have showed you&lt;br/&gt;&amp;gt; &amp;gt;     and which you revealed. So if you see them again, you can reveal the&lt;br/&gt;&amp;gt; &amp;gt;     same one of your own&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   Check if the transaction was already sorted according to BIP69, if so&lt;br/&gt;&amp;gt; &amp;gt;     ensure the result stays that way. Otherwise probably just shuffle the&lt;br/&gt;&amp;gt; &amp;gt;     inputs/outpus&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Notes for sending applications:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   The HTTP response must not be trusted. It should be fully validated&lt;br/&gt;&amp;gt; &amp;gt;     that no unexpected changes have been made to the transaction.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -   The sender should be aware the original &amp;#34;template transaction&amp;#34; may be&lt;br/&gt;&amp;gt; &amp;gt;     propagated at any time, and in fact can intentionally be&lt;br/&gt;&amp;gt; &amp;gt;       done so for the purpose of RBF as it should have a slightly higher fee&lt;br/&gt;&amp;gt; &amp;gt;     rate.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; == Credits ==&lt;br/&gt;&amp;gt; &amp;gt; The idea is obviously based upon Dr. Maxwell&amp;#39;s seminal CoinJoin&lt;br/&gt;&amp;gt; &amp;gt; proposal, and reduced scope inspired by a simplification of the &amp;#34;pay 2&lt;br/&gt;&amp;gt; &amp;gt; endpoint&amp;#34; (now offline) blog post by blockstream.&lt;br/&gt;&amp;gt; &amp;gt; -Ryan&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;&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;
    </content>
    <updated>2023-06-07T18:16:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0ryxt787qyhgxzssl5gzn2ltxcvfpfn3dm7k7whe6zxypw02m4ugzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5t8vm4w</id>
    
      <title type="html">📅 Original date posted:2018-02-18 📝 Original message:No, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0ryxt787qyhgxzssl5gzn2ltxcvfpfn3dm7k7whe6zxypw02m4ugzypr764e0pqn74a3ugd2q24jqeznpaug699ydx8hvw8fg9q698pky5t8vm4w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0y3j2432whemcwsepfdkxyrmzh8p0v8nwrgnu5dnqxuxfzum9jzgycqwcu&#39;&gt;nevent1q…qwcu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-02-18&lt;br/&gt;📝 Original message:No, you are misunderstanding. The block size limit (1MB) has been replaced in favor of a block weight limit (4M weight). Bytes which must be sent to old clients are weighted at 4 units each which is what allows it to be a soft fork.&lt;br/&gt;&lt;br/&gt;So as such, there&amp;#39;s not two separate limits or anything. &lt;br/&gt;&lt;br/&gt;P.S. what&amp;#39;s up with your signature lol&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;​-Ryan&lt;br/&gt;&lt;br/&gt;​&lt;br/&gt;&lt;br/&gt;-------- Original Message --------&lt;br/&gt; On February 18, 2018 11:26 AM, CANNON via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.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; I have a question in reference to the increased blockspace enabled&lt;br/&gt;&amp;gt; by the segregated witness upgrade. Is this extra blockspace beyond&lt;br/&gt;&amp;gt; the legacy 1 MB limit limited to just witness data?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Cannon&lt;br/&gt;&amp;gt; PGP Fingerprint: 2BB5 15CD 66E7 4E28 45DC 6494 A5A2 2879 3F06 E832&lt;br/&gt;&amp;gt; Email: cannon at cannon-ciota.info&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; NOTICE: ALL EMAIL CORRESPONDENCE NOT SIGNED/ENCRYPTED WITH PGP SHOULD&lt;br/&gt;&amp;gt; BE CONSIDERED POTENTIALLY FORGED, AND NOT PRIVATE.&lt;br/&gt;&amp;gt; -----BEGIN PGP SIGNATURE-----&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; iQIcBAEBCgAGBQJaiajLAAoJEAYDai9lH2mwDbMQAKgJseZG9oOoP9WJlESFdAzm&lt;br/&gt;&amp;gt; jLM69KLF4RVWDQjMWCtyVayyolXMLavW6fL4GL7/ztLYSl9Pz&#43;FDlH3Qgo1GLDx4&lt;br/&gt;&amp;gt; fRUkmb0ApLBSAjmdqM&#43;kWjgq3s6/oZaIkNxGeyK5SYY4QhF80Z42PWLBPKjAc7vn&lt;br/&gt;&amp;gt; pe7Im13NwtyJiRuCmq4e1z6GmW86fFOKOsR4rlWcftHOFmH8Gz5d9KK9LbPqU6Ca&lt;br/&gt;&amp;gt; &#43;rde8yb&#43;A9uXEv3O9MqeLId7FYSJixgzFGJosidVkAVQI7YZ0TAfG4HSwKjtqDz7&lt;br/&gt;&amp;gt; SW2Bs3nDeiCr2QN7Su9TUaoSN/yKTBOw5jnql9cNOYuf4GAG0MXWinmYP8MWCiqh&lt;br/&gt;&amp;gt; bIrzvOnlZGapX/36Fpab67VDcFnXJJc8ofqYmn&#43;oUoW/q7geQpu/V1oz&#43;AR9nD/d&lt;br/&gt;&amp;gt; n8wFxvZdRlTbq2XDXySaontxNH0rd80fSG5SJtO5Js9hK/vNG&#43;Xa7Zc&#43;76gEtvlF&lt;br/&gt;&amp;gt; 5G1F6MOcsoXUDCnMteuNxaZx6TPML6RuWVmbR1wXOaX4qZ01p7AsjQlTIcrlVDsB&lt;br/&gt;&amp;gt; LVGW70wjfETBCffn1JQvFmIK7NzggIUuYfLF0IrfM4BrTa/01RnmfBOpWGiIvyIG&lt;br/&gt;&amp;gt; qZqKLYDbW7BDkc/HMtAonR/0t6bTUv/388USSnbMakO9bvih0xxIw4NWTyoSoef/&lt;br/&gt;&amp;gt; I&#43;W6ny7qXt&#43;pegLF4cYL&lt;br/&gt;&amp;gt; =YqEM&lt;br/&gt;&amp;gt; -----END PGP SIGNATURE-----&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;
    </content>
    <updated>2023-06-07T18:10:54Z</updated>
  </entry>

</feed>