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




  <entry>
    <id>https://nostr.ae/nevent1qqsxhtalm7sldttwfxp7lffvedmf60q9j74ar3d26zqga3k3ak9pteczyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6k36axs</id>
    
      <title type="html">📅 Original date posted:2022-08-25 📝 Original message:Thanks ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxhtalm7sldttwfxp7lffvedmf60q9j74ar3d26zqga3k3ak9pteczyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6k36axs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0pxvkgx6swny3y7kp5xt076h5hl0p43ss6f3fzf755y3rh9ufnqs63xt94&#39;&gt;nevent1q…xt94&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-25&lt;br/&gt;📝 Original message:Thanks Clark - despite having worked in the Bitcoin wallet space for a&lt;br/&gt;number of years I have not come across SLIP-0015. I did try to find prior&lt;br/&gt;work on this - this one escaped me.&lt;br/&gt;&lt;br/&gt;That said, having reviewed SLIP-0015, I think it has different design&lt;br/&gt;goals. For example, it requires private key derivation from seed, which&lt;br/&gt;means wallets functioning as coordinators cannot use the format without&lt;br/&gt;access to the devices storing the private keys. It seems to me that wallet&lt;br/&gt;labels are more privacy rather than security sensitive, and coordinators&lt;br/&gt;should be able to import and export a wallet label format independently.&lt;br/&gt;&lt;br/&gt;Secondly, it uses JSON as a data format, which I wanted to avoid for&lt;br/&gt;reasons I&amp;#39;ll describe in a separate reply in this thread. Finally (and this&lt;br/&gt;is minor as it could easily be extended) SLIP-0015 does not currently&lt;br/&gt;support transaction labels.&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;On Wed, Aug 24, 2022 at 3:53 PM Clark Moody &amp;lt;clark at clarkmoody.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Craig,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for the proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; How does this proposal compare with SLIP-0015, which provides encryption&lt;br/&gt;&amp;gt; by default? Would it be worth exploring a merge of the two approaches?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/satoshilabs/slips/blob/master/slip-0015.md&#34;&gt;https://github.com/satoshilabs/slips/blob/master/slip-0015.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Clark&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Wednesday, August 24th, 2022 at 4:18 AM, Craig Raw 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; 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&lt;br/&gt;&amp;gt; import of labels from a wallet. While transferring access to funds across&lt;br/&gt;&amp;gt; wallet applications has been made simple through standards such as BIP39,&lt;br/&gt;&amp;gt; wallet labels remain siloed and difficult to extract despite their value,&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; a transaction, address, input or output in the first column, and the label&lt;br/&gt;&amp;gt; in the second column. CSV was chosen for its wide accessibility, especially&lt;br/&gt;&amp;gt; to users without specific technical expertise. Similarly, the CSV file may&lt;br/&gt;&amp;gt; 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;br/&gt;&amp;gt; &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;&lt;br/&gt;&amp;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;br/&gt;&amp;gt; &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&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; applications is well defined through standards such as BIP39, BIP32, BIP44&lt;br/&gt;&amp;gt; etc.&lt;br/&gt;&amp;gt; These standards are well supported and allow users to move easily between&lt;br/&gt;&amp;gt; different wallets.&lt;br/&gt;&amp;gt; There is, however, no defined standard to transfer any labels the user may&lt;br/&gt;&amp;gt; have applied to the transactions, addresses, inputs or outputs in their&lt;br/&gt;&amp;gt; wallet.&lt;br/&gt;&amp;gt; The UTXO model that Bitcoin uses makes these labels particularly valuable&lt;br/&gt;&amp;gt; as they may indicate the source of funds, whether received externally or as&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; of private information.&lt;br/&gt;&amp;gt; Labels provide valuable guidance in this regard, and have even become&lt;br/&gt;&amp;gt; mandatory when spending in several Bitcoin wallets.&lt;br/&gt;&amp;gt; Allowing users to export their labels in a standardized way ensures that&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; bulk management of labels accessible to users without specific technical&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; possible, this BIP uses the comma separated values (CSV) format, which is&lt;br/&gt;&amp;gt; widely supported by consumer, business, and scientific applications.&lt;br/&gt;&amp;gt; Although the technical specification of CSV in RFC4180 is not always&lt;br/&gt;&amp;gt; followed, the application of the format in this BIP is simple enough that&lt;br/&gt;&amp;gt; compatibility should not present a problem.&lt;br/&gt;&amp;gt; Moreover, the simplicity and forgiving nature of CSV (over for example&lt;br/&gt;&amp;gt; JSON) lends itself well to bulk label editing using spreadsheet and text&lt;br/&gt;&amp;gt; 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,&lt;br/&gt;&amp;gt; containing one record per line, with records containing two fields&lt;br/&gt;&amp;gt; delimited by a comma.&lt;br/&gt;&amp;gt; The fields may be quoted, but this is unnecessary, as the first comma in&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; 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,&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; file may be compressed using the ZIP file format, using the &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt;&lt;br/&gt;&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&lt;br/&gt;&amp;gt; or AES-256 encryption, which is supported by numerous applications&lt;br/&gt;&amp;gt; including Winzip and 7-zip.&lt;br/&gt;&amp;gt; In order to ensure that weak encryption does not proliferate, importers&lt;br/&gt;&amp;gt; following this standard must refuse to import &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; files encrypted&lt;br/&gt;&amp;gt; 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&lt;br/&gt;&amp;gt; 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,&lt;br/&gt;&amp;gt; but it is possible to disambiguate between transactions, addresses, inputs&lt;br/&gt;&amp;gt; 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;&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&lt;br/&gt;&amp;gt; (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;&amp;gt;&lt;br/&gt;&amp;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/bitcoin-dev/attachments/20220825/acdd8972/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220825/acdd8972/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:13:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxlsjtauvkwcq8h3kxag465n4tqnu6cl0jrczprlmd6pgqex8sjhczyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6kwfle8</id>
    
      <title type="html">📅 Original date posted:2022-07-21 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxlsjtauvkwcq8h3kxag465n4tqnu6cl0jrczprlmd6pgqex8sjhczyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6kwfle8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspunu20fd65mu4tnpfkpz5pe6jvddhf8vlulue7txjvdv563uwv0gct5ryu&#39;&gt;nevent1q…5ryu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-21&lt;br/&gt;📝 Original message:&amp;gt; Unfortunately, I do not know of any &amp;#34;verifiers&amp;#34; that will accept the&lt;br/&gt;above signature&lt;br/&gt;&lt;br/&gt;Sparrow verifies this signature.&lt;br/&gt;&lt;br/&gt;The approach used is to convert the message and signature to a public key,&lt;br/&gt;trying first BIP137 and then the approach used by Electrum (they differ in&lt;br/&gt;treatment of the signature header for segwit P2SH). The script type is&lt;br/&gt;extracted from the provided address and compared against the address&lt;br/&gt;constructed with the public key using the same script type. i.e. There is&lt;br/&gt;no need to iterate through all script types, since the script type is&lt;br/&gt;implicitly provided in the address.&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;On Wed, Jul 20, 2022 at 11:51 PM Greg Sanders via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Please see BIP322&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Jul 20, 2022, 5:46 PM Peter (Coinkite Inc) 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; Hi Ali.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This BIP does not replace, supersede, or obsolete BIPs 173 or 322. My&lt;br/&gt;&amp;gt;&amp;gt; proposal is simply going to standardize the practice of placing the segwit&lt;br/&gt;&amp;gt;&amp;gt; address into the address field, and does not require alterations to the&lt;br/&gt;&amp;gt;&amp;gt; message signing format like those BIPs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; COLDCARD makes signatures exacly like that, when told to sign with a&lt;br/&gt;&amp;gt;&amp;gt; segwit address:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     % ckcc msg -s Hello&lt;br/&gt;&amp;gt;&amp;gt;     Hello&lt;br/&gt;&amp;gt;&amp;gt;     bc1qzeacswvlulg0jngad9gmtkvdp9lwum42wwzdu5&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; HxuuWQwjw0417fLV9L0kWbt7w9XOIWKhHMhjXhyXTczcSozGTXM4knqdISiYbbmqSRXqI5mNTWH9qkDoqZTpnPc=&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unfortunately, I do not know of any &amp;#34;verifiers&amp;#34; that will accept the&lt;br/&gt;&amp;gt;&amp;gt; above signature, but there is no alternative since the various BIP-322&lt;br/&gt;&amp;gt;&amp;gt; proposals never gained wide acceptance.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin Core does not support verifying that message, even though the UX&lt;br/&gt;&amp;gt;&amp;gt; makes it look possible. In effect segwit features never got implemented to&lt;br/&gt;&amp;gt;&amp;gt; that depth in Core. It&amp;#39;s sad because the community is not maintaining core&lt;br/&gt;&amp;gt;&amp;gt; (Core?) features to the same depth as Satoshi did when he was active in the&lt;br/&gt;&amp;gt;&amp;gt; project.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; PS. I am pretty sure that there is a BIP for the original signing&lt;br/&gt;&amp;gt;&amp;gt; method - what is its number?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My understanding that the original approach was directly from Satoshi&lt;br/&gt;&amp;gt;&amp;gt; himself when the original client was written. It has never been codified in&lt;br/&gt;&amp;gt;&amp;gt; a BIP as far as I know.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A related issue the the &amp;#34;ascii armor&amp;#34; that is sometimes used. It&amp;#39;s a&lt;br/&gt;&amp;gt;&amp;gt; little like RFC2440 &amp;lt;&lt;a href=&#34;https://www.ietf.org/rfc/rfc2440.txt&amp;gt&#34;&gt;https://www.ietf.org/rfc/rfc2440.txt&amp;gt&lt;/a&gt;; but&lt;br/&gt;&amp;gt;&amp;gt; newline-treatment isn&amp;#39;t defined well enough for good interoperability, in&lt;br/&gt;&amp;gt;&amp;gt; my personal experience.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So in summary... yes a &amp;#34;defacto&amp;#34; BIP is needed and useful to do, in my&lt;br/&gt;&amp;gt;&amp;gt; opinion. Then Core should be updated to support it as well.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&amp;gt; @DocHEX  ||  Coinkite  ||  PGP: A3A31BAD 5A2A5B10&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Jul 20, 2022 at 04:10:09AM &#43;0000, Ali Sherief wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; [my third attempt at getting this message through. Surprisingly, I&lt;br/&gt;&amp;gt;&amp;gt; managed to send this at the second try with the correct SMTP, From, To and&lt;br/&gt;&amp;gt;&amp;gt; all, but maybe it was caught in GreyListing (protonmail).]&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I was thinking about creating a BIP to address the lack of&lt;br/&gt;&amp;gt;&amp;gt; standardization for Segwit message signatures, but I want some advice&lt;br/&gt;&amp;gt;&amp;gt; before proceeding.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The current state of affairs is that the wallets that do support&lt;br/&gt;&amp;gt;&amp;gt; signing and verifying a bitcoin message can only sign legacy addresses. It&lt;br/&gt;&amp;gt;&amp;gt; is technically possible to sign and verify segwit addresses, since ECDSA&lt;br/&gt;&amp;gt;&amp;gt; only depends on the public key (hence why you need a private key to sign&lt;br/&gt;&amp;gt;&amp;gt; messages).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; However, because there is no generally-accepted standard for signing&lt;br/&gt;&amp;gt;&amp;gt; segwit messages, the wallets that do support this feature simply insert the&lt;br/&gt;&amp;gt;&amp;gt; segwit address into the address field. Verification also only works using&lt;br/&gt;&amp;gt;&amp;gt; the procedure on that specific wallet software, if only because the&lt;br/&gt;&amp;gt;&amp;gt; conventional tools for verifying messages attempt to reconstruct a legacy&lt;br/&gt;&amp;gt;&amp;gt; address only.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This BIP is not going to enforce anything, it&amp;#39;s just going to set&lt;br/&gt;&amp;gt;&amp;gt; guidelines for writing a message signing and verification procedure.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This BIP does not replace, supersede, or obsolete BIPs 173 or 322. My&lt;br/&gt;&amp;gt;&amp;gt; proposal is simply going to standardize the practice of placing the segwit&lt;br/&gt;&amp;gt;&amp;gt; address into the address field, and does not require alterations to the&lt;br/&gt;&amp;gt;&amp;gt; message signing format like those BIPs.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; In summary, in the verification part, the following address hashing&lt;br/&gt;&amp;gt;&amp;gt; algorithms will be tried in sequence in an attempt to reconstruct the&lt;br/&gt;&amp;gt;&amp;gt; address in the signed message:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - P2PKH (legacy address)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - P2WPKH-P2SH (nested segwit)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - P2WPKH with version from 0 to MAX_WITNESS_VERSION (covers native&lt;br/&gt;&amp;gt;&amp;gt; segwit with version 0 as well as future native segwit address types such as&lt;br/&gt;&amp;gt;&amp;gt; Taproot) - where MAX_WITNESS_VERSION is the maximum supported witness&lt;br/&gt;&amp;gt;&amp;gt; version by the bech32 encoding.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The verification procedure stops if any of these hashes yield the&lt;br/&gt;&amp;gt;&amp;gt; correct address, and fails if all of the above methods fail to reproduce&lt;br/&gt;&amp;gt;&amp;gt; the address in the signed message.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; In the signing procedure, the only modification is the insertion of the&lt;br/&gt;&amp;gt;&amp;gt; segwit address in place of the legacy address in the signed message.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; If this BIP is approved, it does not require any changes to existing&lt;br/&gt;&amp;gt;&amp;gt; signed messages, and the original sign/verify algorithms will continue to&lt;br/&gt;&amp;gt;&amp;gt; interoperate with this improved sign/verify algorithm, without any action&lt;br/&gt;&amp;gt;&amp;gt; necessary from the developers.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; So as you can see, this is the entire framework of the BIP I plan to&lt;br/&gt;&amp;gt;&amp;gt; draft. There is no need for any auxilliary feature additions into this BIP.&lt;br/&gt;&amp;gt;&amp;gt; I just want to hear the mailing list&amp;#39;s advice about how I should draft such&lt;br/&gt;&amp;gt;&amp;gt; a BIP.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - Ali&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; PS. I am pretty sure that there is a BIP for the original signing&lt;br/&gt;&amp;gt;&amp;gt; method - what is its number?&lt;br/&gt;&amp;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; _______________________________________________&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;&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;-------------- 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/20220721/8ad06d81/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220721/8ad06d81/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrjey0n8s9rjlrwl7n73dz96l8re82aspnzaz0ef0qxasangeqtagzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6q6gntu</id>
    
      <title type="html">📅 Original date posted:2021-03-17 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrjey0n8s9rjlrwl7n73dz96l8re82aspnzaz0ef0qxasangeqtagzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6q6gntu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst5efrtgfggnjktyl9pxqqzdmm9awqujwh4hc5d86aas7qafyf3wgcmcawr&#39;&gt;nevent1q…cawr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-17&lt;br/&gt;📝 Original message:The motivation for this BIP proposal states that encoding the script type&lt;br/&gt;in the derivation is redundant because output descriptors are becoming&lt;br/&gt;commonplace. However, I think it&amp;#39;s important to note that this shifts more&lt;br/&gt;burden of wallet backup onto the user, who now has an additional item (the&lt;br/&gt;output descriptor) to backup correctly. This is particularly important when&lt;br/&gt;we consider that performing this backup is often laborious, including&lt;br/&gt;stamping onto metal etc.&lt;br/&gt;&lt;br/&gt;There are two ways to go here:&lt;br/&gt;1. Use derivation paths that do not encode the script type, and conduct a&lt;br/&gt;global education effort to encourage users to backup output descriptors in&lt;br/&gt;addition to their seed words, without which their funds may be lost.&lt;br/&gt;2. Use a standard set of derivation paths that encode the script type,&lt;br/&gt;ensuring that even if users do not back this up, they can check against a&lt;br/&gt;handful of common derivations and recover the funds.&lt;br/&gt;&lt;br/&gt;Option 1 is obviously cleaner and more precise from a technical POV, but I&lt;br/&gt;feel it is less practical. The approach of using common words to encode the&lt;br/&gt;seed was chosen because these words are short and familiar - an output&lt;br/&gt;descriptor on the other hand is technical and longer form, and thus more&lt;br/&gt;difficult to record correctly, particularly on damage-resistant media.&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;On Tue, Mar 16, 2021 at 2:19 PM Robert Spigler via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; No, wallets don&amp;#39;t and shouldn&amp;#39;t have to check all script types on&lt;br/&gt;&amp;gt; recovery.  Descriptor Wallets solve all of this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To back up a multisignature wallet, each cosigner stores their xprv (how&lt;br/&gt;&amp;gt; you do this; BIP39, WIF, etc, is out of scope). and the wallet descriptor.&lt;br/&gt;&amp;gt; This is done, for example, in Yeti. To recover, simply combine `M` private&lt;br/&gt;&amp;gt; keys, and check the script designated in 1 of the descriptor copies.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For single signature wallets, it is the same, except only one signature is&lt;br/&gt;&amp;gt; needed.  Store xprv and descriptor.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is not fair nor accurate to say that currently, in order to recover,&lt;br/&gt;&amp;gt; wallets need &amp;#34;just the seed words&amp;#34;.  They also need all public keys, and&lt;br/&gt;&amp;gt; derivation paths.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Descriptors (and this BIP), is a much cleaner way to handle wallet&lt;br/&gt;&amp;gt; creation and backup, by separating the two layers (keys and scripts) and&lt;br/&gt;&amp;gt; getting rid of redundant information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Personal Fingerprint:  BF0D 3C08 A439 5AC6 11C1 5395 B70B 4A77 F850 548F&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;&amp;gt; On Sunday, March 14, 2021 11:13 AM, SomberNight &amp;lt;&lt;br/&gt;&amp;gt; somber.night at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; See some replies inline. (quoted text from BIP draft)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Date: Sun, 14 Mar 2021 01:51:15 &#43;0000&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; From: Robert Spigler RobertSpigler at protonmail.ch&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Subject: [bitcoin-dev] Signature and Script Independent Hierarchy for&lt;br/&gt;&amp;gt; Deterministic Wallets.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; There are many issues with the current standards. As background, BIP&lt;br/&gt;&amp;gt; 44/49/84 specifies:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; `m / purpose&amp;#39; / coin_type&amp;#39; / account&amp;#39; / change / address_index`&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; where the BIP43 `purpose&amp;#39;` path is separate for each script (P2PKH,&lt;br/&gt;&amp;gt; P2WPKH-in-P2SH, and P2WPKH respectively). However, these per-script&lt;br/&gt;&amp;gt; derivations are made redundant with descriptors&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; We should not be mixing keys and scripts in the same layer. The wallet&lt;br/&gt;&amp;gt; should create extended private/public keys independent of the script or&lt;br/&gt;&amp;gt; signature type&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; You say that keys and scripts should not be mixed in the same layer, and&lt;br/&gt;&amp;gt; imply that this was solely done due to these standards predating output&lt;br/&gt;&amp;gt; script descriptors. Even if this was the case, it is not the only reason&lt;br/&gt;&amp;gt; for doing it. BIP44/49/84 mixing scripts and keys in the same layer makes&lt;br/&gt;&amp;gt; recovery from seed/mnemonic much easier.&lt;br/&gt;&amp;gt; &amp;gt; Note the significant overlap between the authors of BIP39 and BIP44. I&lt;br/&gt;&amp;gt; am fairly certain BIP44 was designed with recovering from a BIP39 seed (and&lt;br/&gt;&amp;gt; no additional information backed up) in mind. Note the &amp;#34;Account discovery&amp;#34;&lt;br/&gt;&amp;gt; section of BIP44.&lt;br/&gt;&amp;gt; &amp;gt; (Electrum seeds go even further, as such seeds contain a version number&lt;br/&gt;&amp;gt; that encodes both the script type and the key derivation path to use.)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; We define the following 5 levels in the BIP32 path:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; `m / purpose&amp;#39; / coin_type&amp;#39; / account&amp;#39; / change / address_index`&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [Account]&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; It is crucial that this level is increased for each new wallet joined&lt;br/&gt;&amp;gt; or private/public keys created; for both privacy and cryptographic purposes.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; For example, in multisignature wallets, before sending a new key&lt;br/&gt;&amp;gt; record to a coordinator, the wallet must increment the `account&amp;#39;` level.&lt;br/&gt;&amp;gt; Before creating it&amp;#39;s own single signature wallet, the `account&amp;#39;` level must&lt;br/&gt;&amp;gt; again be incremented.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Imagine a user who has a BIP39 (or similar) seed. Even today, recovering&lt;br/&gt;&amp;gt; most non-singlesig scripts from that is obviously infeasible. However, all&lt;br/&gt;&amp;gt; singlesig scripts at least can be discovered if the keys are using the&lt;br/&gt;&amp;gt; suggested derivation paths.&lt;br/&gt;&amp;gt; &amp;gt; By trying to create a standard that mixes discoverable and&lt;br/&gt;&amp;gt; non-discoverable scripts in the same derivation scheme and incrementing a&lt;br/&gt;&amp;gt; single index, you are turning all scripts into being non-discoverable.&lt;br/&gt;&amp;gt; &amp;gt; Note that even if a user only used singlesig scripts and followed this&lt;br/&gt;&amp;gt; proposal, during recovery from seed the wallet would have to check all&lt;br/&gt;&amp;gt; script types for all account indices (which is only ever going to get more&lt;br/&gt;&amp;gt; expensive as new script types come).&lt;br/&gt;&amp;gt; &amp;gt; The workaround and I imagine your suggested solution is clearly to&lt;br/&gt;&amp;gt; backup both seed words and output script descriptors; and to keep appending&lt;br/&gt;&amp;gt; new output script descriptors to existing backups when the account index is&lt;br/&gt;&amp;gt; incremented. While much less user-friendly than backing up just a seed, it&lt;br/&gt;&amp;gt; is more generic and extendable.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; My point is simply that your proposal is making a tradeoff here. The&lt;br/&gt;&amp;gt; tradeoff itself seems easy to miss on first read of the text, so I just&lt;br/&gt;&amp;gt; wanted to explicitly point it out for the record.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ghost43 / SomberNight&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;-------------- 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/20210317/5587c0ec/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210317/5587c0ec/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:30:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0ltp8sp9sc3ygaedxqkqu3f8czajng8qpj654p3ec9d959jndjuszyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6vwpssr</id>
    
      <title type="html">📅 Original date posted:2021-03-01 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0ltp8sp9sc3ygaedxqkqu3f8czajng8qpj654p3ec9d959jndjuszyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6vwpssr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdzr60eupl6f7xqvnf08gwuxk4tmufatta92eahmepw8rznmk3vdsh22u24&#39;&gt;nevent1q…2u24&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-01&lt;br/&gt;📝 Original message:Something to consider adding to this proposal is to keep the idea of&lt;br/&gt;pruning - i.e. retain a sequentially uninterrupted number of the most&lt;br/&gt;recent blocks.&lt;br/&gt;&lt;br/&gt;Many users do not run a node for entirely altruistic reasons - they do so,&lt;br/&gt;at least in part, because it allows them to use their wallets privately.&lt;br/&gt;Without this ability, I think the number of users willing to run their node&lt;br/&gt;in this configuration might be reduced.&lt;br/&gt;&lt;br/&gt;Another related thought is to have a decreasing density over blocks over&lt;br/&gt;time as you go backwards towards genesis, in order for the data density of&lt;br/&gt;the storage to match the actual usage of the network, in which (I would&lt;br/&gt;imagine) more recent blocks are more heavily requested than early ones.&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;On Sun, Feb 28, 2021 at 10:18 AM Leo Wandersleb via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Only headers need to be downloaded sequentially so downloading relevant&lt;br/&gt;&amp;gt; blocks&lt;br/&gt;&amp;gt; from one node is totally possible with gaps in between.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 2/27/21 4:10 AM, Igor Cota via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hi Keagan,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I had a very similar idea. The only difference being for the node to&lt;br/&gt;&amp;gt; decide on&lt;br/&gt;&amp;gt; &amp;gt; a range of blocks to keep beforehand, rather than making the decision&lt;br/&gt;&amp;gt; &amp;gt; block-by-block like you suggest.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I felt the other nodes would be better served by ranges due to the&lt;br/&gt;&amp;gt; sequential&lt;br/&gt;&amp;gt; &amp;gt; nature of IBD. Perhaps this would be computationally lighter as well.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I also encourage you to read Ryosuke Abe&amp;#39;s paper [1] that proposes a DHT&lt;br/&gt;&amp;gt; &amp;gt; scheme to solve this same problem.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Cheers,&lt;br/&gt;&amp;gt; &amp;gt; Igor&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; [1] &lt;a href=&#34;https://arxiv.org/abs/1902.02174&#34;&gt;https://arxiv.org/abs/1902.02174&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; On Fri, 26 Feb 2021 at 21:57, Keagan McClelland via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Hi all,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     I&amp;#39;ve been thinking for quite some time about the problem of pruned&lt;br/&gt;&amp;gt; nodes&lt;br/&gt;&amp;gt; &amp;gt;     and ongoing storage costs for full nodes. One of the things that&lt;br/&gt;&amp;gt; strikes&lt;br/&gt;&amp;gt; &amp;gt;     me as odd is that we only really have two settings.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     A. Prune everything except the most recent blocks, down to the cache&lt;br/&gt;&amp;gt; size&lt;br/&gt;&amp;gt; &amp;gt;     B. Keep everything since genesis&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     From my observations and conversations with various folks in the&lt;br/&gt;&amp;gt; &amp;gt;     community, they would like to be able to run a &amp;#34;partially&amp;#34; pruned&lt;br/&gt;&amp;gt; node to&lt;br/&gt;&amp;gt; &amp;gt;     help bear the load of bootstrapping other nodes and helping with data&lt;br/&gt;&amp;gt; &amp;gt;     redundancy in the network, but would prefer to not dedicate hundreds&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt;     Gigabytes of storage space to the cause.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     This led me to the idea that a node could randomly prune some of the&lt;br/&gt;&amp;gt; &amp;gt;     blocks from history if it passed some predicate. A rough sketch of&lt;br/&gt;&amp;gt; this&lt;br/&gt;&amp;gt; &amp;gt;     would look as follows.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     1. At node startup, it would generate a random seed, this would be&lt;br/&gt;&amp;gt; unique&lt;br/&gt;&amp;gt; &amp;gt;     to the node but not necessary that it be cryptographically secure.&lt;br/&gt;&amp;gt; &amp;gt;     2. In the node configuration it would also carry a &amp;#34;threshold&amp;#34;&lt;br/&gt;&amp;gt; expressed&lt;br/&gt;&amp;gt; &amp;gt;     as some percentage of blocks it wanted to keep.&lt;br/&gt;&amp;gt; &amp;gt;     3. As IBD occurs, based off of the threshold, the block hash, and the&lt;br/&gt;&amp;gt; &amp;gt;     node&amp;#39;s unique seed, the node would either decide to prune the data&lt;br/&gt;&amp;gt; or keep&lt;br/&gt;&amp;gt; &amp;gt;     it. The uniqueness of the node&amp;#39;s hash should ensure that no block is&lt;br/&gt;&amp;gt; &amp;gt;     systematically overrepresented in the set of nodes choosing this&lt;br/&gt;&amp;gt; storage&lt;br/&gt;&amp;gt; &amp;gt;     scheme.&lt;br/&gt;&amp;gt; &amp;gt;     4. Once the node&amp;#39;s IBD is complete it would advertise this as a peer&lt;br/&gt;&amp;gt; &amp;gt;     service, advertising its seed and threshold, so that nodes could&lt;br/&gt;&amp;gt; &amp;gt;     deterministically deduce which of its peers had which blocks.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     The goals are to increase data redundancy in a way that more&lt;br/&gt;&amp;gt; uniformly&lt;br/&gt;&amp;gt; &amp;gt;     shares the load across nodes, alleviating some of the pressure of&lt;br/&gt;&amp;gt; full&lt;br/&gt;&amp;gt; &amp;gt;     archive nodes on the IBD problem. I am working on a draft BIP for&lt;br/&gt;&amp;gt; this&lt;br/&gt;&amp;gt; &amp;gt;     proposal but figured I would submit it as a high level idea in case&lt;br/&gt;&amp;gt; anyone&lt;br/&gt;&amp;gt; &amp;gt;     had any feedback on the initial design before I go into specification&lt;br/&gt;&amp;gt; &amp;gt;     levels of detail.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     If you have thoughts on&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     A. The protocol design itself&lt;br/&gt;&amp;gt; &amp;gt;     B. The barriers to put this kind of functionality into Core&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     I would love to hear from you,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Cheers,&lt;br/&gt;&amp;gt; &amp;gt;     Keagan&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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt; &amp;gt; *Igor Cota*&lt;br/&gt;&amp;gt; &amp;gt; Codex Apertus d.o.o.&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;&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;-------------- 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/20210301/57cba055/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210301/57cba055/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:29:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszjudvjhcpx77fzv9xt8rhnltz8w8zm4h3tqp9qymt9gc6w0s3vygzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6lu86er</id>
    
      <title type="html">📅 Original date posted:2021-02-15 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszjudvjhcpx77fzv9xt8rhnltz8w8zm4h3tqp9qymt9gc6w0s3vygzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6lu86er" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd3lar8vyezpdx3ywe0c0fhvpt98fvr93u8vr573p4ha2q5sw3dacw0rs98&#39;&gt;nevent1q…rs98&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-15&lt;br/&gt;📝 Original message:Hi all,&lt;br/&gt;&lt;br/&gt;Hugo and I have discussed off-list, and I have two concerns with this&lt;br/&gt;proposal:&lt;br/&gt;&lt;br/&gt;1. I believe adding the TOKEN and encryption to the exchange adds&lt;br/&gt;complexity to already notoriously complex multisig, without adding much in&lt;br/&gt;the way of security. This is because the shared secret (TOKEN) must still&lt;br/&gt;be shared securely, and if you have established an (off-protocol) secure&lt;br/&gt;channel to do this, why not just share the actual multisig configuration&lt;br/&gt;data directly in that channel? If you are able to do so, you retain the&lt;br/&gt;advantage of being able to inspect the data directly.&lt;br/&gt;&lt;br/&gt;2. Asking the user to enter the derivation into the Signer also adds (IMO&lt;br/&gt;unnecessary) complexity to the multisig setup process. A different way of&lt;br/&gt;doing it, which is specified in the UR crypto-account format linked to&lt;br/&gt;previously, has the Signer provide as many common derivations (along with&lt;br/&gt;their xpubs) as it can support for a given BIP44 account number. This has&lt;br/&gt;the dual advantage of making things simpler for the user (they only have to&lt;br/&gt;provide an optional account number) and increasing the standardisation on&lt;br/&gt;common derivation paths. On receiving these derivation/xpub pairs, the&lt;br/&gt;Coordinator can simply pick the appropriate one.&lt;br/&gt;&lt;br/&gt;These concerns noted, I agree it&amp;#39;s a good idea to have Signers save the&lt;br/&gt;multisig configuration as proposed, and it would be great to have&lt;br/&gt;standardisation in hww import and export formats (not just for multisig).&lt;br/&gt;On that note, I&amp;#39;d love to see greater adoption of the efficient UR2.0&lt;br/&gt;standard and associated formats for airgapped data transmission using QR&lt;br/&gt;codes.&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Feb 15, 2021 at 11:13 AM Hugo Nguyen via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; I have updated the proposal based on further feedback. The new spec is&lt;br/&gt;&amp;gt; included at the bottom.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have also created a public Github PR to make it easier to comment on the&lt;br/&gt;&amp;gt; text of the spec itself: &lt;a href=&#34;https://github.com/nunchuk-io/bips/pull/1&#34;&gt;https://github.com/nunchuk-io/bips/pull/1&lt;/a&gt; .&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Could someone please let me know what else needs to be done before a BIP&lt;br/&gt;&amp;gt; number can be assigned?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; === Quick summary of changes from last update ===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Define encryption modes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # NO_ENCRYPTION: Encryption is disabled.&lt;br/&gt;&amp;gt; # STANDARD : the TOKEN is a 64-bit nonce.&lt;br/&gt;&amp;gt; # EXTENDED : the TOKEN is a 128-bit nonce.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Define signature algorithm&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Follow BIP-0322, legacy format allowed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Multiple TOKENs (optional)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also add an option where the Coordinator can choose to use one common&lt;br/&gt;&amp;gt; TOKEN for all Signers, or use one per Signer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; === End of summary ===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Hugo&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: To be determined&lt;br/&gt;&amp;gt;   Layer: Applications&lt;br/&gt;&amp;gt;   Title: Bitcoin Secure Multisig Setup (BSMS)&lt;br/&gt;&amp;gt;   Author: Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt;, Peter Gray &amp;lt;peter at&lt;br/&gt;&amp;gt; coinkite.com&amp;gt;, Marko Bencun &amp;lt;marko at shiftcrypto.ch&amp;gt;, Pavol Rusnak &amp;lt;&lt;br/&gt;&amp;gt; stick at satoshilabs.com&amp;gt;, Aaron Chen &amp;lt;aarondongchen at gmail.com&amp;gt;, Rodolfo&lt;br/&gt;&amp;gt; Novak &amp;lt;rodolfo at coinkite.com&amp;gt;&lt;br/&gt;&amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;   Status: Proposed&lt;br/&gt;&amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;   Created: 2020-11-10&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; ==Introduction==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Abstract===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This document proposes a mechanism to set up multisig wallets securely.&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 2-clause BSD license.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Motivation===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Bitcoin multisig experience has been greatly streamlined under [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&lt;/a&gt; BIP-0174&lt;br/&gt;&amp;gt; (Partially Signed Bitcoin Transaction)]. However, what is still missing is&lt;br/&gt;&amp;gt; a standardized process for setting up multisig wallets securely across&lt;br/&gt;&amp;gt; different vendors.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are a number of concerns when it comes to setting up a multisig&lt;br/&gt;&amp;gt; wallet:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Whether the multisig configuration, such as Signer membership, script&lt;br/&gt;&amp;gt; type, derivation paths and number of signatures required, is correct and&lt;br/&gt;&amp;gt; not tampered with.&lt;br/&gt;&amp;gt; # Whether Signer persists the multisig configuration in their respective&lt;br/&gt;&amp;gt; storage, and under what format.&lt;br/&gt;&amp;gt; # Whether Signer&amp;#39;s storage is tamper-proof.&lt;br/&gt;&amp;gt; # Whether Signer subsequently uses the multisig configuration to generate&lt;br/&gt;&amp;gt; and verify receive and change addresses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An attacker who can modify the multisig configuration can steal or hold&lt;br/&gt;&amp;gt; funds to ransom by duping the user into sending funds to the wrong address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal seeks to address concerns #1 and #2: to mitigate the risk of&lt;br/&gt;&amp;gt; tampering during the initial setup phase, and to define an interoperable&lt;br/&gt;&amp;gt; multisig configuration format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Concerns #3 and #4 should be handled by Signers and is out of scope of&lt;br/&gt;&amp;gt; this proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Prerequisites===&lt;br/&gt;&amp;gt; This proposal assumes the parties in the multisig support [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki&lt;/a&gt; BIP-0032],&lt;br/&gt;&amp;gt; [&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md&lt;/a&gt; the&lt;br/&gt;&amp;gt; descriptor language] and encryption.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Roles===&lt;br/&gt;&amp;gt; ====Coordinator====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Coordinator initiates the multisig setup. The Coordinator determines&lt;br/&gt;&amp;gt; what type of multisig is used and the exact policy script. If encryption is&lt;br/&gt;&amp;gt; enabled, the Coordinator also distributes a shared secret or shared secrets&lt;br/&gt;&amp;gt; to the parties involved for secure communication. The Coordinator gathers&lt;br/&gt;&amp;gt; information from the Signers to generate a descriptor record. The&lt;br/&gt;&amp;gt; Coordinator distributes the descriptor record back to the Signers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Signer====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Signer is a participating member in the multisig. Its responsibilities&lt;br/&gt;&amp;gt; include providing its key record -- which contains an Extended Public Key&lt;br/&gt;&amp;gt; (XPUB) -- to the Coordinator, verifying that its XPUB is included in the&lt;br/&gt;&amp;gt; descriptor record and persisting the descriptor record in its storage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Setup Process===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Round 1====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====Coordinator=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Coordinator creates a multisig wallet creation session. The&lt;br/&gt;&amp;gt; Coordinator constructs the multisig script and its policy parameters, such&lt;br/&gt;&amp;gt; as the total number of signers and the required number of signatures&lt;br/&gt;&amp;gt; (&amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;N&amp;lt;/tt&amp;gt;).&lt;br/&gt;&amp;gt; * The session should expire after some time period determined by the&lt;br/&gt;&amp;gt; Coordinator, e.g., 24 hours.&lt;br/&gt;&amp;gt; * If encryption is enabled, the Coordinator distributes a secret&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; to each Signer over a secure channel. The Signer can use the&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; to derive an &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt;. Refer to the&lt;br/&gt;&amp;gt; Encryption section below for details on the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;, the key&lt;br/&gt;&amp;gt; derivation function and the encryption scheme. Depending on the use case,&lt;br/&gt;&amp;gt; the Coordinator can decide whether to share one common &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; for&lt;br/&gt;&amp;gt; all Signers, or to have one per Signer.&lt;br/&gt;&amp;gt; * If encryption is disabled, &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; is set to &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;, and all&lt;br/&gt;&amp;gt; the encryption/decryption steps below can be skipped.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====Signer=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Signer initiates a new secure multisig setup session by setting the&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;. The Signer derives an &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt; from the&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;. The Signer can keep the session open until a different&lt;br/&gt;&amp;gt; value for the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; is set.&lt;br/&gt;&amp;gt; * The Signer generates a key record by prompting the user for a multisig&lt;br/&gt;&amp;gt; derivation path and retrieves the XPUB at that derivation path. Optionally,&lt;br/&gt;&amp;gt; the Signer can choose a path on behalf of the user. If the Signer chooses&lt;br/&gt;&amp;gt; the path, it should try to avoid reusing XPUBs for different wallets.&lt;br/&gt;&amp;gt; * The first line in the record must be the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;. The second line&lt;br/&gt;&amp;gt; must be the &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt; is an XPUB plus its key origin&lt;br/&gt;&amp;gt; information, written in the descriptor-defined format, i.e.: &amp;lt;tt&amp;gt;[{master&lt;br/&gt;&amp;gt; key fingerprint}/{derivation path}]{XPUB}&amp;lt;/tt&amp;gt;. The third line must be a&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;SIG&amp;lt;/tt&amp;gt;, whereas &amp;lt;tt&amp;gt;SIG&amp;lt;/tt&amp;gt; is the signature generated by using the&lt;br/&gt;&amp;gt; private key associated with the XPUB to sign the first two lines.  The&lt;br/&gt;&amp;gt; signature should follow [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&lt;/a&gt; BIP-0322],&lt;br/&gt;&amp;gt; legacy format accepted. Finally, the Signer encrypts the entire record with&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Round 2====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====Coordinator=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Coordinator gathers key records from all participating Signers.&lt;br/&gt;&amp;gt; Abort the setup if the wallet setup session has expired.&lt;br/&gt;&amp;gt; * For each key record, the Coordinator decrypts it using&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt;. The Coordinator verifies that the included&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;SIG&amp;lt;/tt&amp;gt; is valid given the &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; * If all key records look good, the Coordinator fills in all necessary&lt;br/&gt;&amp;gt; information to generate a descriptor record, which is simply the descriptor&lt;br/&gt;&amp;gt; string plus a &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt;, all in one line. The &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt; has&lt;br/&gt;&amp;gt; [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums&lt;/a&gt;&lt;br/&gt;&amp;gt; BECH32 encoding].&lt;br/&gt;&amp;gt; * The Coordinator encrypts this descriptor record with&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; * The Coordinator sends the encrypted descriptor record to all&lt;br/&gt;&amp;gt; participating Signers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====Signer=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Signer imports the descriptor record, decrypts it using the&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt; derived from the open session.&lt;br/&gt;&amp;gt; * The Signer calculates and verifies the descriptor’s &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; Abort the setup if the &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt; is incorrect.&lt;br/&gt;&amp;gt; * The Signer checks whether one of the &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;s in the descriptor&lt;br/&gt;&amp;gt; belongs to it, using path and fingerprint information included in the&lt;br/&gt;&amp;gt; descriptor. The check must perform an exact match on the &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;s, and&lt;br/&gt;&amp;gt; not using shortcuts such as matching fingerprints (which is trivial to&lt;br/&gt;&amp;gt; spoof). Abort the setup if it doesn’t detect its own &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; * For confirmation, the Signer must display to the user the&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt;, plus other configurations, such as &amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; and&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;N&amp;lt;/tt&amp;gt;. The total number of Signers, &amp;lt;tt&amp;gt;N&amp;lt;/tt&amp;gt;, is important to&lt;br/&gt;&amp;gt; prevent a &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt; insertion attack. All participating Signers should&lt;br/&gt;&amp;gt; be able to display the same confirmation.&lt;br/&gt;&amp;gt; * If all checks pass, the Signer persists the descriptor record in its&lt;br/&gt;&amp;gt; storage.&lt;br/&gt;&amp;gt; * The Signer can choose to further restrict post-XPUB derivation paths,&lt;br/&gt;&amp;gt; such as to those defined in [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki&lt;/a&gt; BIP-0044].&lt;br/&gt;&amp;gt; * The Signer should subsequently use the descriptor to generate and verify&lt;br/&gt;&amp;gt; receive and change addresses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This completes the setup.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Encryption===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====The Token====&lt;br/&gt;&amp;gt; We define three modes of encryption.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # &amp;lt;tt&amp;gt;NO_ENCRYPTION&amp;lt;/tt&amp;gt; : the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; is set to &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; Encryption is disabled.&lt;br/&gt;&amp;gt; # &amp;lt;tt&amp;gt;STANDARD&amp;lt;/tt&amp;gt; : the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; is a 64-bit nonce.&lt;br/&gt;&amp;gt; # &amp;lt;tt&amp;gt;EXTENDED&amp;lt;/tt&amp;gt; : the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; is a 128-bit nonce.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt; can be converted to one of these formats:&lt;br/&gt;&amp;gt; * A mnemonic phrase using [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki&lt;/a&gt; BIP-0039]&lt;br/&gt;&amp;gt; word list (6 words in &amp;lt;tt&amp;gt;STANDARD&amp;lt;/tt&amp;gt; mode, 12 words in &amp;lt;tt&amp;gt;EXTENDED&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; mode)&lt;br/&gt;&amp;gt; * A decimal number (20 digits in &amp;lt;tt&amp;gt;STANDARD&amp;lt;/tt&amp;gt; mode, 40 digits in&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;EXTENDED&amp;lt;/tt&amp;gt; mode)&lt;br/&gt;&amp;gt; * A QR code&lt;br/&gt;&amp;gt; * Other formats&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The flexibility in the data format allows each Signer to customize the&lt;br/&gt;&amp;gt; User Experience based on its respective capabilities.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Key Derivation====&lt;br/&gt;&amp;gt; The key derivation function is [&lt;a href=&#34;https://tools.ietf.org/html/rfc2898&#34;&gt;https://tools.ietf.org/html/rfc2898&lt;/a&gt;&lt;br/&gt;&amp;gt; PBKDF2], with PRF = SHA512. Specifically:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;DK = PBKDF2(PRF, Password, Salt, c, dkLen)&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Whereas:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * PRF = &amp;lt;tt&amp;gt;SHA512&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; * Password = &amp;lt;tt&amp;gt;&amp;#34;No SPOF&amp;#34;&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; * Salt = &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; * c = &amp;lt;tt&amp;gt;2048&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; * dkLen = &amp;lt;tt&amp;gt;256&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; * DK = Derived &amp;lt;tt&amp;gt;ENCRYPTION_KEY&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Encryption Scheme====&lt;br/&gt;&amp;gt; The encryption scheme is [&lt;a href=&#34;https://tools.ietf.org/html/rfc3686&#34;&gt;https://tools.ietf.org/html/rfc3686&lt;/a&gt; AES, CTR&lt;br/&gt;&amp;gt; mode].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==QR Codes==&lt;br/&gt;&amp;gt; For signers that use QR codes to transmit data, key and descriptor records&lt;br/&gt;&amp;gt; can be converted to QR codes, following [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md&lt;/a&gt;&lt;br/&gt;&amp;gt; the BCR standard].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also refer to [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-015-account.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-015-account.md&lt;/a&gt;&lt;br/&gt;&amp;gt; UR Type Definition for BIP44 Accounts] and [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-010-output-desc.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-010-output-desc.md&lt;/a&gt;&lt;br/&gt;&amp;gt; UR Type Definition for Bitcoin Output Descriptors] for more details.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Security==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal introduces two layers of protection. The first one is a&lt;br/&gt;&amp;gt; temporary, secret token, used to encrypt the two rounds of communication&lt;br/&gt;&amp;gt; between the Signer and the Coordinator. The second one is through the&lt;br/&gt;&amp;gt; descriptor checksum and visual inspection of the descriptor itself.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The token is only needed during the setup phase, and can be safely thrown&lt;br/&gt;&amp;gt; away afterwards. The token does not guarantee that the Signer membership&lt;br/&gt;&amp;gt; set is not modified, since that depends on the overall security of all&lt;br/&gt;&amp;gt; parties in the setup, but it can make it significantly harder for an&lt;br/&gt;&amp;gt; attacker to do so.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are three ways an attacker can modify the membership set: by&lt;br/&gt;&amp;gt; changing an existing member, by removing an existing member, or by adding a&lt;br/&gt;&amp;gt; new member.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the first two methods, one of the Signers will be able to detect that&lt;br/&gt;&amp;gt; its membership has been changed or removed, and reject the final&lt;br/&gt;&amp;gt; descriptor. Thus, it is vital that all participating Signers check that&lt;br/&gt;&amp;gt; their membership is intact in the descriptor. Even one Signer failing to&lt;br/&gt;&amp;gt; check for its membership means that the setup could be compromised.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the third type of attack, the descriptor checksum and visual&lt;br/&gt;&amp;gt; inspection of the descriptor itself are the only way to guard against&lt;br/&gt;&amp;gt; malicious members from being inserted into the set.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Acknowledgement==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Special thanks to Dmitry Petukhov, Christopher Allen, Craig Raw and others&lt;br/&gt;&amp;gt; for their feedback on the specification.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==References==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Original mailing list thread:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018385.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018385.html&lt;/a&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;-------------- 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/20210215/4ca65ae9/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210215/4ca65ae9/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy5r56y6phpm7z0w6wc9j0xf22mruph84cdzx7pk0uylv6r2pdqegzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6ar8nnl</id>
    
      <title type="html">📅 Original date posted:2021-02-09 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy5r56y6phpm7z0w6wc9j0xf22mruph84cdzx7pk0uylv6r2pdqegzyqp3zxeaetz9pz74mndzyxct9d8yry5j4eqrc6nh5c25sxfn5y4j6ar8nnl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspt3mfaemtlsly2906q4pnvysjk7l0nylxdslux3k2aplgtkuqkugmejv9s&#39;&gt;nevent1q…jv9s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-09&lt;br/&gt;📝 Original message:Hi Hugo,&lt;br/&gt;&lt;br/&gt;Thanks for raising this again - I&amp;#39;ll note there has already been much&lt;br/&gt;discussion on this topic. With respect to your &amp;#34;two layers of protection&amp;#34;:&lt;br/&gt;&lt;br/&gt;&amp;gt; The Coordinator shares the TOKEN with all participating Signers over a&lt;br/&gt;secure channel.&lt;br/&gt;&lt;br/&gt;What secure channel do you propose? Currently, with the default of a&lt;br/&gt;software wallet coordinator talking to hardware wallets, we have USB, file&lt;br/&gt;(microSD), and QR as communication channels. It&amp;#39;s unclear to me why the&lt;br/&gt;token and encryption process is necessary - in fact it&amp;#39;s easier to verify&lt;br/&gt;what is going on using clear text, and the majority of setups will be&lt;br/&gt;locally done with the reasonable assumption of a secure environment. When&lt;br/&gt;the setup is remote, it&amp;#39;s simpler to just transmit the key information over&lt;br/&gt;the secure channel which presumably already has encryption.&lt;br/&gt;&lt;br/&gt;&amp;gt; The second one is through the descriptor checksum and visual inspection&lt;br/&gt;of the descriptor itself.&lt;br/&gt;&lt;br/&gt;This is a reasonable suggestion, although it&amp;#39;s worth noting that support&lt;br/&gt;for storing multisig setups on hardware wallets varies. Coldcard supports&lt;br/&gt;this through importing of a proprietary .txt format file (which has been&lt;br/&gt;adopted by a number of other vendors). Trezor and Ledger (AFAIK) do not&lt;br/&gt;however store multisig setups, which could make this step confusing. With&lt;br/&gt;that said, the use of an output descriptor is certainly a more standardised&lt;br/&gt;approach, albeit one without the wallet name included. By the use of the&lt;br/&gt;singular, I assume you mean a descriptor without the /0/* or /1/* suffix&lt;br/&gt;(which I think is a good idea).&lt;br/&gt;&lt;br/&gt;WRT to QR codes, using the BCR UR2.0 standard you linked to is IMO the&lt;br/&gt;right approach. I&amp;#39;ll link directly to the two BCR UR2.0 formats here which&lt;br/&gt;are relevant:&lt;br/&gt;&lt;br/&gt;1. For sharing the sharing the BIP44 account information from the signers&lt;br/&gt;to the coordinator, the crypto-account format: [&lt;br/&gt;&lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-015-account.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-015-account.md&lt;/a&gt;&lt;br/&gt;]&lt;br/&gt;2. For sharing the output descriptor from the coordinator to the signers,&lt;br/&gt;the crypto-output format: [&lt;br/&gt;&lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-010-output-desc.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-010-output-desc.md&lt;/a&gt;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;Craig&lt;br/&gt;&lt;br/&gt;On Tue, Feb 9, 2021 at 9:53 AM Hugo Nguyen via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; I would like to propose a new BIP for Secure Multisig Setup.&lt;br/&gt;&amp;gt; This proposal has taken inputs from folks at Coldcard, Shift Crypto and&lt;br/&gt;&amp;gt; Cobo -- listed below as co-authors.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This was inspired by my own experience working with hardware wallets on&lt;br/&gt;&amp;gt; the market, as well as existing research into the challenges of multisig.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Hugo&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;   BIP: To be determined&lt;br/&gt;&amp;gt;   Layer: Applications&lt;br/&gt;&amp;gt;   Title: Bitcoin Secure Multisig Setup (BSMS)&lt;br/&gt;&amp;gt;   Author: Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt;, Peter Gray &amp;lt;peter at coinkite.com&amp;gt;,&lt;br/&gt;&amp;gt; Marko Bencun &amp;lt;marko at shiftcrypto.ch&amp;gt;, Aaron Chen &amp;lt;aarondongchen at gmail.com&amp;gt;,&lt;br/&gt;&amp;gt; Rodolfo Novak &amp;lt;rodolfo at coinkite.com&amp;gt;&lt;br/&gt;&amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;   Status: Proposed&lt;br/&gt;&amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;   Created: 2020-11-10&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; ==Introduction==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Abstract===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This document proposes a mechanism to set up multisig wallets securely.&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 2-clause BSD license.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Motivation===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Bitcoin multisig experience has been greatly streamlined under [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&lt;/a&gt; BIP-0174&lt;br/&gt;&amp;gt; (Partially Signed Bitcoin Transaction)]. However, what is still missing is&lt;br/&gt;&amp;gt; a standardized process for setting up multisig wallets securely across&lt;br/&gt;&amp;gt; different vendors.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are a number of concerns when it comes to setting up a multisig&lt;br/&gt;&amp;gt; wallet:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Whether the multisig configuration, such as Signer membership, script&lt;br/&gt;&amp;gt; type, derivation paths and number of signatures required, is correct and&lt;br/&gt;&amp;gt; not tampered with.&lt;br/&gt;&amp;gt; # Whether Signer persists the multisig configuration in their respective&lt;br/&gt;&amp;gt; storage, and under what format.&lt;br/&gt;&amp;gt; # Whether Signer&amp;#39;s storage is tamper-proof.&lt;br/&gt;&amp;gt; # Whether Signer subsequently uses the multisig configuration to generate&lt;br/&gt;&amp;gt; and verify receive and change addresses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An attacker who can modify the multisig configuration can steal or hold&lt;br/&gt;&amp;gt; funds to ransom by duping the user into sending funds to the wrong address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal seeks to address concerns #1 and #2: to mitigate the risk of&lt;br/&gt;&amp;gt; tampering during the initial setup phase, and to define an interoperable&lt;br/&gt;&amp;gt; multisig configuration format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Concerns #3 and #4 should be handled by Signers and is out of scope of&lt;br/&gt;&amp;gt; this proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Prerequisites===&lt;br/&gt;&amp;gt; This proposal assumes the parties in the multisig support [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki&lt;/a&gt; BIP32], [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md&lt;/a&gt; the&lt;br/&gt;&amp;gt; descriptor language] and encryption.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Roles==&lt;br/&gt;&amp;gt; ===Coordinator===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Coordinator initiates the multisig setup. The Coordinator determines&lt;br/&gt;&amp;gt; what type of multisig is used and how many members and signatures are&lt;br/&gt;&amp;gt; needed. If encryption is enabled, the Coordinator generates a secret token,&lt;br/&gt;&amp;gt; to be shared among the parties for secure communication. The Coordinator&lt;br/&gt;&amp;gt; gathers information from the Signers to generate a descriptor record. The&lt;br/&gt;&amp;gt; Coordinator distributes the descriptor record back to the Signers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Signer===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Signer is a participating member in the multisig. Its responsibilities&lt;br/&gt;&amp;gt; include providing its XPUB to the Coordinator, verifying that its XPUB is&lt;br/&gt;&amp;gt; included in the descriptor record and persisting the descriptor record in&lt;br/&gt;&amp;gt; its storage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Setup Process==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Round 1===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Coordinator====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Coordinator creates a multisig wallet creation session. The&lt;br/&gt;&amp;gt; Coordinator determines the type of multisig script used and the signing&lt;br/&gt;&amp;gt; configuration (&amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;N&amp;lt;/tt&amp;gt;).&lt;br/&gt;&amp;gt; * If encryption is enabled, the Coordinator also generates a secret token,&lt;br/&gt;&amp;gt; hereby denoted &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; * TOKEN is in ASCII format and must have a minimum of 8 characters. TOKEN&lt;br/&gt;&amp;gt; should expire after some time period determined by the Coordinator, e.g.,&lt;br/&gt;&amp;gt; 24 hours.&lt;br/&gt;&amp;gt; * TOKEN acts as an encryption key among the parties. The method of&lt;br/&gt;&amp;gt; encryption is AES, CTR mode. The encryption key can be calculated by&lt;br/&gt;&amp;gt; performing a double hash operation on the TOKEN: &amp;lt;tt&amp;gt;ENCRYPTION_KEY =&lt;br/&gt;&amp;gt; SHA256(SHA256(TOKEN))&amp;lt;/tt&amp;gt;.&lt;br/&gt;&amp;gt; * A TOKEN value of &amp;lt;tt&amp;gt;-1&amp;lt;/tt&amp;gt; means that encryption is disabled and all&lt;br/&gt;&amp;gt; the encryption/decryption steps below can be skipped.&lt;br/&gt;&amp;gt; * The Coordinator shares the TOKEN with all participating Signers over a&lt;br/&gt;&amp;gt; secure channel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Signer====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Signer generates a key record by prompting the user for the TOKEN&lt;br/&gt;&amp;gt; and a derivation path.&lt;br/&gt;&amp;gt; * The first line in the record must be the &amp;lt;tt&amp;gt;TOKEN&amp;lt;/tt&amp;gt;. If encryption&lt;br/&gt;&amp;gt; is disabled, set the TOKEN to -1. The second line must be the &amp;lt;tt&amp;gt;KEY&amp;lt;/tt&amp;gt;,&lt;br/&gt;&amp;gt; whereas KEY is an XPUB. KEY must include key origin information and written&lt;br/&gt;&amp;gt; in the descriptor-defined format, i.e.: &amp;lt;tt&amp;gt;[{master key&lt;br/&gt;&amp;gt; fingerprint}/{derivation path}]{XPUB}&amp;lt;/tt&amp;gt;. The third line must be a&lt;br/&gt;&amp;gt; &amp;lt;tt&amp;gt;SIG&amp;lt;/tt&amp;gt;, whereas SIG is the signature generated by using the&lt;br/&gt;&amp;gt; corresponding private key to sign the first two lines. Finally, the Signer&lt;br/&gt;&amp;gt; encrypts the entire record with ENCRYPTION_KEY.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Round 2===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Coordinator====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Coordinator gathers key records from all participating Signers.&lt;br/&gt;&amp;gt; Abort the setup if TOKEN has expired.&lt;br/&gt;&amp;gt; * For each key record, the Coordinator decrypts it using ENCRYPTION_KEY.&lt;br/&gt;&amp;gt; The Coordinator verifies that the included SIG is valid given the KEY.&lt;br/&gt;&amp;gt; * If all key records look good, the Coordinator generates a descriptor&lt;br/&gt;&amp;gt; record, which is simply the descriptor string plus a &amp;lt;tt&amp;gt;CHECKSUM&amp;lt;/tt&amp;gt;, all&lt;br/&gt;&amp;gt; in one line. The CHECKSUM has BECH32 encoding and is described at [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums&lt;/a&gt;].&lt;br/&gt;&amp;gt; The Coordinator encrypts this descriptor record with ENCRYPTION_KEY.&lt;br/&gt;&amp;gt; * The Coordinator sends the encrypted descriptor record to all&lt;br/&gt;&amp;gt; participating Signers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Signer====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The Signer imports the descriptor record, decrypts it by prompting the&lt;br/&gt;&amp;gt; user for TOKEN.&lt;br/&gt;&amp;gt; * The Signer calculates and verifies the descriptor’s CHECKSUM. Abort the&lt;br/&gt;&amp;gt; setup if the CHECKSUM is incorrect.&lt;br/&gt;&amp;gt; * The Signer checks whether one of the KEYs in the descriptor belongs to&lt;br/&gt;&amp;gt; it, using path and fingerprint information included in the descriptor. The&lt;br/&gt;&amp;gt; check must perform an exact match on the KEYs, and not using shortcuts such&lt;br/&gt;&amp;gt; as matching fingerprints (which is trivial to spoof). Abort the setup if it&lt;br/&gt;&amp;gt; doesn’t detect its own KEY.&lt;br/&gt;&amp;gt; * For confirmation, the Signer must display to the user the descriptor&amp;#39;s&lt;br/&gt;&amp;gt; CHECKSUM, plus other configurations, such as M and N. The total number of&lt;br/&gt;&amp;gt; Signers, N, is important to prevent a KEY insertion attack. All&lt;br/&gt;&amp;gt; participating Signers should be able to display the same confirmation.&lt;br/&gt;&amp;gt; * If all checks pass, the Signer persists the descriptor record in its&lt;br/&gt;&amp;gt; storage. The Signer should subsequently use the descriptor to generate and&lt;br/&gt;&amp;gt; verify receive and change addresses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This completes the setup.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==QR Codes==&lt;br/&gt;&amp;gt; For signers that use QR codes to transmit data, key and descriptor records&lt;br/&gt;&amp;gt; can be converted to QR codes, following [&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md&#34;&gt;https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md&lt;/a&gt;&lt;br/&gt;&amp;gt; the BCR standard].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Security==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal introduce two layers of protection. The first one is a&lt;br/&gt;&amp;gt; temporary, secret token, used to encrypt the two rounds of communication&lt;br/&gt;&amp;gt; between the Signers and the Coordinator. The second one is through the&lt;br/&gt;&amp;gt; descriptor checksum and visual inspection of the descriptor itself.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The token is only needed during the setup phase, and can be safely thrown&lt;br/&gt;&amp;gt; away afterwards. The token does not guarantee that the Signer membership&lt;br/&gt;&amp;gt; set is not modified, since that depends on the overall security of all&lt;br/&gt;&amp;gt; parties in the setup, but it can make it significantly harder for an&lt;br/&gt;&amp;gt; attacker to do so.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are three ways an attacker can modify the membership set: by&lt;br/&gt;&amp;gt; changing an existing member, by removing an existing member, or by adding a&lt;br/&gt;&amp;gt; new member.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the first two methods, one of the Signers will be able to detect that&lt;br/&gt;&amp;gt; its membership has been changed or removed, and reject the final&lt;br/&gt;&amp;gt; descriptor. Thus, it is vital that all participating Signers check that&lt;br/&gt;&amp;gt; their membership is intact in the descriptor. Even one Signer failing to&lt;br/&gt;&amp;gt; check for its membership means that the setup could be compromised.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the third type of attack, the descriptor checksum and visual&lt;br/&gt;&amp;gt; inspection of the descriptor itself are the only way to guard against&lt;br/&gt;&amp;gt; malicious members from being inserted into the set.&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;-------------- 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/20210209/52df63dc/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210209/52df63dc/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:31&#43;02:00</updated>
  </entry>

</feed>