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




  <entry>
    <id>https://nostr.ae/nevent1qqsyjl8h6e26rnr5egadzl0afs2wpprayc24vtga5rtjwtl78vcswlqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkkchul8</id>
    
      <title type="html">📅 Original date posted:2023-08-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyjl8h6e26rnr5egadzl0afs2wpprayc24vtga5rtjwtl78vcswlqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkkchul8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsflf30ll0aggp2s673se9chp3vwjckdsvjxswv7fvuju43m4m2p8scecdej&#39;&gt;nevent1q…cdej&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-08-10&lt;br/&gt;🗒️ Summary of this message: The text discusses the Serverless Payjoin idea and raises concerns about securely sharing the secret key and potential attack vectors.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Dan,&lt;br/&gt;A couple more more thoughts:&lt;br/&gt;&lt;br/&gt;&amp;gt; Out of band, the receiver of the payment, shares a bitcoin URI with the sender including a &amp;lt;code&amp;gt;pj=&amp;lt;/code&amp;gt; query parameter describing the relay subdirectory endpoint and &amp;lt;code&amp;gt;psk=&amp;lt;/code&amp;gt; parameter with base64 encoded 256-bit secret key.&lt;br/&gt;&lt;br/&gt;You&amp;#39;re sending the symmetric secret key out of band; but isn&amp;#39;t this obscuring the question of securely sharing the secret key? Did you consider DH-ing this as other protocols do? At the very least I would claim that it&amp;#39;s likely that implementers might be sloppy here; at the most I would claim this is just insecure full stop.&lt;br/&gt;&lt;br/&gt;About attack vectors:&lt;br/&gt;&lt;br/&gt;&amp;gt; Since relays store arbitrary encrypted payloads to the tragedy of the commons and denial of service attacks. Relay operators may impose an authentication requirement before they provide relay service to receivers to mitigate such attacks.&lt;br/&gt;&lt;br/&gt;Isn&amp;#39;t the most obvious concern with this architecture, that the relays have metadata - most obviously, they can time correlate messages, with bitcoin network events, so at the least they could tie transactions to clients. *If* both parties use anonymised network connections then this is ameliorated (though not removed) as a vector, but then we&amp;#39;d need to be clear that we *require* those (e.g. Tor). Not sure if it&amp;#39;s palatable to do this if otherwise, i.e. if we think the relays can tie network addresses to transactions? Well, not sure, but I&amp;#39;d expect it to be mentioned?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;AdamISZ/waxwing&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with Proton Mail secure email.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Wednesday, August 9th, 2023 at 11:32, Dan Gould via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Serverless Payjoin idea has come a long way toward formal specification of a Payjoin version 2. In the spirit of BIP 2, I’m sharing an intermediate draft of the BIP here before opening a draft on GitHub for the BIP editors, and before this exact specification has a complete reference implementation. The draft does reference two proof of concept payjoin implementations, one demonstrating use of symmetric cryptography, and the other asynchronous messaging and backwards compatibility.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I’ve updated the Serverless Payjoin gist to reflect this draft specification &lt;a href=&#34;https://gist.github.com/DanGould/243e418752fff760c9f6b23bba8a32f9&#34;&gt;https://gist.github.com/DanGould/243e418752fff760c9f6b23bba8a32f9&lt;/a&gt; in order to preserve the edit history before opening a bips PR.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The specifics have changed significantly compared to the first mailing list post to reflect feedback. Looking forward to hear your thoughts.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Dan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP: ???&lt;br/&gt;&amp;gt; Layer: Applications&lt;br/&gt;&amp;gt; Title: Payjoin Version 2: Serverless Payjoin&lt;br/&gt;&amp;gt; Author: Dan Gould d at ngould.dev&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Status: Draft&lt;br/&gt;&amp;gt; Replaces: 78&lt;br/&gt;&amp;gt; Type: Standards Track&lt;br/&gt;&amp;gt; Created: 2023-08-08&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; &lt;br/&gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This document proposes a backwards-compatible second version of the payjoin protocol described in [[bip-0078.mediawiki|BIP 78]], allowing complete payjoin receiver functionality including payment output substitution without requiring them to host a secure public endpoint. This requirement is replaced with an untrusted third-party relay and streaming clients which communicate using an asynchronous protocol and authenticated encrypted payloads.&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; Payjoin solves the sole privacy problem left open in the bitcoin paper, that transactions with multiple inputs &amp;#34;necessarily reveal that their inputs were owned by the same owner.&amp;#34; Breaking that common-input ownership assumption and others requires input from multiple owners. Cooperative transaction construction also increases transaction throughput by providing new opportunity for payment batching and transaction cut-through.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Version 1 coordinates payjoins over a public server endpoint secured by either TLS or Tor onion hidden service hosted by the receiver. Version 1 is synchronous, so both sender and reciever must be online simultaneously to payjoin. Both requirements present significant barriers for all but sophisticated server operators or those wallets with complex Tor integration. These barriers are [[&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018358.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018358.html&lt;/a&gt;|regarded]] as limits to payjoin adoption.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The primary goal of this proposal is to provide a practical coordination mechanism to be adopted in a vast majority of wallet environments. This is realized as a simple protocol built on bitcoin URI requests, web standards, common crypto, and minimal dependencies.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Relation to BIP 78 (Payjoin version 1)===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The message payloads in this version parrallel those used in BIP 78 while being encapsulated in authenticated encryption, forgoing HTTP messaging for WebTransport streaming of asynchronus interactions, and leveraging PSBT version 2.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The BIP 78 standard allows for an [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#unsecured-payjoin-server&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#unsecured-payjoin-server&lt;/a&gt;|unsecured payjoin server|]] to operate separately from the so-called &amp;#34;payment server&amp;#34; responsible for generating [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&lt;/a&gt;|BIP 21]] request URIs. Because BIP 78 messages are neither authenticated nor encrypted a malicious unsecured payjoin server is able to modify the Payjoin PSBT in flight, thus requiring [[payment output substitition]] to be disabled. Output substitition is useful for a number of block space optimizations, including payment batching and transaction cut-through. This proposal introduces authentication and encryption to secure output substition while using a relay without compromising sender or receiver privacy.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Although unsecured payjoin server separation is mentioned in BIP 78, no known specification or implementation of one exists. This document specifies one to be backwards compatible with version 1 senders. Receivers responding to version 1 senders must disable output substitution their payloads are plaintext so they may payjoin without the risk of the relay stealing funds.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The protocols in this document reuse BIP 78&amp;#39;s BIP 21 URI parameters. A Fallback PSBT timeout parameter is introduced which may also help coordinate the synchronous version 1 protocol.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Relation to Stowaway===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [[&lt;a href=&#34;https://code.samourai.io/wallet/ExtLibJ/-/blob/develop/doc/cahoots/STOWAWAY.md&#34;&gt;https://code.samourai.io/wallet/ExtLibJ/-/blob/develop/doc/cahoots/STOWAWAY.md&lt;/a&gt;|Stowaway]] is a payjoin coordination mechanism which depends on Tor, a third-party relay, and the [[&lt;a href=&#34;https://samouraiwallet.com/paynym&#34;&gt;https://samouraiwallet.com/paynym&lt;/a&gt;|PayNym]] [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki&lt;/a&gt;|BIP 47]] Payment codes directory for subdirectory identification and encryption. The payjoin version 2 protocol uses one-time symmetric keys for relay subdirectory identification, authentication, and encryption instead of BIP 47 public keys derived from the wallet. Payjoin version 2 also supports asynchronous messaging, in contrast to online Stowaway&amp;#39;s synchronous HTTP-based messaging. Offline stowaway may depends on manual message passing rather than an asynchronous network protocol. Successful Stowaway execution results in 2-output transactions, while BIP 79, 78, and this work may produce batched transactions with many outputs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Overview===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Payjoin requests are made using familiar BIP 21 URIs. Instead of a public HTTP endpoint, this scheme allows a WebTransport client to enroll with a relay server to receive payjoin. Relays may optionally require an authorization credential before allocating resources in order to prevent DoS attacks. Sender and receiver payloads are buffered at the relay to support asynchronous interaction. Symmetric authenticated encryption (ChaCha20-Poly1305 AEAD) prevents the relay from snooping on message contents or forging messages. Aside from a pre-shared secret and relayed asynchronus networking, the version 2 messaging takes much the same form as the existing BIP 78 specification.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Basic scheme===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The recipient first generates a 256-bit key &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt;. This pre-shared key will be the basis of end-to-end authenticated encryption and identification of a particular payjoin over the relay.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Rather than hosting a public server, they start a streaming session to receive messages and allocate a subdirectory from which to relay messages. The first message must include the first 4 bytes of the Sha256 hash of their &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; to be enrolled as a subdirectory identifier. The next message streamed from the relay to sender includes the enrolled subdirectory payjoin endpoint. After enrollment, they await a payjoin request on a session identified by the subdirectory. Out of band, the receiver shares a [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&lt;/a&gt;|BIP 21]] payjoin uri including the relay endpoint in the &amp;lt;code&amp;gt;pj=&amp;lt;/code&amp;gt; query parameter and the pre-shared key in a new &amp;lt;code&amp;gt;psk=&amp;lt;/code&amp;gt; query parameter.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The sender constructs an encrypted and authenticated payload containing a PSBT and optional parameters similar to BIP 78. The resulting ciphertext ensures message secrecy and integrity when streamed to the recipient by the relay-hosted subdirectory &amp;lt;code&amp;gt;pj=&amp;lt;/code&amp;gt; endpoint.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The sender&amp;#39;s request is relayed to the receiver over a streaming session at the subdirectory identified by the hash of &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt;. Messages are secured by symmetric cipher rather than TLS or Onion routing session key. Sender and receiver may experience network interruption and proceed with the protocol since their request and response are buffered at the Payjoin relay subdirectory.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Payjoin version 2 messaging===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Payjoin v2 messages use [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki&lt;/a&gt;|BIP 370 PSBT v2]] format to fascilitate PSBT mutation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The payjoin version 2 protocol takes the following steps:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The recipient sends the first 4 bytes of &amp;lt;code&amp;gt;H(psk)&amp;lt;/code&amp;gt; and optional authentication credential according to [[#receiver-relay-enrollment|receiver relay enrollment]] protocol. It may go offline and replay enrollment to come back online.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Out of band, the receiver of the payment, shares a bitcoin URI with the sender including a &amp;lt;code&amp;gt;pj=&amp;lt;/code&amp;gt; query parameter describing the relay subdirectory endpoint and &amp;lt;code&amp;gt;psk=&amp;lt;/code&amp;gt; parameter with base64 encoded 256-bit secret key. To support version 1 senders the relay acts as an unsecured payjoin server so &amp;lt;code&amp;gt;pjos=0&amp;lt;/code&amp;gt; must be specified in the URI. Version 2 senders may safely allow output substitution regardless.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The sender creates a valid PSBT according to [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0078#receivers-original-psbt-checklist&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0078#receivers-original-psbt-checklist&lt;/a&gt;|the receiver checklist]] formatted as PSBTv2. We call this the &amp;lt;code&amp;gt;Fallback PSBT&amp;lt;/code&amp;gt;. This Fallback PSBT and optional sender parameters are encrypted and authenticated with the &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; using ChaCha20Poly1305 and streamed to the relay subdirectory endpoint.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The sender awaits a response from the relay stream containing an encrypted &amp;lt;code&amp;gt;Payjoin PSBT&amp;lt;/code&amp;gt;. It can replay the &amp;lt;code&amp;gt;Fallback PSBT&amp;lt;/code&amp;gt; to request a response if it goes offline.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The request is stored in the receiver&amp;#39;s subdirectory buffer.&lt;br/&gt;&amp;gt; * Once the receiver is online, it awaits a stream of request updates from the relay. The receiver decrypts aund authenticates the payload then checks it according to [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0078#receivers-original-psbt-checklist&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0078#receivers-original-psbt-checklist&lt;/a&gt;|the receiver checklist]]. It updates it to include new signed inputs and outputs invalidating sender signatures, and may adjust the fee. We call this the &amp;lt;code&amp;gt;Payjoin PSBT&amp;lt;/code&amp;gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * It responds with the &amp;lt;code&amp;gt;Payjoin PSBT&amp;lt;/code&amp;gt; encrypted then authenticated under &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; using ChaCha20Poly1305.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The relay awaits a connection from the sender if it goes offline. Upon connection, it relays the encrypted &amp;lt;code&amp;gt;Payjoin PSBT&amp;lt;/code&amp;gt; to the sender.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The sender validates the &amp;lt;code&amp;gt;Payjoin PSBT&amp;lt;/code&amp;gt; according to [[#senders-payjoin-psbt-checklist|the sender checklist]], signs its inputs and broadcasts the transaction to the Bitcoin network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The encrypted Fallback PSBT and Payjoin PSBT payloads are sent as bytes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Fallback PSBT MUST:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Include complete UTXO data.&lt;br/&gt;&amp;gt; * Be signed.&lt;br/&gt;&amp;gt; * Exclude unnecessary fields such as global xpubs or keypath information. &amp;lt;!-- I believe PSBTv2 obviates this requirement --&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Set input and output Transaction Modifiable Flags to 1&lt;br/&gt;&amp;gt; * Be broadcastable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Fallback PSBT MAY:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Include outputs unrelated to the sender-receiver transfer for batching purposes.&lt;br/&gt;&amp;gt; * Set SIGHASH_SINGLE Transaction Modifiable Flags flags to 1&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Payjoin PSBT MUST:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Include all inputs from the Fallback PSBT.&lt;br/&gt;&amp;gt; * Include all outputs which do not belong to the receiver from the Fallback PSBT.&lt;br/&gt;&amp;gt; * Include complete UTXO data.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Payjoin PSBT sender MAY:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Add, remove or modify Fallback PSBT outputs under the control of the receiver (i.e. not sender change).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Payjoin PSBT MUST NOT:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Shuffle the order of inputs or outputs; the additional outputs or additional inputs must be inserted at a random index.&lt;br/&gt;&amp;gt; * Decrease the absolute fee of the original transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Receiver&amp;#39;s Payjoin PSBT checklist===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Other than requiring PSBTv2 the receiver checklist is the same as the [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#receivers-original-psbt-checklist&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#receivers-original-psbt-checklist&lt;/a&gt;|the BIP 78 receiver checklist]]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Sender&amp;#39;s Payjoin PSBT checklist===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The version 2 sender&amp;#39;s checklist is largely the same as the [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0078#senders-payjoin-proposal-checklist&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0078#senders-payjoin-proposal-checklist&lt;/a&gt;|the BIP 78 checklist]] with the exception that it expects ALL utxo data to be filled in. BIP 78 required sender inputs UTXO data to be excluded from the PSBT which has caused many headaches since it required the sender to add them back to the Payjoin proposal PSBT. Version 2 has no such requirement.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Relay interactions===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Payjoin Relay provides a rendezvous point for sender and receiver to meet. It stores Payjoin payloads to support asynchronous communication. It is available on the open internet over HTTPS to accept both WebTransport for Payjoin version 2, accepting encrypted payloads, and optionally HTTP/1.1 to support backwards compatible Payjoin version 1 requests.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Receiver interactions===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ====Relay enrollment====&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Receivers must enroll to have resources allocated on a relay. Sessions may begin by having a receiver send the first 4 bytes of the Sha256 hash of their &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; to the relay. The receiver returns the subdirectory endpoint url. Enrollment may be replayed in case the receiver goes offline.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Optionally, before returning the uri the receiver may request an authentication token by presenting a message containing only the word &amp;lt;code&amp;gt;Authenticate: &amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; after which the receiver is required to submit an &amp;lt;code&amp;gt;Authenticate: &amp;lt;token&amp;gt;&amp;lt;/code&amp;gt; including the token from the Relay out of band. If authentication fails an error is returned.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the case a relay is operated by an exchange, it may give out authentication tokens for users of its app, or may require some proof of work out of band. Tokens should be anonymous credentials from the relay describing the parameters of their authorization. Specific credentialing is out of the scope of this proposal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ====Receiver Payjoin PSBT response====&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The receiver streams the base64 Payjoin PSBT as encrypted bytes from ChaCha20Poly1305 under &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Sender interactions===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The sender starts a WebTransport session with the relay at the Payjoin endpoint URI provided by the receiver. It sends the following payload and awaits a relayed response payload from the receiver.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ====Version 2 Fallback PSBT request====&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The version 2 Fallback PSBT Payload is constructed in JSON before being encrypted as follows.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; {&lt;br/&gt;&amp;gt; &amp;#34;psbt&amp;#34;: &amp;#34;&amp;lt;fallback_psbt_data_base64&amp;gt;&amp;#34;,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;params&amp;#34;: {&lt;br/&gt;&amp;gt; &amp;#34;param1&amp;#34;: &amp;#34;&amp;lt;value1&amp;gt;&amp;#34;,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;param2&amp;#34;: &amp;#34;&amp;lt;value1&amp;gt;&amp;#34;,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ...&lt;br/&gt;&amp;gt; }&lt;br/&gt;&amp;gt; }&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The payload must be encrypted using ChaCha20Poly1305 by the sender using the &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ====Version 1 Fallback PSBT request====&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The message should be the same as version 2 but unencrypted, as version 1 is unaware of encryption when using an unsecured payjoin server. The Relay should convert the PSBT to PSBTv2 and construct the JSON payload from the HTTP request body and optional query parameters. Upon receiving an unencrypted PSBTv2 response from a receiver, it should convert it to PSBTv0 for compatibility with BIP 78.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Asynchronous relay buffers===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Each receiver subdirectory on the relay server has a buffer for requests and one for responses. Each buffer updates listeners through awaitable events so that updates are immediately apparent to relevant client sessions.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===BIP 21 receiver parameters===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A major benefit of BIP 78 payjoin over other coordination mechanisms is its compatibility with the universal BIP 21 bitcoin URI standard.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This proposal defines the following new [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&lt;/a&gt;|BIP 21 URI]] parameters:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt;: the pre-shared symmetric key for encryption and authentication with ChaCha20-Poly1305&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * &amp;lt;code&amp;gt;exp&amp;lt;/code&amp;gt;: represents a request expiration after which the receiver reserves the right to broadcast the Fallback and ignore requests.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP 78&amp;#39;s BIP 21 payjoin parameters are also valid for version 2.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Optional sender parameters===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; When the payjoin sender posts the original PSBT to the receiver, it can optionally specify the following HTTP query string parameters:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt;: represents the version number of the payjoin protocol that the sender is using. This version is &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP 78&amp;#39;s optional query parameters are also valid as version 2 parameters.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ==Rationale==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Request expiration &amp;amp; fallback===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The relay may hold a request for an offline payjoin peer until that peer comes online. However, the BIP 78 spec recommends broadcasting request PSBTs in the case of an offline counterparty. Doing so exposes a naïve, surveillance-vulnerable transaction which payjoin intends to avoid.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The existing BIP 78 protocol has to be synchronous only for automated endpoints which may be vulnerable to probing attacks. It can cover this tradeoff by demanding a fallback transaction that would not preserve privacy the same way as a payjoin. BIP 21 URI can communicate a request expiration to alleviate both of these problems. Receivers may specify a deadline after which they will broadcast this fallback with a new expiration parameter &amp;lt;code&amp;gt;exp=&amp;lt;/code&amp;gt;. &amp;lt;!-- I also like to for timeout, but it&amp;#39;s hard to coordinate in an asynchronous way --&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===WebTransport===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Many transport protocols are good candidates for Serverless Payjoin functionality, but WebTransport stands out in its ability to stream and take advantage of QUIC&amp;#39;s performance in mobile environments. In developing this BIP, serverless payjoin proofs of concept using TURN, HTTP/1.1 long polling, WebSockets, Magic Wormhole, and Nostr have been made. Streaming allows the relay to have more granular and asynchronous understanding of the state of the peers, and this protcol is designed specifically to address the shortcomings of an HTTP protocol&amp;#39;s requirement to receive from a reliable, always-online connection.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While WebTransport and HTTP/3 it is built on are relatively new, widespread support across browsers assures me that it is being accepted as a standard and even has a fallback to HTTP/2 environments. Being built on top of QUIC allows it to multiplex connections from a relay to multiple peers which may prove advantageous for later payjoin protocols between more than two participants contributing inputs, such as those used to fund a lightning node with channels from multiple sources in one transaction, or those with threat models more similar to ZeroLink CoinJoin.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While Nostr is fascinating from the perspective of censorship resistance, the backwards compatibility with Payjoin v1 would mean only custom Nostr Payjoin relays exposing an https endpoint would be suitable. Nostr transport is also limited by the performance of WebSockets, being an abstraction on top of that protocol. If Nostr authentication were used instead of a symmetric &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; then those keys would also need to be communicated out of band and complicate the protocol. There is nothing stopping a new version of this protocol or a NIP making Payjoin version 2 possible over Nostr should Payjoin censorship become a bottleneck in the way of adoption.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; WebTransport is already shipped in both Firefox, Chrome, h3 in Rust, Go, and all popular languages. There is also [[&lt;a href=&#34;https://w3c.github.io/p2p-webtransport/&#34;&gt;https://w3c.github.io/p2p-webtransport/&lt;/a&gt;|a working draft for full P2P WebTransport]] without any relay, which a future payjoin protocol may make use of.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===ChaCha20Poly1305 AEAD===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This authenticated encryption with additional data [[&lt;a href=&#34;https://en.wikipedia.org/wiki/ChaCha20-Poly1305&#34;&gt;https://en.wikipedia.org/wiki/ChaCha20-Poly1305&lt;/a&gt;|algorithm]] is standardized in RFC 8439 and has high performance. ChaCha20Poly1305 AEAD seems to be making its way into bitcoin by way of [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki&lt;/a&gt;|BIP 324]] as well. The protocol has widespread support in browsers, OpenSSL and libsodium. AES-GCM is more widespread but is both older, slower, and not a dependency in bitcoin software.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; secp256k1 asymmetric cryptography could be used, but symmetric encryption allows for many fewer messages to be sent, a single ephemeral key, and seems suitable given the one time use of BIP 21 URIs for Payjoin. Payjoin already requires base64 encoding for PSBTs, so we have it available to encode the 256-bit &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; in the BIP 21 parameter.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===PSBT Version 2===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The PSBT version 1 protocol was replaced because it was not designed to have inputs and outputs be mutated. Payjoin mutates the PSBT, so BIP 78 uses a hack where a new PSBT is created by the receiver instead of mutating it. This can cause some strange behaviors from signers who don&amp;#39;t know where to look to find the scripts that they are accountable for. PSBT version 2 makes mutating a PSBT&amp;#39;s inputs and outputs trivial. It also eliminates the transaction finalization step. Receivers who do not understand PSBT version 1 may choose to reject Payjoin version 1 requests and only support PSBT version 2.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Attack vectors===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Since relays store arbitrary encrypted payloads to the tragedy of the commons and denial of service attacks. Relay operators may impose an authentication requirement before they provide relay service to receivers to mitigate such attacks.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Since &amp;lt;code&amp;gt;psk&amp;lt;/code&amp;gt; is a symmetric key, the first message containing the sender&amp;#39;s original PSBT does not have forward secrecy. Since relay buffers are associated with a single ephemeral relay directory, to support request-response simplicity of version 1, this seems appropriate.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Since the Fallback PSBT is valid, even where &amp;lt;code&amp;gt;exp=&amp;lt;/code&amp;gt; is specified, the receiver may broadcast it and lose out on ambiguous privacy protection from payjoin at any time. Though unfortunate, this is the typical bitcoin transaction flow today anyhow.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ===Network privacy===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Unlike BIP 78 implementations, sender and receiver peers will only see the IP address of the relay, not their peer&amp;#39;s. Relays may be made available via Tor hidden service or Oblivious HTTP in addition to IP / DNS to allow either of the peers to protect their IP from the relay with without requiring both peers to use additional network security dependencies.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ==Backwards compatibility==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The receivers advertise payjoin capabilities through [[&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki&lt;/a&gt;|BIP21&amp;#39;s URI Scheme]].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Senders not supporting payjoin will just ignore the &amp;lt;code&amp;gt;pj=&amp;lt;/code&amp;gt; parameter and proceed to typical address-based transaction flows. &amp;lt;code&amp;gt;req-pj=&amp;lt;/code&amp;gt; may be used to compel payjoin.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Receivers may choose to support version 1 payloads. Version 2 payjoin URIs should enable &amp;lt;code&amp;gt;pjos=0&amp;lt;/code&amp;gt; so that these v1 senders disable output substitution since the v1 messages are neither encrypted nor authenticated, putting them at risk for man-in-the-middle attacks otherwise. The relay protocol should carry on as normal, validating based on HTTP headers and constructing an unencrypted Version 2 payload from optional query parameters, and PSBT in the body.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The BIP 78 error messages are already JSON formatted, so it made sense to rely on the same dependency for these payloads and error messages.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ==Reference implementation==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; An early proof of concept draft reference implementation can be found at &lt;a href=&#34;https://github.com/payjoin/rust-payjoin/pull/78&#34;&gt;https://github.com/payjoin/rust-payjoin/pull/78&lt;/a&gt;. It implements an asynchronous payment flow using WebSockets using PSBTv1 without encryption. Another reference can be found at &lt;a href=&#34;https://github.com/payjoin/rust-payjoin/pull/21&#34;&gt;https://github.com/payjoin/rust-payjoin/pull/21&lt;/a&gt; which uses HTTP long polling for transport and Noise NNpsk0 for crypto. Recently, I&amp;#39;ve come to realize the rationale for WebTransport, PSBTv2, and ChaCha20-Poly1305 AEAD substitutions and am working on an implementation including this exact specification, but wanted to get early feedback on this design in the spirit of BIP 2.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ==Acknowledgements==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thank you to OpenSats for funding this pursuit, to Human Rights Foundation for putting a bounty on it and funding invaluable BOB Space space support, who I owe a thank you to as well. Thank you to Ethan Heilman, Nicolas Dorier, Kukks, nopara73, Kristaps Kaupe, Kixunil, /dev/fd0/, Craig Raw, Mike Schmidt, Murch, Dávid Molnár, Lucas Ontiviero, and uncountable twitter plebs for feedback that has turned this idea from concept into draft, to Mike Jarmuz for suggesting that I write a BIP, and to Satsie for writing the &amp;#34;All About BIPS&amp;#34; zine which I&amp;#39;ve referenced a number of times in the drafting process. Thanks to Armin Sabouri, Ron Stoner, and Johns Beharry for hacking on the first iOS Payjoin receiver and uncovering the problem that this solves in the first place.&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-08-11T01:09:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfdpmajq8f3f97d55wwjmrcysw46065ajfe0a4mcxn979jp92h3yqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkchlxpt</id>
    
      <title type="html">📅 Original date posted:2023-07-26 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfdpmajq8f3f97d55wwjmrcysw46065ajfe0a4mcxn979jp92h3yqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkchlxpt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyvu50e8yvvnyv60addtej9tgjmshfz52zkdsemhcvp8shnwezvsgtrst7e&#39;&gt;nevent1q…st7e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-26&lt;br/&gt;🗒️ Summary of this message: The protocol described in the text is an interesting idea for incorporating 2FA authentication into blind signing. However, there may be vulnerabilities in the protocol that need to be addressed.&lt;br/&gt;📝 Original message:&lt;br/&gt;It&amp;#39;s an interesting idea for a protocol. If I get it right, your basic idea here is to kind of &amp;#34;shoehorn&amp;#34; in a 2FA authentication, and that the blind-signing server has no other function than to check the 2FA?&lt;br/&gt;&lt;br/&gt;This makes it different from most uses of blind signing, where *counting* the number of signatures matters (hence &amp;#39;one more forgery etc). Here, you are just saying &amp;#34;I&amp;#39;ll sign whatever the heck you like, as long as you&amp;#39;re authorized with this 2FA procedure&amp;#34;.&lt;br/&gt;&lt;br/&gt;Going to ignore the details of practically what that means - though I&amp;#39;m sure that&amp;#39;s where most of the discussion would end up - but just looking at your protocol in the gist:&lt;br/&gt;&lt;br/&gt;It seems you&amp;#39;re not checking K values against attacks, so for example this would allow someone to extract the server&amp;#39;s key from one signing:&lt;br/&gt;&lt;br/&gt;1 Alice, after receiving K2, sets K1 = K1&amp;#39; - K2, where the secret key of K1&amp;#39; is k1&amp;#39;.&lt;br/&gt;2 Chooses b as normal, sends e&amp;#39; as normal.&lt;br/&gt;3 Receiving s2, calculate s = s1 &#43; s2 as normal.&lt;br/&gt;&lt;br/&gt;So since s = k &#43; ex = (k&amp;#39; &#43; bx) &#43; ex = k&amp;#39; &#43; e&amp;#39;x, and you know s, k&amp;#39; and e&amp;#39;, you can derive x. Then x2 = x - x1.&lt;br/&gt;&lt;br/&gt;(Gist I&amp;#39;m referring to: &lt;a href=&#34;https://gist.github.com/moonsettler/05f5948291ba8dba63a3985b786233bb&#34;&gt;https://gist.github.com/moonsettler/05f5948291ba8dba63a3985b786233bb&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with Proton Mail secure email.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Wednesday, July 26th, 2023 at 03:44, moonsettler via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi All,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I believe it&amp;#39;s fairly simple to solve the blinding (sorry for the bastard notation!):&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Signing:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; X = X1 &#43; X2&lt;br/&gt;&amp;gt; K1 = k1G&lt;br/&gt;&amp;gt; K2 = k2G&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; R = K1 &#43; K2 &#43; bX&lt;br/&gt;&amp;gt; e = hash(R||X||m)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; e&amp;#39; = e &#43; b&lt;br/&gt;&amp;gt; s = (k1 &#43; e&amp;#39;*x1) &#43; (k2 &#43; e&amp;#39;*x2)&lt;br/&gt;&amp;gt; s = (k1 &#43; k2 &#43; b(x1 &#43; x2)) &#43; e(x1 &#43; x2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; sG = (K1 &#43; K2 &#43; bX) &#43; eX&lt;br/&gt;&amp;gt; sG = R &#43; eX&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Verification:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Rv = sG - eX&lt;br/&gt;&amp;gt; ev = hash(R||X||m)&lt;br/&gt;&amp;gt; e ?= ev&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/moonsettler/05f5948291ba8dba63a3985b786233bb&#34;&gt;https://gist.github.com/moonsettler/05f5948291ba8dba63a3985b786233bb&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Been trying to get a review on this for a while, please let me know if I got it wrong!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BR,&lt;br/&gt;&amp;gt; moonsettler&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Monday, July 24th, 2023 at 5:39 PM, Jonas Nick via bitcoin-dev bitcoin-dev at lists.linuxfoundation.org wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Party 1 never learns the final value of (R,s1&#43;s2) or m.&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; Actually, it seems like a blinding step is missing. Assume the server (party 1)&lt;br/&gt;&amp;gt; &amp;gt; received some c during the signature protocol. Can&amp;#39;t the server scan the&lt;br/&gt;&amp;gt; &amp;gt; blockchain for signatures, compute corresponding hashes c&amp;#39; = H(R||X||m) as in&lt;br/&gt;&amp;gt; &amp;gt; signature verification and then check c == c&amp;#39;? If true, then the server has the&lt;br/&gt;&amp;gt; &amp;gt; preimage for the c received from the client, including m.&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;
    </content>
    <updated>2023-07-27T02:26:34&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgavr5h4jf2texa7j4a6lzaldael73zvv5vmdh55cg3yxxv4cdn0qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zk3e359r</id>
    
      <title type="html">📅 Original date posted:2023-05-03 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgavr5h4jf2texa7j4a6lzaldael73zvv5vmdh55cg3yxxv4cdn0qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zk3e359r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz5s4nwcptxm6lpcp90x6pcqk5uq496ve6s80rcrsu22qhz3vaqvqe85ra2&#39;&gt;nevent1q…5ra2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-03&lt;br/&gt;🗒️ Summary of this message: A new paper by Wei Dai, Okamoto, and Yamamoto highlights the insufficiency of the aEUF-CMA definition of the Aumayr paper, which doesn&amp;#39;t address the possibility of multiple adaptors on the same message at once. The paper has a lot of meat in terms of security definitions, but it is not attempting to rewrite reductions.&lt;br/&gt;📝 Original message:Hi Lloyd and list,&lt;br/&gt;&lt;br/&gt;While on the road and re-downloading the papers, I realised there is a &amp;#34;new&amp;#34; paper published December 2022 by Wei Dai, Okamoto and Yamamoto on this same topic:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://eprint.iacr.org/2022/1687&#34;&gt;https://eprint.iacr.org/2022/1687&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;and, strikingly, it focuses on the exact same point I made here in Section 3 - namely that the aEUF-CMA definition of the Aumayr paper doesn&amp;#39;t address the possibility of multiple-adaptors-on-the-same-message-at-once.&lt;br/&gt;&lt;br/&gt;A pretty big facepalm moment that I didn&amp;#39;t bother to search carefully enough to find that!&lt;br/&gt;&lt;br/&gt;Also it&amp;#39;s cool that such renowned cryptographers are turning their heads towards this subject :)&lt;br/&gt;&lt;br/&gt;It does have a nice illustration of why that definition (which as you know has been reused by other researchers) is insufficient, by making up a malicious version of the &amp;#34;preSign&amp;#34; (i.e. adaptor-sign) algorithm which leaks an arbitrary signature after two calls, while it still fits the definition of aEUF-CMA!&lt;br/&gt;&lt;br/&gt;The paper has a *lot* of meat in terms of security definitions (only had a brief chance to read parts of it, as I&amp;#39;m on the road, so this is high level vague perspective), but afaict it is not actually attempting to rewrite reductions(?), so perhaps more work is needed on that(?).&lt;br/&gt;&lt;br/&gt;Cheers,Adam&lt;br/&gt;&lt;br/&gt;Sent with [Proton Mail](&lt;a href=&#34;https://proton.me/&#34;&gt;https://proton.me/&lt;/a&gt;) secure email.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Monday, May 1st, 2023 at 12:37, AdamISZ via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Lloyd,&lt;br/&gt;&amp;gt; thanks for taking a look.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think your view of the uselessness of single signer adaptors is too pessimistic. The claim you make is that they &amp;#34;don&amp;#39;t provide a way to create enforcement that the publication of signature on a pre-defined message will reveal a secret&amp;#39;&amp;#39; and so are useless. I think this is wrong. If I hold a secret key for X and create a signature adaptor with some encryption key Y with message m and do not create any further signatures (adaptor or otherwise) on m, then any signature on m that is published necessarily reveals the secret on Y to me. This is very useful and has already been used for years by DLCs in production.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m struggling with this one - say I hold privkey x for pubkey X. And I publish adaptor for a point Y (DL y) for message m, like: s&amp;#39; = k - y &#43; H(R|X|m)x with k the nonce and R the nonce point.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And to get the basics clear first, if I publish s = k &#43; H(R|X|m)x then of course the secret y is revealed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What do you mean in saying &amp;#34;any signature on m that is published reveals y&amp;#34;? Clearly you don&amp;#39;t mean any signature on any key (i.e. not the key X). But I also can&amp;#39;t parse it if you mean &amp;#34;any signature on m using key X&amp;#34;, because if I go ahead and publish s = k_2 &#43; H(R_2|X|m)x, it has no algebraic relationship to the adaptor s&amp;#39; as defined above, right?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the point of confusion is maybe about the DLC construct? I referenced that in Section 4.2, parenthetically, because it&amp;#39;s analogous in one sense - in MuSig(2) you&amp;#39;re fixing R via a negotiation, whereas in Dryja&amp;#39;s construct you&amp;#39;re fixing R &amp;#34;by definition&amp;#34;. When I was talking about single key Schnorr, I was saying that&amp;#39;s what&amp;#39;s missing, and thereby making them useless.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think I must have missed some implicit concept in your argument otherwise?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I haven&amp;#39;t read the proofs in detail but I am optimistic about your approach&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Appreciate it, but I fear the optimism is misplaced; as you can see from some notes I made in Issue 1, I think I had a pretty substantially invalid line of reasoning in those proof. Probably I need to revert to the forking lemma style arguments that you and Aumayr et al (and some others) took. I also am revisiting a clearer definition of what security threats need to be addressed. It all seems very nuanced.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But hey, that&amp;#39;s why I published it and asked for feedback - if nothing else it made *me* think more carefully :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; One thing I was considering while reading is that you could make a general proof against all secure Schnorr signing scheme in the ROM by simply extending the ROM forwarding approach from Aumayer et al to all &amp;#34;tweak&amp;#34; operations on the elements that go into the Schnorr challenge hash i.e. the public key and the nonce. After all whether it&amp;#39;s MuSig2, MuSig, FROST they all must call some RO. I think we can prove that if we apply any bijective map to the (X,R) tuple before they go into the challenge hash function then any Schnorr-like scheme that was secure before will be secure when bip32/TR tweaking (i.e. tweaking X) and adaptor tweaking (tweaking R) is applied to it. This would be cool because then we could prove all these variants secure for all schemes past and present in one go. I haven&amp;#39;t got a concrete approach but the proofs I&amp;#39;ve looked at all seem to share this structure.&lt;br/&gt;&amp;gt; Appreciate these thoughts. In particular your point about &amp;#34;generalization of tweaking&amp;#34; is clearly important, I bet other people have thought about it before me. Btw are there any papers on tweaking in general? I&amp;#39;m suddenly reminded of Poelstra&amp;#39;s paper on taproot itself, which istr was an entirely different approach.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with [Proton Mail](&lt;a href=&#34;https://proton.me/&#34;&gt;https://proton.me/&lt;/a&gt;) secure email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Sunday, April 30th, 2023 at 22:23, Lloyd Fournier via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi waxwing,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think your view of the uselessness of single signer adaptors is too pessimistic. The claim you make is that they &amp;#34;don&amp;#39;t provide a way to create enforcement that the publication of signature on a pre-defined message will reveal a secret&amp;#39;&amp;#39; and so are useless. I think this is wrong. If I hold a secret key for X and create a signature adaptor with some encryption key Y with message m and do not create any further signatures (adaptor or otherwise) on m, then any signature on m that is published necessarily reveals the secret on Y to me. This is very useful and has already been used for years by DLCs in production.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I haven&amp;#39;t read the proofs in detail but I am optimistic about your approach. One thing I was considering while reading is that you could make a general proof against all secure Schnorr signing scheme in the ROM by simply extending the ROM forwarding approach from Aumayer et al to all &amp;#34;tweak&amp;#34; operations on the elements that go into the Schnorr challenge hash i.e. the public key and the nonce. After all whether it&amp;#39;s MuSig2, MuSig, FROST they all must call some RO. I think we can prove that if we apply any bijective map to the (X,R) tuple before they go into the challenge hash function then any Schnorr-like scheme that was secure before will be secure when bip32/TR tweaking (i.e. tweaking X) and adaptor tweaking (tweaking R) is applied to it. This would be cool because then we could prove all these variants secure for all schemes past and present in one go. I haven&amp;#39;t got a concrete approach but the proofs I&amp;#39;ve looked at all seem to share this structure.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; LL&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Sun, 30 Apr 2023 at 00:20, AdamISZ 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 list,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I was motivated to look more carefully at the question of the security of using signature adaptors after recently getting quite enthused about the idea of using adaptors across N signing sessions to do a kind of multiparty swap. But of course security analysis is also much more important for the base case of 2 party swapping, which is of .. some considerable practical importance :)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; There is work (referenced in Section 3 here) that&amp;#39;s pretty substantial on &amp;#34;how secure are adaptors&amp;#34; (think in terms of security reductions) already from I guess the 2019-2021 period. But I wanted to get into scenarios of multiple adaptors at once or multiple signing sessions at once with the *same* adaptor (as mentioned above, probably this is the most important scenario).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; To be clear this is the work of an amateur and is currently unreviewed - hence (a) me posting it here and (b) putting the paper on github so people can easily add specific corrections or comments if they like:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/AdamISZ/AdaptorSecurityDoc/blob/main/adaptorsecurity.pdf&#34;&gt;https://github.com/AdamISZ/AdaptorSecurityDoc/blob/main/adaptorsecurity.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;ll note that I did the analysis only around MuSig, not MuSig2.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The penultimate (&amp;#34;third case&amp;#34;), that as mentioned, of &amp;#34;multiple signing sessions, same adaptor&amp;#34; proved to be the most interesting: in trying to reduce this to ECDLP I found an issue around sequencing. It may just be irrelevant but I&amp;#39;d be curious to hear what others think about that.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If nothing else, I&amp;#39;d be very interested to hear what experts in the field have to say about security reductions for this primitive in the case of multiple concurrent signing sessions (which of course has been analyzed very carefully already for base MuSig(2)).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; AdamISZ/waxwing&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Sent with Proton Mail secure email.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;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;-------------- 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/20230503/549203d7/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230503/549203d7/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:21:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfapc99zwkn0l9mg2pxwuq2ljarh2cjdymfdk0akc3z5ynux22qwqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkgcph2e</id>
    
      <title type="html">📅 Original date posted:2023-04-28 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfapc99zwkn0l9mg2pxwuq2ljarh2cjdymfdk0akc3z5ynux22qwqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkgcph2e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2zej9432umnw0trq4ac4s83z0m68xqpjrjsugxgrs0tadk02wd5c7kyk66&#39;&gt;nevent1q…yk66&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-04-28&lt;br/&gt;🗒️ Summary of this message: The security of using signature adaptors for multiparty swaps has been analyzed by an amateur, with a focus on scenarios involving multiple adaptors or signing sessions. The analysis is currently unreviewed and available on GitHub. An issue around sequencing was found in the case of multiple signing sessions with the same adaptor. Expert opinions on security reductions for this primitive in the case of multiple concurrent signing sessions are sought.&lt;br/&gt;📝 Original message:Hi list,&lt;br/&gt;I was motivated to look more carefully at the question of the security of using signature adaptors after recently getting quite enthused about the idea of using adaptors across N signing sessions to do a kind of multiparty swap. But of course security analysis is also much more important for the base case of 2 party swapping, which is of .. some considerable practical importance :)&lt;br/&gt;&lt;br/&gt;There is work (referenced in Section 3 here) that&amp;#39;s pretty substantial on &amp;#34;how secure are adaptors&amp;#34; (think in terms of security reductions) already from I guess the 2019-2021 period. But I wanted to get into scenarios of multiple adaptors at once or multiple signing sessions at once with the *same* adaptor (as mentioned above, probably this is the most important scenario).&lt;br/&gt;&lt;br/&gt;To be clear this is the work of an amateur and is currently unreviewed - hence (a) me posting it here and (b) putting the paper on github so people can easily add specific corrections or comments if they like:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/AdamISZ/AdaptorSecurityDoc/blob/main/adaptorsecurity.pdf&#34;&gt;https://github.com/AdamISZ/AdaptorSecurityDoc/blob/main/adaptorsecurity.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll note that I did the analysis only around MuSig, not MuSig2.&lt;br/&gt;&lt;br/&gt;The penultimate (&amp;#34;third case&amp;#34;), that as mentioned, of &amp;#34;multiple signing sessions, same adaptor&amp;#34; proved to be the most interesting: in trying to reduce this to ECDLP I found an issue around sequencing. It may just be irrelevant but I&amp;#39;d be curious to hear what others think about that.&lt;br/&gt;&lt;br/&gt;If nothing else, I&amp;#39;d be very interested to hear what experts in the field have to say about security reductions for this primitive in the case of multiple concurrent signing sessions (which of course has been analyzed very carefully already for base MuSig(2)).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;AdamISZ/waxwing&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with Proton Mail secure email.
    </content>
    <updated>2023-06-08T01:21:00&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8vsjkjfjg3lgqxgl4lundq6wdgtu4dgzpv6hj7sh97ju9e2xvd6qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkgxg3ec</id>
    
      <title type="html">📅 Original date posted:2022-06-12 📝 Original message:List ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8vsjkjfjg3lgqxgl4lundq6wdgtu4dgzpv6hj7sh97ju9e2xvd6qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkgxg3ec" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr0y66wa75vhxcvulfafms0dhkjn8ywk7wze0gngyaqu5n9svpwwgvddlwx&#39;&gt;nevent1q…dlwx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-06-12&lt;br/&gt;📝 Original message:List denizens,&lt;br/&gt;&lt;br/&gt;As per the title, a suggested protocol for doing anti-Sybil that isn&amp;#39;t too demanding for the users, but actually keeps a decent level of privacy.&lt;br/&gt;&lt;br/&gt;Notice how it&amp;#39;s mostly focused on a user/customer of a service/product/website, but it could conceivably useful in e.g. anti-Sybil in things like Lightning.&lt;br/&gt;&lt;br/&gt;Sorry that as usual I write rather long but there are several conveniently arranged sections you can click on :)&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/AdamISZ/51349418be08be22aa2b4b469e3be92f&#34;&gt;https://gist.github.com/AdamISZ/51349418be08be22aa2b4b469e3be92f&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(with apologies for my backronym-ing sins)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with Proton Mail secure email.
    </content>
    <updated>2023-06-08T01:10:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrtrq64j74w4f9ak0k2yl5nywc2yvmkuc7jdgn4qkrzsqumu28j2qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkkn9jxg</id>
    
      <title type="html">📅 Original date posted:2022-05-23 📝 Original message:Jonas, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrtrq64j74w4f9ak0k2yl5nywc2yvmkuc7jdgn4qkrzsqumu28j2qzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkkn9jxg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxnhu6v2ln4j9wxf7xg0u42433gwphec56ptv6l663yf3pe7vj8xsvrd3lf&#39;&gt;nevent1q…d3lf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-23&lt;br/&gt;📝 Original message:Jonas, all,:&lt;br/&gt;&lt;br/&gt;So I do want to ask a couple further clarifying questions on this point, but I got rather majorly sidetracked :)&lt;br/&gt;I wonder can you (and other list readers!) take a look at my attempt here to summarize what is described in Footnote 2 of the draft BIP (as it&amp;#39;s related to this discussion and also .. it&amp;#39;s pretty interesting generally!):&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/AdamISZ/ca974ed67889cedc738c4a1f65ff620b&#34;&gt;https://gist.github.com/AdamISZ/ca974ed67889cedc738c4a1f65ff620b&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(btw github gists have equation rendering now which is nice!)&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;waxwing/AdamISZ&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with ProtonMail secure email.&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Monday, May 23rd, 2022 at 10:56, Jonas Nick via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Thank you for taking the time to look at the BIP and reference code, waxwing. I&lt;br/&gt;&amp;gt; don&amp;#39;t know if you&amp;#39;re overlooking anything, so let me try to restate the&lt;br/&gt;&amp;gt; paragraph in the BIP draft that attempts to cover this topic [0].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose signers would just abort in the presence of identical public keys. In&lt;br/&gt;&amp;gt; that case, a disruptive signer can permanently DoS-attack a session by simply&lt;br/&gt;&amp;gt; copying the public key of some other signer. Therefore, the BIP is much more&lt;br/&gt;&amp;gt; useful if it can deal with identical public keys.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The MuSig2 BIP draft requires some added complexity to handle identical public&lt;br/&gt;&amp;gt; keys (because of the MuSig2* optimization). But this solution naturally allows&lt;br/&gt;&amp;gt; identifying and removing disruptive signers, which ultimately reduces the&lt;br/&gt;&amp;gt; complexity for MuSig2 users.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/jonasnick/bips/blob/musig2/bip-musig2.mediawiki#public-key-aggregation&#34;&gt;https://github.com/jonasnick/bips/blob/musig2/bip-musig2.mediawiki#public-key-aggregation&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-08T01:09:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspskgdp7qugwh5gcepmqa34yvclcwa88am5ph7u5d3w24fg8x5kkgzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkvrjg8z</id>
    
      <title type="html">📅 Original date posted:2022-05-22 📝 Original message:Jonas, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspskgdp7qugwh5gcepmqa34yvclcwa88am5ph7u5d3w24fg8x5kkgzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkvrjg8z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0hscp4pcp5d37wx74sm6u2cj74q7ej87t0sjl2x4mx6a8ahng3jc7yu728&#39;&gt;nevent1q…u728&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-22&lt;br/&gt;📝 Original message:Jonas,&lt;br/&gt;&lt;br/&gt;Many thanks for getting the BIP draft out. Particularly appreciate the reference code!&lt;br/&gt;&lt;br/&gt;I have a question about identical pubkeys (including how it relates to MuSig2* optimization):&lt;br/&gt;&lt;br/&gt;What is the purpose of allowing this? Isn&amp;#39;t it always the case that N equal keys combined with M non-equal keys is logically equivalent to 1&#43;M keys? It non trivially complicates certain aspects of the algorithm to allow it and I guess I must be missing something in my previous statement because, otherwise, isn&amp;#39;t it pointless (and pretty unwise, considering how likely it is to come from an error)? The whole &amp;#39;second key&amp;#39; thing in MuSig2 is a sorty of icky side effect.&lt;br/&gt;&lt;br/&gt;A valid point about this is already made in the BIP and enunciated clearly and in detail: that MuSig2 is designed to discover lying at the partial sig verify stage, so it&amp;#39;s not really that I&amp;#39;m saying that what&amp;#39;s in the BIP is logically or mathematically wrong; it just seems unwise and needlessly complex. The case of 2 keys being identical does not imply an attacker; it is far more likely to be a busted implementation by counterparties where they&amp;#39;re accidentally using P1, P1 instead of their intended P1, P2.&lt;br/&gt;&lt;br/&gt;I suppose the key word is &amp;#39;needlessly&amp;#39; - is there a need for this that I&amp;#39;m overlooking?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with ProtonMail secure email.&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Tuesday, April 5th, 2022 at 17:57, Jonas Nick via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Tim Ruffing, Elliott Jin, and I are working on a MuSig2 BIP that we would like&lt;br/&gt;&amp;gt; to propose to the community for discussion. The BIP is compatible with BIP340&lt;br/&gt;&amp;gt; public keys and signatures. It supports tweaking, which allows deriving BIP32&lt;br/&gt;&amp;gt; child keys from aggregate keys and creating BIP341 Taproot outputs with key and&lt;br/&gt;&amp;gt; script paths. You can find the BIP draft at:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/jonasnick/bips/blob/musig2/bip-musig2.mediawiki&#34;&gt;https://github.com/jonasnick/bips/blob/musig2/bip-musig2.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The draft is in a state where it should be possible to write an implementation&lt;br/&gt;&amp;gt; based on the BIP that passes the basic test vectors (as, e.g., demonstrated by&lt;br/&gt;&amp;gt; [0]). The draft BIP also contains a reference implementation in python. Please&lt;br/&gt;&amp;gt; be aware that this is only a draft and that it may still be necessary to make&lt;br/&gt;&amp;gt; small tweaks to the algorithms and test vectors.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/btcsuite/btcd/pull/1820&#34;&gt;https://github.com/btcsuite/btcd/pull/1820&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-08T01:09:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqs2lsaqzkhhs94k9kglh5rmnux72ucpyqgtlchgd2axq56rmngmszyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkk2gqwc</id>
    
      <title type="html">📅 Original date posted:2022-05-21 📝 Original message:Sent ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqs2lsaqzkhhs94k9kglh5rmnux72ucpyqgtlchgd2axq56rmngmszyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkk2gqwc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgfrw08a8z6sma50mv5wqetl49fp9x53jk5tcz0fezh2904mxlflcd3lnue&#39;&gt;nevent1q…lnue&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-21&lt;br/&gt;📝 Original message:Sent with ProtonMail secure email.&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Tuesday, May 3rd, 2022 at 02:37, vjudeu via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Typical P2PK looks like that: &amp;#34;&amp;lt;signature&amp;gt; &amp;lt;pubkey&amp;gt; OP_CHECKSIG&amp;#34;. In a typical scenario, we have &amp;#34;&amp;lt;signature&amp;gt;&amp;#34; in out input and &amp;#34;&amp;lt;pubkey&amp;gt; OP_CHECKSIG&amp;#34; in our output. I wonder if it is possible to use covenants right here and right now, with no consensus changes, just by requiring a specific signature. To start with, I am trying to play with P2PK and legacy signatures, but it may turn out, that doing such things with Schnorr signatures will be more flexible and will allow more use cases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The simplest &amp;#34;pay to signature&amp;#34; script I can think of is: &amp;#34;&amp;lt;signature&amp;gt; OP_SWAP OP_CHECKSIG&amp;#34;. Then, any user can provide just a &amp;#34;&amp;lt;pubkey&amp;gt;&amp;#34; in some input, as a part of a public key recovery. The problem with such scheme is that it is insecure. Another problem is that we should handle it carefully, because signatures are removed from outputs. However, we could replace it with some signature hash, then it will be untouched, for example: &amp;#34;OP_TOALTSTACK OP_DUP OP_HASH160 &amp;lt;signatureHash&amp;gt; OP_EQUALVERIFY OP_FROMALTSTACK OP_CHECKSIG&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Doesn&amp;#39;t this suffer from the standard &amp;#34;circular reference&amp;#34; problem for covenants? To pay to a utxo U1, whose scriptpubkey is a (p2wsh wrapped, say) script of: sig, op_checksig, I must create that sig, using my chosen public key, and a message which is a (signature style) hashing of a tx TX1, where an/the input to TX1 is U1, and the txid of U1 &amp;#39;hashes over&amp;#39; that script, which includes the sig we&amp;#39;re trying to create. You can&amp;#39;t make a hash of data which includes that hash (unless the hash fn is broken ofc).&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think that&amp;#39;s affected by the later discussion here or in Zmn&amp;#39;s response right?&lt;br/&gt;&lt;br/&gt;Also a side detail which you might find useful in these ponderings: pubkey recovery is, as you know, possible in ECDSA but is not possible in BIP340 schnorr (which has key prefixing, i.e. the pubkey is included in the message hash binding, i.e. the e in s = k &#43; ex), but is in the original Schnorr where only R(=kG), m are included in e. Easy to see why: from R, s and e(=H(R,m) .. easy to calculate) you can get P = (sG - R)* e^-1.&lt;br/&gt;But in BIP340 Schnorr where (R, s) is published and e (=H(P, R, m)) is not, you cannot reconstruct e and so can only calculate e*P, which by DL assumption does not reveal P. Another way to put it is: if you made up a random R, s you wouldn&amp;#39;t be able to find the right &amp;#39;P&amp;#39; to put into e=H(P, R, m) so that the same P came out, and so that the sig actually verifies.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ
    </content>
    <updated>2023-06-08T01:09:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs27r85rt4kyljtvzc9tw8vkn3pxjr3wmfvcqw5gqxkm8ckp0jftzgzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zktzhc0c</id>
    
      <title type="html">📅 Original date posted:2022-05-10 📝 Original message:&amp;gt; I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs27r85rt4kyljtvzc9tw8vkn3pxjr3wmfvcqw5gqxkm8ckp0jftzgzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zktzhc0c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx0dd0l4jynlhrdfux40gpds76ldxjfdwnegqv9krpkynm5m964us4e0wf8&#39;&gt;nevent1q…0wf8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-10&lt;br/&gt;📝 Original message:&amp;gt; I suppose ultimately this brings up the question of the scope of this BIP. The abstract points out that the BIP contains both a definition of address derivation, but also how to sign fidelity bond certificates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My feeling is that the latter might be better not included? I note that the &amp;#39;Motivation&amp;#39; section gives motivation for standardisation of derivation (this includes things like time schedule), but not the second area - certificate signing. I think the second area is much more tricky, but much more to the point is, isn&amp;#39;t it the case that that second area, can be interpreted without consensus between wallet developers? So say you were a hardware wallet provider, or a &amp;#34;node in a box&amp;#34; provider - your customers want you to provide the ability move funds around, including e.g. moving funds out of an old Joinmarket wallet (in which say there is a now expired timelock address utxo) by just entering its BIP39 seed. If this BIP addresses that, it should be enough.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t doubt that there&amp;#39;s gains to be had from a broader community discussing and agreeing the details of how to create a fidelity bond certificate, but it&amp;#39;s a separate, and more difficult, task.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; waxwing/AdamISZ&lt;br/&gt;&lt;br/&gt;Further to that last point, as the BIP draft currently says:&lt;br/&gt;&lt;br/&gt;&amp;#34; Almost all wallets implementing this standard can use their&lt;br/&gt;already-existing &amp;#34;Sign Message&amp;#34; function to sign the certificate&lt;br/&gt;message. As the certificate message itself is always an ascii string,&lt;br/&gt;the wallet may not need to specially implement this section at all but&lt;br/&gt;just rely on users copypasting their certificate message into the&lt;br/&gt;already-existing &amp;#34;Sign Message&amp;#34; user interface. This works as long as&lt;br/&gt;the wallet knows how to use the private key of the timelocked address&lt;br/&gt;for signing messages.&amp;#34;&lt;br/&gt;&lt;br/&gt;So, isn&amp;#39;t that an argument that we don&amp;#39;t need to specify the certificate message format here?&lt;br/&gt;&lt;br/&gt;On the other hand, I can hardly disagree that it&amp;#39;s worth presenting a kind of &amp;#39;default&amp;#39; way of doing it. But I fear it is not at all simple to decide what a secure, general format should be (as per the discussion we started having here about domain separation tags).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ
    </content>
    <updated>2023-06-08T01:08:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx0dd0l4jynlhrdfux40gpds76ldxjfdwnegqv9krpkynm5m964uszyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkffa4fx</id>
    
      <title type="html">📅 Original date posted:2022-05-10 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx0dd0l4jynlhrdfux40gpds76ldxjfdwnegqv9krpkynm5m964uszyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkffa4fx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgpnv5d9a7xrt4razt0ztuwksph0e3ewtcy8ckmfsmx427yn00r3g5ppmv3&#39;&gt;nevent1q…pmv3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-10&lt;br/&gt;📝 Original message:------- Original Message -------&lt;br/&gt;On Tuesday, May 10th, 2022 at 17:54, ZmnSCPxj via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning waxwing,&lt;br/&gt;&amp;lt;snip&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ah, yes, now I remember.&lt;br/&gt;&amp;gt; I discussed this with Tamas as well in the past and that is why we concluded that in defiads, each UTXO can host at most one advertisement at any one time.&lt;br/&gt;&amp;gt; In the case of defiads there would be a sequence counter where a higher-sequenced advertisement would replace lower-sequenced advertisement, so you could update, but at any one time, for a defiads node, only one advertisement per UTXO could be used.&lt;br/&gt;&amp;gt; This assumed that there would be a defiads network with good gossip propagation so our thinking at the time was that a higher-sequenced advertisement would quickly replace lower-sequenced ones on the network.&lt;br/&gt;&amp;gt; But it is simpler if such replacement would not be needed, and you could then commit to the advertisement directly on the UTXO via a tweak.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Each advertisement would also have a specific application ID that it applied to, and applications on top of defiads would ask the local defiads node to give it the ads that match a specific application ID, so a UTXO could only be used for one application at a time.&lt;br/&gt;&amp;gt; This would be equivalent to domain separation tags that waxwing mentions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I suppose ultimately this brings up the question of the scope of this BIP. The abstract points out that the BIP contains both a definition of address derivation, but also how to sign fidelity bond certificates.&lt;br/&gt;&lt;br/&gt;My feeling is that the latter might be better not included? I note that the &amp;#39;Motivation&amp;#39; section gives motivation for standardisation of derivation (this includes things like time schedule), but not the second area - certificate signing. I think the second area is much more tricky, but much more to the point is, isn&amp;#39;t it the case that that second area, can be interpreted without consensus between wallet developers? So say you were a hardware wallet provider, or a &amp;#34;node in a box&amp;#34; provider - your customers want you to provide the ability move funds around, including e.g. moving funds out of an old Joinmarket wallet (in which say there is a now expired timelock address utxo) by just entering its BIP39 seed. If this BIP addresses that, it should be enough.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t doubt that there&amp;#39;s gains to be had from a broader community discussing and agreeing the details of how to create a fidelity bond certificate, but it&amp;#39;s a separate, and more difficult, task.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ
    </content>
    <updated>2023-06-08T01:08:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsveduvy0m9ud2tajs9efs5gzs7sw2s4m26jhnt6ac5d0p9gv3vcugzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zksq8d5a</id>
    
      <title type="html">📅 Original date posted:2022-05-10 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsveduvy0m9ud2tajs9efs5gzs7sw2s4m26jhnt6ac5d0p9gv3vcugzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zksq8d5a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyvdhtq2unps0tld62z57ewdakvarwunvrw05y4x5e7stadkrswcqpave5a&#39;&gt;nevent1q…ve5a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-10&lt;br/&gt;📝 Original message:------- Original Message -------&lt;br/&gt;On Sunday, May 1st, 2022 at 11:01, Chris Belcher via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello ZmnSCPxj,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is an intended feature. I&amp;#39;m thinking that the same fidelity bond&lt;br/&gt;&amp;gt; can be used to running a JoinMarket maker as well as a Teleport&lt;br/&gt;&amp;gt; (Coinswap) maker.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t believe it&amp;#39;s abusable. It would be a problem if the same&lt;br/&gt;&amp;gt; fidelity bond is used by two makers in the same application, but&lt;br/&gt;&amp;gt; JoinMarket takers are already coded to check for this, and Teleport&lt;br/&gt;&amp;gt; takers will soon as well. Using the same bond across different&lt;br/&gt;&amp;gt; applications is fine.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; CB&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Hi Chris, Zmn, list,&lt;br/&gt;I&amp;#39;ve noodled about this a few times in the past (especially when trying to figure out an LSAG style ring sig based FB for privacy, but that does not seem workable), and I can&amp;#39;t decide the right perspective on it.&lt;br/&gt;&lt;br/&gt;A user sacrifices X amount of time-value-of-money (henceforth TVOM) by committing in Joinmarket with FB1. He then uses the same FB1 in Teleport, let&amp;#39;s say. If he gets benefit Y from using FB1 in Joinmarket, and benefit Z in Teleport, then presumably he&amp;#39;ll only do it if (probabilistically) he thinks Y&#43;Z &amp;gt; X.&lt;br/&gt;&lt;br/&gt;But as an assessor of FB1 in Joinmarket, I don&amp;#39;t know if it&amp;#39;s also being used for Teleport, and more importantly, if it&amp;#39;s being used somewhere else I&amp;#39;m not even aware of. Now I&amp;#39;m not an economist I admit, so I might not be intuit-ing this situation right, but it fees to me like the right answer is &amp;#34;It&amp;#39;s fine for a closed system, but not an open one.&amp;#34; (i.e. if the set of possible usages is not something that all participants have fixed in advance, then there is an effective Sybilling problem, like I&amp;#39;m, as an assessor, thinking that sacrificed value 100 is there, whereas actually it&amp;#39;s only 15, or whatever.)&lt;br/&gt;&lt;br/&gt;As I mentioned in &lt;a href=&#34;https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/993#issuecomment-1110784059&#34;&gt;https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/993#issuecomment-1110784059&lt;/a&gt; , I did wonder about domain separation tags because of this, and as I vaguely alluded to there, I&amp;#39;m really not sure about it.&lt;br/&gt;&lt;br/&gt;If it was me I&amp;#39;d want to include domain separation via part of the signed message, since I don&amp;#39;t see how it hurts? For scenarios where reuse is fine, reuse can still happen.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ
    </content>
    <updated>2023-06-08T01:08:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyvdhtq2unps0tld62z57ewdakvarwunvrw05y4x5e7stadkrswcqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkw7ku8z</id>
    
      <title type="html">📅 Original date posted:2022-05-21 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyvdhtq2unps0tld62z57ewdakvarwunvrw05y4x5e7stadkrswcqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkw7ku8z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsql40sz3a4szf6xpyhtujm6j8thdjj06f280wrv7ek6aavvfwxascevcydm&#39;&gt;nevent1q…cydm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-21&lt;br/&gt;📝 Original message:&amp;gt; &amp;gt; &amp;gt; As a better analogy: I am borrowing a piece of gold, smelting it down to make&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; a nice shiny advertisement &amp;#34;I am totally not a bot!!&amp;#34;, then at the end of the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; lease period, re-smelting it back and returning to you the same gold piece&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (with the exact same atoms constituting it), plus an interest from my business,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; which gained customers because of the shiny gold advertisement claiming &amp;#34;I&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; am totally not a bot!!&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; That you use the same piece of gold for money does not preclude me using&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the gold for something else of economic value, like making a nice shiny&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; advertisement, so I think your analysis fails there.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Otherwise, your analysis is on point, but analyses something else entirely.&lt;br/&gt;&lt;br/&gt;Back to this analogy, I think it&amp;#39;s imprecise in a way that&amp;#39;s important to not overlook: you cannot re-use the same gold atoms in two different advertisements. Use of a fidelity bond, being basically a signature, is completely &amp;#39;non-rivalrous&amp;#39; as I think the economists say.&lt;br/&gt;&lt;br/&gt;&amp;gt; Yes, that is why Tamas switched to defiads, as I had convinced him that it would be similar enough without actually being a covenant scam like you described.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In any case, I tend to agree with your other posts on the subject. For the burn to be provably non-dilutable it must be a cost provably associated to the scenario which relies upon the cost. This provides the global uniqueness constraint (under cryptographic assumptions of difficulty).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Indeed.&lt;br/&gt;&amp;gt; I suspect the only reason it is not yet a problem with existing JoinMarket and Teleport is simply that no convenient software currently exists which allows the same bond to be used by both, thus making it safe in practice but not in theory.&lt;br/&gt;&amp;gt; But the theory implies that if somebody does make such software, effectively both systems will become joined as effectively only a single identity exists in both systems.&lt;br/&gt;&amp;gt; This may not be a problem either since the intent is that Teleport will obsolete JoinMarket someday, but if other applications start using the same scheme without requiring a commitment to a specific application, this may also effectively render Teleport less useful as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&lt;br/&gt;So, general comment: it seems like both you and Eric agree with my uncertain intuition up-thread and therefore do we all agree that the correct solution (to whatever extent there is one) is something like domain separation tags, as we discussed earlier? It&amp;#39;s still a matter of social consensus: if appending &amp;#34;JM&amp;#34; to the end of a certificate signature is intended to mean that this fidelity bond can only be used in Joinmarket and not anywhere else, well we can only as individual users demand that (i.e. *I* might not accept it in Teleport, but what if Fred down the street does? It&amp;#39;s not enough for me to rely on my own criteria!), and more subtly, it makes sense only if we all have an unambiguous definition of what Joinmarket *is* - ironically it is precisely the thing brought most into question by the achievement of real decentralization in a system.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;waxwing/AdamISZ
    </content>
    <updated>2023-06-08T01:08:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxle4cfst7q4f4q6yths08ym7gsx4tkdswezsd8dyx5zh9m09l5zczyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkx4yyh0</id>
    
      <title type="html">📅 Original date posted:2022-01-24 📝 Original message:Hello ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxle4cfst7q4f4q6yths08ym7gsx4tkdswezsd8dyx5zh9m09l5zczyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zkx4yyh0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyjsr6q2dtjumnhlrjahh77tmynfcgfa70saldvc68aq9qhlcrgdsdjtv6u&#39;&gt;nevent1q…tv6u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-24&lt;br/&gt;📝 Original message:Hello list,&lt;br/&gt;&lt;br/&gt;I took the time to write up this rather out-there idea:&lt;br/&gt;&lt;br/&gt;Imagine you wanted to send a coin just like email, i.e. just transfer data to the counterparty.&lt;br/&gt;&lt;br/&gt;Clearly this is in general entirely impossible; but with what restrictions and assumptions could you create a toy version of it?&lt;br/&gt;&lt;br/&gt;See this gist for a detailed build up of the idea:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/AdamISZ/b462838cbc8cc06aae0c15610502e4da&#34;&gt;https://gist.github.com/AdamISZ/b462838cbc8cc06aae0c15610502e4da&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Basically: using signature adaptors and CTV or a similar covenant, you could create a fully trustless transfer of control of a utxo from one party to another with no interaction with the rest of the group, at the time of transfer (modulo of course lots and lots of one-time setup).&lt;br/&gt;&lt;br/&gt;The limitations are extreme and as you&amp;#39;d imagine. In the gist I feel like I got round one of them, but not the others.&lt;br/&gt;&lt;br/&gt;(I very briefly mention comparison to e.g. statechains or payment pools; they are making other tradeoffs against the &amp;#39;digital cash&amp;#39; type of goal. There is no claim that this &amp;#39;pathcoin&amp;#39; idea is even viable yet, let alone better than those ideas).&lt;br/&gt;&lt;br/&gt;Publishing this because I feel like it&amp;#39;s the kind of thing imaginative minds like the ones here, may be able to develop further. Possibly!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;waxwing / AdamISZ
    </content>
    <updated>2023-06-08T01:02:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgmza5quvcqyekdslj4xe25mn4dlqcpel2k3tl6yjjyazxqdm7hkqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zk8zk853</id>
    
      <title type="html">📅 Original date posted:2019-11-23 📝 Original message:Two ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgmza5quvcqyekdslj4xe25mn4dlqcpel2k3tl6yjjyazxqdm7hkqzyzdnewgxdfqad3vupyznrqnaalnp8rs5lzu557qz4zsc823snf8zk8zk853" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdv7725ktn037yncghnzph9lwsxcg7t2vl4hhla7vnffmpqzwuyjcpsc8tr&#39;&gt;nevent1q…c8tr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-11-23&lt;br/&gt;📝 Original message:Two party mixes can be useful in the context of a very large number of them.&lt;br/&gt;There is no pretence that doing one such, or even doing several such, gives any privacy *guarantees*.&lt;br/&gt;However, if it can be arranged that such &amp;#39;mixes&amp;#39; occur frequently across a broad spectrum of wallets - and the claim is that that is possible precisely because at least one of the two participants needs to do *absolutely nothing at all* for the join to happen - then the degradation of blockchain analysis could be pretty severe.&lt;br/&gt;&lt;br/&gt;What&amp;#39;s described here therefore is essentially an attempt to go to the other far extreme from &amp;#39;rigidly controlled and coordinated large mix sets&amp;#39; to &amp;#39;ultra loosely coupled almost zero coordination mixing&amp;#39;, trading off size in one step for convenience/low effort/even zero effort mixing. Part of that may (or may not) involve Proposers being specialised entities, and it&amp;#39;s only the Receiver side that&amp;#39;s zero effort.&lt;br/&gt;&lt;br/&gt;It should be noted that the two extremes are not incompatible; if one is valuable, it doesn&amp;#39;t mean the other isn&amp;#39;t.&lt;br/&gt;&lt;br/&gt;But what I think you can deduce: a proposal to do SNICKER that just involved a very small set of users would not be much use (still not zero, though); the tradeoffs have been made having in mind the idea of more usage, especially more *broad* usage.&lt;br/&gt;&lt;br/&gt;Answering about 2 party joins in more general terms:&lt;br/&gt;&lt;br/&gt;Any such coinjoin, no matter its pattern, will break the common input ownership heuristic. If there are equal sized outputs of the same scriptpubkey type (as is proposed) then that delinking effect is of considerable value also.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sent with ProtonMail Secure Email.&lt;br/&gt;&lt;br/&gt;‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;On Friday, November 22, 2019 2:57 PM, popo via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi, AFAIK snicker is limited to 2 party mixes for the foreseeable future.&lt;br/&gt;&amp;gt; What makes this a useful anonymity system for cryptocurrency/Bitcoin?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 11/22/19 3:02 PM, AdamISZ via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi Riccardo,&lt;br/&gt;&amp;gt; &amp;gt; Apologies for not answering before, this slipped my mind.&lt;br/&gt;&amp;gt; &amp;gt; Clearly what you propose is possible, and adding the proposer&amp;#39;s own&lt;br/&gt;&amp;gt; &amp;gt; signed transaction is a nice touch to make it more privacy-viable.&lt;br/&gt;&amp;gt; &amp;gt; For now my inclination is not to add this complexity, especially because&lt;br/&gt;&amp;gt; &amp;gt; of the cost implication.&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;d note though that your idea about adding in second-stage transactions&lt;br/&gt;&amp;gt; &amp;gt; aligns with the CoinJoinXT idea (or perhaps, just the segwit idea!).&lt;br/&gt;&amp;gt; &amp;gt; Proposers could send sequences of transactions with various patterns,&lt;br/&gt;&amp;gt; &amp;gt; including backouts and promises, but it would clearly be way more&lt;br/&gt;&amp;gt; &amp;gt; complicated than what we&amp;#39;re considering right now.&lt;br/&gt;&amp;gt; &amp;gt; Regards,&lt;br/&gt;&amp;gt; &amp;gt; Adam/waxwing&lt;br/&gt;&amp;gt; &amp;gt; Sent with ProtonMail &lt;a href=&#34;https://protonmail.com&#34;&gt;https://protonmail.com&lt;/a&gt; Secure Email.&lt;br/&gt;&amp;gt; &amp;gt; ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;&amp;gt; &amp;gt; On Wednesday, November 6, 2019 4:52 PM, Riccardo Casatta via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Hello Adam,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; are you sure you can&amp;#39;t tackle the watch-only issue?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; What if the proposer create the coinjoin-tx, plus another tx&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (encrypted with the shared secret) which is a 1 input-1 output (1to1)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; tx which spend his output to another of his key.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; At this point when the receiver accept the proposal tx he could create&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; other tx 1to1 which are spending his tweaked output to pure bip32&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; derived key, he than broadcast together the coinjoin tx and for every&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; output of the coinjoin tx one other tx which is a 1to1 tx.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Notes:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; -   We are obviously spending more fee because there are more txs&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     involved but the receiver ends up having only bip32 derived outputs.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; -   The receiver must create the 1to1 tx or the receiver lose privacy by&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     being the only one to create 1to1 tx&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; -   a good strategy could be to let the coinjoin tx have a very low fee,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     while the 1to1 tx an higher one so there is less risk that only the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     coinjoin gets mined&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; -   Whit this spending strategy, the wallet initial scan does not need&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     to be modified&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; Il giorno mar 22 ott 2019 alle ore 15:29 AdamISZ via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt; ha scritto:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     Just to chime in on these points:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     My discussions with ghost43 and ThomasV led me to the same&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     conclusion, at least in general, for the whole watch-only issue:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     It&amp;#39;s necessary that the key tweak (`c` as per draft BIP) be known&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     by Proposer (because has to add it to transaction before signing)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     and Receiver (to check ownership), but must not be known by anyone&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     else (else Coinjoin function fails), hence it can&amp;#39;t be publically&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     derivable in any way but must require information secret to the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     two parties. This can be a pure random sent along with the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     encrypted proposal (the original concept), or based on such, or&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     implicit via ECDH (arubi&amp;#39;s suggestion, now in the draft, requiring&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     each party to access their own secret key). So I reached the same&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     conclusion: the classic watch-only use case of monitoring a wallet&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     in real time with no privkey access is incompatible with this.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     It&amp;#39;s worth mentioning a nuance, however: distinguish two&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     requirements: (1) to recover from zero information and (2) to&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     monitor in real time as new SNICKER transactions arrive.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     For (2) it&amp;#39;s interesting to observe that the tweak `c` is not a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     money-controlling secret; it&amp;#39;s only a privacy-controlling secret.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     If you imagined two wallets, one hot and one cold, with the second&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     tracking the first but having a lower security requirement because&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     cold, then the `c` values could be sent along from the hot to the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     cold, as they are created, without changing the cold&amp;#39;s security&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     model as they are not money-controlling private keys. They should&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     still be encrypted of course, but that&amp;#39;s largely a technical&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     detail, if they were exposed it would only break the effect of the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     coinjoin outputs being indistinguishable.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     For (1) the above does not apply; for there, we don&amp;#39;t have anyone&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     telling us what `c` values to look for, we have to somehow&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     rederive, and to do that we need key access, so it reverts to the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     discussion above about whether it might be possible to interact&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     with the cold wallet &amp;#39;manually&amp;#39; so to speak.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     To be clear, I don&amp;#39;t think either of the above paragraphs describe&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     things that are particularly likely to be implemented, but the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     hot/cold monitoring is at least feasible, if there were enough&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     desire for it.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     At the higher level, how important is this? I guess it just&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     depends; there are similar problems (not identical, and perhaps&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     more addressable?) in Lightning; importing keys is generally&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     non-trivial; one can always sweep non-standard keys back into the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     HD tree, but clearly that is not really a solution in general; one&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     can mark out wallets/seeds of this type as distinct; not all&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     wallets need to have watch-only (phone wallets? small wallets?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     lower security?) one can prioritise spends of these coins. Etc.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     Some more general comments:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     Note Elichai&amp;#39;s comment on the draft (repeated here for local&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     convenience:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &lt;a href=&#34;https://gist.github.com/AdamISZ/2c13fb5819bd469ca318156e2cf25d79#gistcomment-3014924&#34;&gt;https://gist.github.com/AdamISZ/2c13fb5819bd469ca318156e2cf25d79#gistcomment-3014924&lt;/a&gt;)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     about AES-GCM vs AES-CBC, any thoughts?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     I didn&amp;#39;t discuss the security of the construction for a Receiver&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     from a Proposer who should after all be assumed to be an attacker&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (except, I emphasised that PSBT parsing could be sensitive on this&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     point); I hope it&amp;#39;s clear to everyone that the construction Q = P&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &#43; cG is only controllable by the owner of the discrete log of P&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (trivial reduction: if an attacker who knows c, can find the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     private key q of Q, he can derive the private key p of P as q - c,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     thus he is an ECDLP cracker).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     Thanks for all the comments so far, it&amp;#39;s been very useful.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     AdamISZ/waxwing/Adam Gibson&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     Sent with ProtonMail Secure Email.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     On Monday, October 21, 2019 4:04 PM, SomberNight via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;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; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; &amp;gt; The SNICKER recovery process is, of course, only required for&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     wallet&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; recovery and not normal wallet use, so I don&amp;#39;t think a small&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     amount of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; round-trip communication between the hot wallet and the cold&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     wallet is&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; too much to ask---especially since anyone using SNICKER with a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; watching-only wallet must be regularly interacting with their cold&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; wallet anyway to sign the coinjoins.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; What you described only considers the &amp;#34;initial setup&amp;#34; of a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     watch-only wallet. There are many usecases for watch-only wallets.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     There doesn&amp;#39;t even necessarily need to be any offline-signing&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     involved. For example, consider a user who has a hot wallet on&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     their laptop with xprv; and wants to watch their addresses using&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     an xpub from their mobile. Or consider giving an xpub to an&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     accountant. Or giving an xpub to your Electrum Personal Server&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (which is how it works).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; Note that all these usecases require &amp;#34;on-going&amp;#34; discovery of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     addresses, and so they would break.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; ghost43&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; (ps: Apologies Dave for the double-email; forgot to cc list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     originally)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt; &amp;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; &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;     bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;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; &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; Riccardo Casatta - @RCasatta &lt;a href=&#34;https://twitter.com/RCasatta&#34;&gt;https://twitter.com/RCasatta&lt;/a&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; 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-07T20:21:31&#43;02:00</updated>
  </entry>

</feed>