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




  <entry>
    <id>https://nostr.ae/nevent1qqst0jqj54kn8l7pyfpn5ga9d2nz6qp94xcr7xt5fr7jpxv7dr002nqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fu6ev4</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst0jqj54kn8l7pyfpn5ga9d2nz6qp94xcr7xt5fr7jpxv7dr002nqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fu6ev4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq67ee8l3x4xv55hgljg9x4xc55wdxcu27attsgtlnad3v7f07qpgkz9t52&#39;&gt;nevent1q…9t52&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: The deployed mitigations for the transaction-relay jamming attack on lightning channels are not expected to fix the issue. Mempool scanning and transaction re-signing/re-broadcasting are discussed as possible mitigations, but they have limitations and may not effectively prevent the attack. The only real fix would be for miners to keep a history of transactions and try them again after a potential attack.&lt;br/&gt;📝 Original message:&lt;br/&gt;There appears to be some confusion about this issue and the mitigations. To be clear, the deployed &lt;br/&gt;mitigations are not expected to fix this issue, its arguable if they provide anything more than a PR &lt;br/&gt;statement.&lt;br/&gt;&lt;br/&gt;There are two discussed mitigations here - mempool scanning and transaction re-signing/re-broadcasting.&lt;br/&gt;&lt;br/&gt;Mempool scanning relies on regularly checking the mempool of a local node to see if we can catch the &lt;br/&gt;replacement cycle mid-cycle. It only works if wee see the first transaction before the second &lt;br/&gt;transaction replaces it.&lt;br/&gt;&lt;br/&gt;Today, a large majority of lightning nodes run on machines with a Bitcoin node on the same IP &lt;br/&gt;address, making it very clear what the &amp;#34;local node&amp;#34; of the lightning node is. An attacker can &lt;br/&gt;trivially use this information to connect to said local node and do the replacement quickly, &lt;br/&gt;preventing the victim from seeing the replacement.&lt;br/&gt;&lt;br/&gt;More generally, however, similar discoverability is true for mining pools. An attacker performing &lt;br/&gt;this attack is likely to do the replacement attack on a miner&amp;#39;s node directly, potentially reducing &lt;br/&gt;the reach of the intermediate transaction to only miners, such that the victim can never discover it &lt;br/&gt;at all.&lt;br/&gt;&lt;br/&gt;The second mitigation is similarly pathetic. Re-signing and re-broadcasting the victim&amp;#39;s transaction &lt;br/&gt;in an attempt to get it to miners even if its been removed may work, if the attacker is super lazy &lt;br/&gt;and didn&amp;#39;t finish writing their attack system. If the attacker is connected to a large majority of &lt;br/&gt;hashrate (which has historically been fairly doable), they can simply do their replacement in a &lt;br/&gt;cycle aggressively and arbitrarily reduce the probability that the victim&amp;#39;s transaction gets confirmed.&lt;br/&gt;&lt;br/&gt;Now, the above is all true in a spherical cow kinda world, and the P2P network has plenty of slow &lt;br/&gt;nodes and strange behavior. Its possible that these mitigations might, by some stroke of luck, &lt;br/&gt;happen to catch such an attack and prevent it, because something took longer than the attacker &lt;br/&gt;intended or whatever. But, that&amp;#39;s a far cry from any kind of material &amp;#34;fix&amp;#34; for the issue.&lt;br/&gt;&lt;br/&gt;Ultimately the only fix for this issue will be when miners keep a history of transactions they&amp;#39;ve &lt;br/&gt;seen and try them again after they may be able to enter the mempool because of an attack like this.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 10/16/23 12:57 PM, Antoine Riard wrote:&lt;br/&gt;&amp;gt; (cross-posting mempool issues identified are exposing lightning chan to loss of funds risks, other &lt;br/&gt;&amp;gt; multi-party bitcoin apps might be affected)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; End of last year (December 2022), amid technical discussions on eltoo payment channels and &lt;br/&gt;&amp;gt; incentives compatibility of the mempool anti-DoS rules, a new transaction-relay jamming attack &lt;br/&gt;&amp;gt; affecting lightning channels was discovered.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; After careful analysis, it turns out this attack is practical and immediately exposed lightning &lt;br/&gt;&amp;gt; routing hops carrying HTLC traffic to loss of funds security risks, both legacy and anchor output &lt;br/&gt;&amp;gt; channels. A potential exploitation plausibly happening even without network mempools congestion.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Mitigations have been designed, implemented and deployed by all major lightning implementations &lt;br/&gt;&amp;gt; during the last months.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Please find attached the release numbers, where the mitigations should be present:&lt;br/&gt;&amp;gt; - LDK: v0.0.118 - CVE-2023 -40231&lt;br/&gt;&amp;gt; - Eclair: v0.9.0 - CVE-2023-40232&lt;br/&gt;&amp;gt; - LND: v.0.17.0-beta - CVE-2023-40233&lt;br/&gt;&amp;gt; - Core-Lightning: v.23.08.01 - CVE-2023-40234&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While neither replacement cycling attacks have been observed or reported in the wild since the last &lt;br/&gt;&amp;gt; ~10 months or experimented in real-world conditions on bitcoin mainet, functional test is available &lt;br/&gt;&amp;gt; exercising the affected lightning channel against bitcoin core mempool (26.0 release cycle).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It is understood that a simple replacement cycling attack does not demand privileged capabilities &lt;br/&gt;&amp;gt; from an attacker (e.g no low-hashrate power) and only access to basic bitcoin and lightning &lt;br/&gt;&amp;gt; software. Yet I still think executing such an attack successfully requests a fair amount of bitcoin &lt;br/&gt;&amp;gt; technical know-how and decent preparation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  From my understanding of those issues, it is yet to be determined if the mitigations deployed are &lt;br/&gt;&amp;gt; robust enough in face of advanced replacement cycling attackers, especially ones able to combine &lt;br/&gt;&amp;gt; different classes of transaction-relay jamming such as pinnings or vetted with more privileged &lt;br/&gt;&amp;gt; capabilities.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Please find a list of potential affected bitcoin applications in this full disclosure report using &lt;br/&gt;&amp;gt; bitcoin script timelocks or multi-party transactions, albeit no immediate security risk exposure as &lt;br/&gt;&amp;gt; severe as the ones affecting lightning has been identified. Only cursory review of non-lightning &lt;br/&gt;&amp;gt; applications has been conducted so far.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There is a paper published summarizing replacement cycling attacks on the lightning network:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&amp;gt&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   ## Problem&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A lightning node allows HTLCs forwarding (in bolt3&amp;#39;s parlance accepted HTLC on incoming link and &lt;br/&gt;&amp;gt; offered HTLC on outgoing link) should settle the outgoing state with either a success or timeout &lt;br/&gt;&amp;gt; before the incoming state timelock becomes final and an asymmetric defavorable settlement might &lt;br/&gt;&amp;gt; happen (cf &amp;#34;Flood &amp;amp; Loot: A Systematic Attack on The Lightning Network&amp;#34; section 2.3 for a classical &lt;br/&gt;&amp;gt; exposition of this lightning security property).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Failure to satisfy this settlement requirement exposes a forwarding hop to a loss of fund risk where &lt;br/&gt;&amp;gt; the offered HTLC is spent by the outgoing link counterparty&amp;#39;s HTLC-preimage and the accepted HTLC is &lt;br/&gt;&amp;gt; spent by the incoming link counterparty&amp;#39;s HTLC-timeout.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The specification mandates the incoming HTLC expiration timelock to be spaced out by an interval of &lt;br/&gt;&amp;gt; `cltv_expiry_delta` from the outgoing HTLC expiration timelock, this exact interval value being an &lt;br/&gt;&amp;gt; implementation and node policy setting. As a minimal value, the specification recommends 34 blocks &lt;br/&gt;&amp;gt; of interval. If the timelock expiration I of the inbound HTLC is equal to 100 from chain tip, the &lt;br/&gt;&amp;gt; timelock expiration O of the outbound HTLC must be equal to 66 blocks from chain tip, giving a &lt;br/&gt;&amp;gt; reasonable buffer of reaction to the lightning forwarding node.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the lack of cooperative off-chain settlement of the HTLC on the outgoing link negotiated with the &lt;br/&gt;&amp;gt; counterparty (either `update_fulfill_htlc` or `update_fail_htlc`) when O is reached, the lightning &lt;br/&gt;&amp;gt; node should broadcast its commitment transaction. Once the commitment is confirmed (if anchor and &lt;br/&gt;&amp;gt; the 1 CSV encumbrance is present), the lightning node broadcasts and confirms its HTLC-timeout &lt;br/&gt;&amp;gt; before I height is reached.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Here enter a replacement cycling attack. A malicious channel counterparty can broadcast its &lt;br/&gt;&amp;gt; HTLC-preimage transaction with a higher absolute fee and higher feerate than the honest HTLC-timeout &lt;br/&gt;&amp;gt; of the victim lightning node and triggers a replacement. Both for legacy and anchor output channels, &lt;br/&gt;&amp;gt; a HTLC-preimage on a counterparty commitment transaction is malleable, i.e additional inputs or &lt;br/&gt;&amp;gt; outputs can be added. The HTLC-preimage spends an unconfirmed and unrelated to the channel parent &lt;br/&gt;&amp;gt; transaction M and conflicts its child.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As the HTLC-preimage spends an unconfirmed input that was already included in the unconfirmed and &lt;br/&gt;&amp;gt; unrelated child transaction (rule 2), pays an absolute higher fee of at least the sum paid by the &lt;br/&gt;&amp;gt; HTLC-timeout and child transaction (rule 3) and the HTLC-preimage feerate is greater than all &lt;br/&gt;&amp;gt; directly conflicting transactions (rule 6), the replacement is accepted. The honest HTLC-timeout is &lt;br/&gt;&amp;gt; evicted out of the mempool.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In an ulterior move, the malicious counterparty can replace the parent transaction itself with &lt;br/&gt;&amp;gt; another candidate N satisfying the replacement rules, triggering the eviction of the malicious &lt;br/&gt;&amp;gt; HTLC-preimage from the mempool as it was a child of the parent T.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There is no spending candidate of the offered HTLC output for the current block laying in network &lt;br/&gt;&amp;gt; mempools.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This replacement cycling tricks can be repeated for each rebroadcast attempt of the HTLC-timeout by &lt;br/&gt;&amp;gt; the honest lightning node until expiration of the inbound HTLC timelock I. Once this height is &lt;br/&gt;&amp;gt; reached a HTLC-timeout is broadcast by the counterparty&amp;#39;s on the incoming link in collusion with the &lt;br/&gt;&amp;gt; one on the outgoing link broadcasting its own HTLC-preimage.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The honest Lightning node has been &amp;#34;double-spent&amp;#34; in its HTLC forwarding.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As a notable factor impacting the success of the attack, a lightning node&amp;#39;s honest HTLC-timeout &lt;br/&gt;&amp;gt; might be included in the block template of the miner winning the block race and therefore realizes a &lt;br/&gt;&amp;gt; spent of the offered output. In practice, a replacement cycling attack might over-connect to miners&amp;#39; &lt;br/&gt;&amp;gt; mempools and public reachable nodes to succeed in a fast eviction of the HTLC-timeout by its &lt;br/&gt;&amp;gt; HTLC-preimage. As this latter transaction can come with a better ancestor-score, it should be picked &lt;br/&gt;&amp;gt; up on the flight by economically competitive miners.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A functional test exercising a simple replacement cycling of a HTLC transaction on bitcoin core &lt;br/&gt;&amp;gt; mempool is available:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&amp;gt&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits from the HTLC-timeout being &lt;br/&gt;&amp;gt; usually broadcast by lightning nodes only once every block, or less the replacement cycling &lt;br/&gt;&amp;gt; malicious transactions paid only equal the sum of the absolute fees paid by the HTLC, adjusted with &lt;br/&gt;&amp;gt; the replacement penalty. Rebroadcasting randomly and multiple times before the next block increases &lt;br/&gt;&amp;gt; the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker in a simple setup broadcast &lt;br/&gt;&amp;gt; the HTLC-preimage to all the network mempools, the honest lightning node is able to catch on the &lt;br/&gt;&amp;gt; flight the unconfirmed HTLC-preimage, before its subsequent mempool replacement. The preimage can be &lt;br/&gt;&amp;gt; extracted from the second-stage HTLC-preimage and used to fetch the off-chain inbound HTLC with a &lt;br/&gt;&amp;gt; cooperative message or go on-chain with it to claim the accepted HTLC output.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Implemented and deployed by Eclair and LND.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; CLTV Expiry Delta: With every jammed block comes an absolute fee cost paid by the attacker, a risk &lt;br/&gt;&amp;gt; of the HTLC-preimage being detected or discovered by the honest lightning node, or the HTLC-timeout &lt;br/&gt;&amp;gt; to slip in a winning block template. Bumping the default CLTV delta hardens the odds of success of a &lt;br/&gt;&amp;gt; simple replacement cycling attack.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Default setting: Eclair 144, Core-Lightning 34, LND 80 and LDK 72.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Affected Bitcoin Protocols and Applications&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  From my understanding the following list of Bitcoin protocols and applications could be affected by &lt;br/&gt;&amp;gt; new denial-of-service vectors under some level of network mempools congestion. Neither tests or &lt;br/&gt;&amp;gt; advanced review of specifications (when available) has been conducted for each of them:&lt;br/&gt;&amp;gt; - on-chain DLCs&lt;br/&gt;&amp;gt; - coinjoins&lt;br/&gt;&amp;gt; - payjoins&lt;br/&gt;&amp;gt; - wallets with time-sensitive paths&lt;br/&gt;&amp;gt; - peerswap and submarine swaps&lt;br/&gt;&amp;gt; - batch payouts&lt;br/&gt;&amp;gt; - transaction &amp;#34;accelerators&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Inviting their developers, maintainers and operators to investigate how replacement cycling attacks &lt;br/&gt;&amp;gt; might disrupt their in-mempool chain of transactions, or fee-bumping flows at the shortest delay. &lt;br/&gt;&amp;gt; Simple flows and non-multi-party transactions should not be affected to the best of my understanding.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Open Problems: Package Malleability&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Pinning attacks have been known for years as a practical vector to compromise lightning channels &lt;br/&gt;&amp;gt; funds safety, under different scenarios (cf. current bip331&amp;#39;s motivation section). Mitigations at &lt;br/&gt;&amp;gt; the mempool level have been designed, discussed and are under implementation by the community &lt;br/&gt;&amp;gt; (ancestor package relay &#43; nverrsion=3 policy). Ideally, they should constraint a pinning attacker to &lt;br/&gt;&amp;gt; always attach a high feerate package (commitment &#43; CPFP) to replace the honest package, or allow a &lt;br/&gt;&amp;gt; honest lightning node to overbid a malicious pinning package and get its time-sensitive transaction &lt;br/&gt;&amp;gt; optimistically included in the chain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Replacement cycling attack seem to offer a new way to neutralize the design goals of package relay &lt;br/&gt;&amp;gt; and its companion nversion=3 policy, where an attacker package RBF a honest package out of the &lt;br/&gt;&amp;gt; mempool to subsequently double-spend its own high-fee child with a transaction unrelated to the &lt;br/&gt;&amp;gt; channel. As the remaining commitment transaction is pre-signed with a minimal relay fee, it can be &lt;br/&gt;&amp;gt; evicted out of the mempool.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A functional test exercising a simple replacement cycling of a lightning channel commitment &lt;br/&gt;&amp;gt; transaction on top of the nversion=3 code branch is available:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&amp;gt&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Discovery&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In 2018, the issue of static fees for pre-signed lightning transactions is made more widely known, &lt;br/&gt;&amp;gt; the carve-out exemption in mempool rules to mitigate in-mempool package limits pinning and the &lt;br/&gt;&amp;gt; anchor output pattern are proposed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In 2019, bitcoin core 0.19 is released with carve-out support. Continued discussion of the anchor &lt;br/&gt;&amp;gt; output pattern as a dynamic fee-bumping method.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In 2020, draft of anchor output submitted to the bolts. Initial finding of economic pinning against &lt;br/&gt;&amp;gt; lightning commitment and second-stage HTLC transactions. Subsequent discussions of a &lt;br/&gt;&amp;gt; preimage-overlay network or package-relay as mitigations. Public call made to inquiry more on &lt;br/&gt;&amp;gt; potential other transaction-relay jamming attacks affecting lightning.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In 2021, initial work in bitcoin core 22.0 of package acceptance. Continued discussion of the &lt;br/&gt;&amp;gt; pinning attacks and shortcomings of current mempool rules during community-wide online workshops. &lt;br/&gt;&amp;gt; Later the year, in light of all issues for bitcoin second-layers, a proposal is made about killing &lt;br/&gt;&amp;gt; the mempool.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In 2022, bip proposed for package relay and new proposed v3 policy design proposed for a review and &lt;br/&gt;&amp;gt; implementation. Mempoolfullrbf is supported in bitcoin core 24.0 and conceptual questions about &lt;br/&gt;&amp;gt; alignment of mempool rules w.r.t miners incentives are investigated.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Along this year 2022, eltoo lightning channels design are discussed, implemented and reviewed. In &lt;br/&gt;&amp;gt; this context and after discussions on mempool anti-DoS rules, I discovered this new replacement &lt;br/&gt;&amp;gt; cycling attack was affecting deployed lightning channels and immediately reported the finding to &lt;br/&gt;&amp;gt; some bitcoin core developers and lightning maintainers.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Timeline&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - 2022-12-16: Report of the finding to Suhas Daftuar, Anthony Towns, Greg Sanders and Gloria Zhao&lt;br/&gt;&amp;gt; - 2022-12-16: Report to LN maintainers: Rusty Russell, Bastien Teinturier, Matt Corallo and Olaoluwa &lt;br/&gt;&amp;gt; Osuntunkun&lt;br/&gt;&amp;gt; - 2022-12-23: Sharing to Eugene Siegel (LND)&lt;br/&gt;&amp;gt; - 2022-12-24: Sharing to James O&amp;#39;Beirne and Antoine Poinsot (non-lightning potential affected projects)&lt;br/&gt;&amp;gt; - 2022-01-14: Sharing to Gleb Naumenko (miners incentives and cross-layers issuers) and initial &lt;br/&gt;&amp;gt; proposal of an early public disclosure&lt;br/&gt;&amp;gt; - 2022-01-19: Collection of analysis if other second-layers and multi-party applications affected. &lt;br/&gt;&amp;gt; LN mitigations development starts.&lt;br/&gt;&amp;gt; - 2023-05-04: Sharing to Wilmer Paulino (LDK)&lt;br/&gt;&amp;gt; - 2023-06-20: LN mitigations implemented and progressively released. Week of the 16 october proposed &lt;br/&gt;&amp;gt; for full disclosure.&lt;br/&gt;&amp;gt; - 2023-08-10: CVEs assigned by MITRE&lt;br/&gt;&amp;gt; - 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling attack existence to &lt;br/&gt;&amp;gt; security at bitcoincore.org &amp;lt;mailto:security at bitcoincore.org&amp;gt;.&lt;br/&gt;&amp;gt; - 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232 / CVE-2023-40233 / CVE-2023-40234 &lt;br/&gt;&amp;gt; and replacement cycling attacks&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Conclusion&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Despite the line of mitigations adopted and deployed by current major lightning implementations, I &lt;br/&gt;&amp;gt; believe replacement cycling attacks are still practical for advanced attackers. Beyond this new &lt;br/&gt;&amp;gt; attack might come as a way to partially or completely defeat some of the pinning mitigations which &lt;br/&gt;&amp;gt; have been working for years as a community.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As of today, it is uncertain to me if lightning is not affected by a more severe long-term package &lt;br/&gt;&amp;gt; malleability critical security issue under current consensus rules, and if any other time-sensitive &lt;br/&gt;&amp;gt; multi-party protocol, designed or deployed isn&amp;#39;t de facto affected too (loss of funds or denial of &lt;br/&gt;&amp;gt; service).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Assuming analysis on package malleability is correct, it is unclear to me if it can be corrected by &lt;br/&gt;&amp;gt; changes in replacement / eviction rules or mempool chain of transactions processing strategy. &lt;br/&gt;&amp;gt; Inviting my technical peers and the bitcoin community to look more on this issue, including to &lt;br/&gt;&amp;gt; dissent. I&amp;#39;ll be the first one pleased if I&amp;#39;m fundamentally wrong on those issues, or if any element &lt;br/&gt;&amp;gt; has not been weighted with the adequate technical accuracy it deserves.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Do not trust, verify. All mistakes and opinions are my own.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;meet with Triumph and Disaster. And treat those two impostors just the same&amp;#34; - K.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-10-18T15:02:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf3as0pjaxu8gtw2lad4tfcdsu4ul5tmsjzvels83tgunrpzg2zrgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5l4taza</id>
    
      <title type="html">📅 Original date posted:2023-06-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf3as0pjaxu8gtw2lad4tfcdsu4ul5tmsjzvels83tgunrpzg2zrgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5l4taza" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvw8hv8wzw8vuc4q3rc4t8rg5jc74nefsmhx7fjpfq2gurwztajdcqjdj2d&#39;&gt;nevent1q…dj2d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-14&lt;br/&gt;🗒️ Summary of this message: Proposing an extension to BOLT-11 for bundled payments to address prepayment of mining fees for non-custodian exchanges. However, getting a new interoperable change into BOLT-11 seems unlikely.&lt;br/&gt;📝 Original message:&lt;br/&gt;I think the ship has probably sailed on getting any kind of new interoperable change in to BOLT-11.&lt;br/&gt;&lt;br/&gt;We already can&amp;#39;t get amount-less BOLT-11 invoices broadly supported, rolling out yet another new &lt;br/&gt;incompatible version of BOLT-11 and expecting the entire ecosystem to support it doesn&amp;#39;t seem all &lt;br/&gt;that likely.&lt;br/&gt;&lt;br/&gt;If we&amp;#39;re working towards specifying some &amp;#34;standard&amp;#34; way of doing swaps, (a) I&amp;#39;d be curious to &lt;br/&gt;understand why the need isn&amp;#39;t obviated by splice-out, and (b) why it shouldn&amp;#39;t be built on OMs so &lt;br/&gt;you can do it more privately.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 6/13/23 1:10 AM, Thomas Voegtlin wrote:&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I would like to propose an extension to BOLT-11, where an invoice can contain two bundled payments, &lt;br/&gt;&amp;gt; with distinct preimages and amounts.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The use case is for services that require the prepayment of a mining fee in order for a &lt;br/&gt;&amp;gt; non-custodian exchange to take place:&lt;br/&gt;&amp;gt;   - Submarine swaps&lt;br/&gt;&amp;gt;   - JIT channels&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In both cases, the service provider receives a HTLC for which they do not have the preimage, have to &lt;br/&gt;&amp;gt; send funds on-chain (to the channel or submarine swap funding address), and wait for the client to &lt;br/&gt;&amp;gt; reveal the preimage when they claim the payment. Because there is no guarantee that the client will &lt;br/&gt;&amp;gt; actually claim the payment, the service providers need to ask prepayment of mining fees.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the case of submarine swaps, services that use dedicated client software, such as Loop by &lt;br/&gt;&amp;gt; Lightning Labs, can ask for a prepayment, because their software can handle it (this is called &amp;#34;no &lt;br/&gt;&amp;gt; show penalty&amp;#34; on the Loop website). However, competitors who do require a dedicated wallet, not such &lt;br/&gt;&amp;gt; as the Boltz exchange, cannot do that. Their website shows an invoice to the user, whose wallet that &lt;br/&gt;&amp;gt; is agnostic about the swap, and it would be unpractical for them to show two invoices to be paid &lt;br/&gt;&amp;gt; simultaneously. This creates a situation where Boltz is vulnerable to DoS attacks, where the &lt;br/&gt;&amp;gt; attacker forces them to pay on-chain fees.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the case of JIT channels, providers who want to protect themselves against this mining fee attack &lt;br/&gt;&amp;gt; need to ask the preimage of the main payment before they open the channel. I believe this is what &lt;br/&gt;&amp;gt; Phoenix does (although their pay-to-open service is not open-source, so I cannot really check). The &lt;br/&gt;&amp;gt; issue is that a service that asks for the preimage first becomes custodian. From a legal &lt;br/&gt;&amp;gt; perspective, it does not matter whether they open the channel immediately after receiving the &lt;br/&gt;&amp;gt; preimage, the ordering of events makes their service custodian. In Europe, such a service will fall &lt;br/&gt;&amp;gt; within the European MICA regulation. Competitors who refuse to offer custodian services, such as &lt;br/&gt;&amp;gt; Electrum, are excluded from that game.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In order to solve that, it would be beneficial to bundle the prepayment and the main payment in the &lt;br/&gt;&amp;gt; same BOLT-11 invoice.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The semantics of bundled payments is as follows:&lt;br/&gt;&amp;gt;   - 1. the BOLT-11 invoice contains two preimages and two amounts: prepayment and main payment.&lt;br/&gt;&amp;gt;   - 2. the receiver should wait until all the HTLCs of both payments have arrived, before they &lt;br/&gt;&amp;gt; fulfill the HTLCs of the pre-payment. If the main payment does not arrive, they should fail the &lt;br/&gt;&amp;gt; pre-payment with a MPP timeout.&lt;br/&gt;&amp;gt;   - 3. once the HTLCs of both payments have arrived, the receiver fulfills the HTLCs of the &lt;br/&gt;&amp;gt; prepayment, and they broadcast their on-chain transaction. Note that the main payment can still fail &lt;br/&gt;&amp;gt; if the sender never reveal the preimage of the main payment.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Of course, nothing in my proposal prevents the service provider from stealing the pre-payment, but &lt;br/&gt;&amp;gt; that is already the case today.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I believe this proposal would level the field in terms of competition between lightning service &lt;br/&gt;&amp;gt; providers. Currently, you need to use a dedicated client in order to use Loop, and competitors who &lt;br/&gt;&amp;gt; do not have an established user base running a dedicated client are exposed to the mining fee &lt;br/&gt;&amp;gt; attack. I also believe that ACINQ would benefit from this, because it would make it possible for &lt;br/&gt;&amp;gt; them to make their pay-to-open service fully non-custodian. My understanding is that in its current &lt;br/&gt;&amp;gt; form, the &amp;#39;pay-to-open&amp;#39; service used by Phoenix will fall into the scope of the European MICA &lt;br/&gt;&amp;gt; regulation, which they should consider as a serious issue.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Finally, I believe that such a change should be implemented in BOLT-11, and not using BOLT-12 or &lt;br/&gt;&amp;gt; onion messages. Indeed, my proposal does not require the exchange of new messages. Some of the &lt;br/&gt;&amp;gt; initial feedback I received was that this is a use case for BOLT-12 or OM, but I think that this is &lt;br/&gt;&amp;gt; making things unnecessarily complicated. We should not add new messages when things can be done in a &lt;br/&gt;&amp;gt; non-interactive way.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; ThomasV&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-15T01:23:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspn7z9vevwqjhxm7nn2cd6565m5lxrrt8uhl7vrpuuvafsey4x08szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zttyzw</id>
    
      <title type="html">📅 Original date posted:2023-02-15 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspn7z9vevwqjhxm7nn2cd6565m5lxrrt8uhl7vrpuuvafsey4x08szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zttyzw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst447eqzt37p82hj2wy5l4c0mcu6kcsmza2ns525g5mlnx3ggzm8cyzpvpc&#39;&gt;nevent1q…pvpc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-15&lt;br/&gt;🗒️ Summary of this message: The Lightning Network could use forward-error-correction code on top of MPP to send more payment shards than the requested sum, reducing the impact of failed HTLCs on payment latency.&lt;br/&gt;📝 Original message:&lt;br/&gt;On 2/14/23 1:42 PM, Antoine Riard wrote:&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &amp;gt; I think movement in this direction is important to guarantee competitiveness with centralised &lt;br/&gt;&amp;gt; payment systems and their (at least theoretical) ability to&lt;br/&gt;&amp;gt;  &amp;gt; process a payment in the blink of an eye. A lightning wallet trying multiple paths to find one &lt;br/&gt;&amp;gt; that works doesn&amp;#39;t help with this.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Or there is the direction to build forward-error-correction code on top of MPP, like in traditional&lt;br/&gt;&amp;gt; networking [1]. The rough idea, you send more payment shards than the requested sum, and then&lt;br/&gt;&amp;gt; you reveal the payment secrets to the receiver after an onion interactivity round to finalize payment.&lt;br/&gt;&lt;br/&gt;Ah, thank you for bringing this up! I&amp;#39;d thought about it and then forgot to mention it in this thread.&lt;br/&gt;&lt;br/&gt;I think this is very important to highlight as we talk about &amp;#34;building a reliable lightning network &lt;br/&gt;out of unreliable nodes&amp;#34; - this is an *incredibly* powerful feature for this.&lt;br/&gt;&lt;br/&gt;While its much less capital-effecient, the ability to over-commit upfront and then only allow the &lt;br/&gt;recipient to claim a portion of the total committed funds would substantially reduce the impact of &lt;br/&gt;failed HTLCs on payment latency. Of course the extra round-trip to request the &amp;#34;unlock keys&amp;#34; for the &lt;br/&gt;correct set of HTLCs adds a chunk to total latency, so senders will have to be careful about &lt;br/&gt;deciding when to do this or not.&lt;br/&gt;&lt;br/&gt;Still, now that we have onion messages, we should do (well, try) this! Its not super complicated to &lt;br/&gt;implement (like everything it seems, the obvious implementation forgoes proof-of-payment, and like &lt;br/&gt;everything the obvious solution is PTLCs, I think). Its not clear to me how we get good data from &lt;br/&gt;trials, though, we&amp;#39;d need a sufficient set of the network to support this that we could actually &lt;br/&gt;test it, which is hard to get for a test.&lt;br/&gt;&lt;br/&gt;Maybe someone (anyone?) wants to do some experiments doing simulations using real probing success &lt;br/&gt;rates to figure out how successful this would be and propose a concrete sender strategy that would &lt;br/&gt;improve success rates.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:12:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrnwjcvtcsmxz38jrnk5tlv3j40q5c6dymcux3p9teeuz4x9zq7kczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5htflkc</id>
    
      <title type="html">📅 Original date posted:2023-02-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrnwjcvtcsmxz38jrnk5tlv3j40q5c6dymcux3p9teeuz4x9zq7kczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5htflkc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqmq8g2dkqgg9an772qyy94lz7j5jkaxk4jn500v3eksfl32gr37ctw27r7&#39;&gt;nevent1q…27r7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-14&lt;br/&gt;🗒️ Summary of this message: Developers are discussing the use of signaling to make lightning network routing more efficient, but some argue that it could lead to a binary good/bad classification of nodes and push node operators towards establishing credit relationships with peers. They suggest that routing scoring should be used instead to estimate liquidity. There are also concerns about the threshold for signaling high availability and the potential for a cargo cult mentality.&lt;br/&gt;📝 Original message:&lt;br/&gt;On 2/14/23 2:34 AM, Joost Jager wrote:&lt;br/&gt;&amp;gt; Hi Matt,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If nodes start aggressively preferring routes through nodes that reliably route payments (which&lt;br/&gt;&amp;gt;     I believe lnd already does, in effect, to some large extent), they should do so by measurement,&lt;br/&gt;&amp;gt;     not signaling.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The signaling is intended as a way to make measurement more efficient. If a node signals that a &lt;br/&gt;&amp;gt; particular channel is HA and it fails, no other measurements on that same node need to be taken by &lt;br/&gt;&amp;gt; the sender. They can skip the node altogether for a longer period of time.&lt;br/&gt;&lt;br/&gt;But as a lightning node I don&amp;#39;t actually care if a node is binary good/bad. I care about what &lt;br/&gt;success rate a node has. If you make the decision binary, suddenly in order for a node to be &amp;#34;good&amp;#34; &lt;br/&gt;I *have* to establish a credit relationship with my peers (i.e. support 0conf splicing). I think &lt;br/&gt;that is a very, very bad thing to do to the lightning network.&lt;br/&gt;&lt;br/&gt;If someone wants to establish such a relationship with their peers, so be it, but as developers we &lt;br/&gt;should strongly avoid adding features which push node operators in that direction, and part of that &lt;br/&gt;is writing good routing scoring so that we aren&amp;#39;t boxing ourselves into some binary good/bad idea of &lt;br/&gt;a node but rather estimating liquidity.&lt;br/&gt;&lt;br/&gt;Honestly this just strikes me as developers being too lazy to do things right. If we do things &lt;br/&gt;carefully and we are seeing issues then we can consider breaking lightning, but until we give it a &lt;br/&gt;good shot, let&amp;#39;s not!&lt;br/&gt;&lt;br/&gt;&amp;gt;     In practice, many channels on the network are “high availability” today, but only in one&lt;br/&gt;&amp;gt;     direction (I.e. they aren’t regularly spliced/rebalanced and are regularly unbalanced). A node&lt;br/&gt;&amp;gt;     strongly preferring a high payment success rate *should* prefer such a channel, but in your&lt;br/&gt;&amp;gt;     scheme would not.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This shouldn&amp;#39;t be a problem, because the HA signaling is also directional. Each end can decide &lt;br/&gt;&amp;gt; independently on whether to add the flag for a particular channel.&lt;br/&gt;&lt;br/&gt;But how do you decide to set it without a credit relationship? Do I measure my channel and set the &lt;br/&gt;bit because the channel is &amp;#34;usually&amp;#34; (at what threshold?) saturating in the inbound direction? What &lt;br/&gt;happens if this changes for an hour and I get unlucky? Did I just screw myself?&lt;br/&gt;&lt;br/&gt;&amp;gt;     This ignores the myriad of “at what threshold do you signal HA” issues, which likely make such a&lt;br/&gt;&amp;gt;     signal DOA, anyway.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think this is a product of sender preference for HA channels and the severity of the penalty if an &lt;br/&gt;&amp;gt; HA channel fails. Given this, routing nodes will need to decide whether they can offer a service &lt;br/&gt;&amp;gt; level that increases their routing revenue overall if they would signal HA. It is indeed dynamic, &lt;br/&gt;&amp;gt; but I think the market is able to work it out.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m afraid this is going to immediately fall into a cargo cult of &amp;#34;set the bit&amp;#34; vs &amp;#34;don&amp;#39;t set the &lt;br/&gt;bit&amp;#34; and we&amp;#39;ll never get useful data out of it. But you may be right.&lt;br/&gt;&lt;br/&gt;&amp;gt;     Finally, I’m very dismayed at this direction in thinking on how ln should work - nodes should be&lt;br/&gt;&amp;gt;     measuring the network and routing over paths that it thinks are reliable for what it wants,&lt;br/&gt;&amp;gt;     *robustly over an unreliable network*. We should absolutely not be expecting the lightning&lt;br/&gt;&amp;gt;     network to be built out of high reliability nodes, that creates strong centralization pressure.&lt;br/&gt;&amp;gt;     To truly meet a “high availability” threshold, realistically, you’d need to be able to JIT 0conf&lt;br/&gt;&amp;gt;     splice-in, which would drive lightning to actually being a credit network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Different people can have different opinions about how ln should work, that is fine. I see a &lt;br/&gt;&amp;gt; trade-off between the reliability of the network and the barrier of entry, and I don&amp;#39;t think the &lt;br/&gt;&amp;gt; optimum is on one of the ends of the scale.&lt;br/&gt;&lt;br/&gt;My point wasn&amp;#39;t that lightning should be unreliable, but rather a reliable network build on &lt;br/&gt;unreliable hops. I&amp;#39;m very confident we can accomplish that without falling back to forcing nodes to &lt;br/&gt;establish credit to meet &amp;#34;reliability requirements&amp;#34;.&lt;br/&gt;&lt;br/&gt;&amp;gt;     With reasonable volume, lightning today is very reliable and relatively fast, with few retries&lt;br/&gt;&amp;gt;     required. I don’t think we need to change anything to fix it. :)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; How can you be sure about this? This isn&amp;#39;t publicly visible data.&lt;br/&gt;&lt;br/&gt;Sure it is! &lt;a href=&#34;https://river.com/learn/files/river-lightning-report.pdf&#34;&gt;https://river.com/learn/files/river-lightning-report.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m also quite confident we can do substantially better than this.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:12:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspwxzh06yqxdyz3pdma8qej2z3ezuuwj3pf9ujyq3wsd55nx97ejqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56spadj</id>
    
      <title type="html">📅 Original date posted:2023-02-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspwxzh06yqxdyz3pdma8qej2z3ezuuwj3pf9ujyq3wsd55nx97ejqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56spadj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgkmty37rspachw0cvmxe3nfyuve6l69c0c9wwluwhqm2qsm8y20gnga4ag&#39;&gt;nevent1q…a4ag&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-14&lt;br/&gt;🗒️ Summary of this message: The Lightning Network faces a challenge in creating a reputation system due to the rarity of repeat interactions, but a solution could be for wallet vendors to provide live network views.&lt;br/&gt;📝 Original message:&lt;br/&gt;On 2/13/23 7:05 PM, ZmnSCPxj wrote:&lt;br/&gt;&amp;gt; Good morning all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; First of all let&amp;#39;s see what types of reputation system exist (and yes,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; this is my very informal categorization):&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - First hand experience&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - Inferred experience&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - Hearsay&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The first two are likely the setup we all are comfortable with: we ourselves&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; experienced something, and make some decisions based on that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; experience. This is probably what we&amp;#39;re all doing at the moment: we&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; attempt a payment, it fails, we back off for a bit from that channel&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; being used again. This requires either being able to witness the issue&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; directly (local peer) or infer from unforgeable error messages (the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; failing node returns an error, and it can&amp;#39;t point the finger at someone&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; else). Notice that this also includes some transitive constructions,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; such as the backpressure mechanism we were discussing for ariard&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; credentials proposal.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Ideally we&amp;#39;d only rely on the first two to make decisions, but here&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; exactly the issue we ran into with Bittorrent: repeat interactions are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; too rare. In addition, our local knowledge gets out of date the longer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; we wait, and a previously failing channel may now be good again, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; vice-versa. For us to have sufficient knowledge to make good decisions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; we need to repeatedly interact with the same nodes in the network, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; since end-users will be very unlikely to do that, we might end up in a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; situation were we instinctively fall back to the hearsay method, either&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; by sharing our local reputation with peers and then somehow combine that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; with our own view. To the best of my knowledge such a system has never&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; been built successfully, and all attempts have ended in a system that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; was either way too simple or is gameable by rational players.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In lightning we have a trivial solution to this - your wallet vendor/LSP is already extracting a fee&lt;br/&gt;&amp;gt;&amp;gt; from you for every HTLC routed through it, it has you captive and can set the fee (largely)&lt;br/&gt;&amp;gt;&amp;gt; arbitrarily (up to you paying on-chain fees to switch LSPs). They can happily tell you their view of&lt;br/&gt;&amp;gt;&amp;gt; the network ~live and you should generally accept it. Its by no means perfect, and there&amp;#39;s plenty of&lt;br/&gt;&amp;gt;&amp;gt; games they could play on, eg, your privacy, but its pretty damned good.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If we care a ton about the risks here, we could have a few altruistic nodes that release similar&lt;br/&gt;&amp;gt;&amp;gt; info and users can median-filter the data in one way or another to reduce risk.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I just do not buy that this is a difficult problem for the &amp;#34;end user&amp;#34; part of the network. For&lt;br/&gt;&amp;gt;&amp;gt; larger nodes its (obviously, and trivially) not a problem either, which leaves the &amp;#34;middle nodes&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; stranded without good data but without an LSP they want to use for data. I believe that isn&amp;#39;t a&lt;br/&gt;&amp;gt;&amp;gt; large enough cohort to change the whole network around for, and them asking a few altruistic (let&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; say, developer?) nodes for scoring data seems more than sufficient.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; But this is all ultimately hearsay.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; LSPs can be bought out, and developers can go rogue.&lt;br/&gt;&amp;gt; Neither should be trusted if at all possible.&lt;br/&gt;&lt;br/&gt;You&amp;#39;re missing the point - if your LSP wants to &amp;#34;go rogue&amp;#34; here, at worst they can charge you more &lt;br/&gt;fees. They could also do this by...charging you more fees. I&amp;#39;m not really sure what your concern is.&lt;br/&gt;&lt;br/&gt;&amp;gt; Which is why I think forwardable peerswaps fixes this: it *creates* paths that allow payment routing, without requiring pervasive monitoring (which is horrible because eventually the network will be large enough that you will never encounter the same node twice if you&amp;#39;re a plebeian, and if you&amp;#39;re an aristocrat, you have every incentive to lie to the plebeians to solidify your power) of the network.&lt;br/&gt;&lt;br/&gt;No, this is much, much worse for the network. In order to do this &amp;#34;live&amp;#34; (i.e. without failing a &lt;br/&gt;payment) you have to establish trust relationships across the network (i.e. make giving your peers &lt;br/&gt;credit a requirement to be considered a &amp;#34;robust node&amp;#34; and, thus, receive fee revenue).&lt;br/&gt;&lt;br/&gt;Doing splicing/peerswap as a better way to rebalance is, of course, awesome, but it doesn&amp;#39;t solve &lt;br/&gt;the issue of &amp;#34;what do I do if I&amp;#39;m just too low on capacity *right now* to clear this HTLC&amp;#34;.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:12:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrdnk4pvpjtafafg7npr4uuajya8a6tyq2qsp0gvxtpcd7xzmqttqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55sggrt</id>
    
      <title type="html">📅 Original date posted:2023-02-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrdnk4pvpjtafafg7npr4uuajya8a6tyq2qsp0gvxtpcd7xzmqttqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55sggrt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd3ues2y8yue5wr45dg0k79px2534r6m7mnc7jkmnju4tuv2ue3pqnf3r6n&#39;&gt;nevent1q…3r6n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-13&lt;br/&gt;🗒️ Summary of this message: Reputation systems are difficult to get right and can be easily exploited. Lightning Network&amp;#39;s solution is to rely on wallet vendors/LSPs to provide live network views.&lt;br/&gt;📝 Original message:&lt;br/&gt;Thanks Christian,&lt;br/&gt;&lt;br/&gt;On 2/13/23 7:32 AM, Christian Decker wrote:&lt;br/&gt;&amp;gt; Hi Matt,&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; let me chime in here, since we seem to be slowly reinventing all the&lt;br/&gt;&amp;gt; research on reputation systems that is already out there. First of all&lt;br/&gt;&amp;gt; let me say that I am personally not a fan of reputation systems in&lt;br/&gt;&amp;gt; general, just to get my own biases out of the way, now on to the why :-)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reputation systems are great when they work, but they are horrible to&lt;br/&gt;&amp;gt; get right, and certainly the patchworky approach we see being proposed&lt;br/&gt;&amp;gt; today will end up with a system that is easy to exploit and hard to&lt;br/&gt;&amp;gt; understand. The last time I encountered this kind of scenario was during&lt;br/&gt;&amp;gt; my work on Bittorrent, where the often theorized tit-for-tat approach&lt;br/&gt;&amp;gt; failed spectacularly, and leeching (i.e., not contributing to other&lt;br/&gt;&amp;gt; people&amp;#39;s download) is rampant even today (BT only works because a few&lt;br/&gt;&amp;gt; don&amp;#39;t care about their upload bandwidth).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; First of all let&amp;#39;s see what types of reputation system exist (and yes,&lt;br/&gt;&amp;gt; this is my very informal categorization):&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   - First hand experience&lt;br/&gt;&amp;gt;   - Inferred experience&lt;br/&gt;&amp;gt;   - Hearsay&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The first two are likely the setup we all are comfortable with: we ourselves&lt;br/&gt;&amp;gt; experienced something, and make some decisions based on that&lt;br/&gt;&amp;gt; experience. This is probably what we&amp;#39;re all doing at the moment: we&lt;br/&gt;&amp;gt; attempt a payment, it fails, we back off for a bit from that channel&lt;br/&gt;&amp;gt; being used again. This requires either being able to witness the issue&lt;br/&gt;&amp;gt; directly (local peer) or infer from unforgeable error messages (the&lt;br/&gt;&amp;gt; failing node returns an error, and it can&amp;#39;t point the finger at someone&lt;br/&gt;&amp;gt; else). Notice that this also includes some transitive constructions,&lt;br/&gt;&amp;gt; such as the backpressure mechanism we were discussing for ariard&amp;#39;s&lt;br/&gt;&amp;gt; credentials proposal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Ideally we&amp;#39;d only rely on the first two to make decisions, but here&amp;#39;s&lt;br/&gt;&amp;gt; exactly the issue we ran into with Bittorrent: repeat interactions are&lt;br/&gt;&amp;gt; too rare. In addition, our local knowledge gets out of date the longer&lt;br/&gt;&amp;gt; we wait, and a previously failing channel may now be good again, and&lt;br/&gt;&amp;gt; vice-versa. For us to have sufficient knowledge to make good decisions&lt;br/&gt;&amp;gt; we need to repeatedly interact with the same nodes in the network, and&lt;br/&gt;&amp;gt; since end-users will be very unlikely to do that, we might end up in a&lt;br/&gt;&amp;gt; situation were we instinctively fall back to the hearsay method, either&lt;br/&gt;&amp;gt; by sharing our local reputation with peers and then somehow combine that&lt;br/&gt;&amp;gt; with our own view. To the best of my knowledge such a system has never&lt;br/&gt;&amp;gt; been built successfully, and all attempts have ended in a system that&lt;br/&gt;&amp;gt; was either way too simple or is gameable by rational players.&lt;br/&gt;&lt;br/&gt;In lightning we have a trivial solution to this - your wallet vendor/LSP is already extracting a fee &lt;br/&gt;from you for every HTLC routed through it, it has you captive and can set the fee (largely) &lt;br/&gt;arbitrarily (up to you paying on-chain fees to switch LSPs). They can happily tell you their view of &lt;br/&gt;the network ~live and you should generally accept it. Its by no means perfect, and there&amp;#39;s plenty of &lt;br/&gt;games they could play on, eg, your privacy, but its pretty damned good.&lt;br/&gt;&lt;br/&gt;If we care a ton about the risks here, we could have a few altruistic nodes that release similar &lt;br/&gt;info and users can median-filter the data in one way or another to reduce risk.&lt;br/&gt;&lt;br/&gt;I just do not buy that this is a difficult problem for the &amp;#34;end user&amp;#34; part of the network. For &lt;br/&gt;larger nodes its (obviously, and trivially) not a problem either, which leaves the &amp;#34;middle nodes&amp;#34; &lt;br/&gt;stranded without good data but without an LSP they want to use for data. I believe that isn&amp;#39;t a &lt;br/&gt;large enough cohort to change the whole network around for, and them asking a few altruistic (let&amp;#39;s &lt;br/&gt;say, developer?) nodes for scoring data seems more than sufficient.&lt;br/&gt;&lt;br/&gt;&amp;gt; I also object to the wording of penalizing nodes that haven&amp;#39;t been as&lt;br/&gt;&amp;gt; reliable in the past. It&amp;#39;s not penalizing them if, based on our local&lt;br/&gt;&amp;gt; information, we decide to route over other nodes for a bit. Our goal is&lt;br/&gt;&amp;gt; optimize the payment process, chosing the best possible routes, not&lt;br/&gt;&amp;gt; making a judgement on the honesty or reliability of a node. When talking&lt;br/&gt;&amp;gt; about penalizing we see node operators starting to play stupid games to&lt;br/&gt;&amp;gt; avoid that perceived penalty, when in reality they should do their best&lt;br/&gt;&amp;gt; to route as many payments successfully as possible (the negative fees&lt;br/&gt;&amp;gt; for direct peers &amp;#34;exhausting&amp;#34; a balanced flow is one such example of&lt;br/&gt;&amp;gt; premature optimization in that direction imho).&lt;br/&gt;&lt;br/&gt;Yes! Very much yes! I hate this line of thinking.&lt;br/&gt;&lt;br/&gt;&amp;gt; So I guess what I&amp;#39;m saying is that we need to get away from this&lt;br/&gt;&amp;gt; patchwork mode of building the protocol, and have a much clearer model&lt;br/&gt;&amp;gt; for a) what we want to achieve, b) how much untrustworthy information we&lt;br/&gt;&amp;gt; want to rely on, and c) how we protect (and possibly prove security)&lt;br/&gt;&amp;gt; against manipulation by rational players. For the last question we at&lt;br/&gt;&amp;gt; least have one nice feature (for now), namely that the identities are&lt;br/&gt;&amp;gt; semi-permanent, and so white-washing attacks at least are not free.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And after all this rambling, let&amp;#39;s get back to the topic at hand: I&lt;br/&gt;&amp;gt; don&amp;#39;t think enshrining the differences of availability in the protocol,&lt;br/&gt;&amp;gt; thus creating two classes of nodes, is a desirable&lt;br/&gt;&amp;gt; feature. Communicating up-front that I intend to be reliable does&lt;br/&gt;&amp;gt; nothing, and penalizing after the fact isn&amp;#39;t worth much due to the&lt;br/&gt;&amp;gt; repeat interactions issue. It&amp;#39;d be even worse if now we had to rely on a&lt;br/&gt;&amp;gt; third party to aggregate and track the reliability, in order to get&lt;br/&gt;&amp;gt; enough repeat interactions to build a good model of their liquidity,&lt;br/&gt;&amp;gt; since we&amp;#39;re now back in the hearsay world, and the third party can feed&lt;br/&gt;&amp;gt; us wrong information to maximize their profits.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; Christian&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I’m not sure I agree that lightning is “capital efficient” (or even close to it), but more generally I don’t see why this needs a signal.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If nodes start aggressively preferring routes through nodes that reliably route payments (which I believe lnd already does, in effect, to some large extent), they should do so by measurement, not signaling.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In practice, many channels on the network are “high availability” today, but only in one direction (I.e. they aren’t regularly spliced/rebalanced and are regularly unbalanced). A node strongly preferring a high payment success rate *should* prefer such a channel, but in your scheme would not.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This ignores the myriad of “at what threshold do you signal HA” issues, which likely make such a signal DOA, anyway.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Finally, I’m very dismayed at this direction in thinking on how ln should work - nodes should be measuring the network and routing over paths that it thinks are reliable for what it wants, *robustly over an unreliable network*. We should absolutely not be expecting the lightning network to be built out of high reliability nodes, that creates strong centralization pressure. To truly meet a “high availability” threshold, realistically, you’d need to be able to JIT 0conf splice-in, which would drive lightning to actually being a credit network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With reasonable volume, lightning today is very reliable and relatively fast, with few retries required. I don’t think we need to change anything to fix it. :)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Feb 13, 2023, at 06:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&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; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the lightning network will become very strict about node performance. That they will require a routing node to operate flawlessly or else apply a hefty penalty such as completely avoiding the node for an extended period of time - multiple weeks. The consequence of this is that routing nodes would need to manage their liquidity meticulously because every failure potentially has a large impact on future routing revenue.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think movement in this direction is important to guarantee competitiveness with centralised payment systems and their (at least theoretical) ability to process a payment in the blink of an eye. A lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A common argument against strict penalisation is that it would lead to less efficient use of capital. Routing nodes would need to maintain pools of liquidity to guarantee successes all the time. My opinion on this is that lightning is already enormously capital efficient at scale and that it is worth sacrificing a slight part of that efficiency to also achieve the lowest possible latency.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict penalisation is good, it may still not be ideal to flip the switch from one day to the other. Routing nodes may not offer the required level of service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that routing nodes are given time to adapt to the new standards. This does require everyone to move along and leaves no space for cheap routing nodes with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Therefore I am proposing another way to go about it: extend the `channel_update` field `channel_flags` with a new bit that the sender can use to signal `highly_available`.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could be to prefer `highly_available` channels during pathfinding. But if the routing node then returns a failure, a much stronger than normal penalty will be applied. For routing nodes this creates an opportunity to attract more traffic by marking some channels as `highly_available`, but it also comes with the responsibility to deliver.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the channel capacity. It might make sense for senders to only assume high availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update` is to signal availability implicitly through routing fees. So the more expensive a channel is, the stronger the penalty that is applied on failure will be. It seems less ideal though, because it could disincentivize cheap but reliable channels on high traffic links.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The effort required to implement some form of a `highly_available` flag seem limited and it may help to get payment success rates up. Interested to hear your thoughts.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:12:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs875k87wauy78vaq84fc4384mghrlwx5j08q2p74f0jyu4auz6e7gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55tc7q5</id>
    
      <title type="html">📅 Original date posted:2023-02-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs875k87wauy78vaq84fc4384mghrlwx5j08q2p74f0jyu4auz6e7gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55tc7q5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0j3mw22z594qenk99z8xg0jn50dhknu6gnp6g9yjd2ywdsl5v87c2y58kk&#39;&gt;nevent1q…58kk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-13&lt;br/&gt;🗒️ Summary of this message: Matt argues against the idea of signaling for high availability (HA) nodes on the Lightning Network, stating that nodes should measure the network and route payments reliably over an unreliable network. He believes that relying on HA nodes creates centralization pressure and that lightning is already efficient at scale.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;I’m not sure I agree that lightning is “capital efficient” (or even close to it), but more generally I don’t see why this needs a signal.&lt;br/&gt;&lt;br/&gt;If nodes start aggressively preferring routes through nodes that reliably route payments (which I believe lnd already does, in effect, to some large extent), they should do so by measurement, not signaling.&lt;br/&gt;&lt;br/&gt;In practice, many channels on the network are “high availability” today, but only in one direction (I.e. they aren’t regularly spliced/rebalanced and are regularly unbalanced). A node strongly preferring a high payment success rate *should* prefer such a channel, but in your scheme would not.&lt;br/&gt;&lt;br/&gt;This ignores the myriad of “at what threshold do you signal HA” issues, which likely make such a signal DOA, anyway.&lt;br/&gt;&lt;br/&gt;Finally, I’m very dismayed at this direction in thinking on how ln should work - nodes should be measuring the network and routing over paths that it thinks are reliable for what it wants, *robustly over an unreliable network*. We should absolutely not be expecting the lightning network to be built out of high reliability nodes, that creates strong centralization pressure. To truly meet a “high availability” threshold, realistically, you’d need to be able to JIT 0conf splice-in, which would drive lightning to actually being a credit network.&lt;br/&gt;&lt;br/&gt;With reasonable volume, lightning today is very reliable and relatively fast, with few retries required. I don’t think we need to change anything to fix it. :)&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;&amp;gt; On Feb 13, 2023, at 06:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the lightning network will become very strict about node performance. That they will require a routing node to operate flawlessly or else apply a hefty penalty such as completely avoiding the node for an extended period of time - multiple weeks. The consequence of this is that routing nodes would need to manage their liquidity meticulously because every failure potentially has a large impact on future routing revenue.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think movement in this direction is important to guarantee competitiveness with centralised payment systems and their (at least theoretical) ability to process a payment in the blink of an eye. A lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A common argument against strict penalisation is that it would lead to less efficient use of capital. Routing nodes would need to maintain pools of liquidity to guarantee successes all the time. My opinion on this is that lightning is already enormously capital efficient at scale and that it is worth sacrificing a slight part of that efficiency to also achieve the lowest possible latency.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict penalisation is good, it may still not be ideal to flip the switch from one day to the other. Routing nodes may not offer the required level of service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that routing nodes are given time to adapt to the new standards. This does require everyone to move along and leaves no space for cheap routing nodes with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Therefore I am proposing another way to go about it: extend the `channel_update` field `channel_flags` with a new bit that the sender can use to signal `highly_available`. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could be to prefer `highly_available` channels during pathfinding. But if the routing node then returns a failure, a much stronger than normal penalty will be applied. For routing nodes this creates an opportunity to attract more traffic by marking some channels as `highly_available`, but it also comes with the responsibility to deliver.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the channel capacity. It might make sense for senders to only assume high availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update` is to signal availability implicitly through routing fees. So the more expensive a channel is, the stronger the penalty that is applied on failure will be. It seems less ideal though, because it could disincentivize cheap but reliable channels on high traffic links.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The effort required to implement some form of a `highly_available` flag seem limited and it may help to get payment success rates up. Interested to hear your thoughts.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:12:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstq835kpadrnuv6lxnuheedkk0c96mcuh22lt3nd4ggd6wx7er9aqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5naj4tn</id>
    
      <title type="html">📅 Original date posted:2023-06-04 📝 Original message: It ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstq835kpadrnuv6lxnuheedkk0c96mcuh22lt3nd4ggd6wx7er9aqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5naj4tn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8u6arkn2xf6klz6flqwyc6pcwztv0evafcu9n5cdflq022e8k3kcckdhxa&#39;&gt;nevent1q…dhxa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-04&lt;br/&gt;📝 Original message:&lt;br/&gt;It seems moderation needs to go back on to tamp down spam for a minute. See y’all Monday.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:08:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdnal4xfaqffjfhl3kzac9g3x6nwhpumue5rq2vagg8dv9sj6lzkczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5adas8s</id>
    
      <title type="html">📅 Original date posted:2023-02-13 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdnal4xfaqffjfhl3kzac9g3x6nwhpumue5rq2vagg8dv9sj6lzkczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5adas8s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswzrq9kqewdz3d27yyve4d9hty8prnx2rexey9enp9sm94hue4gfcd49vzf&#39;&gt;nevent1q…9vzf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-13&lt;br/&gt;📝 Original message:&lt;br/&gt;Thanks Christian,&lt;br/&gt;&lt;br/&gt;On 2/13/23 7:32 AM, Christian Decker wrote:&lt;br/&gt;&amp;gt; Hi Matt,&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; let me chime in here, since we seem to be slowly reinventing all the&lt;br/&gt;&amp;gt; research on reputation systems that is already out there. First of all&lt;br/&gt;&amp;gt; let me say that I am personally not a fan of reputation systems in&lt;br/&gt;&amp;gt; general, just to get my own biases out of the way, now on to the why :-)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reputation systems are great when they work, but they are horrible to&lt;br/&gt;&amp;gt; get right, and certainly the patchworky approach we see being proposed&lt;br/&gt;&amp;gt; today will end up with a system that is easy to exploit and hard to&lt;br/&gt;&amp;gt; understand. The last time I encountered this kind of scenario was during&lt;br/&gt;&amp;gt; my work on Bittorrent, where the often theorized tit-for-tat approach&lt;br/&gt;&amp;gt; failed spectacularly, and leeching (i.e., not contributing to other&lt;br/&gt;&amp;gt; people&amp;#39;s download) is rampant even today (BT only works because a few&lt;br/&gt;&amp;gt; don&amp;#39;t care about their upload bandwidth).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; First of all let&amp;#39;s see what types of reputation system exist (and yes,&lt;br/&gt;&amp;gt; this is my very informal categorization):&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   - First hand experience&lt;br/&gt;&amp;gt;   - Inferred experience&lt;br/&gt;&amp;gt;   - Hearsay&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The first two are likely the setup we all are comfortable with: we ourselves&lt;br/&gt;&amp;gt; experienced something, and make some decisions based on that&lt;br/&gt;&amp;gt; experience. This is probably what we&amp;#39;re all doing at the moment: we&lt;br/&gt;&amp;gt; attempt a payment, it fails, we back off for a bit from that channel&lt;br/&gt;&amp;gt; being used again. This requires either being able to witness the issue&lt;br/&gt;&amp;gt; directly (local peer) or infer from unforgeable error messages (the&lt;br/&gt;&amp;gt; failing node returns an error, and it can&amp;#39;t point the finger at someone&lt;br/&gt;&amp;gt; else). Notice that this also includes some transitive constructions,&lt;br/&gt;&amp;gt; such as the backpressure mechanism we were discussing for ariard&amp;#39;s&lt;br/&gt;&amp;gt; credentials proposal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Ideally we&amp;#39;d only rely on the first two to make decisions, but here&amp;#39;s&lt;br/&gt;&amp;gt; exactly the issue we ran into with Bittorrent: repeat interactions are&lt;br/&gt;&amp;gt; too rare. In addition, our local knowledge gets out of date the longer&lt;br/&gt;&amp;gt; we wait, and a previously failing channel may now be good again, and&lt;br/&gt;&amp;gt; vice-versa. For us to have sufficient knowledge to make good decisions&lt;br/&gt;&amp;gt; we need to repeatedly interact with the same nodes in the network, and&lt;br/&gt;&amp;gt; since end-users will be very unlikely to do that, we might end up in a&lt;br/&gt;&amp;gt; situation were we instinctively fall back to the hearsay method, either&lt;br/&gt;&amp;gt; by sharing our local reputation with peers and then somehow combine that&lt;br/&gt;&amp;gt; with our own view. To the best of my knowledge such a system has never&lt;br/&gt;&amp;gt; been built successfully, and all attempts have ended in a system that&lt;br/&gt;&amp;gt; was either way too simple or is gameable by rational players.&lt;br/&gt;&lt;br/&gt;In lightning we have a trivial solution to this - your wallet vendor/LSP is already extracting a fee &lt;br/&gt;from you for every HTLC routed through it, it has you captive and can set the fee (largely) &lt;br/&gt;arbitrarily (up to you paying on-chain fees to switch LSPs). They can happily tell you their view of &lt;br/&gt;the network ~live and you should generally accept it. Its by no means perfect, and there&amp;#39;s plenty of &lt;br/&gt;games they could play on, eg, your privacy, but its pretty damned good.&lt;br/&gt;&lt;br/&gt;If we care a ton about the risks here, we could have a few altruistic nodes that release similar &lt;br/&gt;info and users can median-filter the data in one way or another to reduce risk.&lt;br/&gt;&lt;br/&gt;I just do not buy that this is a difficult problem for the &amp;#34;end user&amp;#34; part of the network. For &lt;br/&gt;larger nodes its (obviously, and trivially) not a problem either, which leaves the &amp;#34;middle nodes&amp;#34; &lt;br/&gt;stranded without good data but without an LSP they want to use for data. I believe that isn&amp;#39;t a &lt;br/&gt;large enough cohort to change the whole network around for, and them asking a few altruistic (let&amp;#39;s &lt;br/&gt;say, developer?) nodes for scoring data seems more than sufficient.&lt;br/&gt;&lt;br/&gt;&amp;gt; I also object to the wording of penalizing nodes that haven&amp;#39;t been as&lt;br/&gt;&amp;gt; reliable in the past. It&amp;#39;s not penalizing them if, based on our local&lt;br/&gt;&amp;gt; information, we decide to route over other nodes for a bit. Our goal is&lt;br/&gt;&amp;gt; optimize the payment process, chosing the best possible routes, not&lt;br/&gt;&amp;gt; making a judgement on the honesty or reliability of a node. When talking&lt;br/&gt;&amp;gt; about penalizing we see node operators starting to play stupid games to&lt;br/&gt;&amp;gt; avoid that perceived penalty, when in reality they should do their best&lt;br/&gt;&amp;gt; to route as many payments successfully as possible (the negative fees&lt;br/&gt;&amp;gt; for direct peers &amp;#34;exhausting&amp;#34; a balanced flow is one such example of&lt;br/&gt;&amp;gt; premature optimization in that direction imho).&lt;br/&gt;&lt;br/&gt;Yes! Very much yes! I hate this line of thinking.&lt;br/&gt;&lt;br/&gt;&amp;gt; So I guess what I&amp;#39;m saying is that we need to get away from this&lt;br/&gt;&amp;gt; patchwork mode of building the protocol, and have a much clearer model&lt;br/&gt;&amp;gt; for a) what we want to achieve, b) how much untrustworthy information we&lt;br/&gt;&amp;gt; want to rely on, and c) how we protect (and possibly prove security)&lt;br/&gt;&amp;gt; against manipulation by rational players. For the last question we at&lt;br/&gt;&amp;gt; least have one nice feature (for now), namely that the identities are&lt;br/&gt;&amp;gt; semi-permanent, and so white-washing attacks at least are not free.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And after all this rambling, let&amp;#39;s get back to the topic at hand: I&lt;br/&gt;&amp;gt; don&amp;#39;t think enshrining the differences of availability in the protocol,&lt;br/&gt;&amp;gt; thus creating two classes of nodes, is a desirable&lt;br/&gt;&amp;gt; feature. Communicating up-front that I intend to be reliable does&lt;br/&gt;&amp;gt; nothing, and penalizing after the fact isn&amp;#39;t worth much due to the&lt;br/&gt;&amp;gt; repeat interactions issue. It&amp;#39;d be even worse if now we had to rely on a&lt;br/&gt;&amp;gt; third party to aggregate and track the reliability, in order to get&lt;br/&gt;&amp;gt; enough repeat interactions to build a good model of their liquidity,&lt;br/&gt;&amp;gt; since we&amp;#39;re now back in the hearsay world, and the third party can feed&lt;br/&gt;&amp;gt; us wrong information to maximize their profits.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; Christian&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I’m not sure I agree that lightning is “capital efficient” (or even close to it), but more generally I don’t see why this needs a signal.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If nodes start aggressively preferring routes through nodes that reliably route payments (which I believe lnd already does, in effect, to some large extent), they should do so by measurement, not signaling.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In practice, many channels on the network are “high availability” today, but only in one direction (I.e. they aren’t regularly spliced/rebalanced and are regularly unbalanced). A node strongly preferring a high payment success rate *should* prefer such a channel, but in your scheme would not.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This ignores the myriad of “at what threshold do you signal HA” issues, which likely make such a signal DOA, anyway.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Finally, I’m very dismayed at this direction in thinking on how ln should work - nodes should be measuring the network and routing over paths that it thinks are reliable for what it wants, *robustly over an unreliable network*. We should absolutely not be expecting the lightning network to be built out of high reliability nodes, that creates strong centralization pressure. To truly meet a “high availability” threshold, realistically, you’d need to be able to JIT 0conf splice-in, which would drive lightning to actually being a credit network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With reasonable volume, lightning today is very reliable and relatively fast, with few retries required. I don’t think we need to change anything to fix it. :)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Feb 13, 2023, at 06:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&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; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the lightning network will become very strict about node performance. That they will require a routing node to operate flawlessly or else apply a hefty penalty such as completely avoiding the node for an extended period of time - multiple weeks. The consequence of this is that routing nodes would need to manage their liquidity meticulously because every failure potentially has a large impact on future routing revenue.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think movement in this direction is important to guarantee competitiveness with centralised payment systems and their (at least theoretical) ability to process a payment in the blink of an eye. A lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A common argument against strict penalisation is that it would lead to less efficient use of capital. Routing nodes would need to maintain pools of liquidity to guarantee successes all the time. My opinion on this is that lightning is already enormously capital efficient at scale and that it is worth sacrificing a slight part of that efficiency to also achieve the lowest possible latency.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict penalisation is good, it may still not be ideal to flip the switch from one day to the other. Routing nodes may not offer the required level of service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that routing nodes are given time to adapt to the new standards. This does require everyone to move along and leaves no space for cheap routing nodes with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Therefore I am proposing another way to go about it: extend the `channel_update` field `channel_flags` with a new bit that the sender can use to signal `highly_available`.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could be to prefer `highly_available` channels during pathfinding. But if the routing node then returns a failure, a much stronger than normal penalty will be applied. For routing nodes this creates an opportunity to attract more traffic by marking some channels as `highly_available`, but it also comes with the responsibility to deliver.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the channel capacity. It might make sense for senders to only assume high availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update` is to signal availability implicitly through routing fees. So the more expensive a channel is, the stronger the penalty that is applied on failure will be. It seems less ideal though, because it could disincentivize cheap but reliable channels on high traffic links.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The effort required to implement some form of a `highly_available` flag seem limited and it may help to get payment success rates up. Interested to hear your thoughts.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:08:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd8a8k9a3lgrg5zc2ha6cwrk9sxgm3kxdccvfznzh2wal77dq3k6qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58jhh52</id>
    
      <title type="html">📅 Original date posted:2022-11-01 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd8a8k9a3lgrg5zc2ha6cwrk9sxgm3kxdccvfznzh2wal77dq3k6qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58jhh52" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz9pt8qjlkp2nzjrqnw6d7qwtawsmkl6wa6cxjrtlt48hh7h2n8ss2y26xp&#39;&gt;nevent1q…26xp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Right, I kinda assume let&amp;#39;s figure that out when we get PTLCs? There&amp;#39;s also the channel-upgrade work &lt;br/&gt;that has been around for a while. Once we do that we can probably define a new type for PTLCs in &lt;br/&gt;&amp;#34;normal&amp;#34; channels.&lt;br/&gt;&lt;br/&gt;Adding two types adds a bunch of complexity right now, and it would be effectively dead code that &lt;br/&gt;we&amp;#39;re not likely to get right unless we have an immediate use/test for it. It is a good point, &lt;br/&gt;though, and something implementors should likely keep in mind when writing code.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 10/28/22 12:35 AM, Johan Torås Halseth wrote:&lt;br/&gt;&amp;gt; Hi, Matt.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; You&amp;#39;re correct, I made the suggestion mainly because it would open up for PTLCs (or other future &lt;br/&gt;&amp;gt; features) in today&amp;#39;s channels.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Having the existing network close and reopen new channels would really slow the adoption of new &lt;br/&gt;&amp;gt; channel features I reckon.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And I don&amp;#39;t think it adds much complexity compared to the adapter approach.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Johan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Oct 27, 2022 at 4:54 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &lt;br/&gt;&amp;gt; &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I’m not sure I understand this - is there much reason to want taproot commitment outputs? I mean&lt;br/&gt;&amp;gt;     they’re cool, and witnesses are a bit smaller, which is nice I guess, but they’re not providing&lt;br/&gt;&amp;gt;     materially new features, AFAIU. Taproot funding, on the other hand, provides a Bitcoin-wide&lt;br/&gt;&amp;gt;     privacy improvement as well the potential future ability of channel participants to use multisig&lt;br/&gt;&amp;gt;     for their own channel funds transparently.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Sure, if we’re doing taproot funding outputs we should probably just do it for the commitment&lt;br/&gt;&amp;gt;     outputs as well, because why not (and it’s a prereq for PTLCs). But trying to split them up&lt;br/&gt;&amp;gt;     seems like added complexity “just because”? I suppose it tees us up for eventual PTLC support in&lt;br/&gt;&amp;gt;     todays channels, but we can also consider that separately when we get to that point, IMO.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Am I missing some important utility of taproot commitment transaction outputs?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     On Oct 27, 2022, at 02:17, Johan Torås Halseth &amp;lt;johanth at gmail.com &amp;lt;mailto:johanth at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     ﻿&lt;br/&gt;&amp;gt;&amp;gt;     Hi, Laolu.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     I think it could be worth considering dividing the taprootyness of a channel into two:&lt;br/&gt;&amp;gt;&amp;gt;     1) taproot funding output&lt;br/&gt;&amp;gt;&amp;gt;     2) taproot commitment outputs&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     That way we could upgrade existing channels only on the commitment level, not needing to close&lt;br/&gt;&amp;gt;&amp;gt;     or re-anchor the channels using an adapter in order to get many of the taproot benefits.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     New channels would use taproot multisig (musig2) for the funding output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     This seems to be less disruptive to the existing network, and we could get features enabled by&lt;br/&gt;&amp;gt;&amp;gt;     taproot to larger parts of the network quicker. And to me this seems to carry less complexity&lt;br/&gt;&amp;gt;&amp;gt;     (and closing fees) than an adapter.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     One caveat is that this wouldn&amp;#39;t work (I think) for Eltoo channels, as the funding output&lt;br/&gt;&amp;gt;&amp;gt;     would not be plain multisig anymore.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     - Johan&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     On Sat, Mar 26, 2022 at 1:27 AM Antoine Riard &amp;lt;antoine.riard at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:antoine.riard at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Hi Laolu,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Thanks for the proposal, quick feedback.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; It *is* still the case that _ultimately_ the two transactions to close the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; old segwit v0 funding output, and re-open the channel with a new segwit v1&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; funding output are unavoidable. However this adapter commitment lets peers&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; _defer_ these two transactions until closing time.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         I think there is one downside coming with adapter commitment, which is the uncertainty of&lt;br/&gt;&amp;gt;&amp;gt;         the fee overhead at the closing time. Instead of closing your segwit v0 channel _now_ with&lt;br/&gt;&amp;gt;&amp;gt;         known fees, when your commitment is empty of time-sensitive HTLCs, you&amp;#39;re taking the risk&lt;br/&gt;&amp;gt;&amp;gt;         of closing during fees spikes, due a move triggered by your counterparty, when you might&lt;br/&gt;&amp;gt;&amp;gt;         have HTLCs at stake.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         It might be more economically rational for a LN node operator to pay the upgrade cost now&lt;br/&gt;&amp;gt;&amp;gt;         if they wish  to benefit from the taproot upgrade early, especially if long-term we expect&lt;br/&gt;&amp;gt;&amp;gt;         block fees to increase, or wait when there is a &amp;#34;normal&amp;#34; cooperative closing.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         So it&amp;#39;s unclear to me what the economic gain of adapter commitments ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In the remainder of this mail, I&amp;#39;ll describe an alternative&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; approach that would allow upgrading nearly all channel/commitment related&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; values (dust limit, max in flight, etc), which is inspired by the way the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Raft consensus protocol handles configuration/member changes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Long-term, I think we&amp;#39;ll likely need a consensus protocol anyway for multi-party&lt;br/&gt;&amp;gt;&amp;gt;         constructions (channel factories/payment pools). AFAIU this proposal doesn&amp;#39;t aim to roll&lt;br/&gt;&amp;gt;&amp;gt;         out a full-fledged consensus protocol *now* though it could be wise to ensure what we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt;         building slowly moves in this direction. Less critical code to maintain across bitcoin&lt;br/&gt;&amp;gt;&amp;gt;         codebases/toolchains.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; The role of the signature it to prevent &amp;#34;spoofing&amp;#34; by one of the parties&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; (authenticate the param change), and also it serves to convince a party that&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; they actually sent a prior commitment propose update during the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; retransmission phase.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         What&amp;#39;s the purpose of data origin authentication if we assume only two-parties running&lt;br/&gt;&amp;gt;&amp;gt;         over Noise_XK ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         I think it&amp;#39;s already a security property we have. Though if we think we&amp;#39;re going to reuse&lt;br/&gt;&amp;gt;&amp;gt;         these dynamic upgrades for N counterparties communicating through a coordinator, yes I&lt;br/&gt;&amp;gt;&amp;gt;         think it&amp;#39;s useful.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In the past, when ideas like this were brought up, some were concerned that&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; it wouldn&amp;#39;t really be possible to do this type of updates while existing&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; HTLCs were in flight (hence some of the ideas to clear out the commitment&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; beforehand).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         The dynamic upgrade might serve in an emergency context where we don&amp;#39;t have the leisury to&lt;br/&gt;&amp;gt;&amp;gt;         wait for the settlement of the pending HTLCs. The timing of those ones might be beyond the&lt;br/&gt;&amp;gt;&amp;gt;         coordination of link counterparties. Thus, we have to allow upgrade of non-empty&lt;br/&gt;&amp;gt;&amp;gt;         commitments (and if there are undesirable interferences between new commitment types and&lt;br/&gt;&amp;gt;&amp;gt;         HTLCs/PTLCs present, deal case-by-case).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Le jeu. 24 mars 2022 à 18:53, Olaoluwa Osuntokun &amp;lt;laolu32 at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;mailto:laolu32 at gmail.com&amp;gt;&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Hi y&amp;#39;all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Dynamic Commitments Retrospective&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Two years-ish ago I made a mailing list post on some ideas re dynamic&lt;br/&gt;&amp;gt;&amp;gt;             commitments [1], and how the concept can be used to allow us to upgrade&lt;br/&gt;&amp;gt;&amp;gt;             channel types on the fly, and also remove pesky hard coded limits like the&lt;br/&gt;&amp;gt;&amp;gt;             483 HTLC in-flight limit that&amp;#39;s present today. Back then my main target was&lt;br/&gt;&amp;gt;&amp;gt;             upgrading all the existing channels over to the anchor output commitment&lt;br/&gt;&amp;gt;&amp;gt;             variant, so the core internal routing network would be more resilient in a&lt;br/&gt;&amp;gt;&amp;gt;             persistent high fee environment (which hasn&amp;#39;t really happened over the past&lt;br/&gt;&amp;gt;&amp;gt;             2 years for various reasons tbh). Fast forward to today, and with taproot&lt;br/&gt;&amp;gt;&amp;gt;             now active on mainnet, and some initial design work/sketches for&lt;br/&gt;&amp;gt;&amp;gt;             taproot-native channels underway, I figure it would be good to bump this&lt;br/&gt;&amp;gt;&amp;gt;             concept as it gives us a way to upgrade all 80k&#43; public channels to taproot&lt;br/&gt;&amp;gt;&amp;gt;             without any on chain transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Updating Across Witness Versions w/ Adapter Commitments&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             In my original mail, I incorrectly concluded that the dynamic commitments&lt;br/&gt;&amp;gt;&amp;gt;             concept would only really work within the confines of a &amp;#34;static&amp;#34; multi-sig&lt;br/&gt;&amp;gt;&amp;gt;             output, meaning that it couldn&amp;#39;t be used to help channels upgrade to future&lt;br/&gt;&amp;gt;&amp;gt;             segwit witness versions.  Thankfully this reply [2] by ZmnSCPxj, outlined a&lt;br/&gt;&amp;gt;&amp;gt;             way to achieve this in practice. At a high level he proposes an &amp;#34;adaptor&lt;br/&gt;&amp;gt;&amp;gt;             commitment&amp;#34; (similar to the kickoff transaction in eltoo/duplex), which is&lt;br/&gt;&amp;gt;&amp;gt;             basically an upgrade transaction that spends one witness version type, and&lt;br/&gt;&amp;gt;&amp;gt;             produces an output with the next (upgraded) type. In the context of&lt;br/&gt;&amp;gt;&amp;gt;             converting from segwit v0 to v1 (taproot), two peers would collaboratively&lt;br/&gt;&amp;gt;&amp;gt;             create a new adapter commitment that spends the old v0 multi-sig output, and&lt;br/&gt;&amp;gt;&amp;gt;             produces a _new_ v1 multi-sig output. The new commitment transaction would&lt;br/&gt;&amp;gt;&amp;gt;             then be anchored using this new output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Here&amp;#39;s a rough sequence diagram of the before and after state to better&lt;br/&gt;&amp;gt;&amp;gt;             convey the concept:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;               * Before: fundingOutputV0 -&amp;gt; commitmentTransaction&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;               * After fundingOutputV0 -&amp;gt; fundingOutputV1 (the adapter) -&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                 commitmentTransaction&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             It *is* still the case that _ultimately_ the two transactions to close the&lt;br/&gt;&amp;gt;&amp;gt;             old segwit v0 funding output, and re-open the channel with a new segwit v1&lt;br/&gt;&amp;gt;&amp;gt;             funding output are unavoidable. However this adapter commitment lets peers&lt;br/&gt;&amp;gt;&amp;gt;             _defer_ these two transactions until closing time. When force closing two&lt;br/&gt;&amp;gt;&amp;gt;             transactions need to be confirmed before the commitment outputs can be&lt;br/&gt;&amp;gt;&amp;gt;             resolved. However, for co-op close, you can just spend the v0 output, and&lt;br/&gt;&amp;gt;&amp;gt;             deliver to the relevant P2TR outputs. The adapter commitment can leverage&lt;br/&gt;&amp;gt;&amp;gt;             sighash anyonecanpay to let both parties (assuming it&amp;#39;s symmetric) attach&lt;br/&gt;&amp;gt;&amp;gt;             additional inputs for fees (to avoid introducing the old update_fee related&lt;br/&gt;&amp;gt;&amp;gt;             static fee issues), or alternatively inherit the anchor output pattern at&lt;br/&gt;&amp;gt;&amp;gt;             this level.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Existing Dynamic Commitments Proposals&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Assuming this concept holds up, then we need an actual concrete protocol to&lt;br/&gt;&amp;gt;&amp;gt;             allow for dynamic commitment updates. Last year, Rusty made a spec PR&lt;br/&gt;&amp;gt;&amp;gt;             outlining a way to upgrade the commitment type (leveraging the new&lt;br/&gt;&amp;gt;&amp;gt;             commitment type feature bits) upon channel re-establish [3]. The proposal&lt;br/&gt;&amp;gt;&amp;gt;             relies on another message that both sides send (`stfu`) to clear the&lt;br/&gt;&amp;gt;&amp;gt;             commitment (similar to the shutdown semantics) before the switch over&lt;br/&gt;&amp;gt;&amp;gt;             happens. However as this is tied to the channel re-establish flow, it&lt;br/&gt;&amp;gt;&amp;gt;             doesn&amp;#39;t allow both sides to do things like only allow your peer to attach N&lt;br/&gt;&amp;gt;&amp;gt;             HTLCs to start with, slowing increasing their allotted slots and possibly&lt;br/&gt;&amp;gt;&amp;gt;             reducing them (TCP AIMD style).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## A Two-Phase Dynamic Commitment Update Protocol&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             IMO if we&amp;#39;re adding in a way to do commitment/channel upgrades, then it may&lt;br/&gt;&amp;gt;&amp;gt;             be worthwhile to go with a more generalized, but slightly more involved&lt;br/&gt;&amp;gt;&amp;gt;             route instead. In the remainder of this mail, I&amp;#39;ll describe an alternative&lt;br/&gt;&amp;gt;&amp;gt;             approach that would allow upgrading nearly all channel/commitment related&lt;br/&gt;&amp;gt;&amp;gt;             values (dust limit, max in flight, etc), which is inspired by the way the&lt;br/&gt;&amp;gt;&amp;gt;             Raft consensus protocol handles configuration/member changes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             For those that aren&amp;#39;t aware, Raft is a consensus protocol analogous to Paxos&lt;br/&gt;&amp;gt;&amp;gt;             (but isn&amp;#39;t byzantine fault tolerant out of the box) that was designed as a&lt;br/&gt;&amp;gt;&amp;gt;             more understandable alternative to Paxos for a pedagogical environment.&lt;br/&gt;&amp;gt;&amp;gt;             Typically the algorithm is run in the context of a fixed cluster with N&lt;br/&gt;&amp;gt;&amp;gt;             machines, but supports adding/removing machines from the cluster with a&lt;br/&gt;&amp;gt;&amp;gt;             configuration update protocol. At a high level the way this works is that a&lt;br/&gt;&amp;gt;&amp;gt;             new config is sent to the leader, with the leader synchronizing the config&lt;br/&gt;&amp;gt;&amp;gt;             change with the other members of the cluster. Once a majority threshold is&lt;br/&gt;&amp;gt;&amp;gt;             reached, the leader then commits the config change with the acknowledged&lt;br/&gt;&amp;gt;&amp;gt;             parties using the new config (basically a two phase commit). I&amp;#39;m skipping&lt;br/&gt;&amp;gt;&amp;gt;             over some edge cases here that can arise if the new nodes participate&lt;br/&gt;&amp;gt;&amp;gt;             consensus too early, which can cause a split majority leading to two leaders&lt;br/&gt;&amp;gt;&amp;gt;             being elected.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Applying this to the LN context is a bit simpler than a generalized&lt;br/&gt;&amp;gt;&amp;gt;             protocol, as we typically just have two parties involved. The initiator is&lt;br/&gt;&amp;gt;&amp;gt;             already naturally a &amp;#34;leader&amp;#34; in our context, as they&amp;#39;re the only ones that&lt;br/&gt;&amp;gt;&amp;gt;             can do things like trigger fee updates.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Message Structure&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             At a high level I propose we introduce two new messages, with the fields&lt;br/&gt;&amp;gt;&amp;gt;             looking something like this for `commitment_update_propose`:&lt;br/&gt;&amp;gt;&amp;gt;              * type: 0 (`channel_id`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`32*byte`:`chan_id`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 1 (`propose_sig`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`64*byte`:`sig`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 2 (`update_payload`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`tlv_payload`]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             and this `commitment_update_apply`:&lt;br/&gt;&amp;gt;&amp;gt;              * type: 0 (`channel_id`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`32*byte`:`chan_id`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 1 (`local_propose`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`commitment_update_propose`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 2 (`remote_propose`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`commitment_update_propose`]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Protocol Flow&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The core idea here is that either party can propose a commitment/channel&lt;br/&gt;&amp;gt;&amp;gt;             param update, but only the initiator can actually apply it. The&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` encodes the new set of updates, with a signature&lt;br/&gt;&amp;gt;&amp;gt;             covering the TLV blob for the new params (more on why that&amp;#39;s needed later).&lt;br/&gt;&amp;gt;&amp;gt;             The `commitment_update_apply` includes up to _two_&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` messages (one for the initiator and one for the&lt;br/&gt;&amp;gt;&amp;gt;             responder, as nested TLV messages). The `commitment_update_propose` message&lt;br/&gt;&amp;gt;&amp;gt;             would be treated like any other `update_*` message, in that it takes a new&lt;br/&gt;&amp;gt;&amp;gt;             commitment signature to properly commit/apply it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The normal flow takes the form of both sides sending a&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` message, with the initiator finally committing&lt;br/&gt;&amp;gt;&amp;gt;             both by sending a `commitment_update_apply` message. In the event that only&lt;br/&gt;&amp;gt;&amp;gt;             the responder wants to apply a param change/update, then the initiator can&lt;br/&gt;&amp;gt;&amp;gt;             reply immediately with a `commitment_update_apply` message that doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;             include a param change for their commitment (or they just echo the&lt;br/&gt;&amp;gt;&amp;gt;             parameters if they&amp;#39;re acceptable).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Handling Retransmissions&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The role of the signature it to prevent &amp;#34;spoofing&amp;#34; by one of the parties&lt;br/&gt;&amp;gt;&amp;gt;             (authenticate the param change), and also it serves to convince a party that&lt;br/&gt;&amp;gt;&amp;gt;             they actually sent a prior commitment propose update during the&lt;br/&gt;&amp;gt;&amp;gt;             retransmission phase. As the `commitment_update_propose` message would be&lt;br/&gt;&amp;gt;&amp;gt;             retransmitted like any other message, if the initiator attempts to commit&lt;br/&gt;&amp;gt;&amp;gt;             the update but the connection dies, they&amp;#39;ll retransmit it as normal along&lt;br/&gt;&amp;gt;&amp;gt;             with their latest signature.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Nested TLV Param Generality&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The messages as sketched out here just have an opaque nested TLV field which&lt;br/&gt;&amp;gt;&amp;gt;             makes it extensible to add in other things like tweaking the total number of&lt;br/&gt;&amp;gt;&amp;gt;             max HTLCs, the current dust values, min/max HTLCs, etc (all things that are&lt;br/&gt;&amp;gt;&amp;gt;             currently hard coded for the lifetime of the channel). An initial target&lt;br/&gt;&amp;gt;&amp;gt;             would likely just be a `chan_type` field, with future feature bits governing&lt;br/&gt;&amp;gt;&amp;gt;             _what_ type of commitment updates both parties understand in the future.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             In the past, when ideas like this were brought up, some were concerned that&lt;br/&gt;&amp;gt;&amp;gt;             it wouldn&amp;#39;t really be possible to do this type of updates while existing&lt;br/&gt;&amp;gt;&amp;gt;             HTLCs were in flight (hence some of the ideas to clear out the commitment&lt;br/&gt;&amp;gt;&amp;gt;             beforehand). I don&amp;#39;t see a reason why this fundamentally _shouldn&amp;#39;t_ be&lt;br/&gt;&amp;gt;&amp;gt;             allowed, as from the point of view of the channel update state machine, all&lt;br/&gt;&amp;gt;&amp;gt;             updates (adds/removes) get applied as normal, but with this _new_ commitment&lt;br/&gt;&amp;gt;&amp;gt;             type/params. The main edge case we&amp;#39;ll need to consider is cases where the&lt;br/&gt;&amp;gt;&amp;gt;             new params make older HTLCs invalid for some reason.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Conclusion&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Using the adapter commitment idea combined with a protocol for updating&lt;br/&gt;&amp;gt;&amp;gt;             commitments on the fly, would potentially allow us to update all 80k&#43; segwit&lt;br/&gt;&amp;gt;&amp;gt;             v0 channels to the base level of taprooty channels without any on chain&lt;br/&gt;&amp;gt;&amp;gt;             transactions. The two transactions (open&#43;close) must happen eventually, but&lt;br/&gt;&amp;gt;&amp;gt;             by holding another layer of spends off-chain we can defer them (potentially&lt;br/&gt;&amp;gt;&amp;gt;             indefinitely, as we have channels today that have been opened for over a&lt;br/&gt;&amp;gt;&amp;gt;             year).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Deploying a generalised on-the-fly dynamic commitment update protocol gives&lt;br/&gt;&amp;gt;&amp;gt;             us a tool to future proof the _existing_ anchored multi-sig outputs in the&lt;br/&gt;&amp;gt;&amp;gt;             chain, and also a way to remove many of the hard coded parameters we have&lt;br/&gt;&amp;gt;&amp;gt;             today in the protocol. One overly inflexible parameter we have today in the&lt;br/&gt;&amp;gt;&amp;gt;             network is the 483 HTLC limit. Allowing this value to float would allow&lt;br/&gt;&amp;gt;&amp;gt;             peers to apply similar congestion avoidance algorithm that are used in TCP&lt;br/&gt;&amp;gt;&amp;gt;             today, and also give us a way to protect the network against future&lt;br/&gt;&amp;gt;&amp;gt;             unforeseen widespread policy changes (like a raising of the dust limit).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             -- Laolu&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             [1]: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             [2]: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             [3]: &lt;a href=&#34;https://github.com/lightning/bolts/pull/868&#34;&gt;https://github.com/lightning/bolts/pull/868&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://github.com/lightning/bolts/pull/868&amp;gt&#34;&gt;https://github.com/lightning/bolts/pull/868&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;             Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;             Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;         Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;         Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;     Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;     Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Oct 27, 2022 at 4:54 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &lt;br/&gt;&amp;gt; &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I’m not sure I understand this - is there much reason to want taproot commitment outputs? I mean&lt;br/&gt;&amp;gt;     they’re cool, and witnesses are a bit smaller, which is nice I guess, but they’re not providing&lt;br/&gt;&amp;gt;     materially new features, AFAIU. Taproot funding, on the other hand, provides a Bitcoin-wide&lt;br/&gt;&amp;gt;     privacy improvement as well the potential future ability of channel participants to use multisig&lt;br/&gt;&amp;gt;     for their own channel funds transparently.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Sure, if we’re doing taproot funding outputs we should probably just do it for the commitment&lt;br/&gt;&amp;gt;     outputs as well, because why not (and it’s a prereq for PTLCs). But trying to split them up&lt;br/&gt;&amp;gt;     seems like added complexity “just because”? I suppose it tees us up for eventual PTLC support in&lt;br/&gt;&amp;gt;     todays channels, but we can also consider that separately when we get to that point, IMO.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Am I missing some important utility of taproot commitment transaction outputs?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     On Oct 27, 2022, at 02:17, Johan Torås Halseth &amp;lt;johanth at gmail.com &amp;lt;mailto:johanth at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     ﻿&lt;br/&gt;&amp;gt;&amp;gt;     Hi, Laolu.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     I think it could be worth considering dividing the taprootyness of a channel into two:&lt;br/&gt;&amp;gt;&amp;gt;     1) taproot funding output&lt;br/&gt;&amp;gt;&amp;gt;     2) taproot commitment outputs&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     That way we could upgrade existing channels only on the commitment level, not needing to close&lt;br/&gt;&amp;gt;&amp;gt;     or re-anchor the channels using an adapter in order to get many of the taproot benefits.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     New channels would use taproot multisig (musig2) for the funding output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     This seems to be less disruptive to the existing network, and we could get features enabled by&lt;br/&gt;&amp;gt;&amp;gt;     taproot to larger parts of the network quicker. And to me this seems to carry less complexity&lt;br/&gt;&amp;gt;&amp;gt;     (and closing fees) than an adapter.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     One caveat is that this wouldn&amp;#39;t work (I think) for Eltoo channels, as the funding output&lt;br/&gt;&amp;gt;&amp;gt;     would not be plain multisig anymore.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     - Johan&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     On Sat, Mar 26, 2022 at 1:27 AM Antoine Riard &amp;lt;antoine.riard at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:antoine.riard at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Hi Laolu,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Thanks for the proposal, quick feedback.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; It *is* still the case that _ultimately_ the two transactions to close the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; old segwit v0 funding output, and re-open the channel with a new segwit v1&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; funding output are unavoidable. However this adapter commitment lets peers&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; _defer_ these two transactions until closing time.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         I think there is one downside coming with adapter commitment, which is the uncertainty of&lt;br/&gt;&amp;gt;&amp;gt;         the fee overhead at the closing time. Instead of closing your segwit v0 channel _now_ with&lt;br/&gt;&amp;gt;&amp;gt;         known fees, when your commitment is empty of time-sensitive HTLCs, you&amp;#39;re taking the risk&lt;br/&gt;&amp;gt;&amp;gt;         of closing during fees spikes, due a move triggered by your counterparty, when you might&lt;br/&gt;&amp;gt;&amp;gt;         have HTLCs at stake.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         It might be more economically rational for a LN node operator to pay the upgrade cost now&lt;br/&gt;&amp;gt;&amp;gt;         if they wish  to benefit from the taproot upgrade early, especially if long-term we expect&lt;br/&gt;&amp;gt;&amp;gt;         block fees to increase, or wait when there is a &amp;#34;normal&amp;#34; cooperative closing.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         So it&amp;#39;s unclear to me what the economic gain of adapter commitments ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In the remainder of this mail, I&amp;#39;ll describe an alternative&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; approach that would allow upgrading nearly all channel/commitment related&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; values (dust limit, max in flight, etc), which is inspired by the way the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Raft consensus protocol handles configuration/member changes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Long-term, I think we&amp;#39;ll likely need a consensus protocol anyway for multi-party&lt;br/&gt;&amp;gt;&amp;gt;         constructions (channel factories/payment pools). AFAIU this proposal doesn&amp;#39;t aim to roll&lt;br/&gt;&amp;gt;&amp;gt;         out a full-fledged consensus protocol *now* though it could be wise to ensure what we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt;         building slowly moves in this direction. Less critical code to maintain across bitcoin&lt;br/&gt;&amp;gt;&amp;gt;         codebases/toolchains.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; The role of the signature it to prevent &amp;#34;spoofing&amp;#34; by one of the parties&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; (authenticate the param change), and also it serves to convince a party that&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; they actually sent a prior commitment propose update during the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; retransmission phase.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         What&amp;#39;s the purpose of data origin authentication if we assume only two-parties running&lt;br/&gt;&amp;gt;&amp;gt;         over Noise_XK ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         I think it&amp;#39;s already a security property we have. Though if we think we&amp;#39;re going to reuse&lt;br/&gt;&amp;gt;&amp;gt;         these dynamic upgrades for N counterparties communicating through a coordinator, yes I&lt;br/&gt;&amp;gt;&amp;gt;         think it&amp;#39;s useful.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In the past, when ideas like this were brought up, some were concerned that&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; it wouldn&amp;#39;t really be possible to do this type of updates while existing&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; HTLCs were in flight (hence some of the ideas to clear out the commitment&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; beforehand).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         The dynamic upgrade might serve in an emergency context where we don&amp;#39;t have the leisury to&lt;br/&gt;&amp;gt;&amp;gt;         wait for the settlement of the pending HTLCs. The timing of those ones might be beyond the&lt;br/&gt;&amp;gt;&amp;gt;         coordination of link counterparties. Thus, we have to allow upgrade of non-empty&lt;br/&gt;&amp;gt;&amp;gt;         commitments (and if there are undesirable interferences between new commitment types and&lt;br/&gt;&amp;gt;&amp;gt;         HTLCs/PTLCs present, deal case-by-case).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Le jeu. 24 mars 2022 à 18:53, Olaoluwa Osuntokun &amp;lt;laolu32 at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;mailto:laolu32 at gmail.com&amp;gt;&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Hi y&amp;#39;all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Dynamic Commitments Retrospective&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Two years-ish ago I made a mailing list post on some ideas re dynamic&lt;br/&gt;&amp;gt;&amp;gt;             commitments [1], and how the concept can be used to allow us to upgrade&lt;br/&gt;&amp;gt;&amp;gt;             channel types on the fly, and also remove pesky hard coded limits like the&lt;br/&gt;&amp;gt;&amp;gt;             483 HTLC in-flight limit that&amp;#39;s present today. Back then my main target was&lt;br/&gt;&amp;gt;&amp;gt;             upgrading all the existing channels over to the anchor output commitment&lt;br/&gt;&amp;gt;&amp;gt;             variant, so the core internal routing network would be more resilient in a&lt;br/&gt;&amp;gt;&amp;gt;             persistent high fee environment (which hasn&amp;#39;t really happened over the past&lt;br/&gt;&amp;gt;&amp;gt;             2 years for various reasons tbh). Fast forward to today, and with taproot&lt;br/&gt;&amp;gt;&amp;gt;             now active on mainnet, and some initial design work/sketches for&lt;br/&gt;&amp;gt;&amp;gt;             taproot-native channels underway, I figure it would be good to bump this&lt;br/&gt;&amp;gt;&amp;gt;             concept as it gives us a way to upgrade all 80k&#43; public channels to taproot&lt;br/&gt;&amp;gt;&amp;gt;             without any on chain transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Updating Across Witness Versions w/ Adapter Commitments&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             In my original mail, I incorrectly concluded that the dynamic commitments&lt;br/&gt;&amp;gt;&amp;gt;             concept would only really work within the confines of a &amp;#34;static&amp;#34; multi-sig&lt;br/&gt;&amp;gt;&amp;gt;             output, meaning that it couldn&amp;#39;t be used to help channels upgrade to future&lt;br/&gt;&amp;gt;&amp;gt;             segwit witness versions.  Thankfully this reply [2] by ZmnSCPxj, outlined a&lt;br/&gt;&amp;gt;&amp;gt;             way to achieve this in practice. At a high level he proposes an &amp;#34;adaptor&lt;br/&gt;&amp;gt;&amp;gt;             commitment&amp;#34; (similar to the kickoff transaction in eltoo/duplex), which is&lt;br/&gt;&amp;gt;&amp;gt;             basically an upgrade transaction that spends one witness version type, and&lt;br/&gt;&amp;gt;&amp;gt;             produces an output with the next (upgraded) type. In the context of&lt;br/&gt;&amp;gt;&amp;gt;             converting from segwit v0 to v1 (taproot), two peers would collaboratively&lt;br/&gt;&amp;gt;&amp;gt;             create a new adapter commitment that spends the old v0 multi-sig output, and&lt;br/&gt;&amp;gt;&amp;gt;             produces a _new_ v1 multi-sig output. The new commitment transaction would&lt;br/&gt;&amp;gt;&amp;gt;             then be anchored using this new output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Here&amp;#39;s a rough sequence diagram of the before and after state to better&lt;br/&gt;&amp;gt;&amp;gt;             convey the concept:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;               * Before: fundingOutputV0 -&amp;gt; commitmentTransaction&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;               * After fundingOutputV0 -&amp;gt; fundingOutputV1 (the adapter) -&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                 commitmentTransaction&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             It *is* still the case that _ultimately_ the two transactions to close the&lt;br/&gt;&amp;gt;&amp;gt;             old segwit v0 funding output, and re-open the channel with a new segwit v1&lt;br/&gt;&amp;gt;&amp;gt;             funding output are unavoidable. However this adapter commitment lets peers&lt;br/&gt;&amp;gt;&amp;gt;             _defer_ these two transactions until closing time. When force closing two&lt;br/&gt;&amp;gt;&amp;gt;             transactions need to be confirmed before the commitment outputs can be&lt;br/&gt;&amp;gt;&amp;gt;             resolved. However, for co-op close, you can just spend the v0 output, and&lt;br/&gt;&amp;gt;&amp;gt;             deliver to the relevant P2TR outputs. The adapter commitment can leverage&lt;br/&gt;&amp;gt;&amp;gt;             sighash anyonecanpay to let both parties (assuming it&amp;#39;s symmetric) attach&lt;br/&gt;&amp;gt;&amp;gt;             additional inputs for fees (to avoid introducing the old update_fee related&lt;br/&gt;&amp;gt;&amp;gt;             static fee issues), or alternatively inherit the anchor output pattern at&lt;br/&gt;&amp;gt;&amp;gt;             this level.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Existing Dynamic Commitments Proposals&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Assuming this concept holds up, then we need an actual concrete protocol to&lt;br/&gt;&amp;gt;&amp;gt;             allow for dynamic commitment updates. Last year, Rusty made a spec PR&lt;br/&gt;&amp;gt;&amp;gt;             outlining a way to upgrade the commitment type (leveraging the new&lt;br/&gt;&amp;gt;&amp;gt;             commitment type feature bits) upon channel re-establish [3]. The proposal&lt;br/&gt;&amp;gt;&amp;gt;             relies on another message that both sides send (`stfu`) to clear the&lt;br/&gt;&amp;gt;&amp;gt;             commitment (similar to the shutdown semantics) before the switch over&lt;br/&gt;&amp;gt;&amp;gt;             happens. However as this is tied to the channel re-establish flow, it&lt;br/&gt;&amp;gt;&amp;gt;             doesn&amp;#39;t allow both sides to do things like only allow your peer to attach N&lt;br/&gt;&amp;gt;&amp;gt;             HTLCs to start with, slowing increasing their allotted slots and possibly&lt;br/&gt;&amp;gt;&amp;gt;             reducing them (TCP AIMD style).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## A Two-Phase Dynamic Commitment Update Protocol&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             IMO if we&amp;#39;re adding in a way to do commitment/channel upgrades, then it may&lt;br/&gt;&amp;gt;&amp;gt;             be worthwhile to go with a more generalized, but slightly more involved&lt;br/&gt;&amp;gt;&amp;gt;             route instead. In the remainder of this mail, I&amp;#39;ll describe an alternative&lt;br/&gt;&amp;gt;&amp;gt;             approach that would allow upgrading nearly all channel/commitment related&lt;br/&gt;&amp;gt;&amp;gt;             values (dust limit, max in flight, etc), which is inspired by the way the&lt;br/&gt;&amp;gt;&amp;gt;             Raft consensus protocol handles configuration/member changes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             For those that aren&amp;#39;t aware, Raft is a consensus protocol analogous to Paxos&lt;br/&gt;&amp;gt;&amp;gt;             (but isn&amp;#39;t byzantine fault tolerant out of the box) that was designed as a&lt;br/&gt;&amp;gt;&amp;gt;             more understandable alternative to Paxos for a pedagogical environment.&lt;br/&gt;&amp;gt;&amp;gt;             Typically the algorithm is run in the context of a fixed cluster with N&lt;br/&gt;&amp;gt;&amp;gt;             machines, but supports adding/removing machines from the cluster with a&lt;br/&gt;&amp;gt;&amp;gt;             configuration update protocol. At a high level the way this works is that a&lt;br/&gt;&amp;gt;&amp;gt;             new config is sent to the leader, with the leader synchronizing the config&lt;br/&gt;&amp;gt;&amp;gt;             change with the other members of the cluster. Once a majority threshold is&lt;br/&gt;&amp;gt;&amp;gt;             reached, the leader then commits the config change with the acknowledged&lt;br/&gt;&amp;gt;&amp;gt;             parties using the new config (basically a two phase commit). I&amp;#39;m skipping&lt;br/&gt;&amp;gt;&amp;gt;             over some edge cases here that can arise if the new nodes participate&lt;br/&gt;&amp;gt;&amp;gt;             consensus too early, which can cause a split majority leading to two leaders&lt;br/&gt;&amp;gt;&amp;gt;             being elected.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Applying this to the LN context is a bit simpler than a generalized&lt;br/&gt;&amp;gt;&amp;gt;             protocol, as we typically just have two parties involved. The initiator is&lt;br/&gt;&amp;gt;&amp;gt;             already naturally a &amp;#34;leader&amp;#34; in our context, as they&amp;#39;re the only ones that&lt;br/&gt;&amp;gt;&amp;gt;             can do things like trigger fee updates.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Message Structure&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             At a high level I propose we introduce two new messages, with the fields&lt;br/&gt;&amp;gt;&amp;gt;             looking something like this for `commitment_update_propose`:&lt;br/&gt;&amp;gt;&amp;gt;              * type: 0 (`channel_id`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`32*byte`:`chan_id`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 1 (`propose_sig`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`64*byte`:`sig`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 2 (`update_payload`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`tlv_payload`]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             and this `commitment_update_apply`:&lt;br/&gt;&amp;gt;&amp;gt;              * type: 0 (`channel_id`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`32*byte`:`chan_id`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 1 (`local_propose`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`commitment_update_propose`]&lt;br/&gt;&amp;gt;&amp;gt;              * type: 2 (`remote_propose`)&lt;br/&gt;&amp;gt;&amp;gt;                * value: [`*byte`:`commitment_update_propose`]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Protocol Flow&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The core idea here is that either party can propose a commitment/channel&lt;br/&gt;&amp;gt;&amp;gt;             param update, but only the initiator can actually apply it. The&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` encodes the new set of updates, with a signature&lt;br/&gt;&amp;gt;&amp;gt;             covering the TLV blob for the new params (more on why that&amp;#39;s needed later).&lt;br/&gt;&amp;gt;&amp;gt;             The `commitment_update_apply` includes up to _two_&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` messages (one for the initiator and one for the&lt;br/&gt;&amp;gt;&amp;gt;             responder, as nested TLV messages). The `commitment_update_propose` message&lt;br/&gt;&amp;gt;&amp;gt;             would be treated like any other `update_*` message, in that it takes a new&lt;br/&gt;&amp;gt;&amp;gt;             commitment signature to properly commit/apply it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The normal flow takes the form of both sides sending a&lt;br/&gt;&amp;gt;&amp;gt;             `commitment_update_propose` message, with the initiator finally committing&lt;br/&gt;&amp;gt;&amp;gt;             both by sending a `commitment_update_apply` message. In the event that only&lt;br/&gt;&amp;gt;&amp;gt;             the responder wants to apply a param change/update, then the initiator can&lt;br/&gt;&amp;gt;&amp;gt;             reply immediately with a `commitment_update_apply` message that doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;             include a param change for their commitment (or they just echo the&lt;br/&gt;&amp;gt;&amp;gt;             parameters if they&amp;#39;re acceptable).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Handling Retransmissions&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The role of the signature it to prevent &amp;#34;spoofing&amp;#34; by one of the parties&lt;br/&gt;&amp;gt;&amp;gt;             (authenticate the param change), and also it serves to convince a party that&lt;br/&gt;&amp;gt;&amp;gt;             they actually sent a prior commitment propose update during the&lt;br/&gt;&amp;gt;&amp;gt;             retransmission phase. As the `commitment_update_propose` message would be&lt;br/&gt;&amp;gt;&amp;gt;             retransmitted like any other message, if the initiator attempts to commit&lt;br/&gt;&amp;gt;&amp;gt;             the update but the connection dies, they&amp;#39;ll retransmit it as normal along&lt;br/&gt;&amp;gt;&amp;gt;             with their latest signature.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ### Nested TLV Param Generality&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             The messages as sketched out here just have an opaque nested TLV field which&lt;br/&gt;&amp;gt;&amp;gt;             makes it extensible to add in other things like tweaking the total number of&lt;br/&gt;&amp;gt;&amp;gt;             max HTLCs, the current dust values, min/max HTLCs, etc (all things that are&lt;br/&gt;&amp;gt;&amp;gt;             currently hard coded for the lifetime of the channel). An initial target&lt;br/&gt;&amp;gt;&amp;gt;             would likely just be a `chan_type` field, with future feature bits governing&lt;br/&gt;&amp;gt;&amp;gt;             _what_ type of commitment updates both parties understand in the future.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             In the past, when ideas like this were brought up, some were concerned that&lt;br/&gt;&amp;gt;&amp;gt;             it wouldn&amp;#39;t really be possible to do this type of updates while existing&lt;br/&gt;&amp;gt;&amp;gt;             HTLCs were in flight (hence some of the ideas to clear out the commitment&lt;br/&gt;&amp;gt;&amp;gt;             beforehand). I don&amp;#39;t see a reason why this fundamentally _shouldn&amp;#39;t_ be&lt;br/&gt;&amp;gt;&amp;gt;             allowed, as from the point of view of the channel update state machine, all&lt;br/&gt;&amp;gt;&amp;gt;             updates (adds/removes) get applied as normal, but with this _new_ commitment&lt;br/&gt;&amp;gt;&amp;gt;             type/params. The main edge case we&amp;#39;ll need to consider is cases where the&lt;br/&gt;&amp;gt;&amp;gt;             new params make older HTLCs invalid for some reason.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             ## Conclusion&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Using the adapter commitment idea combined with a protocol for updating&lt;br/&gt;&amp;gt;&amp;gt;             commitments on the fly, would potentially allow us to update all 80k&#43; segwit&lt;br/&gt;&amp;gt;&amp;gt;             v0 channels to the base level of taprooty channels without any on chain&lt;br/&gt;&amp;gt;&amp;gt;             transactions. The two transactions (open&#43;close) must happen eventually, but&lt;br/&gt;&amp;gt;&amp;gt;             by holding another layer of spends off-chain we can defer them (potentially&lt;br/&gt;&amp;gt;&amp;gt;             indefinitely, as we have channels today that have been opened for over a&lt;br/&gt;&amp;gt;&amp;gt;             year).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             Deploying a generalised on-the-fly dynamic commitment update protocol gives&lt;br/&gt;&amp;gt;&amp;gt;             us a tool to future proof the _existing_ anchored multi-sig outputs in the&lt;br/&gt;&amp;gt;&amp;gt;             chain, and also a way to remove many of the hard coded parameters we have&lt;br/&gt;&amp;gt;&amp;gt;             today in the protocol. One overly inflexible parameter we have today in the&lt;br/&gt;&amp;gt;&amp;gt;             network is the 483 HTLC limit. Allowing this value to float would allow&lt;br/&gt;&amp;gt;&amp;gt;             peers to apply similar congestion avoidance algorithm that are used in TCP&lt;br/&gt;&amp;gt;&amp;gt;             today, and also give us a way to protect the network against future&lt;br/&gt;&amp;gt;&amp;gt;             unforeseen widespread policy changes (like a raising of the dust limit).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             -- Laolu&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             [1]: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002763.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             [2]: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-July/002770.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             [3]: &lt;a href=&#34;https://github.com/lightning/bolts/pull/868&#34;&gt;https://github.com/lightning/bolts/pull/868&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://github.com/lightning/bolts/pull/868&amp;gt&#34;&gt;https://github.com/lightning/bolts/pull/868&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;             _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;             Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;             Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;             &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;             &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;         Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;         Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;     Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;     Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T15:07:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfvgcjd4pwpxr5wjfqydac8k93m22xee4zuvx024nw29d8wxpf5vgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wxxhxe</id>
    
      <title type="html">📅 Original date posted:2022-09-23 📝 Original message: Two ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfvgcjd4pwpxr5wjfqydac8k93m22xee4zuvx024nw29d8wxpf5vgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wxxhxe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyxkflk9zulvmwkn4hrczzkt46fs9sytajcfkg2cwwym6s45ghfqs3y2fmh&#39;&gt;nevent1q…2fmh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Two questions -&lt;br/&gt;a) How much gossip overhead do you expect this type of protocol to generate/is there a useful &lt;br/&gt;outcome for this type of update even if you limit gossip updates to once/twice/thrice per day?&lt;br/&gt;b) What are the privacy implications of the naive &amp;#34;update on drained channel&amp;#34;, and have you done any &lt;br/&gt;analysis of the value of this type of gossip update at different levels of privacy?&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 9/22/22 2:40 AM, René Pickhardt via Lightning-dev wrote:&lt;br/&gt;&amp;gt; Good morning fellow Lightning Developers,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I am pleased to share my most recent research results [1] with you. They may (if at all) only have a &lt;br/&gt;&amp;gt; small impact on protocol development / specification but are actually mainly of concern to node &lt;br/&gt;&amp;gt; operators and LSPs. I still thought they may be relevant for the list.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While trying to estimate the expected liquidity distribution in depleted channels due to drain via &lt;br/&gt;&amp;gt; Markov Models I realized that we can exploit the `htlc_maxium_msat` setting to act as a control &lt;br/&gt;&amp;gt; valve and regulate the &amp;#34;pressure&amp;#34; coming from the drain and mitigate the depletion of channels. Such &lt;br/&gt;&amp;gt; ideas are btw not novel at all and heavily used in fluid networks [2]. Thus it seems very natural &lt;br/&gt;&amp;gt; that we do the same on the Lightning Network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the article we show within a theoretic model how expected payment failure rates per channel may &lt;br/&gt;&amp;gt; drop significantly by up to an order of magnitude if channels set up proper asymmetric &lt;br/&gt;&amp;gt; `htlc_maximum_msat` pairs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We furthermore provide in our iPython notebook [3] two experimental algorithmic ideas with which &lt;br/&gt;&amp;gt; node operators can find decent `htlc_maximum_msat` values in a greedy fashion. One of the algorithms &lt;br/&gt;&amp;gt; does not even require to know the drain or payment size distribution or build the Markov model but &lt;br/&gt;&amp;gt; just looks at the liquidity distribution in the channel at the last x routing attempts and adjusts &lt;br/&gt;&amp;gt; the `htlc_maximum_msat` value if the distribution is to far away from a uniform distribution.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Looking forwards for your thoughts and feedback.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; with kind regards Rene&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1]: &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://blog.bitmex.com/the-power-of-htlc_maximum_msat-as-a-control-valve-for-better-flow-control-improved-reliability-and-lower-expected-payment-failure-rates-on-the-lightning-network/&#34;&gt;https://blog.bitmex.com/the-power-of-htlc_maximum_msat-as-a-control-valve-for-better-flow-control-improved-reliability-and-lower-expected-payment-failure-rates-on-the-lightning-network/&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://blog.bitmex.com/the-power-of-htlc_maximum_msat-as-a-control-valve-for-better-flow-control-improved-reliability-and-lower-expected-payment-failure-rates-on-the-lightning-network/&amp;gt&#34;&gt;https://blog.bitmex.com/the-power-of-htlc_maximum_msat-as-a-control-valve-for-better-flow-control-improved-reliability-and-lower-expected-payment-failure-rates-on-the-lightning-network/&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [2]: &lt;a href=&#34;https://en.wikipedia.org/wiki/Control_valve&#34;&gt;https://en.wikipedia.org/wiki/Control_valve&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Control_valve&amp;gt&#34;&gt;https://en.wikipedia.org/wiki/Control_valve&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [3]: &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lnresearch/Flow-Control-on-Lightning-Network-Channels-with-Drain-via-Control-Valves/blob/main/htlc_maximum_msat%20as%20a%20valve%20for%20flow%20control%20on%20the%20Lightnig%20network.ipynb&#34;&gt;https://github.com/lnresearch/Flow-Control-on-Lightning-Network-Channels-with-Drain-via-Control-Valves/blob/main/htlc_maximum_msat%20as%20a%20valve%20for%20flow%20control%20on%20the%20Lightnig%20network.ipynb&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/lnresearch/Flow-Control-on-Lightning-Network-Channels-with-Drain-via-Control-Valves/blob/main/htlc_maximum_msat%20as%20a%20valve%20for%20flow%20control%20on%20the%20Lightnig%20network.ipynb&amp;gt&#34;&gt;https://github.com/lnresearch/Flow-Control-on-Lightning-Network-Channels-with-Drain-via-Control-Valves/blob/main/htlc_maximum_msat%20as%20a%20valve%20for%20flow%20control%20on%20the%20Lightnig%20network.ipynb&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://ln.rene-pickhardt.de&#34;&gt;https://ln.rene-pickhardt.de&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://ln.rene-pickhardt.de&amp;gt&#34;&gt;https://ln.rene-pickhardt.de&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:06:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz0aumrkyn8m6sj4rlz5ns6gxvphmx8h67jy2g0gq68wth0uw3m8czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5lepf87</id>
    
      <title type="html">📅 Original date posted:2022-07-10 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz0aumrkyn8m6sj4rlz5ns6gxvphmx8h67jy2g0gq68wth0uw3m8czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5lepf87" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2w0pq6wmzv5wqclr9k89xd4ljcmrsm48f03p8e9aftd4ktaanqzsxdmn40&#39;&gt;nevent1q…mn40&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-10&lt;br/&gt;📝 Original message:&lt;br/&gt;On 7/10/22 4:43 AM, Joost Jager wrote:&lt;br/&gt;&amp;gt; It can also be considered a bad thing that DoS ability is not based on a number of messages. It &lt;br/&gt;&amp;gt; means that for the one time cost of channel open/close, the attacker can generate spam forever if &lt;br/&gt;&amp;gt; they stay right below the rate limit.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t see why this is a problem? This seems to assume some kind of per-message cost that nodes &lt;br/&gt;have to bear, but there is simply no such thing. Indeed, if message spam causes denial of service to &lt;br/&gt;other network participants, this would be an issue, but an attacker generating spam from one &lt;br/&gt;specific location within the network should not cause that, given some form of backpressure within &lt;br/&gt;the network.&lt;br/&gt;&lt;br/&gt;&amp;gt; Suppose the attacker has enough channels to hit the rate limit on an important connection some hops &lt;br/&gt;&amp;gt; away from themselves. They can then sustain that attack indefinitely, assuming that they stay below &lt;br/&gt;&amp;gt; the rate limit on the routes towards the target connection. What will the response be in that case? &lt;br/&gt;&amp;gt; Will node operators work together to try to trace back to the source and take down the attacker? &lt;br/&gt;&amp;gt; That requires operators to know each other.&lt;br/&gt;&lt;br/&gt;No it doesn&amp;#39;t, backpressure works totally fine and automatically applies pressure backwards until &lt;br/&gt;nodes, in an automated fashion, are appropriately ratelimiting the source of the traffic.&lt;br/&gt;&lt;br/&gt;&amp;gt; Maybe this is a difference between lightning network and the internet that is relevant for this &lt;br/&gt;&amp;gt; discussion. That routers on the internet know each other and have physical links between them, where &lt;br/&gt;&amp;gt; as in lightning ties can be much looser.&lt;br/&gt;&lt;br/&gt;No? The internet does not work by ISPs calling each other up on the phone to apply backpressure &lt;br/&gt;manually whenever someone sends a lot of traffic? If anything lightning ties between nodes are much, &lt;br/&gt;much stronger than ISPs on the internet - you generally are at least loosely trusting your peer with &lt;br/&gt;your money, not just your customer&amp;#39;s customer&amp;#39;s bits.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:06:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqp8scwsx0rvh9r4ut3v9flwrc6q4ut66arnfwczvyxhnr360efeczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xg0atv</id>
    
      <title type="html">📅 Original date posted:2022-06-29 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqp8scwsx0rvh9r4ut3v9flwrc6q4ut66arnfwczvyxhnr360efeczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xg0atv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstp6lj5hd2vkhcpqth0pumwhggdzjan6v5ftvec6xhm9m2g597tps5fmyjs&#39;&gt;nevent1q…myjs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-06-29&lt;br/&gt;📝 Original message:&lt;br/&gt;Thanks Bastien for writing this up! This is a pretty trivial and straightforward way to rate-limit &lt;br/&gt;onion messages in a way that allows legitimate users to continue using the system in spite of some &lt;br/&gt;bad actors trying (and failing, due to being rate-limited) to DoS the network.&lt;br/&gt;&lt;br/&gt;I do think any spec for this shouldn&amp;#39;t make any recommendations about willingness to relay onion &lt;br/&gt;messages for anonymous no-channel third parties, if anything deliberately staying mum on it and &lt;br/&gt;allowing nodes to adapt policy (and probably rate-limit no-channel third-parties before they rate &lt;br/&gt;limit any peer they have a channel with). Ultimately, we have to assume that nodes will attempt to &lt;br/&gt;send onion messages by routing through the existing channel graph, so there&amp;#39;s little reason to worry &lt;br/&gt;too much about ensuring ability to relay for anonymous parties.&lt;br/&gt;&lt;br/&gt;Better yet, as Val points out, requiring a channel to relay onion messages puts a very real, &lt;br/&gt;nontrivial (in a world of msats) cost to getting an onion messaging channel. Better yet, with &lt;br/&gt;backpressure ability to DoS onion message links isn&amp;#39;t denominated in number of messages, but instead &lt;br/&gt;in number of channels you are able to create, making the backpressure system equivalent to today&amp;#39;s &lt;br/&gt;HTLC DoS considerations, whereas explicit payment allows an attacker to pay much less to break the &lt;br/&gt;system.&lt;br/&gt;&lt;br/&gt;As for the proposal to charge for onion messages, I&amp;#39;m still not at all sure where its coming from. &lt;br/&gt;It seems to flow from a classic &amp;#34;have a hammer (a system to make micropayments for things), better &lt;br/&gt;turn this problem into a nail (by making users pay for it)&amp;#34; approach, but it doesn&amp;#39;t actually solve &lt;br/&gt;the problem at hand.&lt;br/&gt;&lt;br/&gt;Even if you charge for onion messages, users may legitimately want to send a bunch of payments in &lt;br/&gt;bulk, and trivially overflow a home or Tor nodes&amp;#39; bandwidth. The only response to that, whether its &lt;br/&gt;a DoS attack or a legitimate user, is to rate-limit, and to rate-limit in a way that tells the user &lt;br/&gt;sending the messages to back off! Sure, you could do that by failing onion messages with an error &lt;br/&gt;that updates the fee you charge, but you&amp;#39;re ultimately doing a poor-man&amp;#39;s (or, I suppose, &lt;br/&gt;rich-man&amp;#39;s) version of what Bastien proposes, not adding some fundamental difference.&lt;br/&gt;&lt;br/&gt;Ultimately, paying suffers from the standard PoW-for-spam issue - you cannot assign a reasonable &lt;br/&gt;cost that an attacker cares about without impacting the system&amp;#39;s usability due to said cost. Indeed, &lt;br/&gt;making it expensive enough to mount a months-long DDoS without impacting legitimate users be pretty &lt;br/&gt;easy - at 1msat per relay of a 1366 byte onion message you can only saturate an average home users&amp;#39; &lt;br/&gt;30Mbps connection for 30 minutes before you rack up a dollar in costs, but if your concern is &lt;br/&gt;whether someone can reasonably trivially take out the network for minutes at a time to make it have &lt;br/&gt;perceptibly high failure rates, no reasonable cost scheme will work. Quite the opposite - the only &lt;br/&gt;reasonable way to respond is to respond to a spike in traffic while maintaining QoS is to rate-limit &lt;br/&gt;by inbound edge!&lt;br/&gt;&lt;br/&gt;Ultimately, what we have here is a networking problem, that has to be solved with networking &lt;br/&gt;solutions, not a costing problem, which can be solved with payment. I can only assume that the &lt;br/&gt;desire to add a cost to onion messages ultimately stems from a desire to ensure every possible &lt;br/&gt;avenue for value extraction is given to routing nodes, but I think that desire is misplaced in this &lt;br/&gt;case - the cost of bandwidth is diminutive compared to other costs of routing node operation, &lt;br/&gt;especially when you consider sensible rate-limits as proposed in Bastien&amp;#39;s email.&lt;br/&gt;&lt;br/&gt;Indeed, if anyone were proposing rate-limits which would allow anything close to enough bandwidth &lt;br/&gt;usage to cause &amp;#34;lightning is turning into Tor and has Tor&amp;#39;s problems&amp;#34; to be a legitimate concern I&amp;#39;d &lt;br/&gt;totally agree we should charge for its use. But no one is, nor has anyone ever seriously, to my &lt;br/&gt;knowledge, proposed such a thing. If lightning messages get deployed and start eating up even single &lt;br/&gt;Mbps&amp;#39;s on a consistent basis on nodes, we can totally revisit this, its not like we are shutting the &lt;br/&gt;door to any possible costing system if it becomes necessary, but rate-limiting has to happen either &lt;br/&gt;way, so we should start there and see if we need costing, not jump to costing on day one, hampering &lt;br/&gt;utility.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 6/29/22 8:22 PM, Olaoluwa Osuntokun wrote:&lt;br/&gt;&amp;gt; Hi t-bast,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Happy to see this finally written up! With this, we have two classes of&lt;br/&gt;&amp;gt; proposals for rate limiting onion messaging:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;    1. Back propagation based rate limiting as described here.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;    2. Allowing nodes to express a per-message cost for their forwarding&lt;br/&gt;&amp;gt;    services, which is described here [1].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I still need to digest everything proposed here, but personally I&amp;#39;m more&lt;br/&gt;&amp;gt; optimistic about the 2nd category than the 1st.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; One issue I see w/ the first category is that a single party can flood the&lt;br/&gt;&amp;gt; network and cause nodes to trigger their rate limits, which then affects the&lt;br/&gt;&amp;gt; usability of the onion messages for all other well-behaving parties. An&lt;br/&gt;&amp;gt; example, this might mean I can&amp;#39;t fetch invoices, give up after a period of&lt;br/&gt;&amp;gt; time (how long?), then result to a direct connection (perceived payment&lt;br/&gt;&amp;gt; latency accumulated along the way).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; With the 2nd route, if an attacker floods the network, they need to directly&lt;br/&gt;&amp;gt; pay for the forwarding usage themselves, though they may also directly cause&lt;br/&gt;&amp;gt; nodes to adjust their forwarding rate accordingly. However in this case, the&lt;br/&gt;&amp;gt; attacker has incurred a concrete cost, and even if the rates rise, then&lt;br/&gt;&amp;gt; those that really need the service (notifying an LSP that a user is online&lt;br/&gt;&amp;gt; or w/e) can continue to pay that new rate. In other words, by _pricing_ the&lt;br/&gt;&amp;gt; resource utilization, demand preferences can be exchanged, leading to more&lt;br/&gt;&amp;gt; efficient long term resource allocation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; W.r.t this topic, one event that imo is worth pointing out is that a very&lt;br/&gt;&amp;gt; popular onion routing system, Tor, has been facing a severe DDoS attack that&lt;br/&gt;&amp;gt; has lasted weeks, and isn&amp;#39;t yet fully resolved [2]. The on going flooding&lt;br/&gt;&amp;gt; attack on Tor has actually started to affect LN (iirc over half of all&lt;br/&gt;&amp;gt; public routing nodes w/ an advertised address are tor-only), and other&lt;br/&gt;&amp;gt; related systems like Umbrel that 100% rely on tor for networking traversal.&lt;br/&gt;&amp;gt; Funnily enough, Tor developers have actually suggested adding some PoW to&lt;br/&gt;&amp;gt; attempt to mitigate DDoS attacks [3]. In that same post they throw around&lt;br/&gt;&amp;gt; the idea of using anonymous tokens to allow nodes to give them to &amp;#34;good&amp;#34;&lt;br/&gt;&amp;gt; clients, which is pretty similar to my lofty Forwarding Pass idea as relates&lt;br/&gt;&amp;gt; to onion messaging, and also general HTLC jamming mitigation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In summary, we&amp;#39;re not the first to attempt to tackle the problem of rate&lt;br/&gt;&amp;gt; limiting relayed message spam in an anonymous/pseudonymous network, and we&lt;br/&gt;&amp;gt; can probably learn a lot from what is and isn&amp;#39;t working w.r.t how Tor&lt;br/&gt;&amp;gt; handles things. As you note near the end of your post, this might just be&lt;br/&gt;&amp;gt; the first avenue in a long line of research to best figure out how to handle&lt;br/&gt;&amp;gt; the spam concerns introduced by onion messaging. From my PoV, it still seems&lt;br/&gt;&amp;gt; to be an open question if the same network can be _both_ a reliable&lt;br/&gt;&amp;gt; micro-payment system _and_ also a reliable arbitrary message transport&lt;br/&gt;&amp;gt; layer. I guess only time will tell...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &amp;gt; The `shared_secret_hash` field contains a BIP 340 tagged hash&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Any reason to use the tagged hash here vs just a plain ol HMAC? Under the&lt;br/&gt;&amp;gt; hood, they have a pretty similar construction [4].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1]: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-February/003498.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-February/003498.html&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-February/003498.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-February/003498.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [2]: &lt;a href=&#34;https://status.torproject.org/issues/2022-06-09-network-ddos/&#34;&gt;https://status.torproject.org/issues/2022-06-09-network-ddos/&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://status.torproject.org/issues/2022-06-09-network-ddos/&amp;gt&#34;&gt;https://status.torproject.org/issues/2022-06-09-network-ddos/&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [3]: &lt;a href=&#34;https://blog.torproject.org/stop-the-onion-denial/&#34;&gt;https://blog.torproject.org/stop-the-onion-denial/&lt;/a&gt; &lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://blog.torproject.org/stop-the-onion-denial/&amp;gt&#34;&gt;https://blog.torproject.org/stop-the-onion-denial/&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [4]: &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc2104&#34;&gt;https://datatracker.ietf.org/doc/html/rfc2104&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc2104&amp;gt&#34;&gt;https://datatracker.ietf.org/doc/html/rfc2104&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- Laolu&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Jun 29, 2022 at 1:28 AM Bastien TEINTURIER &amp;lt;bastien at acinq.fr &amp;lt;mailto:bastien at acinq.fr&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     During the recent Oakland Dev Summit, some lightning engineers got together to discuss DoS&lt;br/&gt;&amp;gt;     protection for onion messages. Rusty proposed a very simple rate-limiting scheme that&lt;br/&gt;&amp;gt;     statistically propagates back to the correct sender, which we describe in details below.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     You can also read this in gist format if that works better for you [1].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Nodes apply per-peer rate limits on _incoming_ onion messages that should be relayed (e.g.&lt;br/&gt;&amp;gt;     N/seconds with some burst tolerance). It is recommended to allow more onion messages from&lt;br/&gt;&amp;gt;     peers with whom you have channels, for example 10/seconds when you have a channel and 1/second&lt;br/&gt;&amp;gt;     when you don&amp;#39;t.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     When relaying an onion message, nodes keep track of where it came from (by using the `node_id` of&lt;br/&gt;&amp;gt;     the peer who sent that message). Nodes only need the last such `node_id` per outgoing connection,&lt;br/&gt;&amp;gt;     which ensures the memory footprint is very small. Also, this data doesn&amp;#39;t need to be persisted.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Let&amp;#39;s walk through an example to illustrate this mechanism:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     * Bob receives an onion message from Alice that should be relayed to Carol&lt;br/&gt;&amp;gt;     * After relaying that message, Bob stores Alice&amp;#39;s `node_id` in its per-connection state with Carol&lt;br/&gt;&amp;gt;     * Bob receives an onion message from Eve that should be relayed to Carol&lt;br/&gt;&amp;gt;     * After relaying that message, Bob replaces Alice&amp;#39;s `node_id` with Eve&amp;#39;s `node_id` in its&lt;br/&gt;&amp;gt;     per-connection state with Carol&lt;br/&gt;&amp;gt;     * Bob receives an onion message from Alice that should be relayed to Dave&lt;br/&gt;&amp;gt;     * After relaying that message, Bob stores Alice&amp;#39;s `node_id` in its per-connection state with Dave&lt;br/&gt;&amp;gt;     * ...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     We introduce a new message that will be sent when dropping an incoming onion message because it&lt;br/&gt;&amp;gt;     reached rate limits:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     1. type: 515 (`onion_message_drop`)&lt;br/&gt;&amp;gt;     2. data:&lt;br/&gt;&amp;gt;         * [`rate_limited`:`u8`]&lt;br/&gt;&amp;gt;         * [`shared_secret_hash`:`32*byte`]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Whenever an incoming onion message reaches the rate limit, the receiver sends `onion_message_drop`&lt;br/&gt;&amp;gt;     to the sender. The sender looks at its per-connection state to find where the message was coming&lt;br/&gt;&amp;gt;     from and relays `onion_message_drop` to the last sender, halving their rate limits with that peer.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If the sender doesn&amp;#39;t overflow the rate limit again, the receiver should double the rate limit&lt;br/&gt;&amp;gt;     after 30 seconds, until it reaches the default rate limit again.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     The flow will look like:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Alice                      Bob                      Carol&lt;br/&gt;&amp;gt;        |                         |                         |&lt;br/&gt;&amp;gt;        |      onion_message      |                         |&lt;br/&gt;&amp;gt;        |------------------------&amp;gt;|                         |&lt;br/&gt;&amp;gt;        |                         |      onion_message      |&lt;br/&gt;&amp;gt;        |                         |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;        |                         |    onion_message_drop   |&lt;br/&gt;&amp;gt;        |                         |&amp;lt;------------------------|&lt;br/&gt;&amp;gt;        |    onion_message_drop   |                         |&lt;br/&gt;&amp;gt;        |&amp;lt;------------------------|                         |&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     The `shared_secret_hash` field contains a BIP 340 tagged hash of the Sphinx shared secret of the&lt;br/&gt;&amp;gt;     rate limiting peer (in the example above, Carol):&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     * `shared_secret_hash = SHA256(SHA256(&amp;#34;onion_message_drop&amp;#34;) || SHA256(&amp;#34;onion_message_drop&amp;#34;) || sphinx_shared_secret)`&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     This value is known by the node that created the onion message: if `onion_message_drop` propagates&lt;br/&gt;&amp;gt;     all the way back to them, it lets them know which part of the route is congested, allowing them&lt;br/&gt;&amp;gt;     to retry through a different path.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Whenever there is some latency between nodes and many onion messages, `onion_message_drop` may&lt;br/&gt;&amp;gt;     be relayed to the incorrect incoming peer (since we only store the `node_id` of the _last_ incoming&lt;br/&gt;&amp;gt;     peer in our outgoing connection state). The following example highlights this:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;       Eve                       Bob                      Carol&lt;br/&gt;&amp;gt;        |      onion_message      |                         |&lt;br/&gt;&amp;gt;        |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;        |      onion_message      |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;        |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;        |      onion_message      |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;        |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;                                  |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;     Alice                       |    onion_message_drop   |&lt;br/&gt;&amp;gt;        |      onion_message      |                    &#43;----|&lt;br/&gt;&amp;gt;        |------------------------&amp;gt;|      onion_message |    |&lt;br/&gt;&amp;gt;        |                         |--------------------|---&amp;gt;|&lt;br/&gt;&amp;gt;        |                         |                    |    |&lt;br/&gt;&amp;gt;        |                         |                    |    |&lt;br/&gt;&amp;gt;        |                         |                    |    |&lt;br/&gt;&amp;gt;        |    onion_message_drop   |&amp;lt;-------------------&#43;    |&lt;br/&gt;&amp;gt;        |&amp;lt;------------------------|                         |&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     In this example, Eve is spamming but `onion_message_drop` is propagated back to Alice instead.&lt;br/&gt;&amp;gt;     However, this scheme will _statistically_ penalize the right incoming peer (with a probability&lt;br/&gt;&amp;gt;     depending on the volume of onion messages that the spamming peer is generating compared to the&lt;br/&gt;&amp;gt;     volume of legitimate onion messages).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     It is an interesting research problem to find formulas for those probabilities to evaluate how&lt;br/&gt;&amp;gt;     efficient this will be against various types of spam. We hope researchers on this list will be&lt;br/&gt;&amp;gt;     interested in looking into it and will come up with a good model to evaluate that scheme.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     To increase the accuracy of attributing `onion_message_drop`, more data could be stored in the&lt;br/&gt;&amp;gt;     future if it becomes necessary. We need more research to quantify how much accuracy would be&lt;br/&gt;&amp;gt;     gained by storing more data and making the protocol more complex.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Cheers,&lt;br/&gt;&amp;gt;     Bastien&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     [1]&lt;a href=&#34;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&#34;&gt;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&lt;/a&gt;  &amp;lt;&lt;a href=&#34;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&amp;gt&#34;&gt;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;     Lightning-dev mailing list&lt;br/&gt;&amp;gt;     Lightning-dev at lists.linuxfoundation.org &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:06:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsykqnhfuvxls2e3a8suyldeg4jawck0g4dv6fmn2hew87609q2uwqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5kwdfef</id>
    
      <title type="html">📅 Original date posted:2022-05-26 📝 Original message: Oops, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsykqnhfuvxls2e3a8suyldeg4jawck0g4dv6fmn2hew87609q2uwqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5kwdfef" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx738uxmjwqachkzaqzym2r3scqe87922vx64evx34j607zmszyqgjp8jvu&#39;&gt;nevent1q…8jvu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-26&lt;br/&gt;📝 Original message:&lt;br/&gt;Oops, sorry, I don&amp;#39;t really monitor the dev lists but once every few months so this fell off my plate :/&lt;br/&gt;&lt;br/&gt;On 4/28/22 6:11 PM, Rusty Russell wrote:&lt;br/&gt;&amp;gt; Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; writes:&lt;br/&gt;&amp;gt; OK, let&amp;#39;s step back.  Unlike Bitcoin, we can use a single sketch for&lt;br/&gt;&amp;gt; *all* peers.  This is because we *can* encode enough information that&lt;br/&gt;&amp;gt; you can get useful info from the 64 bit id, and because it&amp;#39;s expensive&lt;br/&gt;&amp;gt; to create them so you can&amp;#39;t spam.&lt;br/&gt;&lt;br/&gt;Yep, makes sense.&lt;br/&gt;&lt;br/&gt;&amp;gt; The more boutique per-peer handling we need, the further it gets from&lt;br/&gt;&amp;gt; this ideal;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The second potential thing I think you might have meant here I don&amp;#39;t see as an issue at all? You can&lt;br/&gt;&amp;gt;&amp;gt; simply...let the sketch include one channel update that you ignored? See above discussion of similar&lt;br/&gt;&amp;gt;&amp;gt; rate-limits.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; No, you need to get all the ignored ones somehow?  There&amp;#39;s so much cruft&lt;br/&gt;&amp;gt; in the sketch you can&amp;#39;t decode it.  Now you need to remember the ones&lt;br/&gt;&amp;gt; you ratelimited, and try to match other&amp;#39;s ratelimiting.&lt;br/&gt;&lt;br/&gt;Right, you&amp;#39;d end up downloading the thing you rate-limited, but only once (possibly per-peer). If &lt;br/&gt;you use the total-sync approach you&amp;#39;d download it on every sync, vs a &amp;#34;only updates&amp;#34; approach you&amp;#39;d &lt;br/&gt;do it once.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; I agree there should be *some* rough consensus, but rate-limits are a locally-enforced thing, not a&lt;br/&gt;&amp;gt;&amp;gt; global one. There will always be races and updates you reject that your peers dont, no matter the&lt;br/&gt;&amp;gt;&amp;gt; rate-limit, and while I agree we should have guidelines, we can&amp;#39;t &amp;#34;just make them the same&amp;#34; - it&lt;br/&gt;&amp;gt;&amp;gt; both doesn&amp;#39;t solve the problem and means we can&amp;#39;t change them in the future.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Sure it does!  It severly limits the set divergence to race conditions&lt;br/&gt;&amp;gt; (down to block height divergence, in practice).&lt;br/&gt;&lt;br/&gt;Huh? There&amp;#39;s always some line you draw, if an update happens right on the line (which they almost &lt;br/&gt;certainly often will because people want to update, and they&amp;#39;ll update every X hours to whatever the &lt;br/&gt;rate limit is), then ~half the network will accept the update and half won&amp;#39;t. I don&amp;#39;t see how you &lt;br/&gt;solve this problem.&lt;br/&gt;&amp;gt; Maybe.  What&amp;#39;s a &amp;#34;non-update&amp;#34; based sketch?  Some huge percentage of&lt;br/&gt;&amp;gt; gossip is channel_update, so it&amp;#39;s kind of the thing we want?&lt;br/&gt;&lt;br/&gt;Oops, maybe we&amp;#39;re on *very* different pages, here - I mean doing sketches based on &amp;#34;the things that &lt;br/&gt;I received since the last sync, ie all the gossip updates from the last hour&amp;#34; vs doing sketches &lt;br/&gt;based on &amp;#34;the things I have, ie my full gossip store&amp;#34;.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:06:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswnvjjekqhfyc5dkrmdpwwjtc8nqez9as7pr5p67lvy6v77l4uxhszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53z6q09</id>
    
      <title type="html">📅 Original date posted:2022-04-22 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswnvjjekqhfyc5dkrmdpwwjtc8nqez9as7pr5p67lvy6v77l4uxhszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53z6q09" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2fv6e3dqh7eu350tlscfa8wd87g22dkqxjt8y6syy2t9kksfc5ggmnsftk&#39;&gt;nevent1q…sftk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-22&lt;br/&gt;📝 Original message:&lt;br/&gt;On 4/21/22 7:20 PM, Rusty Russell wrote:&lt;br/&gt;&amp;gt; Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Sure, if you’re rejecting a large % of channel updates in total&lt;br/&gt;&amp;gt;&amp;gt; you’re gonna end up hitting degenerate cases, but we can consider&lt;br/&gt;&amp;gt;&amp;gt; tuning the sync frequency if that becomes an issue.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Let&amp;#39;s be clear: it&amp;#39;s a problem.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Allowing only 1 a day, ended up with 18% of channels hitting the spam&lt;br/&gt;&amp;gt; limit.  We cannot fit that many channel differences inside a set!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Perhaps Alex should post his more detailed results, but it&amp;#39;s pretty&lt;br/&gt;&amp;gt; clear that we can&amp;#39;t stay in sync with this many differences :(&lt;br/&gt;&lt;br/&gt;Right, the fact that most nodes don&amp;#39;t do any limiting at all and y&amp;#39;all have a *very* aggressive (by &lt;br/&gt;comparison) limit is going to be an issue in any context. We could set some guidelines and improve &lt;br/&gt;things, but luckily regular-update-sync bypasses some of these issues anyway - if we sync once per &lt;br/&gt;block and your limit is once per block, getting 1000 updates per block for some channel doesn&amp;#39;t &lt;br/&gt;result in multiple failures in the sync. Sure, multiple peers sending different updates for that &lt;br/&gt;channel can still cause some failures, but its still much better.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; gossip queries  is broken in at least five ways.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Naah, it&amp;#39;s perfect if you simply want to ask &amp;#34;give me updates since XXX&amp;#34;&lt;br/&gt;&amp;gt; to get you close enough on reconnect to start using set reconciliation.&lt;br/&gt;&amp;gt; This might allow us to remove some of the other features?&lt;br/&gt;&lt;br/&gt;Sure, but that&amp;#39;s *just* the &amp;#34;gossip_timestamp_filter&amp;#34; message, there&amp;#39;s several other messages and a &lt;br/&gt;whole query system that we can throw away if we just want that message :)&lt;br/&gt;&lt;br/&gt;&amp;gt; But we might end up with a gossip2 if we want to enable taproot, and use&lt;br/&gt;&amp;gt; blockheight as timestamps, in which case we could probably just support&lt;br/&gt;&amp;gt; that one operation (and maybe a direct query op).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Like eclair, we don’t bother to rate limit and don’t see any issues with it, though we will skip relaying outbound updates if we’re saturating outbound connections.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Yeah, we did as a trial, and in some cases it&amp;#39;s become limiting.  In&lt;br/&gt;&amp;gt; particular, people restarting their LND nodes once a day resulting in 2&lt;br/&gt;&amp;gt; updates per day (which, in 0.11.0, we now allow).&lt;br/&gt;&lt;br/&gt;What do you mean &amp;#34;its become limiting&amp;#34;? As in you hit some reasonably-low CPU/disk/bandwidth limit &lt;br/&gt;in doing this? We have a pretty aggressive bandwidth limit for this kinda stuff (well, indirect &lt;br/&gt;bandwidth limit) and it very rarely hits in my experience (unless the peer is very overloaded and &lt;br/&gt;not responding to pings, which is a somewhat separate thing...)&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:05:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswnz0dx7pkeqq8rx83ymja0y2rr8kzqu6w2n3t3ksmq6xape6s9lczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5444cpn</id>
    
      <title type="html">📅 Original date posted:2022-04-21 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswnz0dx7pkeqq8rx83ymja0y2rr8kzqu6w2n3t3ksmq6xape6s9lczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5444cpn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst72nqkvtxv7guv6s27w24vtuggadah5syzgf5u6g699rcevrap3s5xym9m&#39;&gt;nevent1q…ym9m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Instead of trying to make sure everyone’s gossip acceptance matches exactly, which as you point it seems like a quagmire, why not (a) do a sync on startup and (b) do syncs of the *new* things. This way you aren’t stuck staring at the same channels every time you do a sync. Sure, if you’re rejecting a large % of channel updates in total you’re gonna end up hitting degenerate cases, but we can consider tuning the sync frequency if that becomes an issue.&lt;br/&gt;&lt;br/&gt;Like eclair, we don’t bother to rate limit and don’t see any issues with it, though we will skip relaying outbound updates if we’re saturating outbound connections.&lt;br/&gt;&lt;br/&gt;&amp;gt; On Apr 14, 2022, at 17:06, Alex Myers &amp;lt;alex at endothermic.dev&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; Hello lightning developers,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I’ve been investigating set reconciliation as a means to reduce bandwidth and redundancy of gossip message propagation. This builds on some earlier work from Rusty using the minisketch library [1]. The idea is that each node will build a sketch representing it’s own gossip set. Alice’s node will encode and transmit this sketch to Bob’s node, where it will be merged with his own sketch, and the differences produced. These differences should ideally be exactly the latest missing gossip of both nodes. Due to size constraints, the set differences will necessarily be encoded, but Bob’s node will be able to identify which gossip Alice is missing, and may then transmit exactly those messages.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This process is relatively straightforward, with the caveat that the sets must otherwise match very closely (each sketch has a maximum capacity for differences.) The difficulty here is that each node and lightning implementation may have its own rules for gossip acceptance and propagation. Depending on their gossip partners, not all gossip may propagate to the entire network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Core-lightning implements rate limiting for incoming channel updates and node announcements. The default rate limit is 1 per day, with a burst of 4. I analyzed my node’s gossip over a 14 day period, and found that, of all publicly broadcasting half-channels, 18% of them fell afoul of our spam-limiting rules at least once. [2]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Picking several offending channel ids, and digging further, the majority of these appear to be flapping due to Tor or otherwise intermittent connections. Well connected nodes may be more susceptible to this due to more frequent routing attempts, and failures resulting in a returned channel update (which otherwise might not have been broadcast.) A slight relaxation of the rate limit resolves the majority of these cases.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A smaller subset of channels broadcast frequent channel updates with minor adjustments to htlc_maximum_msat and fee_proportional_millionths parameters. These nodes appear to be power users, with many channels and large balances. I assume this is automated channel management at work.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Core-Lightning has updated rate-limiting in the upcoming release to achieve a higher acceptance of incoming gossip, however, it seems that a broader discussion of rate limits may now be worthwhile. A few immediate ideas:&lt;br/&gt;&amp;gt; - A common listing of current default rate limits across lightning network implementations.&lt;br/&gt;&amp;gt; - Internal checks of RPC input to limit or warn of network propagation issues if certain rates are exceeded.&lt;br/&gt;&amp;gt; - A commonly adopted rate-limit standard.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My aim is a set reconciliation gossip type, which will use a common, simple heuristic to accept or reject a gossip message. (Think one channel update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.) See my github for my current draft. [3] This solution allows tighter consensus, yet suffers from the same problem as original anti-spam measures – it remains somewhat arbitrary. I would like to start a conversation regarding gossip propagation, channel_update and node_announcement usage, and perhaps even bandwidth goals for syncing gossip in the future (how about a million channels?) This would aid in the development of gossip set reconciliation, but could also benefit current node connection and routing reliability more generally.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Alex&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/sipa/minisketch&#34;&gt;https://github.com/sipa/minisketch&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&#34;&gt;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220421/bfb44d28/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220421/bfb44d28/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:05:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst72nqkvtxv7guv6s27w24vtuggadah5syzgf5u6g699rcevrap3szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55mexh7</id>
    
      <title type="html">📅 Original date posted:2022-04-22 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst72nqkvtxv7guv6s27w24vtuggadah5syzgf5u6g699rcevrap3szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55mexh7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ghmqy5t96x4qa60lx4sf7hlgxsaqswmzwxtj5fdw2pjv8hglpag92gzpx&#39;&gt;nevent1q…gzpx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-22&lt;br/&gt;📝 Original message:&lt;br/&gt;On 4/22/22 9:15 AM, Alex Myers wrote:&lt;br/&gt;&amp;gt; Hi Matt,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Appreciate your responses.  Hope you&amp;#39;ll bear with me as I&amp;#39;m a bit new to this.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Instead of trying to make sure everyone’s gossip acceptance matches exactly, which as you point&lt;br/&gt;&amp;gt;     it seems like a quagmire, why not (a) do a sync on startup and (b) do syncs of the *new* things.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m not opposed to this technique, and maybe it ends up as a better solution.  The rationale for not &lt;br/&gt;&amp;gt; going full Erlay approach was that it&amp;#39;s far less overhead to maintain a single sketch than to &lt;br/&gt;&amp;gt; maintain a per-peer sketch and associated state for every gossip peer.  In this way there&amp;#39;s very &lt;br/&gt;&amp;gt; little cost to adding additional gossip peers, which further encourages propagation and convergence &lt;br/&gt;&amp;gt; of the gossip network.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sure what you mean by per-node state here - I&amp;#39;d think you can implement it with a simple &lt;br/&gt;&amp;#34;list of updates that happened since time X&amp;#34; data, instead of having to maintain per-peer state.&lt;br/&gt;&lt;br/&gt;&amp;gt; IIUC Erlay&amp;#39;s design was concerned for privacy of originating nodes.  Lightning gossip is public by &lt;br/&gt;&amp;gt; nature, so I&amp;#39;m not sure we should constrain ourselves to the same design route without trying the &lt;br/&gt;&amp;gt; alternative first.&lt;br/&gt;&lt;br/&gt;Part of the design of Erlay, especially the insight of syncing updates instead of full mempools, was &lt;br/&gt;actually this precise issue - Bitcoin Core nodes differ in policy for a number of reasons &lt;br/&gt;(especially across updates), and thus syncing the full mempool will result in degenerate cases of &lt;br/&gt;trying over and over and over again to sync stuff your peer is rejecting. At least if I recall &lt;br/&gt;correctly.&lt;br/&gt;&lt;br/&gt;&amp;gt;     if we&amp;#39;re gonna add a minisketch-based sync anyway, please lets also use it for initial sync&lt;br/&gt;&amp;gt;     after restart&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This was out of the scope of what I had in mind, but I will give this some thought. I could see how &lt;br/&gt;&amp;gt; a block_height reference coupled with set reconciliation could provide some better options here. &lt;br/&gt;&amp;gt; This may not be all that difficult to shoe-horn in.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regardless of single sketch or per-peer set reconciliation, it should be easier to implement with &lt;br/&gt;&amp;gt; tighter rules on rate-limiting. (Keep in mind, the node&amp;#39;s graph can presumably be updated &lt;br/&gt;&amp;gt; independently of the gossip it rebroadcasts if desired.) As a thought experiment, if we consider a &lt;br/&gt;&amp;gt; CLN-LDK set reconciliation, and that each node is gossiping with 5 other peers in an evenly spaced &lt;br/&gt;&amp;gt; frequency, we would currently see 42.8 commonly accepted channel_updates over an average 60s window &lt;br/&gt;&amp;gt; along with 11 more updates which LDK accepts and CLN rejects (spam.)[1] Assuming the other 5 peers &lt;br/&gt;&amp;gt; have shared 5/6ths of this gossip before the CLN/LDK set reconciliation, we&amp;#39;re left with CLN seeing &lt;br/&gt;&amp;gt; 7 updates to reconcile, while LDK sees 18.  Already we&amp;#39;ve lost 60% efficiency due to lack of a &lt;br/&gt;&amp;gt; common rate-limit heuristic.&lt;br/&gt;&lt;br/&gt;I do not believe that we will ever form a strong agreement on exactly what the rate-limits should &lt;br/&gt;be. And even if we do, we still have the issue of upgrades, where a simple change to the rate-limits &lt;br/&gt;causes sync to suddenly blow up and hit degenerate cases all over the place. Unless we can make the &lt;br/&gt;sync system relatively robust against slightly different policies, I think we&amp;#39;re kinda screwed.&lt;br/&gt;&lt;br/&gt;Worse, what happens if someone sends updates at exactly the limit of the rate-limiters? Presumably &lt;br/&gt;people will do this because &amp;#34;that&amp;#39;s what the limit is and I want to send updates as often as I can &lt;br/&gt;becaux...&amp;#34;. Now you&amp;#39;ll still have similar issues, I believe.&lt;br/&gt;&lt;br/&gt;&amp;gt; I understand gossip traffic is manageable now, but I&amp;#39;m not sure it will be that long before it &lt;br/&gt;&amp;gt; becomes an issue. Furthermore, any particular set reconciliation technique would benefit from a &lt;br/&gt;&amp;gt; simple common rate-limit heuristic, not to mention originating nodes, who may not currently realize &lt;br/&gt;&amp;gt; their channel updates are being rejected by a portion of the network due to differing criteria &lt;br/&gt;&amp;gt; across implementations.&lt;br/&gt;&lt;br/&gt;Yes, I agree there is definitely a concern with differing criteria resulting in nodes not realizing &lt;br/&gt;their gossip is not propagating. I agree guidelines would be nice, but guidelines doesn&amp;#39;t solve the &lt;br/&gt;issue for sync, sadly, I think. Luckily lightning does provide a mechanism to bypass the rejection - &lt;br/&gt;send an update back with an HTLC failure. If you&amp;#39;re trying to route an HTLC and a node has new &lt;br/&gt;parameters for you, it&amp;#39;ll helpfully let you know when you try to use the old parameters.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:05:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz9mhja30n0ty3mjkjyqnxwhnz39dc5svms6xctvmh3wgak7etvsczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xun9zk</id>
    
      <title type="html">📅 Original date posted:2021-10-13 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz9mhja30n0ty3mjkjyqnxwhnz39dc5svms6xctvmh3wgak7etvsczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xun9zk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg6rwh3pf98vjmtexlptehf6mg3tw7a9y6r7hpl30clxzkdrfqtkqmhhxya&#39;&gt;nevent1q…hxya&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-13&lt;br/&gt;📝 Original message:&lt;br/&gt;On 10/12/21 22:08, Andrés G. Aragoneses wrote:&lt;br/&gt;&amp;gt; Hello Matt, can you clarify what you mean with this particular paragraph?:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     But for some reason those pesky users keep wanting to use lightning for tips, or at least accept&lt;br/&gt;&amp;gt;     payment on their phones without keeping them unlocked with the lightning app open on the foreground&lt;br/&gt;&amp;gt;     24/7.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So the use case here is more narrow? You mean that the recipient is a mobile user that has his phone &lt;br/&gt;&amp;gt; locked?&lt;br/&gt;&amp;gt; Just so I understand better what the problem is.&lt;br/&gt;&lt;br/&gt;Yes, but not just locked, just &amp;#34;doesn&amp;#39;t have the lightning app open and in the foreground when a &lt;br/&gt;payment comes in&amp;#34;.  See this paragraph:&lt;br/&gt;&lt;br/&gt;&amp;gt;          Several lightning apps do this today, and its somewhat of a stop-gap but does help. On&lt;br/&gt;&amp;gt;     platforms&lt;br/&gt;&amp;gt;     where the app gets some meager CPU time in response to a notification, this can even fully solve&lt;br/&gt;&amp;gt;     the&lt;br/&gt;&amp;gt;     problem by claiming the HTLC in response to the notification pushed out-of-band. Sadly, the refrain&lt;br/&gt;&amp;gt;     I&amp;#39;ve heard repeatedly is, these days, on both Android and especially iOS, you can&amp;#39;t even rely on a&lt;br/&gt;&amp;gt;     microsecond of CPU time in response to a notification. The OS fully expects your app to run code&lt;br/&gt;&amp;gt;     only when its on and in the foreground, unless you&amp;#39;re a VoIP app you&amp;#39;re screwed. Relying on the&lt;br/&gt;&amp;gt;     user&lt;br/&gt;&amp;gt;     to open the app immediately when they receive a notification is...fine, I guess, absent a better&lt;br/&gt;&amp;gt;     idea it seems like the best we&amp;#39;ve got today, but I&amp;#39;m not sure you&amp;#39;d find a UX designer who would&lt;br/&gt;&amp;gt;     *suggest* this :).
    </content>
    <updated>2023-06-09T15:04:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqdwfwaqmv37l4pf72q8rtn3d4r67zsd8852mrwf5xpaq63rkstqqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zvv6vp</id>
    
      <title type="html">📅 Original date posted:2021-08-16 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqdwfwaqmv37l4pf72q8rtn3d4r67zsd8852mrwf5xpaq63rkstqqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zvv6vp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs24av8p3gjf6k4y9l3wgh0ux0sgy5l6dtx5ayxrffs2dny2yx9e8s452pd8&#39;&gt;nevent1q…2pd8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-16&lt;br/&gt;📝 Original message:&lt;br/&gt;Dropped a number of replies to which the reply would otherwise be &amp;#34;see above&amp;#34;.&lt;br/&gt;&lt;br/&gt;On 8/16/21 00:00, Anthony Towns wrote:&lt;br/&gt;&amp;gt; On Sun, Aug 15, 2021 at 10:21:52PM -0400, Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt; On 8/15/21 22:02, Anthony Towns wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; In&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; one particular class of applicable routing algorithms you could use for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; lightning routing having a base fee makes the algorithm intractably slow,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I don&amp;#39;t think of that as the problem, but rather as the base fee having&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a multiplicative effect as you split payments.&lt;br/&gt;&amp;gt;&amp;gt; Yes, matching the real-world costs of forwarding an HTLC.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Actually, no, not at all.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The base&#43;proportional fees paid only on success roughly match the *value*&lt;br/&gt;&amp;gt; of forwarding an HTLC, they don&amp;#39;t match the costs particularly well&lt;br/&gt;&amp;gt; at all.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Why not? Because the costs are incurred on failed HTLCs as well, and&lt;br/&gt;&amp;gt; also depend on the time a HTLC lasts, and also vary heavily depending&lt;br/&gt;&amp;gt; on how many other simultaneous HTLCs there are.&lt;br/&gt;&lt;br/&gt;Sure, indeed, there&amp;#39;s some additional costs which are not covered by failed HTLCs, nor incorporate the time the HTLC &lt;br/&gt;slot was used. But that wasn&amp;#39;t my argument - my argument was that base &#43; proportional is a much, much closer match for &lt;br/&gt;the costs of a node barring clever-er solutions around HTLC-slot-time-used. Dropping base fee makes the whole situation &lt;br/&gt;a good chunk *worse*.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Yes. You have to pay the cost of a node. If we&amp;#39;re really worried about this,&lt;br/&gt;&amp;gt;&amp;gt; we should be talking about upfront fees and/or refunds on HTLC fulfillment,&lt;br/&gt;&amp;gt;&amp;gt; not removing the fees entirely.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (I don&amp;#39;t believe either of those are the right approach, but based on&lt;br/&gt;&amp;gt; previous discussions, I don&amp;#39;t think anyone&amp;#39;s going to realise I&amp;#39;m right&lt;br/&gt;&amp;gt; until I implement it and prove it, so *shrug*)&lt;br/&gt;&lt;br/&gt;I think I agree, but I think they may currently be better than any *other* proposal, not that they&amp;#39;re particularly good.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; The cost to nodes is largely [...]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The cost to nodes is almost entirely the opportunity cost of not being&lt;br/&gt;&amp;gt; able to accept other txs that would come in afterwards and would pay&lt;br/&gt;&amp;gt; higher fees.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And all those costs can be captured equally well (or badly) by just&lt;br/&gt;&amp;gt; setting a proportional fee and a minimum payment value. I don&amp;#39;t know why&lt;br/&gt;&amp;gt; you keep ignoring that point.&lt;br/&gt;&lt;br/&gt;I didn&amp;#39;t ignore this, I just disagree, and I&amp;#39;m not entirely sure why you&amp;#39;re ignoring the points I made to that effect :).&lt;br/&gt;&lt;br/&gt;In all seriousness, I&amp;#39;m entirely unsure why you think proportional is just as good? As you note, the cost for nodes is a &lt;br/&gt;function of the opportunity cost of the capital, and opportunity cost of the HTLC slots. Lets say as a routing node I &lt;br/&gt;decide that the opportunity cost of one of my HTLC slots is generally 1 sat per second, and the average HTLC is &lt;br/&gt;fulfilled in one second. Why is it that a proportional fee captures this &amp;#34;equally well&amp;#34;?!&lt;br/&gt;&lt;br/&gt;Yes, you could amortize it, but that doesn&amp;#39;t make it &amp;#34;equally&amp;#34; good, and there are semi-serious proposals to start &lt;br/&gt;ignoring nodes that *dont* set their fees to some particular structure in routing decisions. Sure, nodes can do what &lt;br/&gt;they want, but its kinda absurd to suggest that this is a perfectly fine thing to do absent a somewhat compelling &lt;br/&gt;reason. This goes doubly because deploying such things significantly will mean we cannot do future protocol changes &lt;br/&gt;which may better capture the time-value of node resources!&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Additionally, I don&amp;#39;t think HTLC slot usage needs to be kept as a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; limitation after we switch to eltoo;&lt;br/&gt;&amp;gt;&amp;gt; The HTLC slot limit is to keep transactions broadcastable. I don&amp;#39;t see why&lt;br/&gt;&amp;gt;&amp;gt; this would change, you still get an output for each HTLC on the latest&lt;br/&gt;&amp;gt;&amp;gt; commitment in eltoo, AFAIU.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; eltoo gives us the ability to have channel factories....&lt;br/&gt;&lt;br/&gt;That doesn&amp;#39;t solve the issue at all - you still have a ton of transactions and transaction outputs and spends thereof to &lt;br/&gt;put on the chain in the case of a closure with pending HTLCs. In fact, most nodes today enforce a lower limit than the &lt;br/&gt;400-some-odd HTLCs that represent the transaction standardness limit, because 100KB transactions are stupid impractical.&lt;br/&gt;&lt;br/&gt;&amp;gt; (By &amp;#34;any time soon&amp;#34; I mean, I could see software defaults changing if&lt;br/&gt;&amp;gt; over 50% of the network deliberately switched to zero base fees and found&lt;br/&gt;&amp;gt; it worked fine; and I could see deprecating non-zero fees if that ended&lt;br/&gt;&amp;gt; up with 90% of the network on zero base fees, no good reasons for node&lt;br/&gt;&amp;gt; operators wanting to stick with running non-zero base fees, and the&lt;br/&gt;&amp;gt; experimental algos that relied on zero base fees being significantly&lt;br/&gt;&amp;gt; easier to maintain or faster/better)&lt;br/&gt;&lt;br/&gt;What is your definition of &amp;#34;works fine&amp;#34; here? In today&amp;#39;s nearly-entirely-altruistic-routing-node network, we could &lt;br/&gt;probably entirely drop the routing fees and things would &amp;#34;work fine&amp;#34;. That doesn&amp;#39;t make it a good idea for the long-term &lt;br/&gt;health of the network.&lt;br/&gt;&lt;br/&gt;My suggestion is quite simple - that the software vendors wishing to rely on these types of algorithms *first* do the &lt;br/&gt;legwork to see what other ideas can be explored before jumping to &amp;#34;ignore all the nodes who&amp;#39;ve decided their fees are &lt;br/&gt;X&amp;#34;, because I think *that* is pretty bad idea for the long-term health of the network. I even suggested several areas of &lt;br/&gt;future research for folks to look into before we get to the point of in any way seriously relying on routing algorithms &lt;br/&gt;that constrain our ability to adapt fees in the future.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T15:03:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfmxuclhlnmxup5kauw4eezch6je42m9wl2vyx9tlu67u3jldktlczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5l4gjtn</id>
    
      <title type="html">📅 Original date posted:2021-08-15 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfmxuclhlnmxup5kauw4eezch6je42m9wl2vyx9tlu67u3jldktlczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5l4gjtn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs922khcprxd5v89pn5wuwk75fpmvecrf9kzmkyc3qa7ppflleugycylqmpq&#39;&gt;nevent1q…qmpq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-15&lt;br/&gt;📝 Original message:&lt;br/&gt;On 8/15/21 22:02, Anthony Towns wrote:&lt;br/&gt;&amp;gt;&amp;gt; In&lt;br/&gt;&amp;gt;&amp;gt; one particular class of applicable routing algorithms you could use for&lt;br/&gt;&amp;gt;&amp;gt; lightning routing having a base fee makes the algorithm intractably slow,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think of that as the problem, but rather as the base fee having&lt;br/&gt;&amp;gt; a multiplicative effect as you split payments.&lt;br/&gt;&lt;br/&gt;Yes, matching the real-world costs of forwarding an HTLC.&lt;br/&gt;&lt;br/&gt;&amp;gt; If every channel has the same (base,proportional) fee pair, and send a&lt;br/&gt;&amp;gt; payment along a single path, you&amp;#39;re paying n*(base&#43;k*proportional). If&lt;br/&gt;&amp;gt; you split the payment, and send half of it one way, and half the other&lt;br/&gt;&amp;gt; way, you&amp;#39;re paying n*(2*base&#43;k*proportional). If you split the payment&lt;br/&gt;&amp;gt; four ways, you&amp;#39;re paying n*(4*base&#43;k*proportional). Where&amp;#39;s the value&lt;br/&gt;&amp;gt; to the network in penalising payment splitting?&lt;br/&gt;&lt;br/&gt;Yes. You have to pay the cost of a node. If we&amp;#39;re really worried about this, we should be talking about upfront fees &lt;br/&gt;and/or refunds on HTLC fulfillment, not removing the fees entirely.&lt;br/&gt;&lt;br/&gt;&amp;gt; Being denominated in sats, the base fee also changes in value as the&lt;br/&gt;&amp;gt; bitcoin price changes -- c-lightning dropped the base fee to 1sat (from&lt;br/&gt;&amp;gt; 546 sat!) in Jan 2018, but the value of 1sat has increased about 4x&lt;br/&gt;&amp;gt; since then, and it seems unlikely the fixed costs of a successful HTLC&lt;br/&gt;&amp;gt; payment have likewise increased 4x.  Proportional fees deal with this&lt;br/&gt;&amp;gt; factor automatically, of course.&lt;br/&gt;&lt;br/&gt;This isn&amp;#39;t a protocol issue, implementations can automate this without issue.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; There&amp;#39;s real cost to distorting the fee structures on the network away from&lt;br/&gt;&amp;gt;&amp;gt; the costs of node operators,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That&amp;#39;s precisely what the base fee is already doing. Yes, we need some&lt;br/&gt;&amp;gt; other way of charging fees to prevent using up too many slots or having&lt;br/&gt;&amp;gt; transactions not fail in a timely manner, but the base fee does not&lt;br/&gt;&amp;gt; do that.&lt;br/&gt;&lt;br/&gt;Huh? For values much smaller than a node&amp;#39;s liquidity, the cost for nodes is (mostly) a function of HTLCs, not the value. &lt;br/&gt;The cost to nodes is largely (a) the forever-storage that exists, roughly, per HTLC ever on a channel, (b) the HTLC &lt;br/&gt;slots which are highly limited for technical reasons per channel, (c) the disk/cpu/network/etc operations per HTLC on an &lt;br/&gt;channel, (d) the liquidity required per node. I&amp;#39;d argue (c) is basically zero in any realistic context, (a) is pretty &lt;br/&gt;low, but could be non-zero in some cases, so you really just have (b) and (d). For many HTLCs forwarded today, the &lt;br/&gt;liquidity on a channel isn&amp;#39;t much, so I&amp;#39;d argue for many HTLCs forwarded today per-payment costs mirror the cost to a &lt;br/&gt;node much, much, much, much better than some proportional fees?&lt;br/&gt;&lt;br/&gt;I&amp;#39;m really not sure where you&amp;#39;re coming from here.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Imagine we find some great way to address HTLC slot flooding/DoS attacks (or&lt;br/&gt;&amp;gt;&amp;gt; just chose to do it in a not-great way) by charging for HTLC slot usage, now&lt;br/&gt;&amp;gt;&amp;gt; we can&amp;#39;t fix a critical DoS issue because the routing algorithms we deployed&lt;br/&gt;&amp;gt;&amp;gt; can&amp;#39;t handle the new costing.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think that&amp;#39;s true. The two things we don&amp;#39;t charge for that can&lt;br/&gt;&amp;gt; be abused by probing spam are HTLC slot usage and channel balance usage;&lt;br/&gt;&amp;gt; both are problems only in proportion to the amount of time they&amp;#39;re held&lt;br/&gt;&amp;gt; open, and the latter is also only a problem proportional to the value&lt;br/&gt;&amp;gt; being reserved. [0]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Additionally, I don&amp;#39;t think HTLC slot usage needs to be kept as a&lt;br/&gt;&amp;gt; limitation after we switch to eltoo;&lt;br/&gt;&lt;br/&gt;The HTLC slot limit is to keep transactions broadcastable. I don&amp;#39;t see why this would change, you still get an output &lt;br/&gt;for each HTLC on the latest commitment in eltoo, AFAIU.&lt;br/&gt;&lt;br/&gt;&amp;gt; and in the meantime, I think it can&lt;br/&gt;&amp;gt; be better managed via adjusting the min_htlc_amount -- at least for the&lt;br/&gt;&amp;gt; scenario where problems are being caused by legitimate payment attempts,&lt;br/&gt;&amp;gt; which is also the only place base fee can help.&lt;br/&gt;&lt;br/&gt;Sure, we could also shift towards upfront fees or similar solutions, though, and that was my point - if we start &lt;br/&gt;dropping absolute fee amounts now in order to make some given routing algorithm work, we box ourselves in here, and &lt;br/&gt;quite needlessly given no one has (yet) done the legwork to show that we even *need* to box ourselves in.&lt;br/&gt;&lt;br/&gt;&amp;gt; [0] (Well, ln-penalty&amp;#39;s requirement to permanently store HTLC information&lt;br/&gt;&amp;gt;       in order to apply the penalty is in some sense a constant&lt;br/&gt;&amp;gt;       cost, however the impact is also proportional to value, and for&lt;br/&gt;&amp;gt;       sufficiently low value HTLCs can be ignored entirely if the HTLC&lt;br/&gt;&amp;gt;       isn&amp;#39;t included in the channel commitment)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Instead, we should investigate how we can&lt;br/&gt;&amp;gt;&amp;gt; apply the ideas here with the more complicated fee structures we have.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Fee structures should be *simple* not complicated.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I mean, it&amp;#39;s kind of great that we started off complicated -- if it&lt;br/&gt;&amp;gt; turns out base fee isn&amp;#39;t necessary, it&amp;#39;s easy to just set it to zero;&lt;br/&gt;&amp;gt; if we didn&amp;#39;t have it, but needed it, it would be much more annoying to&lt;br/&gt;&amp;gt; add it in later.&lt;br/&gt;&lt;br/&gt;Fee structures should also match reality, and allow node operators sufficient flexibility to capture their costs. I &lt;br/&gt;think we have a design that does so quite well - its pretty simple, there&amp;#39;s only two knobs, but the two knobs capture &lt;br/&gt;exactly the two broad categories of costs a node operator has.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Color me an optimist, but I&amp;#39;m quite confident with sufficient elbow grease&lt;br/&gt;&amp;gt;&amp;gt; and heuristics we can get 95% of the way there. We can and should revisit&lt;br/&gt;&amp;gt;&amp;gt; these conversations if such exploration is done and we find that its not&lt;br/&gt;&amp;gt;&amp;gt; possible, but until then this all feels incredibly premature.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Depends; I don&amp;#39;t think it makes sense to try to ban nodes that don&amp;#39;t have&lt;br/&gt;&amp;gt; a base fee of zero or anything, but random people on twitter advocating&lt;br/&gt;&amp;gt; that node operators should set it to zero and just worry about optimising&lt;br/&gt;&amp;gt; via the proportional fee and the min htlc amount seems fine.&lt;br/&gt;&lt;br/&gt;Sure, the great thing about today is because the protocol exposes decent knobs operators can tune their fee structures &lt;br/&gt;any way they want, providing competition and multiple paths to nodes with potentially very divergent fees depending on &lt;br/&gt;the type of payment. Absent liquidity limits, this should provide better service for all types of payments - routing &lt;br/&gt;them to nodes that will support those types of payments!&lt;br/&gt;&lt;br/&gt;&amp;gt; For an experimental plugin that aggressively splits payments up, I think&lt;br/&gt;&amp;gt; either ignoring channels with &amp;gt;0 base fee entirely, or deciding that&lt;br/&gt;&amp;gt; you&amp;#39;re happy to spend a total of X sats on base fees, and then ignoring&lt;br/&gt;&amp;gt; channels whose base fee is greater than X/paths/path-length sats is fine.&lt;br/&gt;&lt;br/&gt;Sure, experimental plugins can do whatever they want!&lt;br/&gt;&lt;br/&gt;&amp;gt; But long term, I also think that the base fee is an entirely unhelpful&lt;br/&gt;&amp;gt; complication that will eventually just be hardcoded to zero by everyone,&lt;br/&gt;&amp;gt; and eventually channels that propose non-zero base fees won&amp;#39;t even be&lt;br/&gt;&amp;gt; gossiped. I don&amp;#39;t expect that to happen any time soon though.&lt;br/&gt;&lt;br/&gt;I very strongly disagree, as discussed, and am left highly dubious that it is a practical complication in any case.
    </content>
    <updated>2023-06-09T15:03:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs276494uk7nlk3pmqct2dqltq8cr94skz0x8emahpn8w43nshuwyczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ppnn8w</id>
    
      <title type="html">📅 Original date posted:2021-08-15 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs276494uk7nlk3pmqct2dqltq8cr94skz0x8emahpn8w43nshuwyczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ppnn8w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy4adf0vcrwtzjaq4fg8vresw2kk2zajeujaw80y38mwg2pz20q8swwdh45&#39;&gt;nevent1q…dh45&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Thanks, AJ, for kicking off the thread.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m frankly still very confused why we&amp;#39;re having these conversations now. In one particular class of applicable routing &lt;br/&gt;algorithms you could use for lightning routing having a base fee makes the algorithm intractably slow, but:&lt;br/&gt;&lt;br/&gt;a) to my knowledge, no one has (yet) done any follow-on work to investigate pulling many of the same heuristics Rene et &lt;br/&gt;al use in a Dijkstras/A* algorithm with multiple passes or generating multiple routes in the same pass to see whether &lt;br/&gt;you can emulate the results in a faster algorithm without the drawbacks here,&lt;br/&gt;&lt;br/&gt;b) to my knowledge, no one has (yet) done any follow-on work to investigate mapping the base fee to other, more &lt;br/&gt;flow-based-routing-compatible numbers, eg you could convert the base fee to a minimum fee by increasing the &amp;#34;effective&amp;#34; &lt;br/&gt;proportional fees. From what others have commented, this may largely &amp;#34;solve&amp;#34; the issue.&lt;br/&gt;&lt;br/&gt;c) to my knowledge, no one has (yet) done any follow-on work to analyze where the proposed algorithm may be most optimal &lt;br/&gt;in the HTLC-value&amp;lt;-&amp;gt;channel liquidity ratio ranges. We may find that the proposed algorithm only provides materially &lt;br/&gt;better routing when the HTLC value approaches X% of common network channel liquidity, allowing us to only use it for &lt;br/&gt;large-value payments where we can almost ignore the base fees entirely.&lt;br/&gt;&lt;br/&gt;There&amp;#39;s real cost to distorting the fee structures on the network away from the costs of node operators, especially as &lt;br/&gt;we move towards requiring and using Real (tm) amounts of capital on routing nodes. If we&amp;#39;re relying purely on hobbyists &lt;br/&gt;forever who are operating out of goodwill, we should just remove all fees. If we think Lightning is going to involve &lt;br/&gt;capital with real opportunity cost, matching fees to the costs is important, or at least important enough that we &lt;br/&gt;shouldn&amp;#39;t throw it away after one (pretty great) paper and limited further analysis.&lt;br/&gt;&lt;br/&gt;Imagine we find some great way to address HTLC slot flooding/DoS attacks (or just chose to do it in a not-great way) by &lt;br/&gt;charging for HTLC slot usage, now we can&amp;#39;t fix a critical DoS issue because the routing algorithms we deployed can&amp;#39;t &lt;br/&gt;handle the new costing. Instead, we should investigate how we can apply the ideas here with the more complicated fee &lt;br/&gt;structures we have.&lt;br/&gt;&lt;br/&gt;Color me an optimist, but I&amp;#39;m quite confident with sufficient elbow grease and heuristics we can get 95% of the way &lt;br/&gt;there. We can and should revisit these conversations if such exploration is done and we find that its not possible, but &lt;br/&gt;until then this all feels incredibly premature.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 8/14/21 21:00, Anthony Towns wrote:&lt;br/&gt;&amp;gt; Hey *,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There&amp;#39;s been discussions on twitter and elsewhere advocating for&lt;br/&gt;&amp;gt; setting the BOLT#7 fee_base_msat value [0] to zero. I&amp;#39;m just writing&lt;br/&gt;&amp;gt; this to summarise my understanding in a place that&amp;#39;s able to easily be&lt;br/&gt;&amp;gt; referenced later.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Setting the base fee to zero has a couple of benefits:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   - it means you only have one value to optimise when trying to collect&lt;br/&gt;&amp;gt;     the most fees, and one-dimensional optimisation problems are&lt;br/&gt;&amp;gt;     obviously easier to write code for than two-dimensional optimisation&lt;br/&gt;&amp;gt;     problems&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   - when finding a route, if all the fees on all the channels are&lt;br/&gt;&amp;gt;     proportional only, you&amp;#39;ll never have to worry about paying more fees&lt;br/&gt;&amp;gt;     just as a result of splitting a payment; that makes routing easier&lt;br/&gt;&amp;gt;     (see [1])&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So what&amp;#39;s the cost? The cost is that there&amp;#39;s no longer a fixed minimum&lt;br/&gt;&amp;gt; fee -- so if you try sending a 1sat payment you&amp;#39;ll pay 0.1% of the fee&lt;br/&gt;&amp;gt; to send a 1000sat payment, and there may be fixed costs that you have&lt;br/&gt;&amp;gt; in routing payments that you&amp;#39;d like to be compensated for (eg, the&lt;br/&gt;&amp;gt; computational work to update channel state, the bandwith to forward the&lt;br/&gt;&amp;gt; tx, or the opportunity cost for not being able to accept another htlc if&lt;br/&gt;&amp;gt; you&amp;#39;ve hit your max htlcs per channel limit).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; But there&amp;#39;s no need to explicitly separate those costs the way we do&lt;br/&gt;&amp;gt; now; instead of charging 1sat base fee and 0.02% proportional fee,&lt;br/&gt;&amp;gt; you can instead just set the 0.02% proportional fee and have a minimum&lt;br/&gt;&amp;gt; payment size of 5000 sats (htlc_minimum_msat=5e6, ~$2), since 0.02%&lt;br/&gt;&amp;gt; of that is 1sat. Nobody will be asking you to route without offering a&lt;br/&gt;&amp;gt; fee of at least 1sat, but all the optimisation steps are easier.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; You could go a step further, and have the node side accept smaller&lt;br/&gt;&amp;gt; payments despite the htlc minimum setting: eg, accept a 3000 sat payment&lt;br/&gt;&amp;gt; provided it pays the same fee that a 5000 sat payment would have. That is,&lt;br/&gt;&amp;gt; treat the setting as minimum_fee=1sat, rather than minimum_amount=5000sat;&lt;br/&gt;&amp;gt; so the advertised value is just calculated from the real settings,&lt;br/&gt;&amp;gt; and that nodes that want to send very small values despite having to&lt;br/&gt;&amp;gt; pay high rates can just invert the calculation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think something like this approach also makes sense when your channel&lt;br/&gt;&amp;gt; becomes overloaded; eg if you have x HTLC slots available, and y channel&lt;br/&gt;&amp;gt; capacity available, setting a minimum payment size of something like&lt;br/&gt;&amp;gt; y/2/x**2 allows you to accept small payments (good for the network)&lt;br/&gt;&amp;gt; when you&amp;#39;re channel is not busy, but reserves the last slots for larger&lt;br/&gt;&amp;gt; payments so that you don&amp;#39;t end up missing out on profits because you&lt;br/&gt;&amp;gt; ran out of capacity due to low value spam.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Two other aspects related to this:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; At present, I think all the fixed costs are also incurred even when&lt;br/&gt;&amp;gt; a htlc fails, so until we have some way of charging failing txs for&lt;br/&gt;&amp;gt; incurring those costs, it seems a bit backwards to penalise successful&lt;br/&gt;&amp;gt; txs who at least pay a proportional fee for the same thing. Until we&amp;#39;ve&lt;br/&gt;&amp;gt; got a way of handling that, having zero base fee seems at least fair.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Lower value HTLCs don&amp;#39;t need to be included in the commitment transaction&lt;br/&gt;&amp;gt; (if they&amp;#39;re below the dust level, they definitely shouldn&amp;#39;t be included,&lt;br/&gt;&amp;gt; and if they&amp;#39;re less than 1sat they can&amp;#39;t be included), and as such don&amp;#39;t&lt;br/&gt;&amp;gt; incur all the same fixed costs that HTLCs that are committed too do.&lt;br/&gt;&amp;gt; Having different base fees for microtransactions that incur fewer costs&lt;br/&gt;&amp;gt; would be annoying; so having that be &amp;#34;amortised&amp;#34; into the proportional&lt;br/&gt;&amp;gt; fee might help there too.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think eltoo can help in two ways by reducing the fixed costs: you no&lt;br/&gt;&amp;gt; longer need to keep HTLC information around permanently, and if you do&lt;br/&gt;&amp;gt; a multilevel channel factory setup, you can probably remove the ~400&lt;br/&gt;&amp;gt; HTLCs per channel at any one time limit. But there&amp;#39;s still other fixed&lt;br/&gt;&amp;gt; costs, so I think that would just lower the fixed costs, not remove them&lt;br/&gt;&amp;gt; altogether and isn&amp;#39;t a fundamental change.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think the fixed costs for forwarding a HTLC are very small; something&lt;br/&gt;&amp;gt; like:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     0.02sats -- cost of permanently storing the HTLC info&lt;br/&gt;&amp;gt;                 (100 bytes, $500/TB/year, 1% discount rate)&lt;br/&gt;&amp;gt;     0.04sats -- compute and bandwidth cost for updating an HTLC ($40/month&lt;br/&gt;&amp;gt;                 at linode, 1 second of compute)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The opportunity cost of having HTLC slots or Bitcoin locked up until&lt;br/&gt;&amp;gt; the HTLC succeeds/fails could be much more significant, though.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#the-channel_update-message&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#the-channel_update-message&lt;/a&gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://basefee.ln.rene-pickhardt.de/&#34;&gt;https://basefee.ln.rene-pickhardt.de/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T15:03:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8jwckz245k2yw9ckxvv0zr3jwf63kvcxty3gywstyskcc2574leqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5khv9f7</id>
    
      <title type="html">📅 Original date posted:2021-04-24 📝 Original message: The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8jwckz245k2yw9ckxvv0zr3jwf63kvcxty3gywstyskcc2574leqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5khv9f7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqwa7278xtvvnwlh7cswnn40zrgrm7jpajflt5kcgx0zq8agz3ydgngz289&#39;&gt;nevent1q…z289&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-24&lt;br/&gt;📝 Original message:&lt;br/&gt;The update_fee message does not, as far as I recall, change the dust limit for outputs in a channel (though I’ve suggested making such a change).&lt;br/&gt;&lt;br/&gt;&amp;gt; On Apr 23, 2021, at 12:24, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; Hi Eugene,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The reason dust HTLCs count for the 483 HTLC limit is because of `update_fee`.&lt;br/&gt;&amp;gt; If you don&amp;#39;t count them and exceed the 483 HTLC limit, you can&amp;#39;t lower the fee anymore&lt;br/&gt;&amp;gt; because some HTLCs that were previously dust won&amp;#39;t be dust anymore and you may end&lt;br/&gt;&amp;gt; up with more than 483 HTLC outputs in your commitment, which opens the door to other&lt;br/&gt;&amp;gt; kinds of attacks.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is the first issue that comes to mind, but there may be other drawbacks if we dig into&lt;br/&gt;&amp;gt; this enough with an attacker&amp;#39;s mindset.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Le ven. 23 avr. 2021 à 17:58, Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt; I propose a simple mitigation to increase the capital requirement of channel-jamming attacks. This would prevent an unsophisticated attacker with low capital from jamming a target channel.  It seems to me that this is a *free* mitigation without any downsides (besides code-writing), so I&amp;#39;d like to hear other opinions.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; In a commitment transaction, we trim dust HTLC outputs.  I believe that the reason for the 483 HTLC limit each side has in the spec is to prevent commitment tx&amp;#39;s from growing unreasonably large, and to ensure they are still valid tx&amp;#39;s that can be included in a block.  If we don&amp;#39;t include dust HTLCs in this calculation, since they are not on the commitment tx, we still allow 483 (x2) non-dust HTLCs to be included on the commitment tx.  There could be a configurable limit on the number of outstanding dust HTLCs, but the point is that it doesn&amp;#39;t affect the non-dust throughput of the channel.  This raises the capital requirement of channel-jamming so that each HTLC must be non-dust, rather than spamming 1 sat payments.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Interested in others&amp;#39; thoughts.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Eugene (Crypt-iQ)&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210424/b09dc276/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210424/b09dc276/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:02:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxshsnukvdeyvm5vg4f5x225ngadkrx995f2khvcd8wu7wqxd4whqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5tmuecv</id>
    
      <title type="html">📅 Original date posted:2020-04-23 📝 Original message: Great ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxshsnukvdeyvm5vg4f5x225ngadkrx995f2khvcd8wu7wqxd4whqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5tmuecv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr2dp47znrke27sh2mqyljdfudv5y352acf4rz9rc2znkl3cuhq6q7aukys&#39;&gt;nevent1q…ukys&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-04-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Great summary, a few notes inline.&lt;br/&gt;&lt;br/&gt;&amp;gt; On Apr 22, 2020, at 21:50, ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿Good morning lists et al,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Let me try to summarize things a little:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Suppose we have a forwarding payment A-&amp;gt;B-&amp;gt;C.&lt;br/&gt;&amp;gt; * Suppose B does not want to maintain a mempool and is running in `blocksonly` mode to reduce operational costs.&lt;br/&gt;&lt;br/&gt;Quick point of clarification, due to the mempool lacking a consensus system (that’s the whole point, after all :p), there are several reasons to that just running a full node/having a mempool isn’t sufficient.&lt;br/&gt;&lt;br/&gt;&amp;gt; * C triggers B somehow dropping the B&amp;lt;-&amp;gt;C channel, such as by sending an `error` message, which will usually cause the other side to drop the channel onchain using its commitment transaction.&lt;br/&gt;&amp;gt; * The dropped B&amp;lt;-&amp;gt;C channel has an HTLC (that was set up during the A-&amp;gt;B-&amp;gt;C forwarding).&lt;br/&gt;&amp;gt; * The HTLC, being used in a Poon-Dryja channel, actually has the following contract text:&lt;br/&gt;&amp;gt; * The fund may be claimed by either of these clauses:&lt;br/&gt;&amp;gt; * C can claim, if C shows the preimage of some hash H (hashlock branch).&lt;br/&gt;&amp;gt; * B and C must agree, and claim after time L (timelock branch).&lt;br/&gt;&amp;gt; * B holds a signature from C that can claim the timelock branch of the HTLC, for a transaction that spends to an output with an `OP_CHECKSEQUENCEVERIFY`.&lt;br/&gt;&amp;gt; * The signature is `SIGHASH_ALL`, so the transaction has a fixed feerate.&lt;br/&gt;&amp;gt; * C can &amp;#34;pin&amp;#34; the HTLC output by spending using the hashlock branch, and creating a large fee, low fee-rate (tree of) transactions.&lt;br/&gt;&lt;br/&gt;Another: this is the simplest example. There are also games around the package size limits if I recall correctly.&lt;br/&gt;&lt;br/&gt;&amp;gt; * As it is a low fee-rate, miners have no incentive to put this in a block, especially if unrelated higher-fee-rate transactions exist that would earn them more money.&lt;br/&gt;&amp;gt; * Even in a full RBF universe, because of the anti-DoS mempool rules, B cannot evict this pinned transaction by just bidding up the feerate.&lt;br/&gt;&amp;gt; * A replacing transaction cannot evict alternatives unless its absolute fee is greater than the absolute fee of the alternative.&lt;br/&gt;&amp;gt; * The pinning transaction has a high fee, but is blockspace-wasteful, so it is:&lt;br/&gt;&amp;gt;   * Undesirable to mine (low feerate).&lt;br/&gt;&amp;gt;   * Difficult to evict (high fee).&lt;br/&gt;&amp;gt; * Thus, B is unable to get its timelock-branch transaction in the mempools of miners.&lt;br/&gt;&amp;gt; * C waits until the A-&amp;gt;B HTLC times out, then:&lt;br/&gt;&amp;gt; * C directly contacts miners with an out-of-band proposal to replace its transaction with an alternative that is much smaller and has a low fee, but much better feerate.&lt;br/&gt;&lt;br/&gt;Or they can just wait. For example in today’s mempool it would not be strange for a transaction at 1 sat/vbyte to wait a day but eventually confirm.&lt;br/&gt;&lt;br/&gt;&amp;gt; * Miners, being economically rational, accept this proposal and include this in a block.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The proposal by Matt is then:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The hashlock branch should instead be:&lt;br/&gt;&amp;gt; * B and C must agree, and show the preimage of some hash H (hashlock branch).&lt;br/&gt;&amp;gt; * Then B and C agree that B provides a signature spending the hashlock branch, to a transaction with the outputs:&lt;br/&gt;&amp;gt; * Normal payment to C.&lt;br/&gt;&amp;gt; * Hook output to B, which B can use to CPFP this transaction.&lt;br/&gt;&amp;gt; * Hook output to C, which C can use to CPFP this transaction.&lt;br/&gt;&amp;gt; * B can still (somehow) not maintain a mempool, by:&lt;br/&gt;&amp;gt; * B broadcasts its timelock transaction.&lt;br/&gt;&amp;gt; * B tries to CPFP the above hashlock transaction.&lt;br/&gt;&amp;gt; * If CPFP succeeds, it means the above hashlock transaction exists and B queries the peer for this transaction, extracting the preimage and claiming the A-&amp;gt;B HTLC.&lt;br/&gt;&lt;br/&gt;Note that no query is required. The problem has been solved and the preimage-containing transaction should now confirm just fine.&lt;br/&gt;&lt;br/&gt;&amp;gt; Is that a fair summary?&lt;br/&gt;&lt;br/&gt;Yep!&lt;br/&gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Naively, and remembering I am completely ignorant of the exact details of the mempool rules, it seems to me quite strange that we are allowing an undesirable transaction (tree) into the mempool:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Undesirable to mine (low fee-rate).&lt;br/&gt;&amp;gt; * Difficult to evict (high fee).&lt;br/&gt;&lt;br/&gt;As noted, such transactions today are profit in 10 hours. Just because they’re big doesn’t mean they don’t pay.&lt;br/&gt;&lt;br/&gt;&amp;gt; Miners are not interested in low fee-rate transactions, as long as higher fee-rate transactions exist.&lt;br/&gt;&amp;gt; And being difficult to evict means miners cannot get alternatives that are more lucrative for them.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The reason (as I understand it) eviction is purposely made difficult here is to prevent certain DoS attacks on Bitcoin nodes, specifically:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1. Attacker sends a low fee-rate tx as a &amp;#34;root&amp;#34; transaction.&lt;br/&gt;&amp;gt; 2  Attacker sends thousands of low fee-rate tx that build off the above root.&lt;br/&gt;&lt;br/&gt;I believe the limit is 25, though the point stands, mostly from a total-size perspective.&lt;br/&gt;&lt;br/&gt;&amp;gt; 3. Attacker sends a slightly higher fee-rate alternative to the root, evicting the above tree of txes.&lt;br/&gt;&amp;gt; 4. Attacker sends thousands of low fee-rate tx that build off the latest root.&lt;br/&gt;&amp;gt; 5. GOTO 3.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; However, it seems to me, naively, that &amp;#34;an ounce of prevention is worth a pound of cure&amp;#34;.&lt;br/&gt;&lt;br/&gt;Sadly, it’s very very easy for this to be a huge amount of CPU &#43; bandwidth.&lt;br/&gt;&lt;br/&gt;&amp;gt; As I understand it, the mempool is organized already into &amp;#34;packages&amp;#34; of transactions, and adding a transaction into the mempool involves extending and merging packages.&lt;br/&gt;&amp;gt; Perhaps the size of a package with low fee-rate (relative to the other packages in the mempool) can be limited, so that mempools drop incoming txes that extend a low-fee-rate tree of transactions.&lt;br/&gt;&amp;gt; This means an attacker cannot send thousands of low fee-rate tx that build off some low fee-rate root tx in the first place, so it can still be evicted easily later without much impact.&lt;br/&gt;&lt;br/&gt;There have been several proposals before around considering a transactions position in the mempool for various similar criteria. The extreme version being simply heavily rate-limiting transaction relay at low feerates and allowing much more liberal replacement of such packages. It isn’t quite perfect for this issue, though, as it may be easy for the attacker to just fill that rate-limit bucket.&lt;br/&gt;&lt;br/&gt;&amp;gt; Naively, it seems to me to prevent the DoS attack as well, as at step 2 it would be prevented from sending thousands of low fee-rate tx building off the root.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As well, as I understand it, this merely tightens the mempool acceptance rules, preventing low fee-rate packages from growing (analogous to a consensus-layer softfork).&lt;br/&gt;&amp;gt; The &amp;#34;cannot evict high absolute fee&amp;#34; rule can be retained, as the low-fee-rate package is prevented from reaching a large size.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Would that be workable as a general solution to solve (what I think is) the root cause of this problem?&lt;br/&gt;&lt;br/&gt;It’s not clear to me that tightening the acceptance rules wouldn’t break other existing uses. Historically the 25 package size limit has proven to be an issue for users doing (somewhat naïve) centralized wallet withdraws. Sadly many users want that “payment pending” notification instantly, even if we know it to be somewhat lacking in security. Wallets which have over-compacted their UTXOs are thus stuck making long chains.&lt;br/&gt;&lt;br/&gt;To revive an old discussion, on the original thread proposing the CPFP Carve-Out, I said this:&lt;br/&gt;&lt;br/&gt;&amp;gt; As an alternative proposal, at various points there have been discussions around solving the &amp;#34;RBF-pinning&amp;#34; problem by allowing transactors to mark their transactions as &amp;#34;likely-to-be-RBF&amp;#39;ed&amp;#34;, which could enable a relay policy where children of such transactions would be rejected unless the resulting package would be &amp;#34;near the top of the mempool&amp;#34;. This would theoretically imply such attacks are not possible to pull off consistently, as any &amp;#34;transaction-delaying&amp;#34; channel participant will have to place the package containing A at an effective feerate which makes confirmation to occur soon with some likelihood. It is, however, possible to pull off this attack with low probability in case of feerate spikes right after broadcast.&lt;br/&gt;&lt;br/&gt;To which Rusty responded (and I may be paraphrasing here): “Fuck Yea”. I’m still not much of a fan of this idea as it introduces too many constants (what is “the top of the mempool”, anyway?), and it’s unclear to me what you do as the mempool prevailing feerate changes, but it seems more along the lines or what you’re looking for here.
    </content>
    <updated>2023-06-09T14:59:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv4he9kdzx5dc6dlwqvnh3ngyhpleun5mw07uyjsjmnuvx5ywjssczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zc6fx0</id>
    
      <title type="html">📅 Original date posted:2020-04-22 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv4he9kdzx5dc6dlwqvnh3ngyhpleun5mw07uyjsjmnuvx5ywjssczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zc6fx0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdzeyf5rdsvgghzn93ne52vln8gvwaz7ahkcwm05tyc3s4l35kt7szrkv8d&#39;&gt;nevent1q…kv8d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-04-22&lt;br/&gt;📝 Original message:&lt;br/&gt;On 4/22/20 7:27 PM, Olaoluwa Osuntokun wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Indeed, that is what I’m suggesting&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Gotcha, if this is indeed what you&amp;#39;re suggesting (all HTLC spends are now&lt;br/&gt;&amp;gt; 2-of-2 multi-sig), then I think the modifications to the state machine I&lt;br/&gt;&amp;gt; sketched out in an earlier email are required. An exact construction which&lt;br/&gt;&amp;gt; achieves the requirements of &amp;#34;you can&amp;#39;t broadcast until you have a secret&lt;br/&gt;&amp;gt; which I can obtain from the htlc sig for your commitment transaction, and my&lt;br/&gt;&amp;gt; secret is revealed with another swap&amp;#34;, appears to be an open problem, atm.&lt;br/&gt;&lt;br/&gt;Hmm, indeed, it does seem to require a change to the state machine, but I don&amp;#39;t think a very interesting one. Because B&lt;br/&gt;providing A an HTLC signature spending a commitment transaction B will broadcast does not allow A to actually broadcast&lt;br/&gt;said HTLC transaction, B can be rather liberal with it. Indeed, however, it would require that B provide such a&lt;br/&gt;signature before A can send the commitment_signed that exists today.&lt;br/&gt;&lt;br/&gt;&amp;gt; Even if they&amp;#39;re restricted in this fashion (must be a 1-in-1 out,&lt;br/&gt;&amp;gt; sighashall, fees are pre agreed upon), they can still spend that with a CPFP&lt;br/&gt;&amp;gt; (while still unconfirmed in the mempool) and create another heavy tree,&lt;br/&gt;&amp;gt; which puts us right back at the same bidding war scenario?&lt;br/&gt;&lt;br/&gt;Right, you&amp;#39;d have to use anchor outputs just like we do on the commitment transaction :).&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; There are a bunch of ways of doing pinning - just opting into RBF isn’t&lt;br/&gt;&amp;gt;&amp;gt; even close to enough.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Mhmm, there&amp;#39;re other ways of doing pinning. But with anchors as is defined&lt;br/&gt;&amp;gt; in that spec PR, they&amp;#39;re forced to spend with an RBF-replaceable&lt;br/&gt;&amp;gt; transaction, which means the party wishing to time things out can enter into&lt;br/&gt;&amp;gt; a bidding war. If the party trying to impeded things participates in this&lt;br/&gt;&amp;gt; progressive absolute fee increase, it&amp;#39;s likely that the war terminates&lt;br/&gt;&amp;gt; with _one_ of them getting into the block, which seems to resolve&lt;br/&gt;&amp;gt; everything?&lt;br/&gt;&lt;br/&gt;No? Even if we assume there are no tricks that you can play with, eg, the package limits duri eviction, which I&amp;#39;d be&lt;br/&gt;surprised about, the &amp;#34;absolute fee/feerate&amp;#34; thing still screws you. The attacker here gets to hold something at the&lt;br/&gt;bottom of the mempool and the poor honest party is going to have to pay an absurd (likely more than the HTLC value) fee&lt;br/&gt;just to get it unstuck, whereas the attacker never would have had to pay said fee.&lt;br/&gt;&lt;br/&gt;&amp;gt; -- Laolung&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Apr 22, 2020 at 4:20 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     On Apr 22, 2020, at 16:13, Olaoluwa Osuntokun &amp;lt;laolu32 at gmail.com &amp;lt;mailto:laolu32 at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;gt; Hmm, maybe the proposal wasn&amp;#39;t clear. The idea isn&amp;#39;t to add signatures to&lt;br/&gt;&amp;gt;&amp;gt;     &amp;gt; braodcasted transactions, but instead to CPFP a maybe-broadcasted&lt;br/&gt;&amp;gt;&amp;gt;     &amp;gt; transaction by sending a transaction which spends it and seeing if it is&lt;br/&gt;&amp;gt;&amp;gt;     &amp;gt; accepted&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     Sorry I still don&amp;#39;t follow. By &amp;#34;we clearly need to go the other direction -&lt;br/&gt;&amp;gt;&amp;gt;     all HTLC output spends need to be pre-signed.&amp;#34;, you don&amp;#39;t mean that the HTLC&lt;br/&gt;&amp;gt;&amp;gt;     spends of the non-broadcaster also need to be an off-chain 2-of-2 multi-sig&lt;br/&gt;&amp;gt;&amp;gt;     covenant? If the other party isn&amp;#39;t restricted w.r.t _how_ they can spend the&lt;br/&gt;&amp;gt;&amp;gt;     output (non-rbf&amp;#39;d, ect), then I don&amp;#39;t see how that addresses anything.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Indeed, that is what I’m suggesting. Anchor output and all. One thing we could think about is only turning it on&lt;br/&gt;&amp;gt;     over a certain threshold, and having a separate “only-kinda-enforceable-on-chain-HTLC-in-flight” limit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     Also see my mail elsewhere in the thread that the other party is actually&lt;br/&gt;&amp;gt;&amp;gt;     forced to spend their HTLC output using an RBF-replaceable transaction. With&lt;br/&gt;&amp;gt;&amp;gt;     that, I think we&amp;#39;re all good here? In the end both sides have the ability to&lt;br/&gt;&amp;gt;&amp;gt;     raise the fee rate of their spending transactions with the highest winning.&lt;br/&gt;&amp;gt;&amp;gt;     As long as one of them confirms within the CLTV-delta, then everyone is&lt;br/&gt;&amp;gt;&amp;gt;     made whole.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     It does seem like my cached recollection of RBF opt-in was incorrect but please re-read the intro email. There are a&lt;br/&gt;&amp;gt;     bunch of ways of doing pinning - just opting into RBF isn’t even close to enough.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     [1]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/18191&#34;&gt;https://github.com/bitcoin/bitcoin/pull/18191&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     On Wed, Apr 22, 2020 at 9:50 AM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         A few replies inline.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         On 4/22/20 12:13 AM, Olaoluwa Osuntokun wrote:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Hi Matt,&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; While this is somewhat unintuitive, there are any number of good anti-DoS&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; reasons for this, eg:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; None of these really strikes me as &amp;#34;good&amp;#34; reasons for this limitation, which&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; is at the root of this issue, and will also plague any more complex Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; contracts which rely on nested trees of transaction to confirm (CTV, Duplex,&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; channel factories, etc). Regarding the various (seemingly arbitrary) package&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; limits it&amp;#39;s likely the case that any issues w.r.t computational complexity&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; that may arise when trying to calculate evictions can be ameliorated with&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; better choice of internal data structures.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In the end, the simplest heuristic (accept the higher fee rate package) side&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; steps all these issues and is also the most economically rationale from a&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; miner&amp;#39;s perspective. Why would one prefer a higher absolute fee package&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; (which could be very large) over another package with a higher total _fee&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; rate_?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         This seems like a somewhat unnecessary drive-by insult of a project you don&amp;#39;t contribute to, but feel free to&lt;br/&gt;&amp;gt;&amp;gt;         start with&lt;br/&gt;&amp;gt;&amp;gt;         a concrete suggestion here :).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; You&amp;#39;ll note that B would be just fine if they had a way to safely monitor the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; global mempool, and while this seems like a prudent mitigation for&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; lightning implementations to deploy today, it is itself a quagmire of&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; complexity&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Is it really all that complex? Assuming we&amp;#39;re talking about just watching&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; for a certain script template (the HTLC scipt) in the mempool to be able to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; pull a pre-image as soon as possible. Early versions of lnd used the mempool&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; for commitment broadcast detection (which turned out to be a bad idea so we&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; removed it), but at a glance I don&amp;#39;t see why watching the mempool is so&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; complex.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Because watching your own mempool is not guaranteed to work, and during upgrade cycles that include changes to the&lt;br/&gt;&amp;gt;&amp;gt;         policy rules an attacker could exploit your upgraded/non-upgraded status to perform the same attack.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; Further, this is a really obnoxious assumption to hoist onto lightning&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; nodes - having an active full node with an in-sync mempool is a lot more&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; CPU, bandwidth, and complexity than most lightning users were expecting to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; face.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; This would only be a requirement for Lightning nodes that seek to be a part&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; of the public routing network with a desire to _forward_ HTLCs. This isn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; doesn&amp;#39;t affect laptops or mobile phones which likely mostly have private&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; channels and don&amp;#39;t participate in HTLC forwarding. I think it&amp;#39;s pretty&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; reasonable to expect a &amp;#34;proper&amp;#34; routing node on the network to be backed by&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; a full-node. The bandwidth concern is valid, but we&amp;#39;d need concrete numbers&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; that compare the bandwidth over head of mempool awareness (assuming the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; latest and greatest mempool syncing) compared with the overhead of the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; channel update gossip and gossip queries over head which LN nodes face today&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; as is to see how much worse off they really would be.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         If mempool-watching were practical, maybe, though there are a number of folks who are talking about designing&lt;br/&gt;&amp;gt;&amp;gt;         partially-offline local lightning hubs which would be rendered impractical.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; As detailed a bit below, if nodes watch the mempool, then this class of&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; attack assuming the anchor output format as described in the open&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; lightning-rfc PR is mitigated. At a glance, watching the mempool seems like&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; a far less involved process compared to modifying the state machine as its&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; defined today. By watching the mempool and implementing the changes in&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; #lightning-rfc/688, then this issue can be mitigated _today_. lnd 0.10&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; doesn&amp;#39;t yet watch the mempool (but does include anchors [1]), but unless I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; missing something it should be pretty straight forward to add which mor or less&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; resolves this issue all together.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; not fixing this issue seems to render the whole exercise somewhat useless&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Depends on if one considers watching the mempool a fix. But even with that a&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; base version of anchors still resolves a number of issues including:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; eliminating the commitment fee guessing game, allowing users to pay less on&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; force close, being able to coalesce 2nd level HTLC transactions with the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; same CLTV expiry, and actually being able to reliably enforce multi-hop HTLC&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; resolution.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; Instead of making the HTLC output spending more free-form with&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; SIGHASH_ANYONECAN_PAY|SIGHASH_SINGLE, we clearly need to go the other&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&amp;gt; direction - all HTLC output spends need to be pre-signed.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; I&amp;#39;m not sure this is actually immediately workable (need to think about it&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; more). To see why, remember that the commit_sig message includes HTLC&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; signatures for the _remote_ party&amp;#39;s commitment transaction, so they can&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; spend the HTLCs if they broadcast their version of the commitment (force&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; close). If we don&amp;#39;t somehow also _gain_ signatures (our new HTLC signatures)&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; allowing us to spend HTLCs on _their_ version of the commitment, then if&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; they broadcast that commitment (without revoking), then we&amp;#39;re unable to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; redeem any of those HTLCs at all, possibly losing money.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Hmm, maybe the proposal wasn&amp;#39;t clear. The idea isn&amp;#39;t to add signatures to braodcasted transactions, but&lt;br/&gt;&amp;gt;&amp;gt;         instead to CPFP&lt;br/&gt;&amp;gt;&amp;gt;         a maybe-broadcasted transaction by sending a transaction which spends it and seeing if it is accepted. You&lt;br/&gt;&amp;gt;&amp;gt;         only need to&lt;br/&gt;&amp;gt;&amp;gt;         know the transaction&amp;#39;s exact format (ie txid, which we do, since we sent a signature for it long ago) to do&lt;br/&gt;&amp;gt;&amp;gt;         this, you&lt;br/&gt;&amp;gt;&amp;gt;         don&amp;#39;t have to actually *have* the fully-signed transaction (and you don&amp;#39;t).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; In an attempt to counteract this, we might say ok, the revoke message also&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; now includes HTLC signatures for their new commitment allowing us to spend&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; our HTLCs. This resolves things in a weaker security model, but doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; address the issue generally, as after they receive the commit_sig, they can&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; broadcast immediately, again leaving us without a way to redeem our HTLCs.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; I&amp;#39;d need to think about it more, but it seems that following this path would&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; require an overhaul in the channel state machine to make presenting a new&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; commitment actually take at least _two phases_ (at least a full round trip).&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; The first phase would tender the commitment, but render them unable to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; broadcast it. The second phase would then &amp;lt;insert something something&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; scriptless scripts here&amp;gt; enter a new sub-protocol which upon conclusion,&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; gives the commitment proposer valid HTLC signatures, and gives the responder&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; what they need to be able to broadcast their commitment and claim their&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; HTCLs in an atomic manner.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; -- Laolu&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; [1]: &lt;a href=&#34;https://github.com/lightningnetwork/lnd/pull/3821&#34;&gt;https://github.com/lightningnetwork/lnd/pull/3821&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:59:48&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgjwape52wm7wtswl553txmadr38tfpu7z680tlwvj0v4j486gh0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5a8s87m</id>
    
      <title type="html">📅 Original date posted:2020-04-22 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgjwape52wm7wtswl553txmadr38tfpu7z680tlwvj0v4j486gh0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5a8s87m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdpz6ksm0npdrq6pvm0hrqsgjh83px0gdqw5g73a2syn6h4xvaayqgkd4m6&#39;&gt;nevent1q…d4m6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-04-22&lt;br/&gt;📝 Original message:&lt;br/&gt;On 4/22/20 12:12 AM, ZmnSCPxj wrote:&lt;br/&gt;&amp;gt; Good morning Matt, and list,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     RBF Pinning HTLC Transactions (aka &amp;#34;Oh, wait, I can steal funds, how, now?&amp;#34;)&lt;br/&gt;&amp;gt;&amp;gt;     =============================&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     You&amp;#39;ll note that in the discussion of RBF pinning we were pretty broad, and that that discussion seems to in fact cover&lt;br/&gt;&amp;gt;&amp;gt;     our HTLC outputs, at least when spent via (3) or (4). It does, and in fact this is a pretty severe issue in today&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;     lightning protocol [2]. A lightning counterparty (C, who received the HTLC from B, who received it from A) today could,&lt;br/&gt;&amp;gt;&amp;gt;     if B broadcasts the commitment transaction, spend an HTLC using the preimage with a low-fee, RBF-disabled transaction.&lt;br/&gt;&amp;gt;&amp;gt;     After a few blocks, A could claim the HTLC from B via the timeout mechanism, and then after a few days, C could get the&lt;br/&gt;&amp;gt;&amp;gt;     HTLC-claiming transaction mined via some out-of-band agreement with a small miner. This leaves B short the HTLC value.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My (cached) understanding is that, since RBF is signalled using `nSequence`, any `OP_CHECKSEQUENCEVERIFY` also automatically imposes the requirement &amp;#34;must be RBF-enabled&amp;#34;, including `&amp;lt;0&amp;gt; OP_CHECKSEQUENCEVERIFY`.&lt;br/&gt;&amp;gt; Adding that clause (2 bytes in witness if my math is correct) to the hashlock branch may be sufficient to prevent C from making an RBF-disabled transaction.&lt;br/&gt;&lt;br/&gt;Hmm, indeed, though note that (IIRC) you can break this by adding children or parents which are *not* RBF-enabled and&lt;br/&gt;then the package may lose the ability to be RBF&amp;#39;d.&lt;br/&gt;&lt;br/&gt;&amp;gt; But then you mention out-of-band agreements with miners, which basically means the transaction might not be in the mempool at all, in which case the vulnerability is not really about RBF or relay, but sheer economics.&lt;br/&gt;&lt;br/&gt;No. The whole point of this attack is that you keep a transaction in the mempool but unconfirmed via RBF pinning, which&lt;br/&gt;prevents an *alternative* transaction from being confirmed. You then have plenty of time to go get it confirmed later.&lt;br/&gt;&lt;br/&gt;&amp;gt; The payment is A-&amp;gt;B-&amp;gt;C, and the HTLC A-&amp;gt;B must have a larger timeout (L &#43; 1) than the HTLC B-&amp;gt;C (L), in abstract non-block units.&lt;br/&gt;&amp;gt; The vulnerability you are describing means that the current time must now be L &#43; 1 or greater (&amp;#34;A could claim the HTLC from B via the timeout mechanism&amp;#34;, meaning the A-&amp;gt;B HTLC has timed out already).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If so, then the B-&amp;gt;C transaction has already timed out in the past and can be claimed in two ways, either via B timeout branch or C hashlock branch.&lt;br/&gt;&amp;gt; This sets up a game where B and C bid to miners to get their version of reality committed onchain.&lt;br/&gt;&amp;gt; (We can neglect out-of-band agreements here; miners have the incentive to publicly leak such agreements so that other potential bidders can offer even higher fees for their versions of that transaction.)&lt;br/&gt;&lt;br/&gt;Right, I think I didn&amp;#39;t explain clearly enough. The point is that, here, B tries to broadcast the timeout transaction&lt;br/&gt;but cannot because there is an in-mempool conflict.&lt;br/&gt;&lt;br/&gt;&amp;gt; Before L&#43;1, C has no incentive to bid, since placing any bid at all will leak the preimage, which B can then turn around and use to spend from A, and A and C cannot steal from B.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus, B should ensure that *before* L&#43;1, the HTLC-Timeout has been committed onchain, which outright prevents this bidding war from even starting.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The issue then is that B is using a pre-signed HTLC-timeout, which is needed since it is its commitment tx that was broadcast.&lt;br/&gt;&amp;gt; This prevents B from RBF-ing the HTLC-Timeout transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So what is needed is to allow B to add fees to HTLC-Timeout:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * We can add an RBF carve-out output to HTLC-Timeout, at the cost of more blockspace.&lt;br/&gt;&amp;gt; * With `SIGHASH_NOINPUT` we can make the C-side signature `SIGHASH_NOINPUT|SIGHASH_SINGLE` and allow B to re-sign the B-side signature for a higher-fee version of HTLC-Timeout (assuming my cached understanding of `SIGHASH_NOINPUT` still holds).&lt;br/&gt;&lt;br/&gt;This does not solve the issue because you can add as many fees as you want, as long as the transaction is RBF-pinned,&lt;br/&gt;there is not much you can do in an automated fashion.&lt;br/&gt;&lt;br/&gt;&amp;gt; With this, B can exponentially increase the fee as L&#43;1 approaches.&lt;br/&gt;&amp;gt; If B can get HTLC-Timeout confirmed before L&#43;1, then C cannot steal the HTLC value at all, since the UTXO it could steal from has already been spent.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In particular, it does not seem to me that it is necessary to change the hashlock-branch transaction of C at all, since this mechanism is enough to sidestep the issue (as I understand it).&lt;br/&gt;&amp;gt; But it does point to a need to make HTLC-Timeout (and possibly symmetrically, HTLC-Success) also fee-bumpable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Note as well that this does not require a mempool: B can run in `blocksonly` mode and as each block comes in from L to L&#43;1, if HTLC-Timeout is not confirmed, feebump HTLC-Timeout.&lt;br/&gt;&amp;gt; In particular, HTLC-Timeout comes into play only if B broadcast its own commitment transaction, and B *should* be aware that it did so --- there is still no need for mempool monitoring here.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Now, of course this only delays the war.&lt;br/&gt;&amp;gt; Let us now consider what C can do to ensure that the bidding war will happen eventually.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * C can bribe a miner to prevent HTLC-Timeout from confirming between L and L&#43;1.&lt;br/&gt;&amp;gt;   * Or in other words, this is a censorship attack.&lt;br/&gt;&amp;gt;     * The Bitcoin censorship-resistance model is that censored transactions can be fee-bumped, which attracts non-censoring miners to try their luck at mining and evict the censoring miner.&lt;br/&gt;&amp;gt;       * Thus, letting B bump the fee on HTLC-Timeout is precisely the mechanism we need.&lt;br/&gt;&amp;gt;       * This sets up a bidding war between C requesting miners to censor, vs. B requesting miners to confirm, but that only sets the stage for a second bidding war later between C and B, thus C is at a disadvantage: it has to bribe miners to censor continuously from L to L&#43;1 *and* additional bribe miners to confirm its transaction after L&#43;1, whereas B can offer its bribe as being something that miners can claim now without waiting after L&#43;1.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The issue of course is the additional output that bloats the UTXO set and requires another transaction to claim later.&lt;br/&gt;&amp;gt; And if we have `SIGHASH_NOINPUT`, it seems to me that Decker-Russell-Osuntokun sidesteps this issue as well, as any timed-out HTLC can be claimed with a fee-bumpable transaction directly without RBF-carve-out.&lt;br/&gt;&amp;gt; (As well, it seems to me that, if both nodes support doing so, a Poon-Dryja channel can be upgraded, without onchain activity, to a Decker-Russell-Osuntokun channel: sign a transaction spending the funding tx to a txo that has been set up as Decker-Russell-Osuntokun, do not broadcast that transaction, then revoke the latest Poon-Dryja commitment transactions, then switch the mechanism over to Decker-Russell-Osuntokun; you still need to monitor for previous Poon-Dryja commitment transactions, but HTLCs now sidestep the issue under discussion here.)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:59:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfarymn632fwlhtwz6us2fwwg2dkatwjm58gsv9dmzy5gj5ev3qjszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm59aaugq</id>
    
      <title type="html">📅 Original date posted:2020-01-20 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfarymn632fwlhtwz6us2fwwg2dkatwjm58gsv9dmzy5gj5ev3qjszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm59aaugq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxnh6ydqm6h6r6zgdquqxvzuhnzm60ejr2pxkn5gh5ahg98jzvtucvzvc9s&#39;&gt;nevent1q…vc9s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-01-20&lt;br/&gt;📝 Original message:&lt;br/&gt;On 11/9/19 4:31 AM, Takaya Imai wrote:&lt;br/&gt;&amp;gt; [What I do not describe]&lt;br/&gt;&amp;gt; * A way to detect that data is correct or not, namely zero knowledge&lt;br/&gt;&amp;gt; proof process.&lt;br/&gt;&lt;br/&gt;Have you come across Zero Knowledge Contingent Payments? Originally it&lt;br/&gt;was designed for on-chain applications but it slots neatly into&lt;br/&gt;lightning as it only requires a method to lock funds to a hash preimage.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-09T14:58:06&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz756m7dcnpurvxp8569y0hgxl57fz22zrnp525cc03vmc2m2expszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53zf7nc</id>
    
      <title type="html">📅 Original date posted:2019-12-15 📝 Original message: Given ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz756m7dcnpurvxp8569y0hgxl57fz22zrnp525cc03vmc2m2expszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53zf7nc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxvu9nmax3z0j9ug83ncwm3e8qjncl7h6ew6tmpm5g3jqacpkjvzqtv4hjh&#39;&gt;nevent1q…4hjh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-12-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Given the timeline for soft forks to activate on Bitcoin, I don&amp;#39;t know&lt;br/&gt;why we&amp;#39;d be super conservative about using new features of the Bitcoin&lt;br/&gt;consensus rules. I think obviously we&amp;#39;d want to rush as fast as we can&lt;br/&gt;into adding real cross-hop privacy to lightning payments, given both the&lt;br/&gt;number of awkward edge cases it introduces into the protocol, and the&lt;br/&gt;massive privacy leak.&lt;br/&gt;&lt;br/&gt;Changing the underlying commitment transaction structure *could* come&lt;br/&gt;later, as it is, indeed, lower priority (and then the rule would be&lt;br/&gt;&amp;#34;taproot outputs are always lightning&amp;#34; for some time anyway), but, if&lt;br/&gt;you&amp;#39;re changing things kinda why not.&lt;br/&gt;&lt;br/&gt;Of course once you get privacy across routing hops, the importance of&lt;br/&gt;privacy-preserving routing algorithm work and fixing some other privacy&lt;br/&gt;holes is probably more important, so I could be dissuaded.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 12/15/19 3:43 PM, ZmnSCPxj via Lightning-dev wrote:&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I would like to initiate some discussion on how Lightning could be updated to take advantage of the upcoming taproot update to the base layer.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For now, I am assuming the continued use of the existing Poon-Dryja update mechanism.&lt;br/&gt;&amp;gt; Decker-Russell-Osuntokun requires `SIGHASH_NOINPUT`/`SIGHASH_ANYPREVOUT`, and its details seem less settled for now than taproot details.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * [ ] We could update the current Poon-Dryja mechanism to use Schnorr signatures.&lt;br/&gt;&amp;gt; * [ ] Or we could just keep the current Poon-Dryja mechanism with SegWit v0 only, and only update to Schnorr / SegWit v1 when we can implement Decker-Russell-Osuntokun.&lt;br/&gt;&amp;gt;   * This brings up the question as to whether we will allow Poon-Dryja to host pointlocked-timelocked contracts (i.e. the Scriptless Script replacement of HTLCs that uses payment points&#43;scalars).&lt;br/&gt;&amp;gt;     * [ ] We could constrain Poon-Dryja channels to only HTLCs.&lt;br/&gt;&amp;gt;       * This might be simpler for implementations: implementations could have a completely new module that implements Decker-Russell-Osuntokun with HTLCs and PTLCs, and not touch existing modules for Poon-Dryja with HTLCs only.&lt;br/&gt;&amp;gt;       * We could &amp;#34;retire&amp;#34; Poon-Dryja constructions at some point and only add new features to Decker-Russell-Osuntokun channels.&lt;br/&gt;&amp;gt;     * [ ] We could allow hosting PTLCs as well on Poon-Dryja channels, as nothing in the base layer prevents a transaction from providing both SegWit v0 and SegWit v1 outputs anyway.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Poon-Dryja with Schnorr&lt;br/&gt;&amp;gt; -----------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If we decide to update the current Poon-Dryja mechanism to use Schnorr, there are some wrinkles:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * [ ] We could just drop-in replace the signing algorithm with Schnorr.&lt;br/&gt;&amp;gt;   * We would define a NUMS point to be used as Taproot internal key, and use a single tapscript that is simply the current script template.&lt;br/&gt;&amp;gt;   * This is arguably not really taking advantage of the Schnorr and Taproot features, however.&lt;br/&gt;&amp;gt; * [ ] Or we could use some sort of MuSig between the two channel participants.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The latter option is probably what we want to use, as it potentially allows a channel close to be indistinguishable from an ordinary SegWit v1 spend of a UTXO.&lt;br/&gt;&amp;gt; Even for channels that have been published via gossip, it moves the onus of storing historical data about historically-published channels from base layer fullnodes to nodes that want to surveill the network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Digression: 2-of-2 is Obviously Lightning&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Existing 2-of-2 outputs have a very high probability of being Lightning Network channels.&lt;br/&gt;&amp;gt; Thus, someone who wishes to surveill the Lightning Network can simply query any archive fullnode for historical 2-of-2 outputs and have a good chance that those are Lightning Network channels.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Consider the adage: Never go to sea with two chronometers; take one or three.&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Dual_modular_redundancy&#34;&gt;https://en.wikipedia.org/wiki/Dual_modular_redundancy&lt;/a&gt;&lt;br/&gt;&amp;gt; This implies that ordinary HODL usage of transaction outputs will either use 1-of-1, or 2-of-3.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Offchain techniques, on the other hand, are only safe (trustless) if they are n-of-n, and are only usefully multi-participant if n &amp;gt; 1.&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://zmnscpxj.github.io/offchain/safety.html&#34;&gt;https://zmnscpxj.github.io/offchain/safety.html&lt;/a&gt;&lt;br/&gt;&amp;gt; Thus any n-of-n is likely to be an offchain protocol, with the most likely being the most widespread offchain protocol, Lightning Network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus, the hyperbole &amp;#34;2-of-2 is Obviously Lightning&amp;#34;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; However, we can &amp;#34;hide&amp;#34; 2-of-2 in a 2-of-3, which can be done by generating a third point from a NUMS point plus a random tweak generated by both participants.&lt;br/&gt;&amp;gt; Better yet, MuSig allows hiding any n-of-n among 1-of-1; we expect 1-of-1 use to dominate in the foreseeable future, thus MuSig usage maximizes our anonymity set.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### End Digression&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A potential issue with MuSig is the increased number of communication rounds needed to generate signatures.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the current Poon-Dryja setup we have, in order to completely sign the commitment transaction held by one participant, we only require sending a completed signature from the remote participant via `commitment_signed`.&lt;br/&gt;&amp;gt; Then the local participant issues a `revoke_and_ack` to reassure the remote side that the previous commitment it held is now revoked.&lt;br/&gt;&amp;gt; Thus, the signing itself requires only 0.5 round trips.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; MuSig requires three rounds to complete the signing protocol.&lt;br/&gt;&amp;gt; Since Poon-Dryja only require the complete set of signatures for any particular commitment transaction to be owned by only one participant (i.e. Poon-Dryja commitment transactions are asymmetrical), MuSig only requires 2.5 round trips to sign a Poon-Dryja commitment.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reducing the round trips is desirable when considering latency, which affects the experienced speed of forwarding, as well as the backwards propagation of failures (but not of successful payments).&lt;br/&gt;&amp;gt; Currently, latency on the network is known to be very low, but I observe that most Lightning Network participants today have excellent Internet connectivity, which might not be true in the foreseeable future.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We can reduce the round trips to 1.5 per commitment, except for the initial commitment transaction, by sending the `R` precommitments (the first phase of MuSig) of the *next* signing session while sending the `s` for the *current* signing session.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Finally, we can consider to reduce the use of MuSig via various techniques.&lt;br/&gt;&amp;gt; One technique is the use of fast forwards: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-April/001986.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-April/001986.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The other involves using Taproot.&lt;br/&gt;&amp;gt; The taproot internal pubkey is the MuSig of both participants, but we also add an explicit 2-of-2 as a tapscript (or hide the 2-of-2 in a 2-of-3), i.e. `&amp;lt;A&amp;gt; OP_CHECKSIGVERIFY &amp;lt;B&amp;gt; OP_CHECKSIG` in a tapscript.&lt;br/&gt;&amp;gt; This allows commitment transactions to use the tapscript path and have separate signatures for both participants.&lt;br/&gt;&amp;gt; Then, mutual close uses the MuSig keypath spend.&lt;br/&gt;&amp;gt; This reduces the changes relative to the current Poon-Dryja implementation: we can continue to use `commitment_signed` messages (or equivalent new ones for Taproot-based Poon-Dryja channels), and only the mutual close ritual needs to be modified to use MuSig.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus the options are below, but ***please do not select an option yet***, because further sections greatly affect the tradeoffs of the options below.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * [ ] Latency is not an issue (even in the foreseeable future), just use the 2.5 round trips for MuSig and MuSig-sign every commitment.&lt;br/&gt;&amp;gt; * [ ] Pre-send the `R` commitments with the previous `s`.&lt;br/&gt;&amp;gt;   * This increases the needed storage requirements of both nodes, and possibly complexity of node software, but reduces the round trips to 1.5.&lt;br/&gt;&amp;gt;   * This usage may need to have larger bounds than what may be naively expected, if we decide to use Multi-`R` composable MuSig (see later section).&lt;br/&gt;&amp;gt;   * Even *without* this option, at the minimum we still need to store `R` commitments and `R`, at least in memory, until we complete the MuSig ritual.&lt;br/&gt;&amp;gt; * [ ] Use fast-forwards.&lt;br/&gt;&amp;gt;   * This removes the latency of commitment transaction signing from the forwarding and failure-reporting paths.&lt;br/&gt;&amp;gt;     * *Improved* forwarding and failure-reporting latency compared to today (revocation and signature not needed for forwarding/failure-reporting).&lt;br/&gt;&amp;gt;   * Latency is still high for commitment transaction signing, but this is less of an issue as it is no longer in the forwarding/failure-reporting path.&lt;br/&gt;&amp;gt; * [ ] Explicit 2-of-2 for commitment, MuSig for mutual close.&lt;br/&gt;&amp;gt;   * No degradation in latency compared to today (0.5 round trips for signature, additional 1 round trip for signalling and revocation).&lt;br/&gt;&amp;gt;   * No improvement (or degradation) of privacy for unilateral closes compared to today, but improved privacy for mutual closes.&lt;br/&gt;&amp;gt;     * An argument *for* this option is that unilateral closes (commitment transactions) have special scripts on their outputs anyway, thus still leak their privacy, but see later sections for how Taproot may help reduce the uniqueness of those outputs, thus *not* taking this option may still improve privacy for unilateral closes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Composable MuSig&lt;br/&gt;&amp;gt; ----------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As I describe here: &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-November/017493.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-November/017493.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In that write-up, I mention the use-case of nodelets.&lt;br/&gt;&amp;gt; Another use-case is for redundant hardware signers: &lt;a href=&#34;https://lists.ozlabs.org/pipermail/c-lightning/2019-December/000172.html&#34;&gt;https://lists.ozlabs.org/pipermail/c-lightning/2019-December/000172.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We have the option of allowing for a composable MuSig, probably my multi-`R` proposal, where each participant may send one or more `R` commitments and subsequent `R`s.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * [ ] Not use composable MuSig of any kind, at least for now.&lt;br/&gt;&amp;gt;   * Possibly we could defer the use of a composable MuSig when a better composable MuSig (with security proofs) has been derived.&lt;br/&gt;&amp;gt; * [ ] Use Multi-`R` composable MuSig.&lt;br/&gt;&amp;gt;   * We need to probably impose some limit on the number of `R` commitments that can be sent: _____ `R`s maximum.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The latter option above affects the previous choice regarding whether to pre-send `R` commitments with the previous `s` sending, as this increases the maximal storage requirement for the pre-sent `R` commitment(s).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Pointlocked Timelocked Contracts&lt;br/&gt;&amp;gt; --------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I would have preferred to keep this in a separate discussion thread, however the exact details of PTLCs may affect our decision on how to sign commitment transactions.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; PTLCs are necessary to switch the Lightning Network to payment point&#43;scalar, and indeed one can argue that the entire point of enabling Schnorr and Taproot at the base layer is to allow us to use payment point&#43;scalar at the Lightning layer.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; First, I will discuss how to create a certain kind of PTLCs, which I call &amp;#34;purely scriptless&amp;#34; PTLCs.&lt;br/&gt;&amp;gt; In particular, I would like to point out that we *actually* use in current Poon-Dryja Lightning Network channels is *revocable* HTLCs, thus we need to have *revocable* PTLCs to replace them.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * First, we must have a sender A, who is buying a secret scalar, and knows the point equivalent to that scalar.&lt;br/&gt;&amp;gt; * Second, we have a receiver B, who knows this secret scalar (or can somehow learn this secret scalar).&lt;br/&gt;&amp;gt; * A and B agree on the specifications of the PTLC: the point, the future absolute timelock, the value.&lt;br/&gt;&amp;gt; * A creates (but *does not* sign or broadcast) a transaction that pays to a MuSig of A and B and shares the txid and output number with the relevant MuSig output.&lt;br/&gt;&amp;gt; * A and B create a backout transaction.&lt;br/&gt;&amp;gt;   * This backout has an `nLockTime` equal to the agreed absolute timelock.&lt;br/&gt;&amp;gt;   * It spends the above MuSig output (this input must enable `nLockTime`, e.g. by setting `nSequence` to `0xFFFFFFFE`).&lt;br/&gt;&amp;gt;   * It creates an output that is solely controlled by A.&lt;br/&gt;&amp;gt; * A and B perform a MuSig ritual to sign the backout transaction.&lt;br/&gt;&amp;gt; * A now signs and broadcast the first transaction, the one that has an output that represents the PTLC.&lt;br/&gt;&amp;gt; * A and B wait for the above transaction to confirm deeply.&lt;br/&gt;&amp;gt;   This completes the setup phase for the PTLC.&lt;br/&gt;&amp;gt; * After this point, if the agreed-upon locktime is reached, A broadcasts the backout transaction and aborts the ritual.&lt;br/&gt;&amp;gt; * A and B create a claim transaction.&lt;br/&gt;&amp;gt;   * This has an `nLockTime` of 0, or a present or past blockheight, or disabled `nLockTime`.&lt;br/&gt;&amp;gt;   * This spends the above MuSig output.&lt;br/&gt;&amp;gt;   * This creates an output that is solely controlled by B.&lt;br/&gt;&amp;gt; * A and B generate an adaptor signature for the claim transaction, which reveals the agreed scalar.&lt;br/&gt;&amp;gt;   * This is almost entirely a MuSig ritual, except at `s` exchange, B provides `t &#43; r &#43; h(R | MuSig(A,B) | m) * MuSigTweak(A, B, B) * b` first, then demands `r &#43; h(R | MuSig(A,B) | m) * MuSigTweak(A, B, A) * a` from A, then reveals `r &#43; h(R | MuSig(A,B) | m) * MuSigTweak(A, B, B) * b` (or the completed signature, by publishing onchain), revealing the secret scalar `t` to A.&lt;br/&gt;&amp;gt; * A is able to learn the secret scalar from the above adaptor signature followed by the full signature, completing the ritual.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Note that the above ritual is &amp;#34;purely scriptless&amp;#34;.&lt;br/&gt;&amp;gt; It is possible to take advantage of taproot to create a tapscript equivalent to `&amp;lt;agreed locktime&amp;gt; OP_CHECKLOCKTIMEVERIFY OP_DROP &amp;lt;A&amp;gt; OP_CHECKSIG`.&lt;br/&gt;&amp;gt; This removes the need to perform a MuSig ritual to sign a backout transaction: A can generate the backout transaction all by itself.&lt;br/&gt;&amp;gt; This use is not purely scriptless, as the timelocked branch is controlled by a tapscript that is hidden in the pointlocked branch, meaning that taking the timelocked branch reveals the contract.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The tradeoff is that if we use &amp;#34;purely scriptless&amp;#34; PTLCs:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * If we have purely scriptless PTLCs, then even the timelock branch is potentially indistinguishable from ordinary spends.&lt;br/&gt;&amp;gt;   * We should note that Bitcoin Core itself already uses the current blockheight plus 1 for `nLockTime` when spending, instead of a 0 or disabled `nLockTime`.&lt;br/&gt;&amp;gt;   * If the above habit were more widespread (i.e. if all wallets implemented the use of a current `nLockTime` for ordinary onchain spends) then the timelock branch has an anonymity set equal to all Schnorr keypath spends, as the `nLockTime` is always used anyway.&lt;br/&gt;&amp;gt;   * Other kinds of offchain protocols may also utilize this technique, slightly increasing the anonymity set as well.&lt;br/&gt;&amp;gt;     Thus, the use of the current blockheight plus 1 for `nLockTime` should be recommended for improved privacy in Bitcoin anyway.&lt;br/&gt;&amp;gt; * However, purely scriptless PTLCs require a complete MuSig ritual (2.5 to 3 round trips!) to sign the timelocked branch (the initial backout transaction); this increases the latency of adding new PTLCs.&lt;br/&gt;&amp;gt;   * Of note is that in the case of Lightning, we may need to add a new PTLC while another PTLC is *still* in-flight; on the new commitment transaction, we need to redo the MuSig rituals to create new backouts and new adaptor signtures for each PTLC.&lt;br/&gt;&amp;gt;     * This can be amortized such that we redo all the rituals for all existing PTLCs in parallel.&lt;br/&gt;&amp;gt;       * The use of multi-`R` composable MuSig greatly increases the storage requirements as well!&lt;br/&gt;&amp;gt;   * Further, the privacy gained in the timelock path is degraded or lost when we consider revocable PTLCs and revocable outputs.&lt;br/&gt;&amp;gt;   * It is not clear to me as fo now if the MuSig ritual for the backout transaction must complete in full before the MuSig ritual for the claim transaction (the pointlocked branch, which includes sharing an adaptor signature during `s` exchange).&lt;br/&gt;&amp;gt;     * If we can do these two rituals in parallel, this reduces the latency disadvantage of the purely scriptless PTLC to just 1 round trip compared to the tapscripted timelock branch PTLC.&lt;br/&gt;&amp;gt;     * Possibly the adaptor signature ritual could stop until B provides the adaptor signature, then full `s` exchange is deferred to after the PTLC 2-of-2 is instantiated onchain/reified in a commitment transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus our options are the below, but again, you should defer deciding on the best option until you understand about revocable PTLCs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * [ ] We can use a purely scriptless PTLC construction.&lt;br/&gt;&amp;gt;   * Better privacy, but increased latency.&lt;br/&gt;&amp;gt; * [ ] We can use a tapscripted timelock branch and a keypath pointlocked branch for the PTLC.&lt;br/&gt;&amp;gt;   * Lower latency, but possibly reduced privacy advantage in the timelock branch (privacy advantage still exists in the pointlocked branch, which we hope is more common anyway).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Revocable Outputs and PTLCs&lt;br/&gt;&amp;gt; ---------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Poon-Dryja mechanism is based on revocation of contracts instantiated from previous states.&lt;br/&gt;&amp;gt; Thus, all outputs of Poon-Dryja must be made revocable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; At a high-enough level, this only requires the addition of a `(revocation_secret &amp;amp;&amp;amp; remote_secret) || (CSV &amp;amp;&amp;amp; L)` to the top-level logic (`L`) of a contract.&lt;br/&gt;&amp;gt; Of course, the details have the devil.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Now, in Poon-Dryja, each side of the channel has its own commitment transaction.&lt;br/&gt;&amp;gt; Thus, contracts on the commitment transaction refer to a &amp;#34;local side&amp;#34; and a &amp;#34;remote side&amp;#34;.&lt;br/&gt;&amp;gt; The &amp;#34;local side&amp;#34; is whoever is holding the completely-signed commitment transaction, while the &amp;#34;remote side&amp;#34; is the other side.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Revocable outputs always have a CSV-requirement before the output can be spent by whoever &amp;#34;should&amp;#34; own the output, according to the contract details.&lt;br/&gt;&amp;gt; The revocation secret is known by the local side, and then when a *new* commitment transaction has been signed, the revocation secret is given by the local side to the remote side, allowing all outputs to be spent directly by the remote side if an old, revoked commitment transaction is published onchain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There are many ways to implement revocable outputs.&lt;br/&gt;&amp;gt; The core idea of revocable outputs, however, is that there must exist some relative-locktime branch on each output that goes to the local side.&lt;br/&gt;&amp;gt; This relative-locktime branch can be implemented as &amp;#34;purely scriptless&amp;#34; by using a 2-of-2 of both the local and remote sides, with a relative-locktime `nSequence`, using the same technique as described in the previous section.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; However, unlike the absolute-locktime `nLockTime` for the timelock branches of PTLCs, ***there is no current wallet software that uses activated-relative-locktime `nSequence` for ordinary spends***.&lt;br/&gt;&amp;gt; Thus, any use of the relative-locktime branch does *not* have a privacy advantage under purely scriptless.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus the tradeoffs here are different, and definitely in favor of the tapscripted-relative-locktime technique.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * There is no current wallet software that uses relative locktimes.&lt;br/&gt;&amp;gt;   * Bitcoin Core uses absolute locktimes with the current blockheight plus 1, and we can hide the use of absolute locktimes by imitating this Bitcoin Core behavior.&lt;br/&gt;&amp;gt;   * Any use of relative locktimes is a strong signal of some kind of complicated offchain updateable mechanism.&lt;br/&gt;&amp;gt;     We can note as well that Decker-Russell-Osuntokun also uses relative locktimes.&lt;br/&gt;&amp;gt; * The relative-locktime branch in revocable outputs is the **desirable** case, because taking the relative locktime means that the commitment transaction published *was not* a revoked transaction (i.e. it was the latest transaction version).&lt;br/&gt;&amp;gt;   * Thus, it would be nice if this had good privacy.&lt;br/&gt;&amp;gt;   * However, this *cannot* have good privacy since there is no current common use of activated relative locktimes for ordinary spends.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The latter point above also biases us towards rejecting purely-scriptless in the *previous* section, in particular:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * The absolute-locktime branch in the PTLC is the **undesirable** case, where the payee B somehow stops responding to A.&lt;br/&gt;&amp;gt;   * In particular, propagating failure backwards is done by simply deleting PTLCs, thus the absolute-locktime branch does not come into play during payment failure.&lt;br/&gt;&amp;gt;   * Thus, the privacy increase of hiding absolute-locktime branches is minor, and the privacy breach of revocable outputs (i.e. it leaks the use of relative-locktime, and nearly all uses of relative locktime will be offchain updateable cryptocurrency mechanisms, such as Poon-Dryja or Decker-Russell-Osuntokun) is arguably much larger than the privacy increase of purely-scriptless absolute-locktime.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Of particular not is that if a PTLC is instantiated on the commitment transaction of the payer A, then the absolute-locktime backout transaction must *not* pay to A only, but instead pays to a *revocable output* that will eventually pay to A after the relative locktime.&lt;br/&gt;&amp;gt; Thus, the privacy boost of the purely-scriptless backout transaction would be lost by the later revelation of the use of a relative locktime after the revocable output is reclaimed by A.&lt;br/&gt;&amp;gt; Again, that use of relative locktime (whether enforced by script, or by scriptless use of a 2-of-2 that is spent with an activated relative-locktime `nSequence`) is a strong indicator of the use of Poon-Dryja or Decker-Russell-Osuntokun or even Decker-Wattenhofer mechanisms, and the logic is that since Lightning Network is the most widespread offchain mechanism, it probably indicates the use of LN.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus the decision in the previous section is affected by this reality that we in fact need *revocable* PTLCs, not plain PTLCs, thus the advantage of purely-scriptless backout transactions in the previous section is reduced by the need to make outputs revocable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thus:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Revocable outputs require a relative-timelock branch.&lt;br/&gt;&amp;gt; * That branch is the **desirable** branch, i.e. the latest commitment transaction is the one that got published and thus is *not* revoked.&lt;br/&gt;&amp;gt;   * We thus expect this relative-timelock branch to be the *common* branch.&lt;br/&gt;&amp;gt; * No wallet uses relative-timelock for ordinary spends, unlike abolute-locktime where Bitcoin Core always uses absolute-locktime `nLockTime` for ordinary spends.&lt;br/&gt;&amp;gt;   * Thus, using purely scriptless for the relative-timelock branch of revocable outputs does not in fact hide that we are doing something special.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Conclusion&lt;br/&gt;&amp;gt; ----------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Others may find further issues or alternative options for the above points.&lt;br/&gt;&amp;gt; Further discussion may be warranted before we actually select particular options to implement and evaluate in alpha software.&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;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:57:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfmh86hf5k4ym6y32trfh4en3snz9qlcrktytnwk8jspdkjv5je3czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5dh5tvj</id>
    
      <title type="html">📅 Original date posted:2019-12-10 📝 Original message: Nice ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfmh86hf5k4ym6y32trfh4en3snz9qlcrktytnwk8jspdkjv5je3czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5dh5tvj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspnu8lcg6ur2sptgl2hmhlv59wmm7alquspwql8ssdmjpn2cf3wdqvaagqe&#39;&gt;nevent1q…agqe&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-12-10&lt;br/&gt;📝 Original message:&lt;br/&gt;Nice writeup!&lt;br/&gt;&lt;br/&gt;In further in-person discussions today, it was noted that the key&lt;br/&gt;last-resort fallback Bitcoin Core has to week out peers in case of an&lt;br/&gt;Eclipse Attack does not protect from this style of attack. While it is&lt;br/&gt;only of limited concern for most Bitcoin Core users, it very much may&lt;br/&gt;expose lightning nodes to theft.&lt;br/&gt;&lt;br/&gt;More importantly, while Bitcoin Core has some protections against&lt;br/&gt;generic sybil-based Eclipse attacks, they are far from sufficient in a&lt;br/&gt;model like Lightning where much more is at stake from simple no-hashrate&lt;br/&gt;Eclipse attacks.&lt;br/&gt;&lt;br/&gt;The proposed countermeasure here of &amp;#34;raising alarms&amp;#34; in case the&lt;br/&gt;best-block nTime field is too far behind is compelling in a&lt;br/&gt;SPV-assumption world, though it is far from sufficient if the time delay&lt;br/&gt;is small (eg for lightning HTLC delays or if the to_self_delay is&lt;br/&gt;gratuitously insecure, eg under 144).&lt;br/&gt;&lt;br/&gt;Sadly, however, &amp;#34;raising alarms&amp;#34; is not sufficient to protect users, as&lt;br/&gt;countermeasures likely need to be taken automatically for any kind of&lt;br/&gt;compelling security.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d encourage Lightning node authors and operators to ensure they have&lt;br/&gt;multiple, redundant, trusted methods of receiving Bitcoin block data in&lt;br/&gt;a timely fashion. To shill my own bags, of late I&amp;#39;ve been thinking about&lt;br/&gt;such systems and expose services to fetch header/BIP157 filter data over&lt;br/&gt;DNS [1, 2], header data over arbitrary radio interfaces [3] and full&lt;br/&gt;block data over HTTP. Finally, there is also a parallel P2P&lt;br/&gt;implementation which attempts to make different tradeoffs from the&lt;br/&gt;existing Bitcoin Core P2P implementation and is much more aggressive&lt;br/&gt;about seeking additional connections if there is evidence of headers&lt;br/&gt;which are better than our current chain at [5], relying on some of the&lt;br/&gt;other mechanisms to seek header data.&lt;br/&gt;&lt;br/&gt;Note that the Bitcoin Core-based work here also includes what I hope can&lt;br/&gt;be used as an arbitrary easy-to-write-additional-block-fetch-methods&lt;br/&gt;framework.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16834&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16834&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://twitter.com/TheBlueMatt/status/1200585905163112449&#34;&gt;https://twitter.com/TheBlueMatt/status/1200585905163112449&lt;/a&gt;&lt;br/&gt;[3]&lt;br/&gt;&lt;a href=&#34;https://github.com/TheBlueMatt/bitcoin/commit/2019-10-rusty-all-da-stuff%5E1&#34;&gt;https://github.com/TheBlueMatt/bitcoin/commit/2019-10-rusty-all-da-stuff%5E1&lt;/a&gt;&lt;br/&gt;you should be able to pick up headers in the 915 MHz band over LoRa with&lt;br/&gt;this patch in the New York City area already :)&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16762&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16762&lt;/a&gt;&lt;br/&gt;[5] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/17376&#34;&gt;https://github.com/bitcoin/bitcoin/pull/17376&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 12/9/19 6:04 PM, Antoine Riard wrote:&lt;br/&gt;&amp;gt; Time-Dilation Attacks on Offchain Protocols&lt;br/&gt;&amp;gt; ===================================&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Lightning works on reversing the double-spend problem to a private&lt;br/&gt;&amp;gt; state between parties instead of being a public issue verified by every&lt;br/&gt;&amp;gt; network peer. The security model is based on revocation of previous&lt;br/&gt;&amp;gt; states and in case of broadcast of any of them, being aware of it to&lt;br/&gt;&amp;gt; generate justice transactions to claim misbehaving peer onchain outputs&lt;br/&gt;&amp;gt; before contest period expiration. This period is driven by the blockchain&lt;br/&gt;&amp;gt; which is here the system clock.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Eclipse attacks&amp;#39;s end-goal is to monopolize a victim&amp;#39;s incoming and&lt;br/&gt;&amp;gt; outgoing connections, by this way isolating a node from the rest of its&lt;br/&gt;&amp;gt; peers in the network. A successful Eclipse attacks lets the attacker&lt;br/&gt;&amp;gt; filter the victim&amp;#39;s view of the blockchain, i.e he controls transactions&lt;br/&gt;&amp;gt; and blocks announcements [0].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Every LN node must be tied to a bitcoin full-node or light-client to&lt;br/&gt;&amp;gt; verify independently channels opening/closing, HTLCs expiration and&lt;br/&gt;&amp;gt; previous/latest state broadcast. To operate securely, the view of the&lt;br/&gt;&amp;gt; blockchain must be up-to-date with the one shared with the rest of the&lt;br/&gt;&amp;gt; network. By considering Eclipse attacks on the base layer, this assumption&lt;br/&gt;&amp;gt; can be broken.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; First scenario : Targeting the CSV security delay&lt;br/&gt;&amp;gt; --------------------------------------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Alice and Mallory are LN peers with a channel opened at state N. They&lt;br/&gt;&amp;gt; use a CSV of 144 blocks as a security parameter for contestation period.&lt;br/&gt;&amp;gt; Mallory is able to identify Alice full-node and start to eclipse it.&lt;br/&gt;&amp;gt; When done, it keeps announcing blocks to Alice node but delaying them by&lt;br/&gt;&amp;gt; 2min. Given a variance of 10min, after 6 blocks, Mallory will have a&lt;br/&gt;&amp;gt; height ahead of Alice of 1, after 24 blocks, a lead of 4, after 144,&lt;br/&gt;&amp;gt; a lead of 24, after 1008, a lead of 168.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; After maintaining the eclipse for a week, Mallory will have more than a&lt;br/&gt;&amp;gt; day of height advance on Alice view of blockchain. The difference being&lt;br/&gt;&amp;gt; superior at the CSV timelock, Mallory can broadcast a previous&lt;br/&gt;&amp;gt; commitment transaction at state N - 10 with a balance far more favorable&lt;br/&gt;&amp;gt; than the legit one at height H, the synchronized height with the rest&lt;br/&gt;&amp;gt; of the network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; At revoked commitment transaction broadcast, Alice is slow down at&lt;br/&gt;&amp;gt; height H - 168. At H&#43;144, Mallory can unlock its funds out of the&lt;br/&gt;&amp;gt; commitment transaction outputs and by so closing the contestation period&lt;br/&gt;&amp;gt; while Alice is still stuck at H-24. When Alice learn about revoked&lt;br/&gt;&amp;gt; broadcast at H, it&amp;#39;s already too late. Mallory may have stopped the&lt;br/&gt;&amp;gt; Eclipse attack after H&#43;144, or he may pursue the attack on Alice because&lt;br/&gt;&amp;gt; of targeting multiple of her channels in parallel.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Second scenario : Targeting the per-hop CLTV-delta&lt;br/&gt;&amp;gt; -------------------------------------------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Alice, Bob and Caroll are LN peers with channel Alice-Bob and Bob-Caroll.&lt;br/&gt;&amp;gt; Bob enforce a cltv_delta of 12 blocks on incoming HTLCs. Alice and Caroll&lt;br/&gt;&amp;gt; are both malicious and start to eclipse Alice full-node until they gain a&lt;br/&gt;&amp;gt; lead of 15 blocks on Alice.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; At height N, Alice route a payment E to Caroll through Bob with a base&lt;br/&gt;&amp;gt; delta of 24 blocks. On channel AB, HTLC will expire at height H&#43;24, on&lt;br/&gt;&amp;gt; channel BC, it will expire at height H&#43;12 while Alice ticking herself&lt;br/&gt;&amp;gt; at height H-15.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; When real-network blockchain height reaches H&#43;24, Caroll provides&lt;br/&gt;&amp;gt; preimage P to Bob and following protocol rules she gets a new&lt;br/&gt;&amp;gt; commitment transaction with balance increased of HTLC E. At same time,&lt;br/&gt;&amp;gt; Alice broadcast unilaterally commitment transaction for AB and claim&lt;br/&gt;&amp;gt; back HTLC E with a HTLC-timeout transaction as its nLockTime is already&lt;br/&gt;&amp;gt; final. Bob wrongly clocking at height H&#43;9, HTLC on channel BC won&amp;#39;t have&lt;br/&gt;&amp;gt; been timeout by him and provided preimage is now useless as HTLC as&lt;br/&gt;&amp;gt; already claimed back on mainnet blockchain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Attack difficulty&lt;br/&gt;&amp;gt; -------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Following Eclipse attack paper publication, multiple counter-measures&lt;br/&gt;&amp;gt; have been implemented [1], [2]. Even if it&amp;#39;s far harder, this kind of&lt;br/&gt;&amp;gt; attacks may still be possible for an off-path attacker. Including recent&lt;br/&gt;&amp;gt; changes, research should be done to ascertain it. Beyond, it still&lt;br/&gt;&amp;gt; widely feasible for attackers controlling key infrastructure between&lt;br/&gt;&amp;gt; the victim and the network [3]. A simple Tier 3 ISP doing deep packet&lt;br/&gt;&amp;gt; inspection and delaying your blocks may be able to practice this class&lt;br/&gt;&amp;gt; of attacks.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The case of LN nodes using light clients, like BIP157 or Electrum, as a&lt;br/&gt;&amp;gt; backend should be specially considered. Given the low number of servers&lt;br/&gt;&amp;gt; providing these services today it should be trivial for an attacker to run&lt;br/&gt;&amp;gt; swarm of them and from then control blockchain view of this class of LN&lt;br/&gt;&amp;gt; nodes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Another difficulty of the attack, is to map the LN node to its full-node.&lt;br/&gt;&amp;gt; This can range from being trivial if both run in clear with same ipv4&lt;br/&gt;&amp;gt; address. It would be interesting to scan both networks and see how many&lt;br/&gt;&amp;gt; nodes pair are in this case. Learning the mapping can still be doable if&lt;br/&gt;&amp;gt; they are using an anonymous network like Tor with same exit node base on&lt;br/&gt;&amp;gt; message timing.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Further inter-layer mapping techniques could be developped like funding&lt;br/&gt;&amp;gt; transaction broadcast and seeing its propagation on the base layer. Or&lt;br/&gt;&amp;gt; knowledge of onchain utxo graph leaked by addressed reused to fund&lt;br/&gt;&amp;gt; channels.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On the LN-side, depending of the scenario, cost of the attack ranges&lt;br/&gt;&amp;gt; between opening one or two channels and paying the related onchain fees.&lt;br/&gt;&amp;gt; That being said, an attacker can also target victim-initiated channels&lt;br/&gt;&amp;gt; and costs would be reduced only to operating LN nodes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Onchain counter-measures&lt;br/&gt;&amp;gt; -----------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Warnings could be triggered by full-node when the block issuance rate&lt;br/&gt;&amp;gt; becomes weird but first it&amp;#39;s hard to dissociate weirdness from edges of&lt;br/&gt;&amp;gt; block variance and secondly the algo being public it should be easy for&lt;br/&gt;&amp;gt; an attacker to stay under the radar by choosing the right announcement&lt;br/&gt;&amp;gt; delay.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Raising alarms based on nTime of block headers being to far in the past&lt;br/&gt;&amp;gt; compare to local clock wouldn&amp;#39;t make sense due to IBD.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A practical solution would be to have multiple bitcoin full-nodes&lt;br/&gt;&amp;gt; with multi-homing and doing reconciliation of blockchain views every&lt;br/&gt;&amp;gt; N hour/minute. This kind of method, already deployed by some bitcoin&lt;br/&gt;&amp;gt; infrastructures, would raise attack difficulty for off-path attackers&lt;br/&gt;&amp;gt; but wouldn&amp;#39;t counter in-path attackers. Nevertheless, it would already&lt;br/&gt;&amp;gt; be a good step, the issue is the current absent of implementing this&lt;br/&gt;&amp;gt; in open-source software for hobbyists.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A defense in depth would require to have multiple data links, like&lt;br/&gt;&amp;gt; receiving headers from space/radio or tunneling through&lt;br/&gt;&amp;gt; some other protocols [4].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Even learning discrepancies between your local view of the blockchain&lt;br/&gt;&amp;gt; and the mainnet one, the right move to do isn&amp;#39;t clear as an automatic&lt;br/&gt;&amp;gt; system may be triggered by false positives to halt operation of your LN&lt;br/&gt;&amp;gt; node, a human intervention to double-check may seem preferable. And&lt;br/&gt;&amp;gt; it&amp;#39;s really likely the attacker control you ability of transactions&lt;br/&gt;&amp;gt; on the base layer. BIP324 may help there.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Offchain counter-measures&lt;br/&gt;&amp;gt; -----------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Some LN errors messages may be triggered at abnormal rate like&lt;br/&gt;&amp;gt; `expiry_too_soon`  due to victim using a HTLC base in the past and may&lt;br/&gt;&amp;gt; be used to guess oddities.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A measure orthogonal to running multiple bitcoin full-nodes should be&lt;br/&gt;&amp;gt; to have multiples watchtowers running their own blocks provider (full-node&lt;br/&gt;&amp;gt; or light clients). Assuming attacker don&amp;#39;t control your connection to them,&lt;br/&gt;&amp;gt; if at least one of them isn&amp;#39;t eclipsed, it should be able to time-out HTLC/&lt;br/&gt;&amp;gt; justice revoked transaction efficiently.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Another option would be to use the control plane as a safety mechanism.&lt;br/&gt;&amp;gt; When a LN node learns a channel_announcement to far in the future it&lt;br/&gt;&amp;gt; would ask to this LN node, few next headers through this communication&lt;br/&gt;&amp;gt; channel and connect these headers to its full-node. Based on this&lt;br/&gt;&amp;gt; information, full-node may trigger alarms more accurately. This mechanism&lt;br/&gt;&amp;gt; would work assuming one of your gossiping LN node is honest. It may ask&lt;br/&gt;&amp;gt; for fine-tuning to avoid there too false-positives but it seems an&lt;br/&gt;&amp;gt; interesting topic of research to use L2 information to correct L1 blockchain&lt;br/&gt;&amp;gt; view and even further to use L2 communications channels as an emergency&lt;br/&gt;&amp;gt; transaction broadcast.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Further research could be lead to investigate attacks combining&lt;br/&gt;&amp;gt; eclipsing victim&lt;br/&gt;&amp;gt; view of both layer, that&amp;#39;s said the LN one may seem harder to take on as&lt;br/&gt;&amp;gt; nodes&lt;br/&gt;&amp;gt; have persistent identities.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Eclipse attacks were already known to be very bad, offchain protocols&lt;br/&gt;&amp;gt; relying on time for their security model make them worst at it lower the bar&lt;br/&gt;&amp;gt; to exploit them from being a miner to being party to an offchain contract.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; After talking with LN implementations teams, they don&amp;#39;t think funds are&lt;br/&gt;&amp;gt; at risks,&lt;br/&gt;&amp;gt; given than light clients have low-value channels right now and it&amp;#39;s not&lt;br/&gt;&amp;gt; worthy the&lt;br/&gt;&amp;gt; attack setup, but they acknowledge the issue on the long term for&lt;br/&gt;&amp;gt; processing nodes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks to Gleb Naumenko for fruitful discussions/review.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://eprint.iacr.org/2015/263.pdf&#34;&gt;https://eprint.iacr.org/2015/263.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/9037&#34;&gt;https://github.com/bitcoin/bitcoin/pull/9037&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/8282&#34;&gt;https://github.com/bitcoin/bitcoin/pull/8282&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://erebus-attack.comp.nus.edu.sg/&#34;&gt;https://erebus-attack.comp.nus.edu.sg/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16834&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16834&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:57:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs98x9je4esp87vwa7hz8r9fuuq080unkffmq4k0n2kza3uctqa2tczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zkunkl</id>
    
      <title type="html">📅 Original date posted:2019-10-24 📝 Original message: I may ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs98x9je4esp87vwa7hz8r9fuuq080unkffmq4k0n2kza3uctqa2tczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zkunkl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvu4n8x6fwd6kzcr0me0dx3g27gqldl42jm5prw9pws6d9aplyx0ge9z8w8&#39;&gt;nevent1q…z8w8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-24&lt;br/&gt;📝 Original message:&lt;br/&gt;I may be missing something, but I&amp;#39;m not sure how this changes anything?&lt;br/&gt;&lt;br/&gt;If you have a commitment transaction, you always need at least, and&lt;br/&gt;exactly, one non-CSV output per party. The fact that there is a size&lt;br/&gt;limitation on the transaction that spends for carve-out purposes only&lt;br/&gt;effects how many other inputs/outputs you can add, but somehow I doubt&lt;br/&gt;its ever going to be a large enough number to matter.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 10/24/19 1:49 PM, Johan Torås Halseth wrote:&lt;br/&gt;&amp;gt; Reviving this old thread now that the recently released RC for bitcoind&lt;br/&gt;&amp;gt; 0.19 includes the above mentioned carve-out rule.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In an attempt to pave the way for more robust CPFP of on-chain contracts&lt;br/&gt;&amp;gt; (Lightning commitment transactions), the carve-out rule was added in&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15681&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15681&lt;/a&gt;. However, having worked on&lt;br/&gt;&amp;gt; an implementation of a new commitment format for utilizing the Bring&lt;br/&gt;&amp;gt; Your Own Fees strategy using CPFP, I’m wondering if the special case&lt;br/&gt;&amp;gt; rule should have been relaxed a bit, to avoid the need for adding a 1&lt;br/&gt;&amp;gt; CSV to all outputs (in case of Lightning this means HTLC scripts would&lt;br/&gt;&amp;gt; need to be changed to add the CSV delay).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Instead, what about letting the rule be&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The last transaction which is added to a package of dependent&lt;br/&gt;&amp;gt; transactions in the mempool must:&lt;br/&gt;&amp;gt;   * Have no more than one unconfirmed parent.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This would of course allow adding a large transaction to each output of&lt;br/&gt;&amp;gt; the unconfirmed parent, which in effect would allow an attacker to&lt;br/&gt;&amp;gt; exceed the MAX_PACKAGE_VIRTUAL_SIZE limit in some cases. However, is&lt;br/&gt;&amp;gt; this a problem with the current mempool acceptance code in bitcoind? I&lt;br/&gt;&amp;gt; would imagine evicting transactions based on feerate when the max&lt;br/&gt;&amp;gt; mempool size is met handles this, but I’m asking since it seems like&lt;br/&gt;&amp;gt; there has been several changes to the acceptance code and eviction&lt;br/&gt;&amp;gt; policy since the limit was first introduced.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Johan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Feb 13, 2019 at 6:57 AM Rusty Russell &amp;lt;rusty at rustcorp.com.au&lt;br/&gt;&amp;gt; &amp;lt;mailto:rusty at rustcorp.com.au&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt Corallo &amp;lt;lf-lists at mattcorallo.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; writes:&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt;&amp;gt; Thus, even if you imagine a steady-state mempool growth, unless the&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt;&amp;gt; &amp;#34;near the top of the mempool&amp;#34; criteria is &amp;#34;near the top of the next&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt;&amp;gt; block&amp;#34; (which is obviously *not* incentive-compatible)&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt; I was defining &amp;#34;top of mempool&amp;#34; as &amp;#34;in the first 4 MSipa&amp;#34;, ie. next&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt; block, and assumed you&amp;#39;d only allow RBF if the old package wasn&amp;#39;t&lt;br/&gt;&amp;gt;     in the&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt; top and the replacement would be.  That seems incentive&lt;br/&gt;&amp;gt;     compatible; more&lt;br/&gt;&amp;gt;     &amp;gt;&amp;gt; than the current scheme?&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; My point was, because of block time variance, even that criteria&lt;br/&gt;&amp;gt;     doesn&amp;#39;t hold up. If you assume a steady flow of new transactions and&lt;br/&gt;&amp;gt;     one or two blocks come in &amp;#34;late&amp;#34;, suddenly &amp;#34;top 4MWeight&amp;#34; isn&amp;#39;t&lt;br/&gt;&amp;gt;     likely to get confirmed until a few blocks come in &amp;#34;early&amp;#34;. Given&lt;br/&gt;&amp;gt;     block variance within a 12 block window, this is a relatively likely&lt;br/&gt;&amp;gt;     scenario.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     [ Digging through old mail. ]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Doesn&amp;#39;t really matter.  Lightning close algorithm would be:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     1.  Give bitcoind unileratal close.&lt;br/&gt;&amp;gt;     2.  Ask bitcoind what current expidited fee is (or survey your mempool).&lt;br/&gt;&amp;gt;     3.  Give bitcoind child &amp;#34;push&amp;#34; tx at that total feerate.&lt;br/&gt;&amp;gt;     4.  If next block doesn&amp;#39;t contain unilateral close tx, goto 2.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     In this case, if you allow a simpified RBF where &amp;#39;you can replace if&lt;br/&gt;&amp;gt;     1. feerate is higher, 2. new tx is in first 4Msipa of mempool, 3.&lt;br/&gt;&amp;gt;     old tx isnt&amp;#39;,&lt;br/&gt;&amp;gt;     it works.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     It allows someone 100k of free tx spam, sure.  But it&amp;#39;s simple.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     We could further restrict it by marking the unilateral close somehow to&lt;br/&gt;&amp;gt;     say &amp;#34;gonna be pushed&amp;#34; and further limiting the child tx weight (say,&lt;br/&gt;&amp;gt;     5kSipa?) in that case.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Cheers,&lt;br/&gt;&amp;gt;     Rusty.&lt;br/&gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;     Lightning-dev mailing list&lt;br/&gt;&amp;gt;     Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:56:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2a9zcadlrp6zqgxp4np459ucz4kkc5x2m73e22qf96plvh06lqjszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qatzva</id>
    
      <title type="html">📅 Original date posted:2018-10-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2a9zcadlrp6zqgxp4np459ucz4kkc5x2m73e22qf96plvh06lqjszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qatzva" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszfmwfqvntu7z3cu4vckvtnj34pl987a7587hu5d7dx7l35p6m34sygw8px&#39;&gt;nevent1q…w8px&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-10-08&lt;br/&gt;📝 Original message:&lt;br/&gt;Resending due to ML bugs....&lt;br/&gt;&lt;br/&gt;On a related note, it would be nice to get some clarity on appropriate&lt;br/&gt;usage of the r= field here.&lt;br/&gt;The way I had implemented it initially was that if an invoice had an r=&lt;br/&gt;field any publicly-discovered last-hop routes would be ignored as the r=&lt;br/&gt;data is most likely more up-to-date than any public route rumor information.&lt;br/&gt;However, if it&amp;#39;s only used as a hint and only one or two out of&lt;br/&gt;potentially many channels are included in it, that may make little sense.&lt;br/&gt;&lt;br/&gt;Not really sure what the appropriate guidance should be, probably&lt;br/&gt;something like SHOULD prefer to use invoice-r=-provided-hints over&lt;br/&gt;publicly-discovered routes however MAY use other last-hops in case a&lt;br/&gt;substantially better route is known?&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 09/19/18 22:10, Rusty Russell wrote:&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         I&amp;#39;m considering a change to c-lightning, where `invoice` would&lt;br/&gt;&amp;gt; automatically append an &amp;#39;r&amp;#39; field for a channel which has sufficient&lt;br/&gt;&amp;gt; *incoming* capacity for the amount (using a weighted probability across&lt;br/&gt;&amp;gt; our peers).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;          This isn&amp;#39;t quite what &amp;#39;r&amp;#39; was for, but it would be a useful&lt;br/&gt;&amp;gt; hint for payment routing and also potentially for establishing an&lt;br/&gt;&amp;gt; initial channel.  This is an issue for the Blockstream Store which&lt;br/&gt;&amp;gt; deliberately doesn&amp;#39;t advertize an address any more to avoid&lt;br/&gt;&amp;gt; centralization.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thoughts welcome!&lt;br/&gt;&amp;gt; Rusty.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:51:32&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstz9qj5820cuc622fu92euy30cacsq0aqyp68gpncerkhv3rel7tczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ltl6uz</id>
    
      <title type="html">📅 Original date posted:2015-11-19 📝 Original message: Nope, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstz9qj5820cuc622fu92euy30cacsq0aqyp68gpncerkhv3rel7tczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ltl6uz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszgkynfslv0pfm2c40q68tha732z7stqua2qnmgv95gzkght3yqtgesar37&#39;&gt;nevent1q…ar37&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-11-19&lt;br/&gt;📝 Original message:&lt;br/&gt;Nope, Luke came up with a way to do it in a soft-fork.&lt;br/&gt;&lt;br/&gt;On 11/19/15 19:12, Tadge Dryja wrote:&lt;br/&gt;&amp;gt; I&amp;#39;ve joked that BIP62 is the &amp;#34;whack-a-mole&amp;#34; BIP in that it addresses&lt;br/&gt;&amp;gt; many vectors for txid malleability, but maybe there are more.  And more&lt;br/&gt;&amp;gt; importantly, it addresses 3rd party malleability.  It&amp;#39;s not helpful in&lt;br/&gt;&amp;gt; the context of lightning channel creation because ECDSA sigs are&lt;br/&gt;&amp;gt; inherently malleable.  You can always re-sign the same message with a&lt;br/&gt;&amp;gt; different k-value and get a different signature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The functionality that&amp;#39;s needed is to be able to reliably spend from&lt;br/&gt;&amp;gt; unconfirmed transactions.  Segregated witness can accomplish that, but&lt;br/&gt;&amp;gt; it quite a large hard-fork change.  sighash_noinput can also accomplish&lt;br/&gt;&amp;gt; that: as input txids are not signed, if they change, the spending&lt;br/&gt;&amp;gt; transaction can be modified while leaving counterparty signatures intact.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m hoping to start a new &amp;#34;testnet-L&amp;#34; similar to testnet3, with this&lt;br/&gt;&amp;gt; sighash type so that we can test malleability mitigation out.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Oh also, hi mailing list, sorry I have not posted till now!  But I will&lt;br/&gt;&amp;gt; start posting!)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Tadge&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Nov 19, 2015 at 9:56 AM, Mark Friedenbach &amp;lt;mark at friedenbach.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:mark at friedenbach.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     The basic idea of the soft-fork plan is very simple --- have the&lt;br/&gt;&amp;gt;     scriptPubKey be just the 20-byte hash of the redeem script. The&lt;br/&gt;&amp;gt;     scriptSig of the spending input is empty. The actual scriptSig, with&lt;br/&gt;&amp;gt;     the redeem script and signatures, is contained in a separate Merkle&lt;br/&gt;&amp;gt;     tree committed to elsewhere in the block (e.g. in the last output of&lt;br/&gt;&amp;gt;     the coinbase, or the last output of the last transaction).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     On Thu, Nov 19, 2015 at 7:31 AM, Greg Sanders &amp;lt;gsanders87 at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:gsanders87 at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;         The hardfork variant is quite simple, if I understood it&lt;br/&gt;&amp;gt;         correctly. You just stick the signatures in another parallel&lt;br/&gt;&amp;gt;         merkle tree. So if you don&amp;#39;t want to validate signatures, just&lt;br/&gt;&amp;gt;         don&amp;#39;t download them, and validate everything else. TXIDs don&amp;#39;t&lt;br/&gt;&amp;gt;         use the signature at all. Nothing to malleate, AFAIK. Not sure&lt;br/&gt;&amp;gt;         what the softfork plan is, but it will be a talk at Scaling&lt;br/&gt;&amp;gt;         Bitcoin HK.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;         On Thu, Nov 19, 2015 at 10:28 AM, Glenn Tarbox, PhD&lt;br/&gt;&amp;gt;         &amp;lt;glenn at tarbox.org &amp;lt;mailto:glenn at tarbox.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             On Thu, Nov 19, 2015 at 4:33 AM, sickpig at gmail.com&lt;br/&gt;&amp;gt;             &amp;lt;mailto:sickpig at gmail.com&amp;gt; &amp;lt;sickpig at gmail.com&lt;br/&gt;&amp;gt;             &amp;lt;mailto:sickpig at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;                 Hi Pierre&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;                 you could start here&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;                 &lt;a href=&#34;https://github.com/ElementsProject/elementsproject.github.io#segregated-witness&#34;&gt;https://github.com/ElementsProject/elementsproject.github.io#segregated-witness&lt;/a&gt;&lt;br/&gt;&amp;gt;                 &lt;a href=&#34;https://people.xiph.org/~greg/blockstream.gmaxwell.elements.talk.060815.pdf&#34;&gt;https://people.xiph.org/~greg/blockstream.gmaxwell.elements.talk.060815.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;                 &lt;a href=&#34;https://github.com/ElementsProject/elements&#34;&gt;https://github.com/ElementsProject/elements&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             There was a brief blip on Reddit:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             &lt;a href=&#34;https://www.reddit.com/r/Bitcoin/comments/3ngtx5/could_the_segregated_witness_part_of_the/cwnthlh&#34;&gt;https://www.reddit.com/r/Bitcoin/comments/3ngtx5/could_the_segregated_witness_part_of_the/cwnthlh&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             Its weird how little information there is on Segregated&lt;br/&gt;&amp;gt;             Witness.  I&amp;#39;m guessing its a simple concept and those&lt;br/&gt;&amp;gt;             working on it (sipa / gmaxwell) haven&amp;#39;t felt the need to&lt;br/&gt;&amp;gt;             write it up.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             That it &amp;#34;apparently&amp;#34; can be done with a soft fork similar to&lt;br/&gt;&amp;gt;             P2SH is good news... I guess...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             --&lt;br/&gt;&amp;gt;             Glenn H. Tarbox, PhD&lt;br/&gt;&amp;gt;               =]|[=&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;             _______________________________________________&lt;br/&gt;&amp;gt;             Lightning-dev mailing list&lt;br/&gt;&amp;gt;             Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;             &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;             &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;         _______________________________________________&lt;br/&gt;&amp;gt;         Lightning-dev mailing list&lt;br/&gt;&amp;gt;         Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;         &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;     Lightning-dev mailing list&lt;br/&gt;&amp;gt;     Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&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; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-09T14:45:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs968u37kadnlrutufranwfyud4xauqc0z590gy4dzyd8zehg8wclczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5295qur</id>
    
      <title type="html">📅 Original date posted:2022-04-23 📝 Original message:Still ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs968u37kadnlrutufranwfyud4xauqc0z590gy4dzyd8zehg8wclczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5295qur" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrq536ed4yg6c4630a5pl3u43uzf7q68aphm0mvp5xlly06qznkzcc7tdp2&#39;&gt;nevent1q…tdp2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-23&lt;br/&gt;📝 Original message:Still trying to make sure I understand this concern, let me know if I get this all wrong.&lt;br/&gt;&lt;br/&gt;On 4/22/22 10:25 AM, Russell O&amp;#39;Connor via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; It&amp;#39;s not the attackers *only choice to succeed*.  If an attacker steals the hot key, then they have &lt;br/&gt;&amp;gt; the option to simply wait for the user to unvault their funds of their own accord and then race / &lt;br/&gt;&amp;gt; outspend the users transaction with their own.  Indeed, this is what we expect would happen in the &lt;br/&gt;&amp;gt; dark forest.&lt;br/&gt;&lt;br/&gt;Right, a key security assumption of the CTV-based vaults would be that you MUST NOT EVER withdraw &lt;br/&gt;more in one go than your hot wallet risk tolerance, but given that your attack isn&amp;#39;t any worse than &lt;br/&gt;simply stealing the hot wallet key immediately after a withdraw.&lt;br/&gt;&lt;br/&gt;It does have the drawback that if you ever get a hot wallet key stole you have to rotate all of your &lt;br/&gt;CTV outputs and your CTV outputs must never be any larger than your hot wallet risk tolerance &lt;br/&gt;amount, both of which are somewhat frustrating limitations, but not security limitations, only &lt;br/&gt;practical ones.&lt;br/&gt;&lt;br/&gt;&amp;gt; And that&amp;#39;s not even mentioning the issues already noted by the document regarding fee management, &lt;br/&gt;&amp;gt; which would likely also benefit from a less constrained design for covenants.&lt;br/&gt;&lt;br/&gt;Of course I&amp;#39;ve always been in favor of a less constrained covenants design from day one for ten &lt;br/&gt;reasons, but that&amp;#39;s a whole other rabbit hole :)
    </content>
    <updated>2023-06-08T01:07:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg5wlfkzysqcv8922zgw2p9sllt9vtdh6dkut9de5hrwga7menm4szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm59wek2s</id>
    
      <title type="html">📅 Original date posted:2021-04-25 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg5wlfkzysqcv8922zgw2p9sllt9vtdh6dkut9de5hrwga7menm4szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm59wek2s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxp23kce8ztwd00q6r7ax53ftypf5u270rvsnv8as8cfm6vsa5rscvex3pd&#39;&gt;nevent1q…x3pd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-25&lt;br/&gt;📝 Original message:Alright, let&amp;#39;s see...&lt;br/&gt;&lt;br/&gt;Sorting by most recently updated...&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/pulls?page=1&amp;amp;q=is%3Apr&#43;is%3Aopen&#43;sort%3Aupdated-asc&#43;updated%3A%3E2021-01-01&#34;&gt;https://github.com/bitcoin/bips/pulls?page=1&amp;amp;q=is%3Apr&#43;is%3Aopen&#43;sort%3Aupdated-asc&#43;updated%3A%3E2021-01-01&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#1104 has been updated nearly daily for the past many weeks. You commented 12 days ago saying &amp;#34;Concept NACK&amp;#34; (which &lt;br/&gt;isn&amp;#39;t a thing on BIPs - huh? they&amp;#39;re author documents, as you&amp;#39;re well aware), and nothing further.&lt;br/&gt;&lt;br/&gt;#1105 which is less recently updated by one on the above list has a comment from you 19 hours ago.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m really not sure what playing dumb gets you, here. Its really transparent and isn&amp;#39;t helpful in any way to anything.&lt;br/&gt;&lt;br/&gt;In general, I think its time we all agree the BIP process has simply failed and move on. Luckily its not really all that &lt;br/&gt;critical and proposed protocol documents can be placed nearly anywhere with the same effect.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 4/25/21 17:22, Luke Dashjr wrote:&lt;br/&gt;&amp;gt; On Sunday 25 April 2021 21:14:08 Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt; On 4/25/21 17:00, Luke Dashjr wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I will not become an accomplice to this deception by giving special&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; treatment, and will process the BIP PR neutrally according to the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; currently-defined BIP process.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Again, please don&amp;#39;t play dumb, no one watching believes this - you&amp;#39;ve been&lt;br/&gt;&amp;gt;&amp;gt; active on the BIP repo on numerous PRs and this has never in the past been&lt;br/&gt;&amp;gt;&amp;gt; the case.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I started going through PRs a few days ago, in order of &amp;#34;Recently updated&amp;#34; on&lt;br/&gt;&amp;gt; GitHub, starting with the least-recent following the last one I triaged a&lt;br/&gt;&amp;gt; month ago that hasn&amp;#39;t seen activity.. the same as I have been doing month&lt;br/&gt;&amp;gt; after month prior to this.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If you don&amp;#39;t believe me, feel free to look through the repo history.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-08T00:52:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxspf8elzvhccv0h0j0v32d6eckrmr3lhjt7x8vtg32vw6zrut3mgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5yzs9ed</id>
    
      <title type="html">📅 Original date posted:2021-04-24 📝 Original message:What ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxspf8elzvhccv0h0j0v32d6eckrmr3lhjt7x8vtg32vw6zrut3mgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5yzs9ed" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfeatucjxwm5q2k47543hdl9uepk2fhru85v9wj2we4j5yl4j4h5gz5f9ja&#39;&gt;nevent1q…f9ja&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-24&lt;br/&gt;📝 Original message:What is preventing the BIP maintainership role from moving to a bot? It does seem like a bot should be able to do a fine &lt;br/&gt;job given the explicit criteria (though ignoring obvious spam is often nice, its by no means a requirement).&lt;br/&gt;&lt;br/&gt;Given recent events where humans have....acted like humans, it seems a move to a bot may be warranted.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 4/24/21 00:42, Greg Maxwell via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I am opposed to the addition of Kalle Alm at this time.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Those who believe that adding him will resolve the situation with&lt;br/&gt;&amp;gt; Luke-jr&amp;#39;s inappropriate behavior re: PR1104 are mistaken.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 27e59ffd51ee5a95d0e0faff70e045faca10b00015e90abc1c8de48b1dfff40c&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-08T00:52:05&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp78xhshpsldgj0v2zppzqj29x8wgvakfjp03vswu3ejpfefpytqczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5c0m8j9</id>
    
      <title type="html">📅 Original date posted:2021-03-06 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp78xhshpsldgj0v2zppzqj29x8wgvakfjp03vswu3ejpfefpytqczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5c0m8j9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfx3jfj0agqq565u76hslurwkg5z7njyqe50jp2t5p8pyqe3z7yzsc7a8rq&#39;&gt;nevent1q…a8rq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-06&lt;br/&gt;📝 Original message:I&amp;#39;m really unsure that three months is a short enough time window that there wouldn&amp;#39;t be a material effort to split the &lt;br/&gt;network with divergent consensus rules. Instead, a three month window is certainly long enough to organize and make a &lt;br/&gt;lot of noise around such an effort, given BIP 148 was organized and reached its peak within a similar such window.&lt;br/&gt;&lt;br/&gt;Worse, because the obvious alternative after a three month activation failure is a significant delay prior to &lt;br/&gt;activation, the vocal UASF minority may be encouraged to pursue such a route to avoid such a delay.&lt;br/&gt;&lt;br/&gt;One alternative may be to reduce the signaling windows involved and start slightly later. Instead of the likelihood of &lt;br/&gt;failure growing on the horizon, simply have two signaling windows (maybe two weeks, maybe a moth each?). In order to &lt;br/&gt;ensure success remains likely, begin them somewhat later after software release to give pools and miners a chance to &lt;br/&gt;configure their mining software in advance.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 3/5/21 22:43, David A. Harding via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On the ##taproot-activation IRC channel, Russell O&amp;#39;Connor recently&lt;br/&gt;&amp;gt; proposed a modification of the &amp;#34;Let&amp;#39;s see what happens&amp;#34; activation&lt;br/&gt;&amp;gt; proposal.[1] The idea received significant discussion and seemed&lt;br/&gt;&amp;gt; acceptable to several people who could not previously agree on a&lt;br/&gt;&amp;gt; proposal (although this doesn&amp;#39;t necessarily make it their first&lt;br/&gt;&amp;gt; choice).  The following is my attempt at a description.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1. Start soon: shortly after the release of software containing this&lt;br/&gt;&amp;gt;     proposed activation logic, nodes will begin counting blocks towards&lt;br/&gt;&amp;gt;     the 90% threshold required to lock in taproot.[2]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 2. Stop soon: if the lockin threshold isn&amp;#39;t reached within approximately&lt;br/&gt;&amp;gt;     three months, the activation attempt fails.  There is no mandatory&lt;br/&gt;&amp;gt;     activation and everyone is encouraged to try again using different&lt;br/&gt;&amp;gt;     activation parameters.&lt;br/&gt;&amp;gt;     &lt;br/&gt;&amp;gt; 2. Delayed activation: in the happy occasion where the lockin threshold&lt;br/&gt;&amp;gt;     is reached, taproot is guaranteed to eventually activate---but not&lt;br/&gt;&amp;gt;     until approximately six months after signal tracking started.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Example timeline&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (All dates approximate; see the section below about BIP9 vs BIP8.)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - T&#43;0: release of one or more full nodes with activation code&lt;br/&gt;&amp;gt; - T&#43;14: signal tracking begins&lt;br/&gt;&amp;gt; - T&#43;28: earliest possible lock in&lt;br/&gt;&amp;gt; - T&#43;104: locked in by this date or need to try a different activation process&lt;br/&gt;&amp;gt; - T&#43;194: activation (if lockin occurred)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Analysis&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The goal of Speedy Trial is to allow a taproot activation attempt to&lt;br/&gt;&amp;gt; either quickly succeed or quickly fail---without compromising safety in&lt;br/&gt;&amp;gt; either case.  Details below:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Mitigating the problems of early success&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; New rules added in a soft fork need to be enforced by a large part of&lt;br/&gt;&amp;gt; the economy or there&amp;#39;s a risk that a long chain of blocks breaking the&lt;br/&gt;&amp;gt; rules will be accepted by some users and rejected by others, causing a&lt;br/&gt;&amp;gt; chain split that can result in large direct losses to transaction&lt;br/&gt;&amp;gt; receivers and potentially even larger indirect losses to holders due to&lt;br/&gt;&amp;gt; reduced confidence in the safety of the Bitcoin system.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; One step developers have taken in the past to ensure widespread adoption&lt;br/&gt;&amp;gt; of new consensus rules is programming in a delay between the time software&lt;br/&gt;&amp;gt; with those rules is expected to be released and when the software starts&lt;br/&gt;&amp;gt; tracking which blocks signal for activation.  For example:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;      Soft fork        | Release    | Start      | Delta&lt;br/&gt;&amp;gt;      -----------------&#43;------------&#43;------------&#43;----------&lt;br/&gt;&amp;gt;      BIP68 (v0.12.1)  | 2016-04-15 | 2016-05-11 | 26 days&lt;br/&gt;&amp;gt;      BIP141 (v0.13.1) | 2016-10-27 | 2016-11-18 | 24 days&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;      Sources: BitcoinCore.org, &lt;a href=&#34;https://gist.github.com/ajtowns/1c5e3b8bdead01124c04c45f01c817bc&#34;&gt;https://gist.github.com/ajtowns/1c5e3b8bdead01124c04c45f01c817bc&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Speedy Trial replaces most of that upfront delay with a backend delay.&lt;br/&gt;&amp;gt; No matter how fast taproot&amp;#39;s activation threshold is reached by miners,&lt;br/&gt;&amp;gt; there will be six months between the time signal tracking starts and when&lt;br/&gt;&amp;gt; nodes will begin enforcing taproot&amp;#39;s rules.  This gives the userbase even&lt;br/&gt;&amp;gt; more time to upgrade than if we had used the most recently proposed start&lt;br/&gt;&amp;gt; date for a BIP8 activation (~July 23rd).[2]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Succeed, or fail fast&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The earlier version of this proposal was documented over 200 days ago[3]&lt;br/&gt;&amp;gt; and taproot&amp;#39;s underlying code was merged into Bitcoin Core over 140 days&lt;br/&gt;&amp;gt; ago.[4]  If we had started Speedy Trial at the time taproot&lt;br/&gt;&amp;gt; was merged (which is a bit unrealistic), we would&amp;#39;ve either be less than&lt;br/&gt;&amp;gt; two months away from having taproot or we would have moved on to the&lt;br/&gt;&amp;gt; next activation attempt over a month ago.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Instead, we&amp;#39;ve debated at length and don&amp;#39;t appear to be any closer to&lt;br/&gt;&amp;gt; what I think is a widely acceptable solution than when the mailing list&lt;br/&gt;&amp;gt; began discussing post-segwit activation schemes over a year ago.[5]  I&lt;br/&gt;&amp;gt; think Speedy Trial is a way to generate fast progress that will either&lt;br/&gt;&amp;gt; end the debate (for now, if activation is successful) or give us some&lt;br/&gt;&amp;gt; actual data upon which to base future taproot activation proposals.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Of course, for those who enjoy the debate, discussion can continue while&lt;br/&gt;&amp;gt; waiting for the results of Speedy Trial.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Base activation protocol&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The idea can be implemented on top of either Bitcoin Core&amp;#39;s existing&lt;br/&gt;&amp;gt; BIP9 code or its proposed BIP8 patchset.[6]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - BIP9 uses two time-based[7] parameters, starttime and timeout.  Using&lt;br/&gt;&amp;gt;    these values plus a time-based parameter for the minimum activation&lt;br/&gt;&amp;gt;    delay would give three months for miners to activate taproot, but some&lt;br/&gt;&amp;gt;    of that time near the start or the end might not be usable due to&lt;br/&gt;&amp;gt;    signals only being measured in full retarget periods.  However, the&lt;br/&gt;&amp;gt;    six month time for users to upgrade their node would be not be&lt;br/&gt;&amp;gt;    affected by either slow or fast block production.&lt;br/&gt;&amp;gt;    &lt;br/&gt;&amp;gt;      BIP9 is already part of Bitcoin Core and I think the changes being&lt;br/&gt;&amp;gt;      proposed would be relatively small, resulting in a small patch that&lt;br/&gt;&amp;gt;      could be easy to review.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - BIP8 uses two height-based parameters, startheight and timeoutheight.&lt;br/&gt;&amp;gt;    Using height values would ensure miners had a certain number of&lt;br/&gt;&amp;gt;    retarget periods (6) to lock in taproot and that there&amp;#39;d be a certain&lt;br/&gt;&amp;gt;    number of blocks (about 24,000) until activation, although latest lock&lt;br/&gt;&amp;gt;    in and expected activation could occur moderately earlier or later&lt;br/&gt;&amp;gt;    than the estimated three and six months.&lt;br/&gt;&amp;gt;    &lt;br/&gt;&amp;gt;      BIP8 would likely be used if Speedy Trial fails, so it could be&lt;br/&gt;&amp;gt;      advantageous to base this proposal on BIP8 so that we gain&lt;br/&gt;&amp;gt;      experience running that code in production.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For additional discussion about using times versus heights, see today&amp;#39;s&lt;br/&gt;&amp;gt; log for ##taproot-activation.[11]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Additional concerns&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Encourages false signaling: false signaling is when miners signal&lt;br/&gt;&amp;gt;    readiness to enforce rules that their nodes don&amp;#39;t actually support.&lt;br/&gt;&amp;gt;    This was partially responsible for a six-block reorg shortly after the&lt;br/&gt;&amp;gt;    final BIP66 activation[8] and was found to still be a problem during&lt;br/&gt;&amp;gt;    the BIP68 lockin period despite BIP9 being designed to avoid it.[9]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;    Because Speedy Trial only gives miners a maximum of three months to&lt;br/&gt;&amp;gt;    signal support for taproot, it may encourage such false signaling.  If&lt;br/&gt;&amp;gt;    taproot locks in as a result of their signaling but most of them fail&lt;br/&gt;&amp;gt;    to upgrade by the activation date several months later, unprepared&lt;br/&gt;&amp;gt;    miners could lose large amounts of money and users could see long&lt;br/&gt;&amp;gt;    reorgs (with unupgraded nodes and SPV lite clients potentially losing&lt;br/&gt;&amp;gt;    money).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;    Compared to other activation proposals, I think the only difference is&lt;br/&gt;&amp;gt;    Speedy Trial&amp;#39;s short timeline.  False signaling is possible with any&lt;br/&gt;&amp;gt;    other proposal and the same problems can occur if miners fail to&lt;br/&gt;&amp;gt;    upgrade for any mandatory activation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ### Additional advantages&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - No mandatory signaling: at no time are miners required to signal by&lt;br/&gt;&amp;gt;    Speedy Trial.  This includes no mandatory signaling during the&lt;br/&gt;&amp;gt;    locked_in period(s), although such signaling will be encouraged (as it&lt;br/&gt;&amp;gt;    was with BIP9[10]).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Party time: to a lesser degree, a benefit mentioned for flag day&lt;br/&gt;&amp;gt;    activation may also apply here: we could get up to six months&lt;br/&gt;&amp;gt;    advanced notice of taproot activation, allowing users, developers, and&lt;br/&gt;&amp;gt;    organizations to prepare software, announcements, and celebrations for&lt;br/&gt;&amp;gt;    that event.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Implementation details and next steps&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Initial discussion about implementation may be found in today&amp;#39;s&lt;br/&gt;&amp;gt; ##taproot-activation log.[11] If it appears Speedy Trial may have&lt;br/&gt;&amp;gt; traction, Russell O&amp;#39;Connor has offered to work on a patch against BIP8&lt;br/&gt;&amp;gt; implementing it.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Acknowledgments&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The original idea for a short-duration attempt was discussed in the&lt;br/&gt;&amp;gt; ##taproot-activation IRC channel last July and the revised idea saw&lt;br/&gt;&amp;gt; additional evaluation there this week.  Despite growing frustration,&lt;br/&gt;&amp;gt; discussion has been overwhelmingly constructive, for which all the&lt;br/&gt;&amp;gt; contributors should be commended.  Although this should not in any way&lt;br/&gt;&amp;gt; imply endorsement, I&amp;#39;m grateful for the review and comments on a draft&lt;br/&gt;&amp;gt; of this email by Adam Gibson, Andrew Chow, Anthony Towns, Chris Belcher,&lt;br/&gt;&amp;gt; Jeremy Rubin, Jonas Nick, Luke Dashjr, Michael Folkson, Russell&lt;br/&gt;&amp;gt; O&amp;#39;Connor, and IRC users maybehuman and proofofkeags&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ## Footnotes&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://en.bitcoin.it/wiki/Taproot_activation_proposals#Let.E2.80.99s_see_what_happens.2C_BIP8.28false.2C_3m.29&#34;&gt;https://en.bitcoin.it/wiki/Taproot_activation_proposals#Let.E2.80.99s_see_what_happens.2C_BIP8.28false.2C_3m.29&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [2] A threshold of 1,815/2,016 blocks (90%) in a single retarget period&lt;br/&gt;&amp;gt;      seemed to have near-universal support during the 2021-02-16 IRC&lt;br/&gt;&amp;gt;      meeting.  See: &lt;a href=&#34;https://en.bitcoin.it/wiki/Taproot_activation_proposal_202102&#34;&gt;https://en.bitcoin.it/wiki/Taproot_activation_proposal_202102&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposals&amp;amp;oldid=68062&#34;&gt;https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposals&amp;amp;oldid=68062&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19953&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19953&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19573&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19573&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [7] BIP9&amp;#39;s times are based on the median of the past 11 blocks, which&lt;br/&gt;&amp;gt;      usually trails UTC by about 90 minutes but which can trail behind&lt;br/&gt;&amp;gt;      realtime significantly if miners are doing weird things.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://en.bitcoin.it/wiki/July_2015_chain_forks&#34;&gt;https://en.bitcoin.it/wiki/July_2015_chain_forks&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [9] &lt;a href=&#34;https://buildingbitcoin.org/bitcoin-core-dev/log-2016-06-21.html#l-32&#34;&gt;https://buildingbitcoin.org/bitcoin-core-dev/log-2016-06-21.html#l-32&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [10] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/ed25cb58f605ba583c735f330482df0bf9348f3a/src/test/versionbits_tests.cpp#L337-L339&#34;&gt;https://github.com/bitcoin/bitcoin/blob/ed25cb58f605ba583c735f330482df0bf9348f3a/src/test/versionbits_tests.cpp#L337-L339&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [11] &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-03-05.log&#34;&gt;http://gnusha.org/taproot-activation/2021-03-05.log&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:30:34&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0a9sefttcpcnjmn4sth2mgunphltz4zq04ctuvg3wv3q6ww06qfqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5udpycg</id>
    
      <title type="html">📅 Original date posted:2021-02-28 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0a9sefttcpcnjmn4sth2mgunphltz4zq04ctuvg3wv3q6ww06qfqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5udpycg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8fd5lrf74e428z9tfltkfxgcy0x8y0vetmumydll9zv6qvejn08gyl25rf&#39;&gt;nevent1q…25rf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-28&lt;br/&gt;📝 Original message:I think you may have misunderstood my proposal. I&amp;#39;m not suggesting some people run BIP 8(true), some run BIP8(false), &lt;br/&gt;and some run a client which has a flag day, I&amp;#39;m suggesting a flag day activation instead of any BIP8-based activation. &lt;br/&gt;Replies to your further points inline.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/28/21 12:20, Luke Dashjr wrote:&lt;br/&gt;&amp;gt; On Sunday 28 February 2021 16:45:22 Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Concept NACK. This still has the same problems BIP149 would have had, as I&lt;br/&gt;&amp;gt; just reminded in my last email to this ML:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1) Such a chain does not indicate activation at all, leaving it unresolved and&lt;br/&gt;&amp;gt; debatable whether activation has occurred or not.&lt;br/&gt;&amp;gt; 2) As a result, it is also impractical to intentionally reject the softfork&lt;br/&gt;&amp;gt; should anyone decide to do so.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Signalling is important to activation.&lt;br/&gt;&lt;br/&gt;Several people responded disagreeing, including myself. I&amp;#39;ll paste my response here in case you missed it:&lt;br/&gt;&lt;br/&gt;Forced-signaling, or any form of signaling, does not materially change whether a soft fork can be seen to be safe to &lt;br/&gt;use. Pieter wrote a great post[1] some time ago that goes into depth about the security of soft forks, but, while miners &lt;br/&gt;can help to avoid the risk of forks, they aren&amp;#39;t the determining factor in whether use of a fork should be considered &lt;br/&gt;safe (ie the fork &amp;#34;has activated&amp;#34;).&lt;br/&gt;&lt;br/&gt;Not only that, but the signaling methods used in BIP 8/9 (ie the version field in the block header) do not imply &lt;br/&gt;anything about whether mining pools are running full nodes which enforce the soft fork at all, only whether the pool has &lt;br/&gt;configured their stratum software to signal or not.&lt;br/&gt;&lt;br/&gt;Ultimately, forced-signaling, or signaling period, are not a substitute for having a broad set of upgraded nodes across &lt;br/&gt;the network, including an overwhelming majority of economically-active nodes, enforcing the rules of a new fork. As this &lt;br/&gt;can be difficult to measure, waiting some time after a fork and examining upgrade patterns across the network is important.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012014.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012014.html&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:29:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrqr0y4sj8q4mma7pjznghtf6zyf086l82g6840faq03d0wh7629szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm52sap7f</id>
    
      <title type="html">📅 Original date posted:2021-02-28 📝 Original message:Note ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrqr0y4sj8q4mma7pjznghtf6zyf086l82g6840faq03d0wh7629szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm52sap7f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyt6gtvvkrc0ryhz2lxykf67zxwwcquslc833zrhp7vw3e90h57ugzdxtr4&#39;&gt;nevent1q…xtr4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-28&lt;br/&gt;📝 Original message:Note further that mandatory signaling isn&amp;#39;t &amp;#34;just&amp;#34; a flag day - unlike a Taproot flag day (where miners running Bitcoin &lt;br/&gt;Core unmodified today will not generate invalid blocks), a mandatory signaling flag day blatantly ignores goal (3) from &lt;br/&gt;my original post - it results in any miner who has not taken active action (and ensured every part of their often-large &lt;br/&gt;infrastructure has been correctly reconfigured) generating invalid blocks.&lt;br/&gt;&lt;br/&gt;As for &amp;#34;Taproot&amp;#34; took too long, hey, at least if its locked in people can just build things assuming it exists. Some &lt;br/&gt;already are, but once its clearly locked in, there&amp;#39;s no reason to not continue other work at the same time.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/28/21 14:43, Jeremy via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I agree with much of the logic presented by Matt here.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP8 was intended to be simpler to agree on to maintain consensus, yet we find ourselves in a situation where a &amp;#34;tiny&amp;#34; &lt;br/&gt;&amp;gt; parameter has the potential to cause great network disruption and confusion (rationality is not too useful a concept &lt;br/&gt;&amp;gt; here given differing levels of sophistication and information). It is therefore much simpler and more likely to be &lt;br/&gt;&amp;gt; universally understood by all network participants to just have a flag day. It is easier to communicate what users &lt;br/&gt;&amp;gt; should do and when.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is ultimately not coercive to users because the upgrade for Taproot itself is provable and analyzable on its own, &lt;br/&gt;&amp;gt; but activation parameters based on what % of economically relevant nodes are running an upgrade by a certain date are &lt;br/&gt;&amp;gt; not. Selecting these sorts of complicated consensus parameters may ultimately present more opportunity for a cooptable &lt;br/&gt;&amp;gt; consensus process than something more straightforward.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That said, a few points strike me as worth delving into.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1) Con: Mandatory signalling is no different than a flag day. Mandatory signaling is effectively 2 flag days -- one for &lt;br/&gt;&amp;gt; the signaling rule, 1 for the taproot type. The reason for the 2 week gap between flag day for signaling and flag day &lt;br/&gt;&amp;gt; for taproot rules is, more or less, so that nodes who aren&amp;#39;t taproot ready at the 1st flag day do not end up SPV mining &lt;br/&gt;&amp;gt; (using standardness rules in mempool prevents them from mining an invalid block on top of a valid tip, but does not &lt;br/&gt;&amp;gt; ensure the tip is valid).&lt;br/&gt;&amp;gt; 2) Con: Releasing a flag day without releasing the LOT=true code leading up to that flag day means that clients would &lt;br/&gt;&amp;gt; not be fully compatible with an early activation that could be proposed before the flag day is reached. E.g., LOT=true &lt;br/&gt;&amp;gt; is a flag day that retains the possibility of being compatible with other BIP8 releases without changing software.&lt;br/&gt;&amp;gt; 3) Pro: BIP-8 is partially in service of &amp;#34;early activation&amp;#34; and . I&amp;#39;m personally skeptical that early activation is/was &lt;br/&gt;&amp;gt; ever a good idea. A fixed activation date may be largely superior for business purposes, software engineering schedules, &lt;br/&gt;&amp;gt; etc. I think even with signaling BIP8, it would be possibly superior to activate rules at a fixed date (or a quantized &lt;br/&gt;&amp;gt; set of fixed dates, e.g. guaranteeing at least 3 months but maybe more).&lt;br/&gt;&amp;gt; 4) Pro: part of the argument for BIP-8=false is that it is possible that the rule could not activate, if signaling does &lt;br/&gt;&amp;gt; not occur, providing additional stopgap against dev collusion and bugs. But BIP-8 can activate immediately (with start &lt;br/&gt;&amp;gt; times being proposed 1 month after release?) so we don&amp;#39;t have certainty around how much time there is for that secondary &lt;br/&gt;&amp;gt; review process (read -- I think it isn&amp;#39;t that valuable) and if there *is* a deadly bug discovered, we might want to &lt;br/&gt;&amp;gt; hard-fork to fix it even if it isn&amp;#39;t yet signaled for (e.g., if the rule activates it enables more mining reward). So I &lt;br/&gt;&amp;gt; think that it&amp;#39;s a healthier mindset to release a with definite deadline and not rule out having to do a hard fork if &lt;br/&gt;&amp;gt; there is a grave issue (we shouldn&amp;#39;t ever release a SF if we think this is at all likely, mind you).&lt;br/&gt;&amp;gt; 5) Con: It&amp;#39;s already taken so long for taproot, the schedule around taproot was based on the idea it could early &lt;br/&gt;&amp;gt; activate, 2022 is now too far away. I don&amp;#39;t know how to defray this other than, if your preferred idea is 1 year flag &lt;br/&gt;&amp;gt; day, to do that via LOT=true so that taproot can still have early activation if desired.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Overall I agree with the point that all the contention around LOT, makes a flag day look not so bad. And something &lt;br/&gt;&amp;gt; closer to a flag day might not be so bad either for future forks as well.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; However, I think given the appetite for early activation, if a flag day is desired I think LOT=true is the best option &lt;br/&gt;&amp;gt; at this time as it allows our flag day to remain compatible with such an early activation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think we can also clearly communicate that LOT=true for Taproot is not a precedent setting occurence for any future &lt;br/&gt;&amp;gt; forks (hold me accountable to not using this as precedent this should I ever advocate for a SF with similar release &lt;br/&gt;&amp;gt; parameters).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:29:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg0dcdr28w7hjdk4pcy4cfs88gzwq6zqsy8evdx7zr9ywr0vmwevszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58x28u6</id>
    
      <title type="html">📅 Original date posted:2021-02-28 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg0dcdr28w7hjdk4pcy4cfs88gzwq6zqsy8evdx7zr9ywr0vmwevszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58x28u6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdv70hw0m58sxvntckaccz05a3epe66tdn9gecckzpwqqr9mtsqtcrux4dq&#39;&gt;nevent1q…x4dq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-28&lt;br/&gt;📝 Original message:Forced-signaling, or any form of signaling, does not materially change whether a soft fork can be seen to be safe to &lt;br/&gt;use. Pieter wrote a great post[1] some time ago that goes into depth about the security of soft forks, but, while miners &lt;br/&gt;can help to avoid the risk of forks, they aren&amp;#39;t the determining factor in whether use of a fork should be considered &lt;br/&gt;safe (ie the fork &amp;#34;has activated&amp;#34;).&lt;br/&gt;&lt;br/&gt;Not only that, but the signaling methods used in BIP 8/9 (ie the version field in the block header) do not imply &lt;br/&gt;anything about whether mining pools are running full nodes which enforce the soft fork at all, only whether the pool has &lt;br/&gt;configured their stratum software to signal or not.&lt;br/&gt;&lt;br/&gt;Ultimately, forced-signaling, or signaling period, are not a substitute for having a broad set of upgraded nodes across &lt;br/&gt;the network, including an overwhelming majority of economically-active nodes, enforcing the rules of a new fork. As this &lt;br/&gt;can be difficult to measure, waiting some time after a fork and examining upgrade patterns across the network is important.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012014.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012014.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On 2/27/21 12:55, Luke Dashjr via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; This has the same problems BIP149 did: since there is no signalling, it is&lt;br/&gt;&amp;gt; ambiguous whether the softfork has activated at all. Both anti-SF and pro-SF&lt;br/&gt;&amp;gt; nodes will remain on the same chain, with conflicting perceptions of the&lt;br/&gt;&amp;gt; rules, and resolution (if ever) will be chaotic. Absent resolution, however,&lt;br/&gt;&amp;gt; there is a strong incentive not to rely on the rules, and thus it may never&lt;br/&gt;&amp;gt; get used, and therefore also never resolved.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Additionally, it loses the flexibility of BIP 8 to, after the initial&lt;br/&gt;&amp;gt; deployment, move the timeoutheight sooner.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thursday 25 February 2021 22:33:25 Gregorio Guidi via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I followed the debate on LOT=false / LOT=true trying to get a grasp of&lt;br/&gt;&amp;gt;&amp;gt; the balance of risks and advantages. The summary by Aaron van Wirdum [1]&lt;br/&gt;&amp;gt;&amp;gt; explains well the difficulties to find a good equilibrium... it&lt;br/&gt;&amp;gt;&amp;gt; concludes that &amp;#34;perhaps, a new possibility will present itself&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thinking about such a &amp;#34;new possibility&amp;#34; that overcomes the&lt;br/&gt;&amp;gt;&amp;gt; LOT=true/false dichotomy, I would like to offer the following proposal.&lt;br/&gt;&amp;gt;&amp;gt; It could be called &amp;#34;decreasing threshold activation&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Decreasing threshold activation works similarly to BIP8, with the&lt;br/&gt;&amp;gt;&amp;gt; difference that the threshold that triggers the STARTED -&amp;gt; LOCKED_IN&lt;br/&gt;&amp;gt;&amp;gt; transition starts at 100% for the first retargeting period, and then is&lt;br/&gt;&amp;gt;&amp;gt; gradually reduced on each period in steps of 24 blocks (~1,2%). More&lt;br/&gt;&amp;gt;&amp;gt; precisely:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the 1st period (starting on start_height): if 2016 out of 2016 blocks&lt;br/&gt;&amp;gt;&amp;gt; signal, the state is changed to LOCKED_IN on the next period (otherwise&lt;br/&gt;&amp;gt;&amp;gt; stays STARTED)&lt;br/&gt;&amp;gt;&amp;gt; On the 2nd period: if 1992 out of 2016 blocks signal (~98.8%), the state&lt;br/&gt;&amp;gt;&amp;gt; transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; On the 3rd period: if 1968 out of 2016 blocks signal (~97.6%), the state&lt;br/&gt;&amp;gt;&amp;gt; transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 14th period (~6 months): if 1704 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~84.5%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 27th period (~12 months): if 1392 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~69.0%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 40th period (~18 months): if 1080 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~53.6%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 53th period (~24 months): if 768 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~38.1%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 66th period (~30 months): if 456 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~22.6%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 79th period (~36 months): if 144 out of 2016 blocks signal&lt;br/&gt;&amp;gt;&amp;gt; (~7.1%), the state transitions to LOCKED_IN on the next period&lt;br/&gt;&amp;gt;&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt; On the 84th and final period (~39 months): if 24 out of 2016 blocks&lt;br/&gt;&amp;gt;&amp;gt; signal (~1.2%), the state transitions to LOCKED_IN on the next period,&lt;br/&gt;&amp;gt;&amp;gt; otherwise goes to FAILED&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (For reference, I include below a snippet of pseudocode for the&lt;br/&gt;&amp;gt;&amp;gt; decreasing thresholds in the style of BIP8 and BIP9.)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Here are the main features and advantages of this approach:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. It is relatively conservative at the beginning: for activation to&lt;br/&gt;&amp;gt;&amp;gt; happen in the first year, it requires a clear majority of signaling&lt;br/&gt;&amp;gt;&amp;gt; hashrate, indicating that the activation is relatively safe. Only later&lt;br/&gt;&amp;gt;&amp;gt; the threshold starts to move towards &amp;#34;unsafe&amp;#34; territory, accepting the&lt;br/&gt;&amp;gt;&amp;gt; tradeoff of less support from existing hashrate in exchange for ensuring&lt;br/&gt;&amp;gt;&amp;gt; that the activation eventually happens.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 2. Like LOT=true, the activation will always occur in the end (except in&lt;br/&gt;&amp;gt;&amp;gt; the negligible case where less than 1.2% of hashrate supports it).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 3. This approach is quite easy to implement, in particular it avoids the&lt;br/&gt;&amp;gt;&amp;gt; extra code to deal with the MUST_SIGNAL period.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 4. There are no parameters to set (except startheight). I am a KISS fan,&lt;br/&gt;&amp;gt;&amp;gt; so this is a plus for me, making the activation mechanism robust and&lt;br/&gt;&amp;gt;&amp;gt; predictable with less chance for users to shoot themselves in the foot.&lt;br/&gt;&amp;gt;&amp;gt; It is also a plus for me that - if adopted as the default mechanism - it&lt;br/&gt;&amp;gt;&amp;gt; would require very little discussion on how to activate future&lt;br/&gt;&amp;gt;&amp;gt; soft-forks. In fact I think it would be a winning move for Core to&lt;br/&gt;&amp;gt;&amp;gt; commit to such a scheme, to avoid getting lost in game-theoretic rabbit&lt;br/&gt;&amp;gt;&amp;gt; holes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 5. Since there is no MUST_SIGNAL period, no automatic chain split occurs&lt;br/&gt;&amp;gt;&amp;gt; around activation when not all miners have upgraded (so activation is&lt;br/&gt;&amp;gt;&amp;gt; generally as benign as a MASF). A chain split will occur only when/if an&lt;br/&gt;&amp;gt;&amp;gt; invalid block is created (and this requires dedicated effort! it can&lt;br/&gt;&amp;gt;&amp;gt; only happen by circumventing the normal policy rules [2]). This&lt;br/&gt;&amp;gt;&amp;gt; mitigates the risk of reorgs and involuntary forks around activation,&lt;br/&gt;&amp;gt;&amp;gt; even with low miner signaling.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 6. It removes motivation to create UASF clients that force activation.&lt;br/&gt;&amp;gt;&amp;gt; While individual nodes could still try to force a quicker activation,&lt;br/&gt;&amp;gt;&amp;gt; the motivation to do so is reduced since the same result is obtained&lt;br/&gt;&amp;gt;&amp;gt; just by waiting a little more.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 7. Compared to LOT=true, activation is cleaner and quicker when it is&lt;br/&gt;&amp;gt;&amp;gt; relatively safe to do so (when the signaling hashrate is - let&amp;#39;s say -&lt;br/&gt;&amp;gt;&amp;gt; in the 70%-80% range). On the other hand, activation is pushed further&lt;br/&gt;&amp;gt;&amp;gt; and further in time when it is less safe (when signaling hashrate is&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;50%, meaning that there is a serious risk that users/miners that did&lt;br/&gt;&amp;gt;&amp;gt; not upgrade start following an alternative chain). This gives everyone&lt;br/&gt;&amp;gt;&amp;gt; time to prepare properly for such a potentially disruptive event.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 8. If a significant number of users and miners consciously decide (for&lt;br/&gt;&amp;gt;&amp;gt; whatever reasons) that they don&amp;#39;t want to upgrade and want to fork&lt;br/&gt;&amp;gt;&amp;gt; themselves off from the chain followed by Core (as is their&lt;br/&gt;&amp;gt;&amp;gt; prerogative), they will have time to do so safely.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 9. Compared to the strategy of doing LOT=false and then LOT=true if it&lt;br/&gt;&amp;gt;&amp;gt; fails, using the decreasing threshold approach may not seem very&lt;br/&gt;&amp;gt;&amp;gt; different. But it completely removes the need to fiddle with different&lt;br/&gt;&amp;gt;&amp;gt; client releases and with the issues associated with deployed nodes with&lt;br/&gt;&amp;gt;&amp;gt; different consensus parameters.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; All in all, reading the various perspectives on this mailing list and&lt;br/&gt;&amp;gt;&amp;gt; outside I have the feeling that the strongest arguments against LOT=true&lt;br/&gt;&amp;gt;&amp;gt; have at their core a certain uneasiness with the MUST_SIGNAL mechanism&lt;br/&gt;&amp;gt;&amp;gt; and the related automatic chain split on activation, which is something&lt;br/&gt;&amp;gt;&amp;gt; that greatly complicates the analysis (but please tell me if I am&lt;br/&gt;&amp;gt;&amp;gt; wrong...). In this sense, this proposal achieves the big objective of&lt;br/&gt;&amp;gt;&amp;gt; always ending in activation (like LOT=true) without resorting to&lt;br/&gt;&amp;gt;&amp;gt; MUST_SIGNAL and chain splits.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A final note: this proposal should be seen as somewhat independent from&lt;br/&gt;&amp;gt;&amp;gt; the discussion on taproot activation. Personally I would be happy with a&lt;br/&gt;&amp;gt;&amp;gt; LOT=false activation for taproot that succeeds quickly, while the&lt;br/&gt;&amp;gt;&amp;gt; decreasing threshold approach could be evaluated as potential default&lt;br/&gt;&amp;gt;&amp;gt; activation mechanism for the future.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I would be happy to hear what you think about this. What are the&lt;br/&gt;&amp;gt;&amp;gt; possible issues/drawbacks of using this mechanism?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Gregorio&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://bitcoinmagazine.com/articles/lottrue-or-lotfalse-this-is-the-last-h&#34;&gt;https://bitcoinmagazine.com/articles/lottrue-or-lotfalse-this-is-the-last-h&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; urdle-before-taproot-activation&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] This was not the case in the past for upgrades such as BIP16 (P2SH),&lt;br/&gt;&amp;gt;&amp;gt; which generated frequent reorgs due to a combination of low activation&lt;br/&gt;&amp;gt;&amp;gt; threshold (55%) and no policy protection. But for upgrades such as&lt;br/&gt;&amp;gt;&amp;gt; taproot the normal policy rules prevent the creation of invalid blocks&lt;br/&gt;&amp;gt;&amp;gt; by non-upgraded miners. See&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://blog.bitmex.com/the-arts-of-making-softforks-protection-by-policy-r&#34;&gt;https://blog.bitmex.com/the-arts-of-making-softforks-protection-by-policy-r&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; ule/&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Pseudocode:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;           case STARTED:&lt;br/&gt;&amp;gt;&amp;gt;               int elapsed_periods = (block.height - startheight) / 2016;&lt;br/&gt;&amp;gt;&amp;gt;               if (elapsed_periods &amp;gt; 2016 / 24) {&lt;br/&gt;&amp;gt;&amp;gt;                   return FAILED;&lt;br/&gt;&amp;gt;&amp;gt;               }&lt;br/&gt;&amp;gt;&amp;gt;               int threshold = 2016 - 24 * (elapsed_periods - 1);&lt;br/&gt;&amp;gt;&amp;gt;               int count = 0;&lt;br/&gt;&amp;gt;&amp;gt;               walk = block;&lt;br/&gt;&amp;gt;&amp;gt;               for (i = 0; i &amp;lt; 2016; i&#43;&#43;) {&lt;br/&gt;&amp;gt;&amp;gt;                   walk = walk.parent;&lt;br/&gt;&amp;gt;&amp;gt;                   if (walk.nVersion &amp;amp; 0xE0000000 == 0x20000000 &amp;amp;&amp;amp;&lt;br/&gt;&amp;gt;&amp;gt; (walk.nVersion &amp;gt;&amp;gt; bit) &amp;amp; 1 == 1) { &#43;&#43;count;&lt;br/&gt;&amp;gt;&amp;gt;                   }&lt;br/&gt;&amp;gt;&amp;gt;               }&lt;br/&gt;&amp;gt;&amp;gt;               if (count &amp;gt;= threshold) {&lt;br/&gt;&amp;gt;&amp;gt;                   return LOCKED_IN;&lt;br/&gt;&amp;gt;&amp;gt;               }&lt;br/&gt;&amp;gt;&amp;gt;               return STARTED;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:29:12&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswqn96cz5pj6feqjjxv3525xmuuvza7zg3p23pc67s0tmxyzgx3nczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53uf4gd</id>
    
      <title type="html">📅 Original date posted:2021-02-22 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswqn96cz5pj6feqjjxv3525xmuuvza7zg3p23pc67s0tmxyzgx3nczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53uf4gd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrtdfpec8yd89eumw5qpjddwdwwss8hay8m7gp2xw53htaew8jkfqvcreqn&#39;&gt;nevent1q…reqn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-22&lt;br/&gt;📝 Original message:&amp;gt; On Feb 22, 2021, at 05:16, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿If a lockinontimeout=true node is requesting compact blocks from a&lt;br/&gt;&amp;gt; lockinontimeout=false node during a chainsplit in the MUST_SIGNAL phase,&lt;br/&gt;&amp;gt; I think that could result in a ban.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; More importantly, nodes on both sides of the fork need to find each other. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (If there was going to be an ongoing fork there&amp;#39;d be bigger things to&lt;br/&gt;&amp;gt; worry about...)&lt;br/&gt;&lt;br/&gt;I think it should be clear that a UASF-style command line option to allow consensus rule changes in the node in the short term, immediately before a fork carries some risk of a fork, even if I agree it may not persist over months. We can’t simply ignore that.&lt;br/&gt;&lt;br/&gt;&amp;gt; I think the important specific case of this is something like &amp;#34;if a chain&lt;br/&gt;&amp;gt; where taproot is impossible to activate is temporarily the most work,&lt;br/&gt;&amp;gt; miners with lockinontimeout=true need to be well connected so they don&amp;#39;t&lt;br/&gt;&amp;gt; end up competing with each other while they&amp;#39;re catching back up&amp;#34;.&lt;br/&gt;&lt;br/&gt;Between this and your above point, I think we probably agree - there is material  technical complexity hiding behind a “change the consensus rules“ option. Given it’s not a critical feature by any means, putting resources into fixing these issues probably isn’t worth it.&lt;br/&gt;&lt;br/&gt;Matt&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/20210222/08d2cbe2/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210222/08d2cbe2/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgjeegru46uqv4z9qnatd6zwkqc4qyg6mnlqwtgfgpjxv4ywa954gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5a6qxun</id>
    
      <title type="html">📅 Original date posted:2021-02-22 📝 Original message:Hmm, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgjeegru46uqv4z9qnatd6zwkqc4qyg6mnlqwtgfgpjxv4ywa954gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5a6qxun" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstxmleyh00s62kfvu4j3yg8f02w5q3kg04eg6cvwqcx0w5dl6gyashwmhvh&#39;&gt;nevent1q…mhvh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-22&lt;br/&gt;📝 Original message:Hmm, indeed, I may have missed that you can skip the headers issues by not persisting them, though there are other follow-on effects that are concerning and I think still make my point valid.&lt;br/&gt;&lt;br/&gt;A node feeding you invalid headers (used to be) cause for a ban - is that information still persisted? More importantly, nodes on both sides of the fork need to find each other. There’s not a great way to do that without forking the address database, DNS seeds and defining a new protocol magic.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;&amp;gt; On Feb 22, 2021, at 00:16, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿On Fri, Feb 19, 2021 at 12:48:00PM -0500, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; It was pointed out to me that this discussion is largely moot as the&lt;br/&gt;&amp;gt;&amp;gt; software complexity for Bitcoin Core to ship an option like this is likely&lt;br/&gt;&amp;gt;&amp;gt; not practical/what people would wish to see.&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin Core does not have infrastructure to handle switching consensus&lt;br/&gt;&amp;gt;&amp;gt; rules with the same datadir - after running with uasf=true for some time,&lt;br/&gt;&amp;gt;&amp;gt; valid blocks will be marked as invalid, &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think this is true? With the current proposed bip8 code,&lt;br/&gt;&amp;gt; lockinontimeout=true will cause headers to be marked as invalid, and&lt;br/&gt;&amp;gt; won&amp;#39;t process the block further. If a node running lockinontimeout=true&lt;br/&gt;&amp;gt; accepts the header, then it will apply the same consensus rules as a&lt;br/&gt;&amp;gt; lockinontimeout=false node.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think an invalid header will be added to the block index at all,&lt;br/&gt;&amp;gt; so a node restart should always cleanly allow it to be reconsidered.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The test case in&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19573/commits/bd8517135fc839c3332fea4d9c8373b94c8c9de8&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19573/commits/bd8517135fc839c3332fea4d9c8373b94c8c9de8&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; tests that a node that had rejected a chain due to lockinontimeout=true&lt;br/&gt;&amp;gt; will reorg to that chain after being restarted as a byproduct of the way&lt;br/&gt;&amp;gt; it tests different cases (the nodes set a new startheight, but retain&lt;br/&gt;&amp;gt; their lockinontimeout settings).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (I think with the current bip8 code, if you switch from&lt;br/&gt;&amp;gt; lockinontimeout=false to lockinontimeout=true and the tip of the current&lt;br/&gt;&amp;gt; most work chain is after the timeoutheight and did not lockin, then you&lt;br/&gt;&amp;gt; will continue following that chain until a taproot-invalid transaction&lt;br/&gt;&amp;gt; is inclued, rather than immediately reorging to a shorter chain that&lt;br/&gt;&amp;gt; complies with the lockinontimeout=true rules)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:28:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgnuejkezqlm9wjwm88f8l58hwma735uzuu5tzmwgxsczdp3g3a0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fpl2sv</id>
    
      <title type="html">📅 Original date posted:2021-02-21 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgnuejkezqlm9wjwm88f8l58hwma735uzuu5tzmwgxsczdp3g3a0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fpl2sv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv4xgaeree869mll5f2azd6fj9lml2kv5anfs3x5rtw582p00eelcqc90lc&#39;&gt;nevent1q…90lc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-21&lt;br/&gt;📝 Original message:I don’t think “some vocal users are going to threaten to fork themselves off” is good justification for technical decisions. It’s important to communicate and for everyone to agree/understand that a failed BIP 8/9 activation, in the scenario people are worried about, is not the end of the story for Taproot activation. If it is clear that Taproot has broad consensus but some miners failed to upgrade in time (as it presumably would be), a flag day activation seems merited and I’m not sure anyone has argued against this. That said, forced-signaling via a UASF/BIP8(true)-style fork carries material additional risk that a classic flag-day activation does not, so let’s not optimize for something like that.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;&amp;gt; On Feb 21, 2021, at 08:26, Ariel Lorenzo-Luaces via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; What would be the tradeoffs of a BIP8(false, ∞) option? That would remove some of the concerns of having to coordinate a UASF with an approaching deadline.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers&lt;br/&gt;&amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;&amp;gt; On Feb 19, 2021, at 6:55 PM, ZmnSCPxj via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  It was pointed out to me that this discussion is largely moot as the software complexity for Bitcoin Core to ship an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  option like this is likely not practical/what people would wish to see.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  Bitcoin Core does not have infrastructure to handle switching consensus rules with the same datadir - after running with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  uasf=true for some time, valid blocks will be marked as invalid, and additional development would need to occur to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  enable switching back to uasf=false. This is complex, critical code to get right, and the review and testing cycles&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  needed seem to be not worth it.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Without implying anything else, this can be worked around by a user maintaining two `datadir`s and running two clients.&lt;br/&gt;&amp;gt;&amp;gt; This would have an &amp;#34;external&amp;#34; client running an LOT=X (where X is whatever the user prefers) and an &amp;#34;internal&amp;#34; client that is at most 0.21.0, which will not impose any LOT rules.&lt;br/&gt;&amp;gt;&amp;gt; The internal client then uses `connect=` directive to connect locally to the external client and connects only to that client, using it as a firewall.&lt;br/&gt;&amp;gt;&amp;gt; The external client can be run pruned in order to reduce diskspace resource usage (the internal client can remain unpruned if that is needed by the user, e.g. for LN implementation sthat need to look up arbitrary short-channel-ids).&lt;br/&gt;&amp;gt;&amp;gt; Bandwidth usage should be same since the internal client only connects to the external client and the OS should optimize that case.&lt;br/&gt;&amp;gt;&amp;gt; CPU usage is doubled, though.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; (the general idea came from gmax, just to be clear, though the below use is from me)&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Then the user can select LOT=C or LOT=!C (where C is whatever Bitcoin Core ultimately ships with) on the external client based on the user preferences.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; If Taproot is not MASF-activated and LOT=!U is what dominates later (where U is whatever the user decided on), the user can decide to just destroy the external node and connect the internal node directly to the network (optionally upgrading the internal node to LOT=!U) as a way to &amp;#34;change their mind in view of the economy&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt; The internal node will then follow the dominant chain.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  Instead, the only practical way to ship such an option would be to treat it as a separate chain (the same way regtest,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  testnet, and signet are treated), including its own separate datadir and the like.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  Matt&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  (Also in response to ZMN...)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  Matt&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  On Feb 19, 2021, at 07:08, Adam Back adam at cypherspace.org wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  would dev consensus around releasing LOT=false be considered as &amp;#34;developers forcing their views on users&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  given there are clearly people of both views, or for now don&amp;#39;t care&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  but might later, it would minimally be friendly and useful if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  bitcoin-core has a LOT=true option - and that IMO goes some way to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  avoid the assumptive control via defaults.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  Otherwise it could be read as saying &amp;#34;developers on average&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  disapprove, but if you, the market disagree, go figure it out for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  yourself&amp;#34; which is not a good message for being defensive and avoiding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  mis-interpretation of code repositories or shipped defaults as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;  &amp;#34;control&amp;#34;.&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;gt;  &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; 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;&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/20210221/fb583f75/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210221/fb583f75/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstpwwfxvhrd8wuqpczwpym0dhpyzqvmafr52gsrwm43zkxjgsr5hszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ejxpll</id>
    
      <title type="html">📅 Original date posted:2021-02-19 📝 Original message:(Also ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstpwwfxvhrd8wuqpczwpym0dhpyzqvmafr52gsrwm43zkxjgsr5hszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ejxpll" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstlh709xeacv5d7908dtp7uvs587atqtjr6zv4e0fafczdtyrf8vs3afcgg&#39;&gt;nevent1q…fcgg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-19&lt;br/&gt;📝 Original message:(Also in response to ZMN...)&lt;br/&gt;&lt;br/&gt;Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.&lt;br/&gt;&lt;br/&gt;There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;&amp;gt; On Feb 19, 2021, at 07:08, Adam Back &amp;lt;adam at cypherspace.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; would dev consensus around releasing LOT=false be considered as &amp;#34;developers forcing their views on users&amp;#34;?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; given there are clearly people of both views, or for now don&amp;#39;t care&lt;br/&gt;&amp;gt; but might later, it would minimally be friendly and useful if&lt;br/&gt;&amp;gt; bitcoin-core has a LOT=true option - and that IMO goes some way to&lt;br/&gt;&amp;gt; avoid the assumptive control via defaults.&lt;br/&gt;&lt;br/&gt;&amp;gt; Otherwise it could be read as saying &amp;#34;developers on average&lt;br/&gt;&amp;gt; disapprove, but if you, the market disagree, go figure it out for&lt;br/&gt;&amp;gt; yourself&amp;#34; which is not a good message for being defensive and avoiding&lt;br/&gt;&amp;gt; mis-interpretation of code repositories or shipped defaults as&lt;br/&gt;&amp;gt; &amp;#34;control&amp;#34;.
    </content>
    <updated>2023-06-07T20:28:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxdmqkafhc46prpz49v88tn4hevf78znlup20xaajjed4sjapysqqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5aqg402</id>
    
      <title type="html">📅 Original date posted:2021-02-19 📝 Original message:It was ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxdmqkafhc46prpz49v88tn4hevf78znlup20xaajjed4sjapysqqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5aqg402" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstpwwfxvhrd8wuqpczwpym0dhpyzqvmafr52gsrwm43zkxjgsr5hsa3t7yg&#39;&gt;nevent1q…t7yg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-19&lt;br/&gt;📝 Original message:It was pointed out to me that this discussion is largely moot as the software complexity for Bitcoin Core to ship an &lt;br/&gt;option like this is likely not practical/what people would wish to see.&lt;br/&gt;&lt;br/&gt;Bitcoin Core does not have infrastructure to handle switching consensus rules with the same datadir - after running with &lt;br/&gt;uasf=true for some time, valid blocks will be marked as invalid, and additional development would need to occur to &lt;br/&gt;enable switching back to uasf=false. This is complex, critical code to get right, and the review and testing cycles &lt;br/&gt;needed seem to be not worth it.&lt;br/&gt;&lt;br/&gt;Instead, the only practical way to ship such an option would be to treat it as a separate chain (the same way regtest, &lt;br/&gt;testnet, and signet are treated), including its own separate datadir and the like.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; (Also in response to ZMN...)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On Feb 19, 2021, at 07:08, Adam Back &amp;lt;adam at cypherspace.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; would dev consensus around releasing LOT=false be considered as &amp;#34;developers forcing their views on users&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; given there are clearly people of both views, or for now don&amp;#39;t care&lt;br/&gt;&amp;gt;&amp;gt; but might later, it would minimally be friendly and useful if&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-core has a LOT=true option - and that IMO goes some way to&lt;br/&gt;&amp;gt;&amp;gt; avoid the assumptive control via defaults.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Otherwise it could be read as saying &amp;#34;developers on average&lt;br/&gt;&amp;gt;&amp;gt; disapprove, but if you, the market disagree, go figure it out for&lt;br/&gt;&amp;gt;&amp;gt; yourself&amp;#34; which is not a good message for being defensive and avoiding&lt;br/&gt;&amp;gt;&amp;gt; mis-interpretation of code repositories or shipped defaults as&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;control&amp;#34;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:28:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9thherz0tack2j3rp2y3x6w74a4qn42uysjay3lxzz6e3mza5mcczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58xwf5m</id>
    
      <title type="html">📅 Original date posted:2021-02-18 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9thherz0tack2j3rp2y3x6w74a4qn42uysjay3lxzz6e3mza5mcczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58xwf5m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx2m3k8v2ptgqka7u0kujaampvr6wuf8jcn7f2cgc374qezkjlvncqzanwn&#39;&gt;nevent1q…anwn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-18&lt;br/&gt;📝 Original message:This is absolutely the case, however note that the activation method itself is consensus code which executes as a part &lt;br/&gt;of a fork, and one which deserves as much scrutiny as anything else. While taproot is a model of how a soft-fork should &lt;br/&gt;be designed, this doesn&amp;#39;t imply anything about the consensus code which represents the activation thereof.&lt;br/&gt;&lt;br/&gt;Hence all the debate around activation - ultimately its also defining a fork, and given the politics around it, one &lt;br/&gt;which almost certainly carries significantly more risk than Taproot.&lt;br/&gt;&lt;br/&gt;Note that I don&amp;#39;t believe anyone is advocating for &amp;#34;try to activate, and if it fails, move on&amp;#34;. Various people have &lt;br/&gt;various views on how conservative and timelines for what to do at that point, but I believe most in this discussion are &lt;br/&gt;OK with flag-day-based activation (given some level of care) if it becomes clear Taproot is supported by a vast majority &lt;br/&gt;of Bitcoin users and is only not activating due to lagging miner upgrades.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/18/21 10:04, Keagan McClelland wrote:&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think it&amp;#39;s important for us to consider what is actually being considered for activation here.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The designation of &amp;#34;soft fork&amp;#34; is accurate but I don&amp;#39;t think it adequately conveys how non-intrusive a change like this &lt;br/&gt;&amp;gt; is. All that taproot does (unless I&amp;#39;m completely missing something) is imbue a previously undefined script version with &lt;br/&gt;&amp;gt; actual semantics. In order for a chain reorg to take place it would mean that someone would have to have a use case for &lt;br/&gt;&amp;gt; that script version today. This is something I think that we can easily check by digging through the UTXO set or &lt;br/&gt;&amp;gt; history. If anyone is using that script version, we absolutely should not be using it, but that doesn&amp;#39;t mean that we &lt;br/&gt;&amp;gt; can&amp;#39;t switch to a script version that no one is actually using.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If no one is even attempting to use the script version, then the change has no effect on whether a chain split occurs &lt;br/&gt;&amp;gt; because there is simply no block that contains a transaction that only some of the network will accept.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Furthermore, I don&amp;#39;t know how Bitcoin can stand the test of time if we allow developers who rely on &amp;#34;undefined behavior&amp;#34; &lt;br/&gt;&amp;gt; (which the taproot script version presently is) to exert tremendous influence over what code does or does not get run. &lt;br/&gt;&amp;gt; This isn&amp;#39;t a soft fork that makes some particular UTXO&amp;#39;s unspendable. It isn&amp;#39;t one that bans miners from collecting &lt;br/&gt;&amp;gt; fees. It is a change that means that certain &amp;#34;always accept&amp;#34; transactions actually have real conditions you have to &lt;br/&gt;&amp;gt; meet. I can&amp;#39;t imagine a less intrusive change.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On the other hand, choosing to let L=F be a somewhat final call sets a very real precedent that 10% of what I estimate &lt;br/&gt;&amp;gt; to be 1% of bitcoin users can effectively block any change from here on forward. At that point we are saying that miners &lt;br/&gt;&amp;gt; are in control of network consensus in ways they have not been up until now. I don&amp;#39;t think this is a more desirable &lt;br/&gt;&amp;gt; outcome to let ~0.1% of the network get to block /non-intrusive/ changes that the rest of the network wants.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I can certainly live with an L=F attempt as a way to punt on the discussion, maybe the activation happens and this will &lt;br/&gt;&amp;gt; all be fine. But if it doesn&amp;#39;t, I hardly think that users of Bitcoin are just going to be like &amp;#34;well, guess that&amp;#39;s it &lt;br/&gt;&amp;gt; for Taproot&amp;#34;. I have no idea what ensues at that point, but probably another community led UASF movement.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I wasn&amp;#39;t super well educated on this stuff back in &amp;#39;17 when Segwit went down, as I was new at that time, so if I&amp;#39;m &lt;br/&gt;&amp;gt; missing something please say so. But from my point of view, we can&amp;#39;t treat all soft forks as equal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Keagan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     We&amp;#39;ve had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That&lt;br/&gt;&amp;gt;     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as&lt;br/&gt;&amp;gt;     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to&lt;br/&gt;&amp;gt;     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an&lt;br/&gt;&amp;gt;     exchange losing millions would be worse than having Taproot is good.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On 2/18/21 09:26, Michael Folkson wrote:&lt;br/&gt;&amp;gt;      &amp;gt; Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft&lt;br/&gt;&amp;gt;     forks,&lt;br/&gt;&amp;gt;      &amp;gt; all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades&lt;br/&gt;&amp;gt;     such as&lt;br/&gt;&amp;gt;      &amp;gt; Taproot. To say we shouldn&amp;#39;t do Taproot or any future soft forks because there is a small but real risk of chain&lt;br/&gt;&amp;gt;     splits&lt;br/&gt;&amp;gt;      &amp;gt; I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever&lt;br/&gt;&amp;gt;      &amp;gt; again on this mailing list that wouldn&amp;#39;t stop soft fork attempts from other people in future.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; I don&amp;#39;t think there is anything else we can do to minimize that risk for the Taproot soft fork at this point&lt;br/&gt;&amp;gt;     though I&amp;#39;m&lt;br/&gt;&amp;gt;      &amp;gt; open to ideas. To reiterate that risk will never be zero. I don&amp;#39;t think I see Bitcoin as fragile as you seem to&lt;br/&gt;&amp;gt;     (though&lt;br/&gt;&amp;gt;      &amp;gt; admittedly you have a much better understanding than me of what happened in 2017).&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot&lt;br/&gt;&amp;gt;      &amp;gt; before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and&lt;br/&gt;&amp;gt;      &amp;gt; wouldn&amp;#39;t kill Bitcoin long term.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,&lt;br/&gt;&amp;gt;      &amp;gt;     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here&lt;br/&gt;&amp;gt;     and not&lt;br/&gt;&amp;gt;      &amp;gt;     activate Taproot. Seriously.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     Matt&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&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;     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don&amp;#39;t think&lt;br/&gt;&amp;gt;     users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     implementation to Bitcoin Core) and Luke Dashjr hasn&amp;#39;t yet decided on Bitcoin Knots.&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;     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         Good morning all,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;#34;An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&amp;#34;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Who&amp;#39;s we here?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Release both and let the network decide.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         This assures everyone that neither choice is being forced on users, and instead what is being forced on&lt;br/&gt;&amp;gt;     users,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         is for users to make that choice themselves.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         Regards,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         ZmnSCPxj&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Thanks for your response Ariel. It would be useful if you responded to specific points I have made&lt;br/&gt;&amp;gt;     in the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         mailing list post or at least quote these ephemeral &amp;#34;people&amp;#34; you speak of. I don&amp;#39;t know if you&amp;#39;re responding&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         to conversation on the IRC channel or on social media etc.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;     into&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I personally have never made this assumption. Of course users aren&amp;#39;t forced to run any particular&lt;br/&gt;&amp;gt;     software&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         version, quite the opposite. Defaults set in software versions matter though as many users won&amp;#39;t change&lt;br/&gt;&amp;gt;     them.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to&lt;br/&gt;&amp;gt;     activate&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to&lt;br/&gt;&amp;gt;     false in a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         software release there is the possibility (T2 in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;) of individuals or a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         appears to be no more safe than LOT=true.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         by default.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         to activate. I&amp;#39;m not convinced by this perception that LOT=true is antagonistic to miners. I actually&lt;br/&gt;&amp;gt;     think it&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         offers them clarity on what will happen over a year time period and removes the need for coordinated or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         uncoordinated community UASF efforts on top of LOT=false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I don&amp;#39;t know what you are recommending here to avoid &amp;#34;this darkest timeline&amp;#34;. Open discussions have&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         isn&amp;#39;t particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         support for Taproot but we don&amp;#39;t build secure systems based on pledges of support, we build them to minimize&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         trust in any human actors. We can be grateful that people like Alejandro have worked hard on&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt; taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; (and this effort has informed the discussion) without&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         taking pledges of support as cast iron guarantees.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         email :)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces &amp;lt;arielluaces at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:arielluaces at gmail.com &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Something what strikes me about the conversation is the emotion surrounding the letters UASF.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; It appears as if people discuss UASF as if it&amp;#39;s a massive tidal wave of support that is&lt;br/&gt;&amp;gt;     inevitable, like&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         we saw during segwit activation. But the actual definition is &amp;#34;any activation that is not a MASF&amp;#34;.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business&amp;#39; nodes, or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%&lt;br/&gt;&amp;gt;     support,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         or any support right up against a miner activation threshold.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Hell a UASF doesn&amp;#39;t even need code or even a single node running as long as it exists as a possibility&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         in people&amp;#39;s minds.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The only thing a UASF doesn&amp;#39;t have is miner support above an agreed activation threshold (some number&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         above %51).&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I say this because it strikes me when people say that they are for LOT=true with the logic that&lt;br/&gt;&amp;gt;     since a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         UASF is guaranteed to happen then it&amp;#39;s better to just make it default from the beginning. Words like&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         coordination and safety are sometimes sprinkled into the argument.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;     into&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off&lt;br/&gt;&amp;gt;     into a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         option has ran its course.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         by default. The chains could be called BitcoinLenient and BitcoinStubborn.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; How is that strictly safer or more coordinated?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn&amp;#39;t considered&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         this as a choice but honestly if there is contention about whether we&amp;#39;re going to be stubborn or lenient&lt;br/&gt;&amp;gt;     with&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         miners for Taproot and in the future then I prefer to just not activate anything at all. I&amp;#39;m fine for&lt;br/&gt;&amp;gt;     calling&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         bitcoin ossified, accepting that segwit is Bitcoin&amp;#39;s last network upgrade. Taproot is amazing but no new&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         feature is worth a network split down the middle.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         become envious enough to put aside our differences on how to behave towards miners and finally activate&lt;br/&gt;&amp;gt;     Taproot.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Cheers&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Yesterday (February 16th) we held a second meeting on Taproot&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; activation on IRC which again was open to all. Despite what appeared&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; to be majority support for LOT=false over LOT=true in the first&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; meeting I (and others) thought the arguments had not been explored in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; depth and that we should have a follow up meeting almost entirely&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; focused on whether LOT (lockinontimeout) should be set to true or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The meeting was announced here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; In that mailing list post I outlined the arguments for LOT=true (T1 to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; T6) and arguments for LOT=false (F1 to F6) in their strongest form I&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; could. David Harding responded with an additional argument for&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false (F7) here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; These meetings are very challenging given they are open to all, you&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; don’t know who will attend and you don’t know most people’s views in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; advance. I tried to give time for both the LOT=true arguments and the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false arguments to be discussed as I knew there was support for&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; both. We only tried evaluating which had more support and which had&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; more strong opposition towards the end of the meeting.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The conversation log is here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; (If you are so inclined you can watch a video of the meeting here.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the YouTube account “Bitcoin” for setting up the livestream:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; A summary of the meeting was provided by Luke Dashjr on Mastodon here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Today&amp;#39;s #Bitcoin #Taproot meeting was IMO largely unproductive, but we&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; did manage to come to consensus on everything but LockinOnTimeout.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Activation height range: 693504-745920&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; MASF threshold: 1815/2016 blocks (90%)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Keep in mind only ~100 people showed for the meetings, hardly&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; representative of the entire community.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; So, these details remain JUST a proposal for now.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; It seems inevitable that there won&amp;#39;t be consensus on LOT.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Everyone will have to choose for himself. :/&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Personally I agree with most of this. I agree that there wasn’t&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; overwhelming consensus for either LOT=true or LOT=false. However, from&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; my perspective there was clearly more strong opposition (what would&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; usually be deemed a NACK in Bitcoin Core review terminology) from&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core contributors, Lightning developers and other community&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; members against LOT=true than there was for LOT=false. Andrew Chow&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; tried to summarize views from the meeting in this analysis:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am also aware of other current and previous Bitcoin Core&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; contributors and Lightning developers who didn’t attend the meeting in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; person who are opposed to LOT=true. I don’t want to put them in the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; spotlight for no reason but if you go through the conversation logs of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; not only the meeting but the weeks of discussion prior to this meeting&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; you will see their views evaluated on the ##taproot-activation&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; channel. In addition, on taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; some mining pools&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; expressed a preference for lot=false though I don’t know how strong&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; that preference was.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am only one voice but it is my current assessment that if we are to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; attempt to finalize Taproot activation parameters and propose them to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the community at this time our only option is to propose LOT=false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Any further delay appears to me counterproductive in our collective&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; aim to get the Taproot soft fork activated as early as possible.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Obviously others are free to disagree with that assessment and&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; continue discussions but personally I will be attempting to avoid&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; those discussions unless prominent new information comes to light or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; various specific individuals change their minds.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Next week we are planning a code review of the Bitcoin Core PR #19573&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; which was initially delayed because of this LOT discussion. As I’ve&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; said previously that will be loosely following the format of the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core PR review club and will be lower level and more&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; technical. That is planned for Tuesday February 23rd at 19:00 UTC on&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the IRC channel ##taproot-activation.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the meeting participants (and those who joined the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; discussion on the channel prior and post the meeting) for engaging&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; productively and in good faith.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&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;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     --&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; --&lt;br/&gt;&amp;gt;      &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:28:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszg7xwdre2cznt427kpukwz90ygq38xsx85qj6cj9cz82tqaehwyszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5yejwy6</id>
    
      <title type="html">📅 Original date posted:2021-02-18 📝 Original message:To ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszg7xwdre2cznt427kpukwz90ygq38xsx85qj6cj9cz82tqaehwyszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5yejwy6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8lzte0zk74g5p2jmlflk3lp9p58k2dn5vuzde8x89mnkgy0kk26gv4s9me&#39;&gt;nevent1q…s9me&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-18&lt;br/&gt;📝 Original message:To ensure we&amp;#39;re on the same page, here - I&amp;#39;m not advocating we give up on Taproot. Indeed, without having dug deep into &lt;br/&gt;the issue, my overall impression is that Knots has a tiny transaction-processing userbase and it likely isn&amp;#39;t worth &lt;br/&gt;giving deep thought to whether it forks itself off from the network or not. My point is that, if it were the case that &lt;br/&gt;various implementations of Bitcoin&amp;#39;s consensus that have material userbases were to release either a configurable &lt;br/&gt;consensus mechanism (without incredible care being given to it, not just a &amp;#34;we can&amp;#39;t decide, whatever&amp;#34; argument) or a &lt;br/&gt;different consensus, we&amp;#39;d be much, much better off not having Taproot at all.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/18/21 09:53, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; You say &amp;#34;short term PR&amp;#34;, I say &amp;#34;risking millions of user dollars&amp;#34;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 2/18/21 09:51, Michael Folkson wrote:&lt;br/&gt;&amp;gt;&amp;gt;  &amp;gt; getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an exchange &lt;br/&gt;&amp;gt;&amp;gt; losing millions would be worse than having Taproot is good.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We are at the point where an upgrade that confers significant long term benefits for the whole ecosystem is not as &lt;br/&gt;&amp;gt;&amp;gt; important as bad short term PR? That is a depressing outlook if that is what you believe.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Even in that worst case scenario exchanges should not lose money if they are competent and are able to manage that risk.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Feb 18, 2021 at 2:42 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     We&amp;#39;ve had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That&lt;br/&gt;&amp;gt;&amp;gt;     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of &lt;br/&gt;&amp;gt;&amp;gt; that as&lt;br/&gt;&amp;gt;&amp;gt;     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being &lt;br/&gt;&amp;gt;&amp;gt; able to&lt;br/&gt;&amp;gt;&amp;gt;     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an&lt;br/&gt;&amp;gt;&amp;gt;     exchange losing millions would be worse than having Taproot is good.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     On 2/18/21 09:26, Michael Folkson wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft&lt;br/&gt;&amp;gt;&amp;gt;     forks,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades&lt;br/&gt;&amp;gt;&amp;gt;     such as&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; Taproot. To say we shouldn&amp;#39;t do Taproot or any future soft forks because there is a small but real risk of chain&lt;br/&gt;&amp;gt;&amp;gt;     splits&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades &lt;br/&gt;&amp;gt;&amp;gt; ever&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; again on this mailing list that wouldn&amp;#39;t stop soft fork attempts from other people in future.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; I don&amp;#39;t think there is anything else we can do to minimize that risk for the Taproot soft fork at this point&lt;br/&gt;&amp;gt;&amp;gt;     though I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; open to ideas. To reiterate that risk will never be zero. I don&amp;#39;t think I see Bitcoin as fragile as you seem to&lt;br/&gt;&amp;gt;&amp;gt;     (though&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; admittedly you have a much better understanding than me of what happened in 2017).&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate &lt;br/&gt;&amp;gt;&amp;gt; Taproot&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; wouldn&amp;#39;t kill Bitcoin long term.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;     If the eventual outcome is that different implementations (that have material *transaction processing* &lt;br/&gt;&amp;gt;&amp;gt; userbases,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here&lt;br/&gt;&amp;gt;&amp;gt;     and not&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;     activate Taproot. Seriously.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;     Matt&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     ﻿&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what &lt;br/&gt;&amp;gt;&amp;gt; I have&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don&amp;#39;t think&lt;br/&gt;&amp;gt;&amp;gt;     users&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     implementation to Bitcoin Core) and Luke Dashjr hasn&amp;#39;t yet decided on Bitcoin Knots.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         Good morning all,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;#34;An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest &lt;br/&gt;&amp;gt;&amp;gt; timeline.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Who&amp;#39;s we here?&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Release both and let the network decide.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release &lt;br/&gt;&amp;gt;&amp;gt; that&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         This assures everyone that neither choice is being forced on users, and instead what is being forced on&lt;br/&gt;&amp;gt;&amp;gt;     users,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         is for users to make that choice themselves.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         Regards,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Thanks for your response Ariel. It would be useful if you responded to specific points I have made&lt;br/&gt;&amp;gt;&amp;gt;     in the&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         mailing list post or at least quote these ephemeral &amp;#34;people&amp;#34; you speak of. I don&amp;#39;t know if you&amp;#39;re &lt;br/&gt;&amp;gt;&amp;gt; responding&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         to conversation on the IRC channel or on social media etc.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;&amp;gt;     into&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what &lt;br/&gt;&amp;gt;&amp;gt; users&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I personally have never made this assumption. Of course users aren&amp;#39;t forced to run any particular&lt;br/&gt;&amp;gt;&amp;gt;     software&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         version, quite the opposite. Defaults set in software versions matter though as many users won&amp;#39;t change&lt;br/&gt;&amp;gt;&amp;gt;     them.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks?&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to&lt;br/&gt;&amp;gt;&amp;gt;     activate&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to&lt;br/&gt;&amp;gt;&amp;gt;     false in a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         software release there is the possibility (T2 in&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;) of individuals or a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         appears to be no more safe than LOT=true.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         by default.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and &lt;br/&gt;&amp;gt;&amp;gt; miners fail&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         to activate. I&amp;#39;m not convinced by this perception that LOT=true is antagonistic to miners. I actually&lt;br/&gt;&amp;gt;&amp;gt;     think it&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         offers them clarity on what will happen over a year time period and removes the need for coordinated or&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         uncoordinated community UASF efforts on top of LOT=false.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any &lt;br/&gt;&amp;gt;&amp;gt; other&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I don&amp;#39;t know what you are recommending here to avoid &amp;#34;this darkest timeline&amp;#34;. Open discussions have&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         isn&amp;#39;t particularly helpful. In an open consensus system discussion is healthy, we should prepare for &lt;br/&gt;&amp;gt;&amp;gt; bad or&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have &lt;br/&gt;&amp;gt;&amp;gt; pledged&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         support for Taproot but we don&amp;#39;t build secure systems based on pledges of support, we build them to &lt;br/&gt;&amp;gt;&amp;gt; minimize&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         trust in any human actors. We can be grateful that people like Alejandro have worked hard on&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt; taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; (and this effort has informed the discussion) without&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         taking pledges of support as cast iron guarantees.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations &lt;br/&gt;&amp;gt;&amp;gt; in my&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         email :)&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces &amp;lt;arielluaces at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:arielluaces at gmail.com &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Something what strikes me about the conversation is the emotion surrounding the letters UASF.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; It appears as if people discuss UASF as if it&amp;#39;s a massive tidal wave of support that is&lt;br/&gt;&amp;gt;&amp;gt;     inevitable, like&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         we saw during segwit activation. But the actual definition is &amp;#34;any activation that is not a MASF&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business&amp;#39; &lt;br/&gt;&amp;gt;&amp;gt; nodes, or&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%&lt;br/&gt;&amp;gt;&amp;gt;     support,&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         or any support right up against a miner activation threshold.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Hell a UASF doesn&amp;#39;t even need code or even a single node running as long as it exists as a &lt;br/&gt;&amp;gt;&amp;gt; possibility&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         in people&amp;#39;s minds.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The only thing a UASF doesn&amp;#39;t have is miner support above an agreed activation threshold (some &lt;br/&gt;&amp;gt;&amp;gt; number&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         above %51).&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I say this because it strikes me when people say that they are for LOT=true with the logic that&lt;br/&gt;&amp;gt;&amp;gt;     since a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         UASF is guaranteed to happen then it&amp;#39;s better to just make it default from the beginning. Words like&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         coordination and safety are sometimes sprinkled into the argument.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;&amp;gt;     into&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what &lt;br/&gt;&amp;gt;&amp;gt; users&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off&lt;br/&gt;&amp;gt;&amp;gt;     into a&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         minority fork. Then a lot=false could be started that ends up activating the feature now that the &lt;br/&gt;&amp;gt;&amp;gt; stubborn&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         option has ran its course.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         by default. The chains could be called BitcoinLenient and BitcoinStubborn.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; How is that strictly safer or more coordinated?&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn&amp;#39;t &lt;br/&gt;&amp;gt;&amp;gt; considered&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         this as a choice but honestly if there is contention about whether we&amp;#39;re going to be stubborn or lenient&lt;br/&gt;&amp;gt;&amp;gt;     with&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         miners for Taproot and in the future then I prefer to just not activate anything at all. I&amp;#39;m fine for&lt;br/&gt;&amp;gt;&amp;gt;     calling&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         bitcoin ossified, accepting that segwit is Bitcoin&amp;#39;s last network upgrade. Taproot is amazing but no new&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         feature is worth a network split down the middle.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, &lt;br/&gt;&amp;gt;&amp;gt; we will&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         become envious enough to put aside our differences on how to behave towards miners and finally activate&lt;br/&gt;&amp;gt;&amp;gt;     Taproot.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any &lt;br/&gt;&amp;gt;&amp;gt; other&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Cheers&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Yesterday (February 16th) we held a second meeting on Taproot&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; activation on IRC which again was open to all. Despite what appeared&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; to be majority support for LOT=false over LOT=true in the first&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; meeting I (and others) thought the arguments had not been explored in&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; depth and that we should have a follow up meeting almost entirely&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; focused on whether LOT (lockinontimeout) should be set to true or&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; false.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The meeting was announced here:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; In that mailing list post I outlined the arguments for LOT=true (T1 to&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; T6) and arguments for LOT=false (F1 to F6) in their strongest form I&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; could. David Harding responded with an additional argument for&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false (F7) here:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; These meetings are very challenging given they are open to all, you&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; don’t know who will attend and you don’t know most people’s views in&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; advance. I tried to give time for both the LOT=true arguments and the&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false arguments to be discussed as I knew there was support for&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; both. We only tried evaluating which had more support and which had&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; more strong opposition towards the end of the meeting.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The conversation log is here:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; (If you are so inclined you can watch a video of the meeting here.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the YouTube account “Bitcoin” for setting up the livestream:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; A summary of the meeting was provided by Luke Dashjr on Mastodon here:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Today&amp;#39;s #Bitcoin #Taproot meeting was IMO largely unproductive, but we&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; did manage to come to consensus on everything but LockinOnTimeout.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Activation height range: 693504-745920&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; MASF threshold: 1815/2016 blocks (90%)&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Keep in mind only ~100 people showed for the meetings, hardly&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; representative of the entire community.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; So, these details remain JUST a proposal for now.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; It seems inevitable that there won&amp;#39;t be consensus on LOT.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Everyone will have to choose for himself. :/&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Personally I agree with most of this. I agree that there wasn’t&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; overwhelming consensus for either LOT=true or LOT=false. However, from&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; my perspective there was clearly more strong opposition (what would&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; usually be deemed a NACK in Bitcoin Core review terminology) from&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core contributors, Lightning developers and other community&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; members against LOT=true than there was for LOT=false. Andrew Chow&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; tried to summarize views from the meeting in this analysis:&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am also aware of other current and previous Bitcoin Core&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; contributors and Lightning developers who didn’t attend the meeting in&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; person who are opposed to LOT=true. I don’t want to put them in the&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; spotlight for no reason but if you go through the conversation logs of&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; not only the meeting but the weeks of discussion prior to this meeting&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; you will see their views evaluated on the ##taproot-activation&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; channel. In addition, on taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; some mining pools&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; expressed a preference for lot=false though I don’t know how strong&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; that preference was.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am only one voice but it is my current assessment that if we are to&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; attempt to finalize Taproot activation parameters and propose them to&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the community at this time our only option is to propose LOT=false.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Any further delay appears to me counterproductive in our collective&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; aim to get the Taproot soft fork activated as early as possible.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Obviously others are free to disagree with that assessment and&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; continue discussions but personally I will be attempting to avoid&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; those discussions unless prominent new information comes to light or&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; various specific individuals change their minds.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Next week we are planning a code review of the Bitcoin Core PR #19573&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; which was initially delayed because of this LOT discussion. As I’ve&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; said previously that will be loosely following the format of the&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core PR review club and will be lower level and more&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; technical. That is planned for Tuesday February 23rd at 19:00 UTC on&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the IRC channel ##taproot-activation.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the meeting participants (and those who joined the&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; discussion on the channel prior and post the meeting) for engaging&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; productively and in good faith.&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     --&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&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; --&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt;      &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; -- &lt;br/&gt;&amp;gt;&amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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:28:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8lzte0zk74g5p2jmlflk3lp9p58k2dn5vuzde8x89mnkgy0kk26gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5j239f4</id>
    
      <title type="html">📅 Original date posted:2021-02-18 📝 Original message:You ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8lzte0zk74g5p2jmlflk3lp9p58k2dn5vuzde8x89mnkgy0kk26gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5j239f4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8pramcca7dplurehfefjqvwlz9fsk3ewh343cg8wtsa9kkwdnsrsk3f6cr&#39;&gt;nevent1q…f6cr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-18&lt;br/&gt;📝 Original message:You say &amp;#34;short term PR&amp;#34;, I say &amp;#34;risking millions of user dollars&amp;#34;.&lt;br/&gt;&lt;br/&gt;On 2/18/21 09:51, Michael Folkson wrote:&lt;br/&gt;&amp;gt;  &amp;gt; getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an exchange &lt;br/&gt;&amp;gt; losing millions would be worse than having Taproot is good.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We are at the point where an upgrade that confers significant long term benefits for the whole ecosystem is not as &lt;br/&gt;&amp;gt; important as bad short term PR? That is a depressing outlook if that is what you believe.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Even in that worst case scenario exchanges should not lose money if they are competent and are able to manage that risk.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Feb 18, 2021 at 2:42 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     We&amp;#39;ve had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That&lt;br/&gt;&amp;gt;     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as&lt;br/&gt;&amp;gt;     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to&lt;br/&gt;&amp;gt;     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an&lt;br/&gt;&amp;gt;     exchange losing millions would be worse than having Taproot is good.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On 2/18/21 09:26, Michael Folkson wrote:&lt;br/&gt;&amp;gt;      &amp;gt; Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft&lt;br/&gt;&amp;gt;     forks,&lt;br/&gt;&amp;gt;      &amp;gt; all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades&lt;br/&gt;&amp;gt;     such as&lt;br/&gt;&amp;gt;      &amp;gt; Taproot. To say we shouldn&amp;#39;t do Taproot or any future soft forks because there is a small but real risk of chain&lt;br/&gt;&amp;gt;     splits&lt;br/&gt;&amp;gt;      &amp;gt; I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever&lt;br/&gt;&amp;gt;      &amp;gt; again on this mailing list that wouldn&amp;#39;t stop soft fork attempts from other people in future.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; I don&amp;#39;t think there is anything else we can do to minimize that risk for the Taproot soft fork at this point&lt;br/&gt;&amp;gt;     though I&amp;#39;m&lt;br/&gt;&amp;gt;      &amp;gt; open to ideas. To reiterate that risk will never be zero. I don&amp;#39;t think I see Bitcoin as fragile as you seem to&lt;br/&gt;&amp;gt;     (though&lt;br/&gt;&amp;gt;      &amp;gt; admittedly you have a much better understanding than me of what happened in 2017).&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot&lt;br/&gt;&amp;gt;      &amp;gt; before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and&lt;br/&gt;&amp;gt;      &amp;gt; wouldn&amp;#39;t kill Bitcoin long term.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,&lt;br/&gt;&amp;gt;      &amp;gt;     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here&lt;br/&gt;&amp;gt;     and not&lt;br/&gt;&amp;gt;      &amp;gt;     activate Taproot. Seriously.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;     Matt&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&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;     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don&amp;#39;t think&lt;br/&gt;&amp;gt;     users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     implementation to Bitcoin Core) and Luke Dashjr hasn&amp;#39;t yet decided on Bitcoin Knots.&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;     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         Good morning all,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;#34;An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&amp;#34;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Who&amp;#39;s we here?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; Release both and let the network decide.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         This assures everyone that neither choice is being forced on users, and instead what is being forced on&lt;br/&gt;&amp;gt;     users,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         is for users to make that choice themselves.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         Regards,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         ZmnSCPxj&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Thanks for your response Ariel. It would be useful if you responded to specific points I have made&lt;br/&gt;&amp;gt;     in the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         mailing list post or at least quote these ephemeral &amp;#34;people&amp;#34; you speak of. I don&amp;#39;t know if you&amp;#39;re responding&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         to conversation on the IRC channel or on social media etc.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;     into&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I personally have never made this assumption. Of course users aren&amp;#39;t forced to run any particular&lt;br/&gt;&amp;gt;     software&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         version, quite the opposite. Defaults set in software versions matter though as many users won&amp;#39;t change&lt;br/&gt;&amp;gt;     them.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to&lt;br/&gt;&amp;gt;     activate&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to&lt;br/&gt;&amp;gt;     false in a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         software release there is the possibility (T2 in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;) of individuals or a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         appears to be no more safe than LOT=true.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         by default.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         to activate. I&amp;#39;m not convinced by this perception that LOT=true is antagonistic to miners. I actually&lt;br/&gt;&amp;gt;     think it&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         offers them clarity on what will happen over a year time period and removes the need for coordinated or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         uncoordinated community UASF efforts on top of LOT=false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; I don&amp;#39;t know what you are recommending here to avoid &amp;#34;this darkest timeline&amp;#34;. Open discussions have&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         isn&amp;#39;t particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         support for Taproot but we don&amp;#39;t build secure systems based on pledges of support, we build them to minimize&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         trust in any human actors. We can be grateful that people like Alejandro have worked hard on&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt; taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; (and this effort has informed the discussion) without&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         taking pledges of support as cast iron guarantees.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         email :)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces &amp;lt;arielluaces at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:arielluaces at gmail.com &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Something what strikes me about the conversation is the emotion surrounding the letters UASF.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; It appears as if people discuss UASF as if it&amp;#39;s a massive tidal wave of support that is&lt;br/&gt;&amp;gt;     inevitable, like&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         we saw during segwit activation. But the actual definition is &amp;#34;any activation that is not a MASF&amp;#34;.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business&amp;#39; nodes, or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%&lt;br/&gt;&amp;gt;     support,&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         or any support right up against a miner activation threshold.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Hell a UASF doesn&amp;#39;t even need code or even a single node running as long as it exists as a possibility&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         in people&amp;#39;s minds.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The only thing a UASF doesn&amp;#39;t have is miner support above an agreed activation threshold (some number&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         above %51).&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I say this because it strikes me when people say that they are for LOT=true with the logic that&lt;br/&gt;&amp;gt;     since a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         UASF is guaranteed to happen then it&amp;#39;s better to just make it default from the beginning. Words like&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         coordination and safety are sometimes sprinkled into the argument.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted&lt;br/&gt;&amp;gt;     into&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be&lt;br/&gt;&amp;gt;     only a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good&lt;br/&gt;&amp;gt;     reason of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the&lt;br/&gt;&amp;gt;     moment of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off&lt;br/&gt;&amp;gt;     into a&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         option has ran its course.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with&lt;br/&gt;&amp;gt;     miners&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         by default. The chains could be called BitcoinLenient and BitcoinStubborn.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; How is that strictly safer or more coordinated?&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn&amp;#39;t considered&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         this as a choice but honestly if there is contention about whether we&amp;#39;re going to be stubborn or lenient&lt;br/&gt;&amp;gt;     with&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         miners for Taproot and in the future then I prefer to just not activate anything at all. I&amp;#39;m fine for&lt;br/&gt;&amp;gt;     calling&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         bitcoin ossified, accepting that segwit is Bitcoin&amp;#39;s last network upgrade. Taproot is amazing but no new&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         feature is worth a network split down the middle.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         become envious enough to put aside our differences on how to behave towards miners and finally activate&lt;br/&gt;&amp;gt;     Taproot.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Cheers&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Yesterday (February 16th) we held a second meeting on Taproot&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; activation on IRC which again was open to all. Despite what appeared&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; to be majority support for LOT=false over LOT=true in the first&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; meeting I (and others) thought the arguments had not been explored in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; depth and that we should have a follow up meeting almost entirely&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; focused on whether LOT (lockinontimeout) should be set to true or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The meeting was announced here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; In that mailing list post I outlined the arguments for LOT=true (T1 to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; T6) and arguments for LOT=false (F1 to F6) in their strongest form I&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; could. David Harding responded with an additional argument for&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false (F7) here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; These meetings are very challenging given they are open to all, you&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; don’t know who will attend and you don’t know most people’s views in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; advance. I tried to give time for both the LOT=true arguments and the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false arguments to be discussed as I knew there was support for&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; both. We only tried evaluating which had more support and which had&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; more strong opposition towards the end of the meeting.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The conversation log is here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&lt;/a&gt;; &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; (If you are so inclined you can watch a video of the meeting here.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the YouTube account “Bitcoin” for setting up the livestream:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt;&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; A summary of the meeting was provided by Luke Dashjr on Mastodon here:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Today&amp;#39;s #Bitcoin #Taproot meeting was IMO largely unproductive, but we&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; did manage to come to consensus on everything but LockinOnTimeout.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Activation height range: 693504-745920&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; MASF threshold: 1815/2016 blocks (90%)&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Keep in mind only ~100 people showed for the meetings, hardly&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; representative of the entire community.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; So, these details remain JUST a proposal for now.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; It seems inevitable that there won&amp;#39;t be consensus on LOT.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Everyone will have to choose for himself. :/&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Personally I agree with most of this. I agree that there wasn’t&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; overwhelming consensus for either LOT=true or LOT=false. However, from&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; my perspective there was clearly more strong opposition (what would&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; usually be deemed a NACK in Bitcoin Core review terminology) from&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core contributors, Lightning developers and other community&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; members against LOT=true than there was for LOT=false. Andrew Chow&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; tried to summarize views from the meeting in this analysis:&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am also aware of other current and previous Bitcoin Core&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; contributors and Lightning developers who didn’t attend the meeting in&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; person who are opposed to LOT=true. I don’t want to put them in the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; spotlight for no reason but if you go through the conversation logs of&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; not only the meeting but the weeks of discussion prior to this meeting&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; you will see their views evaluated on the ##taproot-activation&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; channel. In addition, on taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;     &amp;lt;&lt;a href=&#34;http://taprootactivation.com&#34;&gt;http://taprootactivation.com&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt;&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt;&amp;gt&lt;/a&gt;; some mining pools&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; expressed a preference for lot=false though I don’t know how strong&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; that preference was.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am only one voice but it is my current assessment that if we are to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; attempt to finalize Taproot activation parameters and propose them to&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the community at this time our only option is to propose LOT=false.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Any further delay appears to me counterproductive in our collective&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; aim to get the Taproot soft fork activated as early as possible.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Obviously others are free to disagree with that assessment and&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; continue discussions but personally I will be attempting to avoid&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; those discussions unless prominent new information comes to light or&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; various specific individuals change their minds.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Next week we are planning a code review of the Bitcoin Core PR #19573&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; which was initially delayed because of this LOT discussion. As I’ve&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; said previously that will be loosely following the format of the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core PR review club and will be lower level and more&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; technical. That is planned for Tuesday February 23rd at 19:00 UTC on&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the IRC channel ##taproot-activation.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the meeting participants (and those who joined the&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; discussion on the channel prior and post the meeting) for engaging&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; productively and in good faith.&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;         &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&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;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     --&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&amp;gt;     &amp;lt;&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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt;&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; --&lt;br/&gt;&amp;gt;      &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;      &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt; &amp;lt;mailto:michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;     &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;      &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;      &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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; Michael Folkson&lt;br/&gt;&amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
    </content>
    <updated>2023-06-07T20:28:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsq27mqx02csks4n97hf5ln5r0hgn9lpcnccwgfv3kcvlej0rq6jugzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm579nw4h</id>
    
      <title type="html">📅 Original date posted:2021-02-18 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsq27mqx02csks4n97hf5ln5r0hgn9lpcnccwgfv3kcvlej0rq6jugzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm579nw4h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqs5fl8fe62dy4yqvfxjg07ad0d2d9asluq56647f8s52zkmxsydsz795ym&#39;&gt;nevent1q…95ym&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-18&lt;br/&gt;📝 Original message:We&amp;#39;ve had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That &lt;br/&gt;should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as &lt;br/&gt;much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to &lt;br/&gt;use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an &lt;br/&gt;exchange losing millions would be worse than having Taproot is good.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 2/18/21 09:26, Michael Folkson wrote:&lt;br/&gt;&amp;gt; Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft forks, &lt;br/&gt;&amp;gt; all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades such as &lt;br/&gt;&amp;gt; Taproot. To say we shouldn&amp;#39;t do Taproot or any future soft forks because there is a small but real risk of chain splits &lt;br/&gt;&amp;gt; I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever &lt;br/&gt;&amp;gt; again on this mailing list that wouldn&amp;#39;t stop soft fork attempts from other people in future.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think there is anything else we can do to minimize that risk for the Taproot soft fork at this point though I&amp;#39;m &lt;br/&gt;&amp;gt; open to ideas. To reiterate that risk will never be zero. I don&amp;#39;t think I see Bitcoin as fragile as you seem to (though &lt;br/&gt;&amp;gt; admittedly you have a much better understanding than me of what happened in 2017).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot &lt;br/&gt;&amp;gt; before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and &lt;br/&gt;&amp;gt; wouldn&amp;#39;t kill Bitcoin long term.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,&lt;br/&gt;&amp;gt;     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here and not&lt;br/&gt;&amp;gt;     activate Taproot. Seriously.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Matt&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     ﻿&lt;br/&gt;&amp;gt;&amp;gt;     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have&lt;br/&gt;&amp;gt;&amp;gt;     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don&amp;#39;t think users&lt;br/&gt;&amp;gt;&amp;gt;     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol&lt;br/&gt;&amp;gt;&amp;gt;     implementation to Bitcoin Core) and Luke Dashjr hasn&amp;#39;t yet decided on Bitcoin Knots.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com &amp;lt;mailto:ZmnSCPxj at protonmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Good morning all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;#34;An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Who&amp;#39;s we here?&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; Release both and let the network decide.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that&lt;br/&gt;&amp;gt;&amp;gt;         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         This assures everyone that neither choice is being forced on users, and instead what is being forced on users,&lt;br/&gt;&amp;gt;&amp;gt;         is for users to make that choice themselves.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         Regards,&lt;br/&gt;&amp;gt;&amp;gt;         ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the&lt;br/&gt;&amp;gt;&amp;gt;         mailing list post or at least quote these ephemeral &amp;#34;people&amp;#34; you speak of. I don&amp;#39;t know if you&amp;#39;re responding&lt;br/&gt;&amp;gt;&amp;gt;         to conversation on the IRC channel or on social media etc.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into&lt;br/&gt;&amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; I personally have never made this assumption. Of course users aren&amp;#39;t forced to run any particular software&lt;br/&gt;&amp;gt;&amp;gt;         version, quite the opposite. Defaults set in software versions matter though as many users won&amp;#39;t change them.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a&lt;br/&gt;&amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good reason of&lt;br/&gt;&amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the moment of&lt;br/&gt;&amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks?&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even&lt;br/&gt;&amp;gt;&amp;gt;         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate&lt;br/&gt;&amp;gt;&amp;gt;         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a&lt;br/&gt;&amp;gt;&amp;gt;         software release there is the possibility (T2 in&lt;br/&gt;&amp;gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;) of individuals or a&lt;br/&gt;&amp;gt;&amp;gt;         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release&lt;br/&gt;&amp;gt;&amp;gt;         appears to be no more safe than LOT=true.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with miners&lt;br/&gt;&amp;gt;&amp;gt;         by default.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail&lt;br/&gt;&amp;gt;&amp;gt;         to activate. I&amp;#39;m not convinced by this perception that LOT=true is antagonistic to miners. I actually think it&lt;br/&gt;&amp;gt;&amp;gt;         offers them clarity on what will happen over a year time period and removes the need for coordinated or&lt;br/&gt;&amp;gt;&amp;gt;         uncoordinated community UASF efforts on top of LOT=false.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; I don&amp;#39;t know what you are recommending here to avoid &amp;#34;this darkest timeline&amp;#34;. Open discussions have&lt;br/&gt;&amp;gt;&amp;gt;         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose&lt;br/&gt;&amp;gt;&amp;gt;         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language&lt;br/&gt;&amp;gt;&amp;gt;         isn&amp;#39;t particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or&lt;br/&gt;&amp;gt;&amp;gt;         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged&lt;br/&gt;&amp;gt;&amp;gt;         support for Taproot but we don&amp;#39;t build secure systems based on pledges of support, we build them to minimize&lt;br/&gt;&amp;gt;&amp;gt;         trust in any human actors. We can be grateful that people like Alejandro have worked hard on&lt;br/&gt;&amp;gt;&amp;gt;         taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;; (and this effort has informed the discussion) without&lt;br/&gt;&amp;gt;&amp;gt;         taking pledges of support as cast iron guarantees.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my&lt;br/&gt;&amp;gt;&amp;gt;         email :)&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces &amp;lt;arielluaces at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;mailto:arielluaces at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Something what strikes me about the conversation is the emotion surrounding the letters UASF.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; It appears as if people discuss UASF as if it&amp;#39;s a massive tidal wave of support that is inevitable, like&lt;br/&gt;&amp;gt;&amp;gt;         we saw during segwit activation. But the actual definition is &amp;#34;any activation that is not a MASF&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business&amp;#39; nodes, or&lt;br/&gt;&amp;gt;&amp;gt;         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support,&lt;br/&gt;&amp;gt;&amp;gt;         or any support right up against a miner activation threshold.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Hell a UASF doesn&amp;#39;t even need code or even a single node running as long as it exists as a possibility&lt;br/&gt;&amp;gt;&amp;gt;         in people&amp;#39;s minds.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The only thing a UASF doesn&amp;#39;t have is miner support above an agreed activation threshold (some number&lt;br/&gt;&amp;gt;&amp;gt;         above %51).&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I say this because it strikes me when people say that they are for LOT=true with the logic that since a&lt;br/&gt;&amp;gt;&amp;gt;         UASF is guaranteed to happen then it&amp;#39;s better to just make it default from the beginning. Words like&lt;br/&gt;&amp;gt;&amp;gt;         coordination and safety are sometimes sprinkled into the argument.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into&lt;br/&gt;&amp;gt;&amp;gt;         code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users&lt;br/&gt;&amp;gt;&amp;gt;         must or must not run.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a&lt;br/&gt;&amp;gt;&amp;gt;         handful of people that begin running it while everyone else delays their upgrade (with the very good reason of&lt;br/&gt;&amp;gt;&amp;gt;         not getting involved in politics) and a year later those handful of people just become stuck at the moment of&lt;br/&gt;&amp;gt;&amp;gt;         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a&lt;br/&gt;&amp;gt;&amp;gt;         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn&lt;br/&gt;&amp;gt;&amp;gt;         option has ran its course.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with miners&lt;br/&gt;&amp;gt;&amp;gt;         by default. The chains could be called BitcoinLenient and BitcoinStubborn.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; How is that strictly safer or more coordinated?&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn&amp;#39;t considered&lt;br/&gt;&amp;gt;&amp;gt;         this as a choice but honestly if there is contention about whether we&amp;#39;re going to be stubborn or lenient with&lt;br/&gt;&amp;gt;&amp;gt;         miners for Taproot and in the future then I prefer to just not activate anything at all. I&amp;#39;m fine for calling&lt;br/&gt;&amp;gt;&amp;gt;         bitcoin ossified, accepting that segwit is Bitcoin&amp;#39;s last network upgrade. Taproot is amazing but no new&lt;br/&gt;&amp;gt;&amp;gt;         feature is worth a network split down the middle.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will&lt;br/&gt;&amp;gt;&amp;gt;         become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other&lt;br/&gt;&amp;gt;&amp;gt;         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Cheers&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Yesterday (February 16th) we held a second meeting on Taproot&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; activation on IRC which again was open to all. Despite what appeared&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; to be majority support for LOT=false over LOT=true in the first&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; meeting I (and others) thought the arguments had not been explored in&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; depth and that we should have a follow up meeting almost entirely&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; focused on whether LOT (lockinontimeout) should be set to true or&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; false.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The meeting was announced here:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; In that mailing list post I outlined the arguments for LOT=true (T1 to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; T6) and arguments for LOT=false (F1 to F6) in their strongest form I&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; could. David Harding responded with an additional argument for&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false (F7) here:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; These meetings are very challenging given they are open to all, you&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; don’t know who will attend and you don’t know most people’s views in&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; advance. I tried to give time for both the LOT=true arguments and the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false arguments to be discussed as I knew there was support for&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; both. We only tried evaluating which had more support and which had&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; more strong opposition towards the end of the meeting.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; The conversation log is here:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; (If you are so inclined you can watch a video of the meeting here.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the YouTube account “Bitcoin” for setting up the livestream:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; A summary of the meeting was provided by Luke Dashjr on Mastodon here:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Today&amp;#39;s #Bitcoin #Taproot meeting was IMO largely unproductive, but we&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; did manage to come to consensus on everything but LockinOnTimeout.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Activation height range: 693504-745920&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; MASF threshold: 1815/2016 blocks (90%)&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Keep in mind only ~100 people showed for the meetings, hardly&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; representative of the entire community.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; So, these details remain JUST a proposal for now.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; It seems inevitable that there won&amp;#39;t be consensus on LOT.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Everyone will have to choose for himself. :/&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Personally I agree with most of this. I agree that there wasn’t&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; overwhelming consensus for either LOT=true or LOT=false. However, from&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; my perspective there was clearly more strong opposition (what would&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; usually be deemed a NACK in Bitcoin Core review terminology) from&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core contributors, Lightning developers and other community&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; members against LOT=true than there was for LOT=false. Andrew Chow&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; tried to summarize views from the meeting in this analysis:&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;lt;&lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am also aware of other current and previous Bitcoin Core&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; contributors and Lightning developers who didn’t attend the meeting in&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; person who are opposed to LOT=true. I don’t want to put them in the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; spotlight for no reason but if you go through the conversation logs of&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; not only the meeting but the weeks of discussion prior to this meeting&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; you will see their views evaluated on the ##taproot-activation&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; channel. In addition, on taprootactivation.com &amp;lt;&lt;a href=&#34;http://taprootactivation.com&amp;gt&#34;&gt;http://taprootactivation.com&amp;gt&lt;/a&gt;; some mining pools&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; expressed a preference for lot=false though I don’t know how strong&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; that preference was.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am only one voice but it is my current assessment that if we are to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; attempt to finalize Taproot activation parameters and propose them to&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the community at this time our only option is to propose LOT=false.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Any further delay appears to me counterproductive in our collective&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; aim to get the Taproot soft fork activated as early as possible.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Obviously others are free to disagree with that assessment and&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; continue discussions but personally I will be attempting to avoid&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; those discussions unless prominent new information comes to light or&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; various specific individuals change their minds.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Next week we are planning a code review of the Bitcoin Core PR #19573&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; which was initially delayed because of this LOT discussion. As I’ve&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; said previously that will be loosely following the format of the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core PR review club and will be lower level and more&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; technical. That is planned for Tuesday February 23rd at 19:00 UTC on&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; the IRC channel ##taproot-activation.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the meeting participants (and those who joined the&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; discussion on the channel prior and post the meeting) for engaging&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; &amp;gt; &amp;gt; productively and in good faith.&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt;         &amp;gt; &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &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;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     -- &lt;br/&gt;&amp;gt;&amp;gt;     Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt;     Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt;     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Michael Folkson&lt;br/&gt;&amp;gt; Email: michaelfolkson at gmail.com &amp;lt;mailto:michaelfolkson at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
    </content>
    <updated>2023-06-07T20:28:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswu7mk7ykj5l8zsxms6l3dq4atvaznv39n0df5g70st422gcex78gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55uyad4</id>
    
      <title type="html">📅 Original date posted:2021-02-18 📝 Original message:If the ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswu7mk7ykj5l8zsxms6l3dq4atvaznv39n0df5g70st422gcex78gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55uyad4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstzk2d2anzutjh99faz02me8xvzpe4lr462ae0ktpvtcwz5dtpzrgvzlvsd&#39;&gt;nevent1q…lvsd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-18&lt;br/&gt;📝 Original message:If the eventual outcome is that different implementations (that have material *transaction processing* userbases, and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here and not activate Taproot. Seriously.&lt;br/&gt;&lt;br/&gt;Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;&amp;gt; On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don&amp;#39;t think users should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol implementation to Bitcoin Core) and Luke Dashjr hasn&amp;#39;t yet decided on Bitcoin Knots.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; Good morning all,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Who&amp;#39;s we here?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Release both and let the network decide.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; This assures everyone that neither choice is being forced on users, and instead what is being forced on users, is for users to make that choice themselves.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the mailing list post or at least quote these ephemeral &amp;#34;people&amp;#34; you speak of. I don&amp;#39;t know if you&amp;#39;re responding to conversation on the IRC channel or on social media etc.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users must or must not run.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; I personally have never made this assumption. Of course users aren&amp;#39;t forced to run any particular software version, quite the opposite. Defaults set in software versions matter though as many users won&amp;#39;t change them.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a software release there is the possibility (T2 in &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;) of individuals or a proportion of the community changing LOT to true. In that sense setting LOT=false in a software release appears to be no more safe than LOT=true.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with miners by default.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail to activate. I&amp;#39;m not convinced by this perception that LOT=true is antagonistic to miners. I actually think it offers them clarity on what will happen over a year time period and removes the need for coordinated or uncoordinated community UASF efforts on top of LOT=false.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; I don&amp;#39;t know what you are recommending here to avoid &amp;#34;this darkest timeline&amp;#34;. Open discussions have occurred and are continuing and in my mailing list post that you responded to **I recommended we propose LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language isn&amp;#39;t particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged support for Taproot but we don&amp;#39;t build secure systems based on pledges of support, we build them to minimize trust in any human actors. We can be grateful that people like Alejandro have worked hard on taprootactivation.com (and this effort has informed the discussion) without taking pledges of support as cast iron guarantees.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my email :)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces &amp;lt;arielluaces at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Something what strikes me about the conversation is the emotion surrounding the letters UASF.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; It appears as if people discuss UASF as if it&amp;#39;s a massive tidal wave of support that is inevitable, like we saw during segwit activation. But the actual definition is &amp;#34;any activation that is not a MASF&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business&amp;#39; nodes, or even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support, or any support right up against a miner activation threshold.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Hell a UASF doesn&amp;#39;t even need code or even a single node running as long as it exists as a possibility in people&amp;#39;s minds.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The only thing a UASF doesn&amp;#39;t have is miner support above an agreed activation threshold (some number above %51).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; I say this because it strikes me when people say that they are for LOT=true with the logic that since a UASF is guaranteed to happen then it&amp;#39;s better to just make it default from the beginning. Words like coordination and safety are sometimes sprinkled into the argument.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn&amp;#39;t true and some voices in this discussion need to be more humble about what users must or must not run.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn option has ran its course.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The result: a wasted year of waiting and a minority of people who didn&amp;#39;t want to be lenient with miners by default. The chains could be called BitcoinLenient and BitcoinStubborn.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; How is that strictly safer or more coordinated?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn&amp;#39;t considered this as a choice but honestly if there is contention about whether we&amp;#39;re going to be stubborn or lenient with miners for Taproot and in the future then I prefer to just not activate anything at all. I&amp;#39;m fine for calling bitcoin ossified, accepting that segwit is Bitcoin&amp;#39;s last network upgrade. Taproot is amazing but no new feature is worth a network split down the middle.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Cheers&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Yesterday (February 16th) we held a second meeting on Taproot&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; activation on IRC which again was open to all. Despite what appeared&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; to be majority support for LOT=false over LOT=true in the first&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; meeting I (and others) thought the arguments had not been explored in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; depth and that we should have a follow up meeting almost entirely&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; focused on whether LOT (lockinontimeout) should be set to true or&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; false.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; The meeting was announced here:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; In that mailing list post I outlined the arguments for LOT=true (T1 to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; T6) and arguments for LOT=false (F1 to F6) in their strongest form I&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; could. David Harding responded with an additional argument for&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false (F7) here:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; These meetings are very challenging given they are open to all, you&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; don’t know who will attend and you don’t know most people’s views in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; advance. I tried to give time for both the LOT=true arguments and the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; LOT=false arguments to be discussed as I knew there was support for&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; both. We only tried evaluating which had more support and which had&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; more strong opposition towards the end of the meeting.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; The conversation log is here:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-02-16.log&#34;&gt;http://gnusha.org/taproot-activation/2021-02-16.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; (If you are so inclined you can watch a video of the meeting here.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the YouTube account “Bitcoin” for setting up the livestream:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://www.youtube.com/watch?v=vpl5q1ovMLM&#34;&gt;https://www.youtube.com/watch?v=vpl5q1ovMLM&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; A summary of the meeting was provided by Luke Dashjr on Mastodon here:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://bitcoinhackers.org/@lukedashjr/105742918779234566&#34;&gt;https://bitcoinhackers.org/@lukedashjr/105742918779234566&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Today&amp;#39;s #Bitcoin #Taproot meeting was IMO largely unproductive, but we&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; did manage to come to consensus on everything but LockinOnTimeout.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Activation height range: 693504-745920&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; MASF threshold: 1815/2016 blocks (90%)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Keep in mind only ~100 people showed for the meetings, hardly&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; representative of the entire community.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; So, these details remain JUST a proposal for now.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; It seems inevitable that there won&amp;#39;t be consensus on LOT.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Everyone will have to choose for himself. :/&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Personally I agree with most of this. I agree that there wasn’t&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; overwhelming consensus for either LOT=true or LOT=false. However, from&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; my perspective there was clearly more strong opposition (what would&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; usually be deemed a NACK in Bitcoin Core review terminology) from&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core contributors, Lightning developers and other community&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; members against LOT=true than there was for LOT=false. Andrew Chow&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; tried to summarize views from the meeting in this analysis:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&#34;&gt;https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am also aware of other current and previous Bitcoin Core&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; contributors and Lightning developers who didn’t attend the meeting in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; person who are opposed to LOT=true. I don’t want to put them in the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; spotlight for no reason but if you go through the conversation logs of&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; not only the meeting but the weeks of discussion prior to this meeting&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; you will see their views evaluated on the ##taproot-activation&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; channel. In addition, on taprootactivation.com some mining pools&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; expressed a preference for lot=false though I don’t know how strong&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; that preference was.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am only one voice but it is my current assessment that if we are to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; attempt to finalize Taproot activation parameters and propose them to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the community at this time our only option is to propose LOT=false.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Any further delay appears to me counterproductive in our collective&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; aim to get the Taproot soft fork activated as early as possible.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Obviously others are free to disagree with that assessment and&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; continue discussions but personally I will be attempting to avoid&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; those discussions unless prominent new information comes to light or&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; various specific individuals change their minds.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Next week we are planning a code review of the Bitcoin Core PR #19573&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; which was initially delayed because of this LOT discussion. As I’ve&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; said previously that will be loosely following the format of the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Bitcoin Core PR review club and will be lower level and more&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; technical. That is planned for Tuesday February 23rd at 19:00 UTC on&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the IRC channel ##taproot-activation.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks to the meeting participants (and those who joined the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; discussion on the channel prior and post the meeting) for engaging&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; productively and in good faith.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Michael Folkson&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Email: michaelfolkson at gmail.com&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Michael Folkson&lt;br/&gt;&amp;gt; Email: michaelfolkson at gmail.com&lt;br/&gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20210218/3aeb6764/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210218/3aeb6764/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:48&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqh54t3n9elzhtqz2jf60w4w0hnr96kmzn99eksgr68gut7sxehhszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58ququz</id>
    
      <title type="html">📅 Original date posted:2019-03-08 📝 Original message:To ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqh54t3n9elzhtqz2jf60w4w0hnr96kmzn99eksgr68gut7sxehhszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm58ququz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2uv8hqlta9q8vkp67972ldx2l9ufjq0tg30c6eljht9gjnl308tqg3j0kh&#39;&gt;nevent1q…j0kh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-08&lt;br/&gt;📝 Original message:To make testing easier, it may make sense to keep the existing block header format (and PoW) and instead apply the signature rules to some field in the coinbase transaction. This means SPV clients (assuming they only connect to honest/trusted nodes) work as-is.&lt;br/&gt;&lt;br/&gt;A previous idea regarding reorgs (that I believe Greg came up with) is to allow multiple keys to sign blocks, with one signing no reorgs and one signing a reorg every few blocks, allowing users to choose the behavior they want.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mar 8, 2019, at 00:54, Karl-Johan Alm via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As some of you already know, I&amp;#39;ve been working on a network called &amp;#34;signet&amp;#34;, which is bascially a complement to the already existing testnet, except it is completely centralized, and blocks are signed by a specific key rather than using proof of work.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Benefits of this:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1. It is more predictable than testnet. Miners appear and disappear regularly, causing irregular block generation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 2. Since it is centrally controlled, it is easy to perform global testing, such as reorgs (e.g. the network performs a 4 block reorg by request, or as scheduled).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 3. It is more stable than testnet, which occasionally sees several thousand block reorgs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 4. It is trivial to spin up (and shut down) new signets to make public tests where anyone can participate.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyone can create a signet at any time, simply by creating a key pair and creating a challenge (scriptPubKey). The network can then be used globally by anyone, assuming the creator sends some coins to the other participants.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Having a persistent signet would be beneficial in particular to services which need a stable place to test features over an extended period of time. My own company implements protocols on top of Bitcoin with sidechains. We need multi-node test frameworks to behave in a predictable manner (unlike testnet) and with the same standardness relay policy as mainnet.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Signets consist of 2 parameters: the challenge script (scriptPubKey) and the solution length. (The latter is needed to retain fixed length block headers, despite having an additional payload.)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I propose that a default persistent &amp;#34;signet1&amp;#34; is created, which can be replaced in future versions e.g. if the coins are unwisely used as real money, similarly to what happened to previous testnets. This signet is picked by default if a user includes -signet without providing any of the parameters mentioned above. The key holder would be someone sufficiently trusted in the community, who would be willing to run the system (block generation code, faucet, etc). It could be made a little more sturdy by using 1-of-N multisig as the challenge, in case 1 &amp;lt;= x &amp;lt; N of the signers disappear. If people oppose this, it can be skipped, but will mean people can&amp;#39;t just jump onto signet without first tracking down parameters from somewhere.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Implementation-wise, the code adds an std::map with block hash to block signature. This is serialized/deserialized as appropriate (Segwit witness style), which means block headers in p2p messages are (80 &#43; solution_length) bytes. Block header non-contextual check goes from checking if block header hash &amp;lt; target to checking if the payload is a valid signature for the block header hash instead.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Single commit with code (will split into commits and make PR later, but just to give an idea what it looks like): &lt;a href=&#34;https://github.com/kallewoof/bitcoin/pull/4&#34;&gt;https://github.com/kallewoof/bitcoin/pull/4&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think this PR is overly intrusive, and I&amp;#39;m hoping to be able to get signet code into Bitcoin Core eventually, and am equally hopeful that devs of other (wallet etc) implementations will consider supporting it.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Feedback requested on this.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Attribution: parts of the signet code (in particular signblock and getnewblockhex) were adapted from the ElementsProject/elements repository. When PR is split into atomic commits, I will put appropriate attribution there.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20190308/96e6fa83/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190308/96e6fa83/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:16:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr8pefxxhhas0njzmrm923qrfj9nugvlad3lke0gng8ry64hnx0mqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55pvlv4</id>
    
      <title type="html">📅 Original date posted:2019-03-08 📝 Original message:Aside ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr8pefxxhhas0njzmrm923qrfj9nugvlad3lke0gng8ry64hnx0mqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm55pvlv4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2ykj7yashwusjxa8nlekm03w4xsm439la4jqwrg2zhe7n0d6yyrc8tpmak&#39;&gt;nevent1q…pmak&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-08&lt;br/&gt;📝 Original message:Aside from the complexity issues here, note that for a user to be adversely affect, they probably have to have pre-signed lock-timed transactions. Otherwise, in the crazy case that such a user exists, they should have no problem claiming the funds before activation of a soft-fork (and just switching to the swgwit equivalent, or some other equivalent scheme). Thus, adding additional restrictions like tx size limits will equally break txn.&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mar 8, 2019, at 14:12, Sjors Provoost &amp;lt;sjors at sprovoost.nl&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; (1) It has been well documented again and again that there is desire to remove OP_CODESEPARATOR, (2) it is well-documented OP_CODESEPARATOR in non-segwit scripts represents a rather significant vulnerability in Bitcoin today, and (3) lots of effort has gone into attempting to find practical use-cases for OP_CODESEPARATOR&amp;#39;s specific construction, with no successes as of yet. I strongly, strongly disagree that the highly-unlikely remote possibility that someone created something before which could be rendered unspendable is sufficient reason to not fix a vulnerability in Bitcoin today.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I suggest an alternative whereby the execution of OP_CODESEPARATOR increases the transactions weight suitably as to temper the vulnerability caused by it.  Alternatively there could be some sort of limit (maybe 1) on the maximum number of OP_CODESEPARATORs allowed to be executed per script, but that would require an argument as to why exceeding that limit isn&amp;#39;t reasonable.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; You could equally argue, however, that any such limit could render some moderately-large transaction unspendable, so I&amp;#39;m somewhat skeptical of this argument. Note that OP_CODESEPARATOR is non-standard, so getting them mined is rather difficult in any case.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Although I&amp;#39;m not a fan of extra complicity, just to explore these two ideas a bit further.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; What if such a transaction:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 1. must have one input; and&lt;br/&gt;&amp;gt; 2. must be smaller than 400 vbytes; and&lt;br/&gt;&amp;gt; 3. must spend from a UTXO older than fork activation&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Adding such a contextual check seems rather painful, perhaps comparable to nLockTime. Anything more specific than the above, e.g. counting the number of OP_CODESEPARATOR calls, seems like guess work.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Transaction weight currently doesn&amp;#39;t consider OP codes, it only considers if bytes are part of the witness. Changing that to something more akin to Ethereums gas pricing sounds too complicated to even consider.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I would also like to believe that whoever went through the trouble of using OP_CODESEPARATOR reads this list.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Sjors&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:16:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyuphn8t5j4ntm83gyr4t5cmmymr00a69zxnhztg5gkkzshfpju8szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5lfuf43</id>
    
      <title type="html">📅 Original date posted:2019-03-12 📝 Original message:Note ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyuphn8t5j4ntm83gyr4t5cmmymr00a69zxnhztg5gkkzshfpju8szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5lfuf43" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszcdg20g5xs08a69ke6p0fp79m056qwqqqp5fz2u7vhncjsl6z68s6q8jhf&#39;&gt;nevent1q…8jhf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-12&lt;br/&gt;📝 Original message:Note that even your carve-outs for OP_NOP is not sufficient here - if you were using nSequence to tag different pre-signed transactions into categories (roughly as you suggest people may want to do with extra sighash bits) then their transactions could very easily have become un-realistically-spendable. The whole point of soft forks is that we invalidate otherwise-unused bits of the protocol. This does not seem inconsistent with the proposal here.&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mar 9, 2019, at 13:29, Russell O&amp;#39;Connor &amp;lt;roconnor at blockstream.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; Bitcoin has *never* made a soft-fork, since the time of Satoishi, that invalidated transactions that send secured inputs to secured outputs (excluding uses of OP_NOP1-OP_NOP10).
    </content>
    <updated>2023-06-07T20:16:47&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs97n563a374wtu8sark06arwz6meerp7nlutl92k6l657r6k94l2gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ftxpmj</id>
    
      <title type="html">📅 Original date posted:2019-03-07 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs97n563a374wtu8sark06arwz6meerp7nlutl92k6l657r6k94l2gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ftxpmj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxy63uuq72zvw2sr2l96tkufa9fmcgugjjktlzezwclusa2wntthg9f80y5&#39;&gt;nevent1q…80y5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-07&lt;br/&gt;📝 Original message:Replies inline.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 3/7/19 3:03 PM, Russell O&amp;#39;Connor wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     * OP_CODESEPARATOR in non-BIP 143 scripts fails the script validation.&lt;br/&gt;&amp;gt;     This includes OP_CODESEPARATORs in unexecuted branches of if&lt;br/&gt;&amp;gt;     statements,&lt;br/&gt;&amp;gt;     similar to other disabled opcodes, but unlike OP_RETURN.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; OP_CODESEPARATOR is the only mechanism available that allows users to &lt;br/&gt;&amp;gt; sign which particular branch they are authorizing for within scripts &lt;br/&gt;&amp;gt; that have multiple possible conditions that reuse the same public key.&lt;br/&gt;&lt;br/&gt;This is true, and yet it does not appear to actually be practically &lt;br/&gt;usable. Thus far, despite a ton of effort, I have not yet seen a &lt;br/&gt;practical use-case for OP_CODESEPARATOR (except for one example of it &lt;br/&gt;being used to make SegWit scripts ever-so-slightly more effecient in &lt;br/&gt;TumbleBit, hence why this BIP does not propose disabling it for SegWit).&lt;br/&gt;&lt;br/&gt;&amp;gt; Because of P2SH you cannot know that no one is currently using this &lt;br/&gt;&amp;gt; feature.  Activating a soft-fork as describe above means these sorts of &lt;br/&gt;&amp;gt; funds would be permanently lost.  It is not acceptable to risk people&amp;#39;s &lt;br/&gt;&amp;gt; money like this.&lt;br/&gt;&lt;br/&gt;(1) It has been well documented again and again that there is desire to &lt;br/&gt;remove OP_CODESEPARATOR, (2) it is well-documented OP_CODESEPARATOR in &lt;br/&gt;non-segwit scripts represents a rather significant vulnerability in &lt;br/&gt;Bitcoin today, and (3) lots of effort has gone into attempting to find &lt;br/&gt;practical use-cases for OP_CODESEPARATOR&amp;#39;s specific construction, with &lt;br/&gt;no successes as of yet. I strongly, strongly disagree that the &lt;br/&gt;highly-unlikely remote possibility that someone created something before &lt;br/&gt;which could be rendered unspendable is sufficient reason to not fix a &lt;br/&gt;vulnerability in Bitcoin today.&lt;br/&gt;&lt;br/&gt;&amp;gt; I suggest an alternative whereby the execution of OP_CODESEPARATOR &lt;br/&gt;&amp;gt; increases the transactions weight suitably as to temper the &lt;br/&gt;&amp;gt; vulnerability caused by it.  Alternatively there could be some sort of &lt;br/&gt;&amp;gt; limit (maybe 1) on the maximum number of OP_CODESEPARATORs allowed to be &lt;br/&gt;&amp;gt; executed per script, but that would require an argument as to why &lt;br/&gt;&amp;gt; exceeding that limit isn&amp;#39;t reasonable.&lt;br/&gt;&lt;br/&gt;You could equally argue, however, that any such limit could render some &lt;br/&gt;moderately-large transaction unspendable, so I&amp;#39;m somewhat skeptical of &lt;br/&gt;this argument. Note that OP_CODESEPARATOR is non-standard, so getting &lt;br/&gt;them mined is rather difficult in any case.
    </content>
    <updated>2023-06-07T20:16:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsry3vn8vjj9u70telf3qxrgaewfzcy7nc4a360dfdfkhp82943puszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zsfhrn</id>
    
      <title type="html">📅 Original date posted:2019-03-08 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsry3vn8vjj9u70telf3qxrgaewfzcy7nc4a360dfdfkhp82943puszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zsfhrn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxfv3a2yp3gl99frg4fkdux6u538enn9fg38x3da5ct26j5jc8nug90t6uz&#39;&gt;nevent1q…t6uz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-08&lt;br/&gt;📝 Original message:Replies inline.&lt;br/&gt;&lt;br/&gt;On 3/8/19 3:57 PM, Russell O&amp;#39;Connor wrote:&lt;br/&gt;&amp;gt; On Thu, Mar 7, 2019 at 2:50 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com &lt;br/&gt;&amp;gt; &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; It&amp;#39;s very easy to construct a practical script using OP_CODESEPARATOR.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; IF &amp;lt;2&amp;gt; &amp;lt;ALICEPUBKEY&amp;gt; &amp;lt;BOBPUBKEY&amp;gt; &amp;lt;2&amp;gt; CHECKMULTISIGVERIFY ELSE &lt;br/&gt;&amp;gt; CODESEPARATOR &amp;lt;ALICEPUBKEY&amp;gt; CHECKSIGVERFY ENDIF&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Now when someone hands Alice, the CFO of XYZ corp., some transaction, &lt;br/&gt;&amp;gt; she has the option of either signing it unilaterally herself, or &lt;br/&gt;&amp;gt; creating a partial signature such that the transaction additionally &lt;br/&gt;&amp;gt; needs Bob, the CEOs signature as well, and Alice&amp;#39;s choice is committed &lt;br/&gt;&amp;gt; to the blockchain for auditing purposes later.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Now, there are many things you might object about this scheme, but my &lt;br/&gt;&amp;gt; point is that (A) regardless of what you think about this scheme, it, or &lt;br/&gt;&amp;gt; similar schemes, may have been devised by users, and (B) users may have &lt;br/&gt;&amp;gt; already committed funds to such schemes, and due to P2SH you cannot know &lt;br/&gt;&amp;gt; that this is not the case.&lt;br/&gt;&lt;br/&gt;The common way to set that up is to have a separate key, but, ok, fair &lt;br/&gt;enough. That said, the argument that &amp;#34;it may be hidden by P2SH!&amp;#34; isn&amp;#39;t &lt;br/&gt;sufficient here. It has to *both* be hidden by P2SH and have never been &lt;br/&gt;spent from (either on mainnet or testnet) or be lock-timed a year in the &lt;br/&gt;future. I&amp;#39;m seriously skeptical that someone is using a highly esoteric &lt;br/&gt;scheme and has just been pouring money into it without ever having &lt;br/&gt;tested it or having withdrawn any money from it whatsoever. This is just &lt;br/&gt;a weird argument.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Please don&amp;#39;t strawman my position.  I am not suggesting we don&amp;#39;t fix a &lt;br/&gt;&amp;gt; vulnerability in Bitcoin.  I am suggesting we find another way.  One &lt;br/&gt;&amp;gt; that limits the of risk destroying other people&amp;#39;s money.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Here is a more concrete proposal:  No matter how bad OP_CODESEPARATOR &lt;br/&gt;&amp;gt; is, it cannot be worse than instead including another input that spends &lt;br/&gt;&amp;gt; another identically sized UTXO.  So how about we soft-fork in a rule &lt;br/&gt;&amp;gt; that says that an input&amp;#39;s weight is increased by an amount equal to the &lt;br/&gt;&amp;gt; number of OP_CODESEPARATORs executed times the sum of weight of the UTXO &lt;br/&gt;&amp;gt; being spent and 40 bytes, the weight of a stripped input. The risk of &lt;br/&gt;&amp;gt; destroying other people&amp;#39;s money is limited and AFAIU it would completely &lt;br/&gt;&amp;gt; address the vulnerabilities caused by OP_CODESEPARATOR.&lt;br/&gt;&lt;br/&gt;You&amp;#39;re already arguing that someone has such an esoteric use of script, &lt;br/&gt;suggesting they aren&amp;#39;t *also* creating pre-signed, long-locktimed &lt;br/&gt;transactions with many inputs isn&amp;#39;t much of a further stretch &lt;br/&gt;(especially since this may result in the fee being non-standardly low if &lt;br/&gt;you artificially increase its weight).&lt;br/&gt;&lt;br/&gt;Note that &amp;#34;just limit number of OP_CODESEPARATOR calls&amp;#34; results in a ton &lt;br/&gt;of complexity and reduces the simple analysis that fees (almost) have &lt;br/&gt;today vs just removing it allows us to also remove a ton of code.&lt;br/&gt;&lt;br/&gt;Further note that if you don&amp;#39;t remove it getting the efficiency wins &lt;br/&gt;right is even harder because instead of being able to cache sighashes &lt;br/&gt;you now have to (at a minimum) wipe the cache between each &lt;br/&gt;OP_CODESEPARATOR call, which results in a ton of additional &lt;br/&gt;implementation complexity.&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;      &amp;gt; I suggest an alternative whereby the execution of OP_CODESEPARATOR&lt;br/&gt;&amp;gt;      &amp;gt; increases the transactions weight suitably as to temper the&lt;br/&gt;&amp;gt;      &amp;gt; vulnerability caused by it.  Alternatively there could be some&lt;br/&gt;&amp;gt;     sort of&lt;br/&gt;&amp;gt;      &amp;gt; limit (maybe 1) on the maximum number of OP_CODESEPARATORs&lt;br/&gt;&amp;gt;     allowed to be&lt;br/&gt;&amp;gt;      &amp;gt; executed per script, but that would require an argument as to why&lt;br/&gt;&amp;gt;      &amp;gt; exceeding that limit isn&amp;#39;t reasonable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     You could equally argue, however, that any such limit could render some&lt;br/&gt;&amp;gt;     moderately-large transaction unspendable, so I&amp;#39;m somewhat skeptical of&lt;br/&gt;&amp;gt;     this argument. Note that OP_CODESEPARATOR is non-standard, so getting&lt;br/&gt;&amp;gt;     them mined is rather difficult in any case.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I already know of people who&amp;#39;s funds are tied up due to in other changes &lt;br/&gt;&amp;gt; to Bitcoin Core&amp;#39;s default relay policy.  Non-standardness is not an &lt;br/&gt;&amp;gt; excuse to take other people&amp;#39;s tied up funds and destroy them permanently.&lt;br/&gt;&lt;br/&gt;Huh?! The whole point of non-standardness in this context is to (a) make &lt;br/&gt;soft-forking something out safer by derisking miners not upgrading right &lt;br/&gt;away and (b) signal something that may be a candidate for soft-forking &lt;br/&gt;out so that we get feedback. Who is getting things disabled who isn&amp;#39;t &lt;br/&gt;bothering to *tell* people that their use-case is being hurt?!
    </content>
    <updated>2023-06-07T20:16:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx4majqh2dqmsetz6qzapuvam9fyy2608cwc50sp7pfuy662wjrvqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5e0n5ak</id>
    
      <title type="html">📅 Original date posted:2019-02-05 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx4majqh2dqmsetz6qzapuvam9fyy2608cwc50sp7pfuy662wjrvqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5e0n5ak" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszcdec0gv8u2y5t88atanl7v5c28p8wmxxjuaufs62rntxxta8k2qz00zgn&#39;&gt;nevent1q…0zgn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-02-05&lt;br/&gt;📝 Original message:On 2/4/19 8:18 PM, Jim Posen via bitcoin-dev wrote:&lt;br/&gt;- snip -&lt;br/&gt; &amp;gt; 1) Introduce a new P2P message to retrieve all prev-outputs for a given&lt;br/&gt; &amp;gt; block (essentially the undo data in Core), and verify the scripts&lt;br/&gt; &amp;gt; against the block by executing them. While this permits some forms of&lt;br/&gt; &amp;gt; input script malleability (and thus cannot discriminate between all&lt;br/&gt; &amp;gt; valid and invalid filters), it restricts what an attacker can do. This&lt;br/&gt; &amp;gt; was proposed by Laolu AFAIK, and I believe this is how btcd is &lt;br/&gt;proceeding.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m somewhat confused by this - how does the undo data help you without &lt;br/&gt;seeing the full (mistate compressed) transaction? In (the realistic) &lt;br/&gt;thread model where an attacker is trying to blind you from some output, &lt;br/&gt;they can simply give you &amp;#34;undo data&amp;#34; where scriptPubKeys are OP_TRUE &lt;br/&gt;instead of the real script and you&amp;#39;d be none the wiser.&lt;br/&gt;&lt;br/&gt;On 2/5/19 1:42 AM, Olaoluwa Osuntokun via bitcoin-dev wrote:&lt;br/&gt;- snip -&lt;br/&gt;&amp;gt; I think it&amp;#39;s too late into the current deployment of the BIPs to change&lt;br/&gt;&amp;gt; things around yet again. Instead, the BIP already has measures in place for&lt;br/&gt;&amp;gt; adding _new_ filter types in the future. This along with a few other filter&lt;br/&gt;&amp;gt; types may be worthwhile additions as new filter types.&lt;br/&gt;- snip -&lt;br/&gt;&lt;br/&gt;Huh? I don&amp;#39;t think we should seriously consider &lt;br/&gt;only-one-codebase-has-deployed-anything-with-very-limited-in-the-wild-use &lt;br/&gt;as &amp;#34;too late into the current deployment&amp;#34;?&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-07T20:16:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd3lnljp26wzka6npx0emj0wj7xcw506jtppexq7vyrx8znle5d8czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56hryt6</id>
    
      <title type="html">📅 Original date posted:2018-05-17 📝 Original message:(1) ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd3lnljp26wzka6npx0emj0wj7xcw506jtppexq7vyrx8znle5d8czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56hryt6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs08zetld35hykyk6u564q99lghcv0nmhny4zhg7kdl6y2yrf7sk6gf8xr4r&#39;&gt;nevent1q…xr4r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-17&lt;br/&gt;📝 Original message:(1) can be accomplished by filtering for the set of outputs in the transaction you created. I agree (2) would ideally be done to avoid issues with a copied wallet (theft or not), but I am worried about the size of the filters themselves, not just the size of the blocks downloaded after a match.&lt;br/&gt;&lt;br/&gt;On May 17, 2018 3:43:15 PM UTC, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;On Thu, May 17, 2018 at 11:25:12AM -0400, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt;wrote:&lt;br/&gt;&amp;gt;&amp;gt; BIP 158 currently includes the following in the &amp;#34;basic&amp;#34; filter: 1)&lt;br/&gt;&amp;gt;&amp;gt; txids, 2) output scripts, 3) input prevouts.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I believe (1) could be skipped entirely - there is almost no reason&lt;br/&gt;&amp;gt;why&lt;br/&gt;&amp;gt;&amp;gt; you&amp;#39;d not be able to filter for, eg, the set of output scripts in a&lt;br/&gt;&amp;gt;&amp;gt; transaction you know about and (2) and (3) may want to be split out -&lt;br/&gt;&amp;gt;&amp;gt; many wallets may wish to just find transactions paying to them, as&lt;br/&gt;&amp;gt;&amp;gt; transactions spending from their outputs should generally be things&lt;br/&gt;&amp;gt;&amp;gt; they&amp;#39;ve created.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;So I think we have two cases where wallets want to find txs spending&lt;br/&gt;&amp;gt;from their&lt;br/&gt;&amp;gt;outputs:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;1) Waiting for a confirmation&lt;br/&gt;&amp;gt;2) Detecting theft&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The former can be turned off once there are no expected unconfirmed&lt;br/&gt;&amp;gt;transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;As for the latter, this is probably a valuable thing for wallets to do.&lt;br/&gt;&amp;gt;Modulo&lt;br/&gt;&amp;gt;reorgs, reducing the frequency that you check for stolen funds doesn&amp;#39;t&lt;br/&gt;&amp;gt;decrease&lt;br/&gt;&amp;gt;total bandwidth cost - it&amp;#39;s one filter match per block regardless - but&lt;br/&gt;&amp;gt;perhaps&lt;br/&gt;&amp;gt;the real-world bandwidth cost can be reduced by, say, waiting for a&lt;br/&gt;&amp;gt;wifi&lt;br/&gt;&amp;gt;connection rather than using cellular data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;-- &lt;br/&gt;&amp;gt;&lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&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/20180517/d64f3e3b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180517/d64f3e3b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:12:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdrgpcdzhrw359kwtqc98q6drext3xjrpr6hr80sq7h8233jxrpmgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vfj4m6</id>
    
      <title type="html">📅 Original date posted:2018-05-17 📝 Original message:Yea I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdrgpcdzhrw359kwtqc98q6drext3xjrpr6hr80sq7h8233jxrpmgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vfj4m6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9957yeemtm4l40wu8p709y5dgsmz85ptx7d4htyp35spzan3mwfca6e92t&#39;&gt;nevent1q…e92t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-17&lt;br/&gt;📝 Original message:Yea I generally would really prefer something like that but it&lt;br/&gt;significantly complicates the download logic - currently clients can&lt;br/&gt;easily cross-check a filter in case they differ between providers by&lt;br/&gt;downloading the block. If we instead went with the script being spent&lt;br/&gt;they would have to be provided all previous transactions (potentially&lt;br/&gt;compressed via midstate) as well, making it potentially infeasible to&lt;br/&gt;identify the offending node while remaining a lightweight client. Maybe&lt;br/&gt;there is some other reasonable download logic to replace it with, however.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 05/17/18 12:36, Gregory Maxwell wrote:&lt;br/&gt;&amp;gt; On Thu, May 17, 2018 at 3:25 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; I believe (1) could be skipped entirely - there is almost no reason why&lt;br/&gt;&amp;gt;&amp;gt; you&amp;#39;d not be able to filter for, eg, the set of output scripts in a&lt;br/&gt;&amp;gt;&amp;gt; transaction you know about&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think this is convincing for the txids themselves.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; What about also making input prevouts filter based on the scriptpubkey&lt;br/&gt;&amp;gt; being _spent_?  Layering wise in the processing it&amp;#39;s a bit ugly, but&lt;br/&gt;&amp;gt; if you validated the block you have the data needed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This would eliminate the multiple data type mixing entirely.&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:12:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfk0ykxxmpswh9u068ty3xp8f5czm9wl64sj2af38snsa262pshdczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56pcydm</id>
    
      <title type="html">📅 Original date posted:2018-05-17 📝 Original message:BIP ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfk0ykxxmpswh9u068ty3xp8f5czm9wl64sj2af38snsa262pshdczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56pcydm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2alh8uwgnw2dhaaek637x723yj4x7zqq37facnh9w4trzc5dk5mcuraa0u&#39;&gt;nevent1q…aa0u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-17&lt;br/&gt;📝 Original message:BIP 158 currently includes the following in the &amp;#34;basic&amp;#34; filter: 1)&lt;br/&gt;txids, 2) output scripts, 3) input prevouts.&lt;br/&gt;&lt;br/&gt;I believe (1) could be skipped entirely - there is almost no reason why&lt;br/&gt;you&amp;#39;d not be able to filter for, eg, the set of output scripts in a&lt;br/&gt;transaction you know about and (2) and (3) may want to be split out -&lt;br/&gt;many wallets may wish to just find transactions paying to them, as&lt;br/&gt;transactions spending from their outputs should generally be things&lt;br/&gt;they&amp;#39;ve created.&lt;br/&gt;&lt;br/&gt;In general, I&amp;#39;m concerned about the size of the filters making existing&lt;br/&gt;SPV clients less willing to adopt BIP 158 instead of the existing bloom&lt;br/&gt;filter garbage and would like to see a further exploration of ways to&lt;br/&gt;split out filters to make them less bandwidth intensive. Some further&lt;br/&gt;ideas we should probably play with before finalizing moving forward is&lt;br/&gt;providing filters for certain script templates, eg being able to only&lt;br/&gt;get outputs that are segwit version X or other similar ideas.&lt;br/&gt;&lt;br/&gt;Matt
    </content>
    <updated>2023-06-07T20:12:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszq2usxjt9sylrd8cr0t9atafjthevx3mr5dumhy423l86nq2qp7qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xw5le0</id>
    
      <title type="html">📅 Original date posted:2018-01-27 📝 Original message:Gah, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszq2usxjt9sylrd8cr0t9atafjthevx3mr5dumhy423l86nq2qp7qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xw5le0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv3sv536yeju5rd8hamc9xf4axm6mryt5zmk404x5swykznttvpvctqgygd&#39;&gt;nevent1q…gygd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-27&lt;br/&gt;📝 Original message:Gah, please no. I see no material reason why cross-input signature aggregation shouldn&amp;#39;t have the signatures in the first n-1 inputs replaced with something like a single-byte push where a signature is required to indicate aggregation, and the combined signature in the last input at whatever position the signature is required.&lt;br/&gt;&lt;br/&gt;On January 27, 2018 5:07:25 PM UTC, Russell O&amp;#39;Connor via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;-snip-&lt;br/&gt;&amp;gt;Cross-input signature aggregation probably requires a new field to be&lt;br/&gt;&amp;gt;added&lt;br/&gt;&amp;gt;to the P2P transaction structure to hold the aggregated signature,&lt;br/&gt;&amp;gt;since&lt;br/&gt;&amp;gt;there isn&amp;#39;t really a good place to put it in the existing structure&lt;br/&gt;&amp;gt;(there&lt;br/&gt;&amp;gt;are games you can play to make it fit, but I think it is worthwhile). &lt;br/&gt;&amp;gt;The&lt;br/&gt;&amp;gt;obvious way add block commitments to a new tx field is via the witness&lt;br/&gt;&amp;gt;reserved value mechanism present in BIP 141.  At this point I think&lt;br/&gt;&amp;gt;there&lt;br/&gt;&amp;gt;will be some leeway to adjust the discount on the weight of this new&lt;br/&gt;&amp;gt;aggregated signature tx field so that even a single input taproot using&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;aggregated signature system (here an aggregation of 1 signature) ends&lt;br/&gt;&amp;gt;up no&lt;br/&gt;&amp;gt;more expensive than a single input segwit P2WPKH.
    </content>
    <updated>2023-06-07T20:10:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszhd5jqpr9z63c36ql9f94y2zeq5ykm2tguay60hm9enlr6sgg6pgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm54wwyjc</id>
    
      <title type="html">📅 Original date posted:2018-01-23 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszhd5jqpr9z63c36ql9f94y2zeq5ykm2tguay60hm9enlr6sgg6pgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm54wwyjc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq8nm6cykmtjkfvrw9raaqyk57n7x2euljqej5hnafe2pn9g7nqxsflmpnj&#39;&gt;nevent1q…mpnj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-23&lt;br/&gt;📝 Original message:The issue with that approach without support for the privacy-encouraging wrapper proposed by Greg here is that it encourages adoption halfway and destroys a lot of the value of the apparent-script monoculture for privacy preservation. Greg&amp;#39;s proposal here doesn&amp;#39;t change the format of any specific MAST implementation, but instead adds the privacy wrapper that I always felt was missing in existing proposals, without any real additional overhead in many use-cases!&lt;br/&gt;&lt;br/&gt;Indeed, permissionless innovation is important, but the huge advantage of providing the privacy wrapper by default here is absolutely massive to the ecosystem and should not be handwaved away for vague possibly-advantages.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On January 23, 2018 2:39:37 PM UTC, Mark Friedenbach &amp;lt;mark at friedenbach.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;I had the opposite response in private, which I will share here. As&lt;br/&gt;&amp;gt;recently as Jan 9th feedback on BIP 117 was shared on this list by&lt;br/&gt;&amp;gt;Pieter Wuille and others suggesting we adopt native MAST template&lt;br/&gt;&amp;gt;instead of the user programmable combination of BIPs 116 and 117. Part&lt;br/&gt;&amp;gt;of my response then was, I quote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I havent the hubris to suggest that we know exactly what a templated&lt;br/&gt;&amp;gt;MAST *should* look like. It&amp;#39;s not used in production anywhere. Even if&lt;br/&gt;&amp;gt;we did have the foresight, the tail-call semantics allow for other&lt;br/&gt;&amp;gt;constructions besides MAST and for the sake of the future we should&lt;br/&gt;&amp;gt;allow such permission-less innovation. The proper sequence of events&lt;br/&gt;&amp;gt;should be to enable features in a generic way, and then to create&lt;br/&gt;&amp;gt;specialized templates to save space for common constructions. Not the&lt;br/&gt;&amp;gt;other way around. [1]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I take this advance as further evidence in favor of this view. As&lt;br/&gt;&amp;gt;recently as 24 hours ago if you had asked what a native-MAST template&lt;br/&gt;&amp;gt;would have looked like, the answer would have been something like&lt;br/&gt;&amp;gt;Johnson Lau’s BIP 114, with some quibbling over details. Taproot is a&lt;br/&gt;&amp;gt;clearly superior approach. But is it optimal? I don’t think we can&lt;br/&gt;&amp;gt;claim that now. Optimality of these constructs isn’t something easily&lt;br/&gt;&amp;gt;proven, with the nearest substitute being unchanging consensus over&lt;br/&gt;&amp;gt;extended periods of time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Every time we add an output type specialization, we introduce a new&lt;br/&gt;&amp;gt;codepath in the core of the script consensus that must be maintained&lt;br/&gt;&amp;gt;forever. Take P2SH: from this point forward there is no reason to use&lt;br/&gt;&amp;gt;it in new applications, ever. But it must be forever supported. In an&lt;br/&gt;&amp;gt;alternate universe we could have deployed a native MAST proposal, like&lt;br/&gt;&amp;gt;BIP 114, only to have Taproot-like schemes discovered after activation.&lt;br/&gt;&amp;gt;That would have been a sucky outcome. It is still the case that we&lt;br/&gt;&amp;gt;could go for Taproot right now, and then in six months or a year’s time&lt;br/&gt;&amp;gt;we find an important tweak or a different approach entirely that is&lt;br/&gt;&amp;gt;even better, but the activation process had already started. That would&lt;br/&gt;&amp;gt;be a sucky outcome we haven’t avoided yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This is not an argument against template specialization for common code&lt;br/&gt;&amp;gt;paths, especially those which increase fungibility of coins. I do think&lt;br/&gt;&amp;gt;we should have a native MAST template eventually, using Taproot or&lt;br/&gt;&amp;gt;something better. However if I may be allowed I will make an educated&lt;br/&gt;&amp;gt;guess about the origin of Taproot: I think it’s no coincidence that&lt;br/&gt;&amp;gt;Greg had this insight and/or wrote it up simultaneous with a push by&lt;br/&gt;&amp;gt;myself and others for getting MAST features into bitcoin via BIPs 98,&lt;br/&gt;&amp;gt;116, and 117, or 114. Cryptographers tend to only think up solutions to&lt;br/&gt;&amp;gt;problems that are on their minds. And the problems on most people’s&lt;br/&gt;&amp;gt;minds are primarily those that are deployable today, or otherwise&lt;br/&gt;&amp;gt;near-term applicable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;BIPS 116 and 117 each provide a reusable component that together&lt;br/&gt;&amp;gt;happens to enable a generic form of MAST. Even without the workarounds&lt;br/&gt;&amp;gt;required to avoid CLEANSTACK violations, the resulting MAST template is&lt;br/&gt;&amp;gt;larger than what is possible with specialization. However let’s not&lt;br/&gt;&amp;gt;forget that (1) they also enable other applications like honeypots, key&lt;br/&gt;&amp;gt;trees, and script delegation; and relevant to this conversation (2)&lt;br/&gt;&amp;gt;they get the MAST feature available for use in production by the wider&lt;br/&gt;&amp;gt;community. I don’t think I’d personally be willing to bet that we found&lt;br/&gt;&amp;gt;the optimal MAST structure in Greg’s Taproot until we have people doing&lt;br/&gt;&amp;gt;interesting production work like multisig wallets, lightning protocol,&lt;br/&gt;&amp;gt;and the next set of consensus features start putting it into production&lt;br/&gt;&amp;gt;and exploring edge cases. We may find ways Taproot can be tweaked to&lt;br/&gt;&amp;gt;enable other applications (like encoding a hash preimage as well) or&lt;br/&gt;&amp;gt;simplify obscure corner cases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I feel quite strongly that the correct approach is to add support for&lt;br/&gt;&amp;gt;generic features to accomplish the underlying goal in a user&lt;br/&gt;&amp;gt;programmable way, and THEN after activation and some usage consider&lt;br/&gt;&amp;gt;ways in which common use cases can be made more efficient through&lt;br/&gt;&amp;gt;output specialization. To take a more obvious example, lightning&lt;br/&gt;&amp;gt;protocol is still an active area or research and I think it is&lt;br/&gt;&amp;gt;abundantly clear that we don’t know yet what the globally optimal&lt;br/&gt;&amp;gt;layer-2 caching protocol will be, even if we have educated guesses as&lt;br/&gt;&amp;gt;to its broad structure. A proposal right now to standardize a more&lt;br/&gt;&amp;gt;compact lightning script type would be rightly rejected. It is less&lt;br/&gt;&amp;gt;obvious but just as true that the same should hold for MAST.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I have argued these points before in favor of permission less&lt;br/&gt;&amp;gt;innovation first, then application specialization later, in [1] and at&lt;br/&gt;&amp;gt;the end of the rather long email [2]. I hope you can take the time to&lt;br/&gt;&amp;gt;read those if you still feel we should take a specialized template&lt;br/&gt;&amp;gt;approach instead of the user programmable BIPSs 116 and 117.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;[1]&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015537.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015537.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015537.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015537.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;[2]&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-September/015029.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-September/015029.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-September/015029.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-September/015029.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Jan 22, 2018, at 6:51 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Thanks Greg!&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d be hesitant to deploy a MAST proposal without this clever&lt;br/&gt;&amp;gt;application of pay-to-contract-hash now! Looks like the overhead over a&lt;br/&gt;&amp;gt;more-naive MAST construction is rather trivial, too!&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On January 23, 2018 12:30:06 AM UTC, Gregory Maxwell via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; Interest in merkelized scriptPubKeys (e.g. MAST) is driven by two&lt;br/&gt;&amp;gt;main&lt;br/&gt;&amp;gt;&amp;gt; areas: efficiency and privacy. Efficiency because unexecuted forks of&lt;br/&gt;&amp;gt;&amp;gt; a script can avoid ever hitting the chain, and privacy because hiding&lt;br/&gt;&amp;gt;&amp;gt; unexecuted code leaves scripts indistinguishable to the extent that&lt;br/&gt;&amp;gt;&amp;gt; their only differences are in the unexecuted parts.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; As Mark Friedenbach and others have pointed out before it is almost&lt;br/&gt;&amp;gt;&amp;gt; always the case that interesting scripts have a logical top level&lt;br/&gt;&amp;gt;&amp;gt; branch which allows satisfaction of the contract with nothing other&lt;br/&gt;&amp;gt;&amp;gt; than a signature by all parties.  Other branches would only be used&lt;br/&gt;&amp;gt;&amp;gt; where some participant is failing to cooperate. More strongly stated,&lt;br/&gt;&amp;gt;&amp;gt; I believe that _any_ contract with a fixed finite participant set&lt;br/&gt;&amp;gt;&amp;gt; upfront can be and should be represented as an OR between an N-of-N&lt;br/&gt;&amp;gt;&amp;gt; and whatever more complex contract you might want to represent.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; One point that comes up while talking about merkelized scripts is can&lt;br/&gt;&amp;gt;&amp;gt; we go about making fancier contract use cases as indistinguishable as&lt;br/&gt;&amp;gt;&amp;gt; possible from the most common and boring payments. Otherwise, if the&lt;br/&gt;&amp;gt;&amp;gt; anonymity set of fancy usage is only other fancy usage it may not be&lt;br/&gt;&amp;gt;&amp;gt; very large in practice. One suggestion has been that ordinary&lt;br/&gt;&amp;gt;&amp;gt; checksig-only scripts should include a dummy branch for the rest of&lt;br/&gt;&amp;gt;&amp;gt; the tree (e.g. a random value hash), making it look like there are&lt;br/&gt;&amp;gt;&amp;gt; potentially alternative rules when there aren&amp;#39;t really.  The negative&lt;br/&gt;&amp;gt;&amp;gt; side of this is an additional 32-byte overhead for the overwhelmingly&lt;br/&gt;&amp;gt;&amp;gt; common case which doesn&amp;#39;t need it.  I think the privacy gains are&lt;br/&gt;&amp;gt;&amp;gt; worth doing such a thing, but different people reason differently&lt;br/&gt;&amp;gt;&amp;gt; about these trade-offs.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; It turns out, however, that there is no need to make a trade-off. &lt;br/&gt;&amp;gt;The&lt;br/&gt;&amp;gt;&amp;gt; special case of a top level &amp;#34;threshold-signature OR&lt;br/&gt;&amp;gt;&amp;gt; arbitrary-conditions&amp;#34; can be made indistinguishable from a normal&lt;br/&gt;&amp;gt;&amp;gt; one-party signature, with no overhead at all, with a special&lt;br/&gt;&amp;gt;&amp;gt; delegating CHECKSIG which I call Taproot.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Let&amp;#39;s say we want to create a coin that can be redeemed by either&lt;br/&gt;&amp;gt;&amp;gt; Alice &amp;amp;&amp;amp; Bob   or by CSV-timelock &amp;amp;&amp;amp; Bob.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Alice has public A, Bob has pubkey B.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; We compute the 2-of-2 aggregate key C = A &#43; B.  (Simplified; to&lt;br/&gt;&amp;gt;&amp;gt; protect against rogue key attacks you may want to use the MuSig key&lt;br/&gt;&amp;gt;&amp;gt; aggregation function [1])&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; We form our timelock script S =  &amp;#34;&amp;lt;timeout&amp;gt; OP_CSV OP_DROP B&lt;br/&gt;&amp;gt;OP_CHECKSIGVERIFY&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Now we tweak C to produce P which is the key we&amp;#39;ll publish: P = C &#43;&lt;br/&gt;&amp;gt;H(C||S)G.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; (This is the attack hardened pay-to-contract construction described&lt;br/&gt;&amp;gt;in [2])&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Then we pay to a scriptPubKey of [Taproot supporting version] [EC&lt;br/&gt;&amp;gt;point P].&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Now Alice and Bob-- assuming they are both online and agree about the&lt;br/&gt;&amp;gt;&amp;gt; resolution of their contract-- can jointly form a 2 of 2 signature&lt;br/&gt;&amp;gt;for&lt;br/&gt;&amp;gt;&amp;gt; P, and spend as if it were a payment to a single party (one of them&lt;br/&gt;&amp;gt;&amp;gt; just needs to add H(C||S) to their private key).&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Alternatively, the Taproot consensus rules would allow this script to&lt;br/&gt;&amp;gt;&amp;gt; be satisfied by someone who provides the network with C (the original&lt;br/&gt;&amp;gt;&amp;gt; combined pubkey), S, and does whatever S requires-- e.g. passes the&lt;br/&gt;&amp;gt;&amp;gt; CSV check and provides Bob&amp;#39;s signature. With this information the&lt;br/&gt;&amp;gt;&amp;gt; network can verify that C &#43; H(C||S) == P.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; So in the all-sign case there is zero overhead; and no one can tell&lt;br/&gt;&amp;gt;&amp;gt; that the contract alternative exists. In the alternative redemption&lt;br/&gt;&amp;gt;&amp;gt; branch the only overhead is revealing the original combined pubkey&lt;br/&gt;&amp;gt;&amp;gt; and, of course, the existence of the contract is made public.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; This composes just fine with whatever other merkelized script system&lt;br/&gt;&amp;gt;&amp;gt; we might care to use, as the S can be whatever kind of data we want,&lt;br/&gt;&amp;gt;&amp;gt; including the root of some tree.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; My example shows 2-of-2 but it works the same for any number of&lt;br/&gt;&amp;gt;&amp;gt; participants (and with setup interaction any threshold of&lt;br/&gt;&amp;gt;&amp;gt; participants, so long as you don&amp;#39;t mind an inability to tell which&lt;br/&gt;&amp;gt;&amp;gt; members signed off).&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The verification computational complexity of signature path is&lt;br/&gt;&amp;gt;&amp;gt; obviously the same as any other plain signature (since its&lt;br/&gt;&amp;gt;&amp;gt; indistinguishable). Verification of the branch redemption requires a&lt;br/&gt;&amp;gt;&amp;gt; hash and a multiplication with a constant point which is strictly&lt;br/&gt;&amp;gt;more&lt;br/&gt;&amp;gt;&amp;gt; efficient than a signature verification and could be efficiently&lt;br/&gt;&amp;gt;fused&lt;br/&gt;&amp;gt;&amp;gt; into batch signature validation.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The nearest competitor to this idea that I can come up with would&lt;br/&gt;&amp;gt;&amp;gt; supporting a simple delegation where the output can be spent by the&lt;br/&gt;&amp;gt;&amp;gt; named key, or a spending transaction could provide a script along&lt;br/&gt;&amp;gt;with&lt;br/&gt;&amp;gt;&amp;gt; a signature of that script by the named key, delegating control to&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;&amp;gt; signed script. Before paying into that escrow Alice/Bob would&lt;br/&gt;&amp;gt;&amp;gt; construct this signature. This idea is equally efficient in the&lt;br/&gt;&amp;gt;common&lt;br/&gt;&amp;gt;&amp;gt; case, but larger and slower to verify in the alternative spend case.&lt;br/&gt;&amp;gt;&amp;gt; Setting up the signature requires additional interaction between&lt;br/&gt;&amp;gt;&amp;gt; participants and the resulting signature must be durably stored and&lt;br/&gt;&amp;gt;&amp;gt; couldn&amp;#39;t just be recomputed using single-party information.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I believe this construction will allow the largest possible anonymity&lt;br/&gt;&amp;gt;&amp;gt; set for fixed party smart contracts by making them look like the&lt;br/&gt;&amp;gt;&amp;gt; simplest possible payments. It accomplishes this without any overhead&lt;br/&gt;&amp;gt;&amp;gt; in the common case, invoking any sketchy or impractical techniques,&lt;br/&gt;&amp;gt;&amp;gt; requiring extra rounds of interaction between contract participants,&lt;br/&gt;&amp;gt;&amp;gt; and without requiring the durable storage of other data.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://eprint.iacr.org/2018/068&#34;&gt;https://eprint.iacr.org/2018/068&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;lt;&lt;a href=&#34;https://eprint.iacr.org/2018/068&amp;gt&#34;&gt;https://eprint.iacr.org/2018/068&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://blockstream.com/sidechains.pdf&#34;&gt;https://blockstream.com/sidechains.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;lt;&lt;a href=&#34;https://blockstream.com/sidechains.pdf&amp;gt&#34;&gt;https://blockstream.com/sidechains.pdf&amp;gt&lt;/a&gt;; Appendix A&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&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;-------------- 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/20180123/d1e58bc1/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/d1e58bc1/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:10:07&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs04mjtkw5rchvfshk0jshuhsvwn0n3xkthkqpszqk6sepg98s7dzgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ar55dh</id>
    
      <title type="html">📅 Original date posted:2018-01-23 📝 Original message:Thanks ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs04mjtkw5rchvfshk0jshuhsvwn0n3xkthkqpszqk6sepg98s7dzgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ar55dh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx4n0jjg05psj45eyexnmme85srf4evwp5lmqqx6tt9pcj28s2xygl9mner&#39;&gt;nevent1q…mner&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-23&lt;br/&gt;📝 Original message:Thanks Greg!&lt;br/&gt;&lt;br/&gt;I&amp;#39;d be hesitant to deploy a MAST proposal without this clever application of pay-to-contract-hash now! Looks like the overhead over a more-naive MAST construction is rather trivial, too!&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On January 23, 2018 12:30:06 AM UTC, Gregory Maxwell via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;Interest in merkelized scriptPubKeys (e.g. MAST) is driven by two main&lt;br/&gt;&amp;gt;areas: efficiency and privacy. Efficiency because unexecuted forks of&lt;br/&gt;&amp;gt;a script can avoid ever hitting the chain, and privacy because hiding&lt;br/&gt;&amp;gt;unexecuted code leaves scripts indistinguishable to the extent that&lt;br/&gt;&amp;gt;their only differences are in the unexecuted parts.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;As Mark Friedenbach and others have pointed out before it is almost&lt;br/&gt;&amp;gt;always the case that interesting scripts have a logical top level&lt;br/&gt;&amp;gt;branch which allows satisfaction of the contract with nothing other&lt;br/&gt;&amp;gt;than a signature by all parties.  Other branches would only be used&lt;br/&gt;&amp;gt;where some participant is failing to cooperate. More strongly stated,&lt;br/&gt;&amp;gt;I believe that _any_ contract with a fixed finite participant set&lt;br/&gt;&amp;gt;upfront can be and should be represented as an OR between an N-of-N&lt;br/&gt;&amp;gt;and whatever more complex contract you might want to represent.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;One point that comes up while talking about merkelized scripts is can&lt;br/&gt;&amp;gt;we go about making fancier contract use cases as indistinguishable as&lt;br/&gt;&amp;gt;possible from the most common and boring payments. Otherwise, if the&lt;br/&gt;&amp;gt;anonymity set of fancy usage is only other fancy usage it may not be&lt;br/&gt;&amp;gt;very large in practice. One suggestion has been that ordinary&lt;br/&gt;&amp;gt;checksig-only scripts should include a dummy branch for the rest of&lt;br/&gt;&amp;gt;the tree (e.g. a random value hash), making it look like there are&lt;br/&gt;&amp;gt;potentially alternative rules when there aren&amp;#39;t really.  The negative&lt;br/&gt;&amp;gt;side of this is an additional 32-byte overhead for the overwhelmingly&lt;br/&gt;&amp;gt;common case which doesn&amp;#39;t need it.  I think the privacy gains are&lt;br/&gt;&amp;gt;worth doing such a thing, but different people reason differently&lt;br/&gt;&amp;gt;about these trade-offs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;It turns out, however, that there is no need to make a trade-off.  The&lt;br/&gt;&amp;gt;special case of a top level &amp;#34;threshold-signature OR&lt;br/&gt;&amp;gt;arbitrary-conditions&amp;#34; can be made indistinguishable from a normal&lt;br/&gt;&amp;gt;one-party signature, with no overhead at all, with a special&lt;br/&gt;&amp;gt;delegating CHECKSIG which I call Taproot.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Let&amp;#39;s say we want to create a coin that can be redeemed by either&lt;br/&gt;&amp;gt;Alice &amp;amp;&amp;amp; Bob   or by CSV-timelock &amp;amp;&amp;amp; Bob.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Alice has public A, Bob has pubkey B.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;We compute the 2-of-2 aggregate key C = A &#43; B.  (Simplified; to&lt;br/&gt;&amp;gt;protect against rogue key attacks you may want to use the MuSig key&lt;br/&gt;&amp;gt;aggregation function [1])&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;We form our timelock script S =  &amp;#34;&amp;lt;timeout&amp;gt; OP_CSV OP_DROP B&lt;br/&gt;&amp;gt;OP_CHECKSIGVERIFY&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Now we tweak C to produce P which is the key we&amp;#39;ll publish: P = C &#43;&lt;br/&gt;&amp;gt;H(C||S)G.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;(This is the attack hardened pay-to-contract construction described in&lt;br/&gt;&amp;gt;[2])&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Then we pay to a scriptPubKey of [Taproot supporting version] [EC point&lt;br/&gt;&amp;gt;P].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Now Alice and Bob-- assuming they are both online and agree about the&lt;br/&gt;&amp;gt;resolution of their contract-- can jointly form a 2 of 2 signature for&lt;br/&gt;&amp;gt;P, and spend as if it were a payment to a single party (one of them&lt;br/&gt;&amp;gt;just needs to add H(C||S) to their private key).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Alternatively, the Taproot consensus rules would allow this script to&lt;br/&gt;&amp;gt;be satisfied by someone who provides the network with C (the original&lt;br/&gt;&amp;gt;combined pubkey), S, and does whatever S requires-- e.g. passes the&lt;br/&gt;&amp;gt;CSV check and provides Bob&amp;#39;s signature. With this information the&lt;br/&gt;&amp;gt;network can verify that C &#43; H(C||S) == P.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;So in the all-sign case there is zero overhead; and no one can tell&lt;br/&gt;&amp;gt;that the contract alternative exists. In the alternative redemption&lt;br/&gt;&amp;gt;branch the only overhead is revealing the original combined pubkey&lt;br/&gt;&amp;gt;and, of course, the existence of the contract is made public.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This composes just fine with whatever other merkelized script system&lt;br/&gt;&amp;gt;we might care to use, as the S can be whatever kind of data we want,&lt;br/&gt;&amp;gt;including the root of some tree.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;My example shows 2-of-2 but it works the same for any number of&lt;br/&gt;&amp;gt;participants (and with setup interaction any threshold of&lt;br/&gt;&amp;gt;participants, so long as you don&amp;#39;t mind an inability to tell which&lt;br/&gt;&amp;gt;members signed off).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The verification computational complexity of signature path is&lt;br/&gt;&amp;gt;obviously the same as any other plain signature (since its&lt;br/&gt;&amp;gt;indistinguishable). Verification of the branch redemption requires a&lt;br/&gt;&amp;gt;hash and a multiplication with a constant point which is strictly more&lt;br/&gt;&amp;gt;efficient than a signature verification and could be efficiently fused&lt;br/&gt;&amp;gt;into batch signature validation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The nearest competitor to this idea that I can come up with would&lt;br/&gt;&amp;gt;supporting a simple delegation where the output can be spent by the&lt;br/&gt;&amp;gt;named key, or a spending transaction could provide a script along with&lt;br/&gt;&amp;gt;a signature of that script by the named key, delegating control to the&lt;br/&gt;&amp;gt;signed script. Before paying into that escrow Alice/Bob would&lt;br/&gt;&amp;gt;construct this signature. This idea is equally efficient in the common&lt;br/&gt;&amp;gt;case, but larger and slower to verify in the alternative spend case.&lt;br/&gt;&amp;gt;Setting up the signature requires additional interaction between&lt;br/&gt;&amp;gt;participants and the resulting signature must be durably stored and&lt;br/&gt;&amp;gt;couldn&amp;#39;t just be recomputed using single-party information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I believe this construction will allow the largest possible anonymity&lt;br/&gt;&amp;gt;set for fixed party smart contracts by making them look like the&lt;br/&gt;&amp;gt;simplest possible payments. It accomplishes this without any overhead&lt;br/&gt;&amp;gt;in the common case, invoking any sketchy or impractical techniques,&lt;br/&gt;&amp;gt;requiring extra rounds of interaction between contract participants,&lt;br/&gt;&amp;gt;and without requiring the durable storage of other data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;[1] &lt;a href=&#34;https://eprint.iacr.org/2018/068&#34;&gt;https://eprint.iacr.org/2018/068&lt;/a&gt;&lt;br/&gt;&amp;gt;[2] &lt;a href=&#34;https://blockstream.com/sidechains.pdf&#34;&gt;https://blockstream.com/sidechains.pdf&lt;/a&gt; Appendix A&lt;br/&gt;&amp;gt;_______________________________________________&lt;br/&gt;&amp;gt;bitcoin-dev mailing list&lt;br/&gt;&amp;gt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20180123/2ff10ec6/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/2ff10ec6/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:10:06&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgfah95tdk8rv2vtldrlechu7ngufvcv4n7dfaa6h85sds5765wlgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wq4ped</id>
    
      <title type="html">📅 Original date posted:2017-09-10 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgfah95tdk8rv2vtldrlechu7ngufvcv4n7dfaa6h85sds5765wlgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wq4ped" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ektjm5e2rrwrm5j42zk4ff3v8vg29sx78ymz6tfar4qecmnn30c2nt8s5&#39;&gt;nevent1q…t8s5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-09-10&lt;br/&gt;📝 Original message:I believe there continues to be concern over a number of altcoins which&lt;br/&gt;are running old, unpatched forks of Bitcoin Core, making it rather&lt;br/&gt;difficult to disclose issues without putting people at risk (see, eg,&lt;br/&gt;some of the dos issues which are preventing release of the alert key).&lt;br/&gt;I&amp;#39;d encourage the list to have a discussion about what reasonable&lt;br/&gt;approaches could be taken there.&lt;br/&gt;&lt;br/&gt;On 09/10/17 18:03, Simon Liu via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Given today&amp;#39;s presentation by Chris Jeffrey at the Breaking Bitcoin&lt;br/&gt;&amp;gt; conference, and the subsequent discussion around responsible disclosure&lt;br/&gt;&amp;gt; and industry practice, perhaps now would be a good time to discuss&lt;br/&gt;&amp;gt; &amp;#34;Bitcoin and CVEs&amp;#34; which has gone unanswered for 6 months.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-March/013751.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-March/013751.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; To quote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;Are there are any vulnerabilities in Bitcoin which have been fixed but&lt;br/&gt;&amp;gt; not yet publicly disclosed?  Is the following list of Bitcoin CVEs&lt;br/&gt;&amp;gt; up-to-date?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures&#34;&gt;https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There have been no new CVEs posted for almost three years, except for&lt;br/&gt;&amp;gt; CVE-2015-3641, but there appears to be no information publicly available&lt;br/&gt;&amp;gt; for that issue:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3641&#34;&gt;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3641&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It would be of great benefit to end users if the community of clients&lt;br/&gt;&amp;gt; and altcoins derived from Bitcoin Core could be patched for any known&lt;br/&gt;&amp;gt; vulnerabilities.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Does anyone keep track of security related bugs and patches, where the&lt;br/&gt;&amp;gt; defect severity is similar to those found on the CVE list above?  If&lt;br/&gt;&amp;gt; yes, can that list be shared with other developers?&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best Regards,&lt;br/&gt;&amp;gt; Simon&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:05:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszgvemy4e2kwwtzg0kll5u5tv9pwfftvwnuyxtrldqryh65cm07mszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5taulc9</id>
    
      <title type="html">📅 Original date posted:2017-07-07 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszgvemy4e2kwwtzg0kll5u5tv9pwfftvwnuyxtrldqryh65cm07mszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5taulc9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2ual3707y9e9jf2wagmkej7q2fxeu2uq4x4kak2ev0en3vjjthacnuzr6s&#39;&gt;nevent1q…zr6s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-07-07&lt;br/&gt;📝 Original message:This is horribly under-specified (ie not possible to implement from what&lt;br/&gt;you&amp;#39;ve written, and your implementation doesn&amp;#39;t match at all, last I heard).&lt;br/&gt;&lt;br/&gt;&amp;gt; Specification&lt;br/&gt;&lt;br/&gt;&amp;gt; The plain block size is defined as the serialized block size without&lt;br/&gt;&amp;gt; witness programs.&lt;br/&gt;&amp;gt; Deploy a modified BIP91 to activate Segwit. The only modification is&lt;br/&gt;&amp;gt; that the signal &amp;#34;segsignal&amp;#34; is replaced by &amp;#34;segwit2x&amp;#34;.&lt;br/&gt;&lt;br/&gt;This is not a protocol change. I have no idea why you included it in the&lt;br/&gt;&amp;#34;specification&amp;#34; section.&lt;br/&gt;&lt;br/&gt;&amp;gt; If segwit2x (BIP91 signal) activates at block N, then block N&#43;12960&lt;br/&gt;&amp;gt; activates a new plain block size limit of 2 MB (2,000,000 bytes). In&lt;br/&gt;&amp;gt; this case, at block N&#43;12960 a hard-fork occurs.&lt;br/&gt;&lt;br/&gt;This is not a hard fork, simply adding a new limit is a soft fork. You&lt;br/&gt;appear to be confused - as originally written, AFAIR, Jeff&amp;#39;s btc1 branch&lt;br/&gt;did not increase the block size, your specification here matches that&lt;br/&gt;original change, and does not increase the block size.&lt;br/&gt;&lt;br/&gt;&amp;gt; The block that activates the hard-fork must have a plain block size&lt;br/&gt;&amp;gt; greater than 1 MB.&lt;br/&gt;&lt;br/&gt;There is no hard fork, and this would violate consensus rules. Not sure&lt;br/&gt;what you mean. If you do add a hard fork to this BIP, you really need to&lt;br/&gt;flip the hard fork bit.&lt;br/&gt;&lt;br/&gt;&amp;gt; Any transaction with a non-witness serialized size exceeding 1,000,000&lt;br/&gt;&amp;gt; is invalid.&lt;br/&gt;&lt;br/&gt;This is far from sufficient to protect from DoS attacks, you really&lt;br/&gt;should take a look through the mailing list archives and read some of&lt;br/&gt;the old discussions on the issues here.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 07/07/17 18:25, Sergio Demian Lerner via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Here is a BIP that matches the reference code that the Segwit2x group&lt;br/&gt;&amp;gt; has built and published a week ago. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This BIP and code satisfies the requests of a large part of the Bitcoin&lt;br/&gt;&amp;gt; community for a moderate increase in the Bitcoin non-witness block space&lt;br/&gt;&amp;gt; coupled with the activation of Segwit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; You can find the BIP draft in the following link:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/SergioDemianLerner/BIPs/blob/master/BIP-draft-sergiolerner-segwit2x.mediawiki&#34;&gt;https://github.com/SergioDemianLerner/BIPs/blob/master/BIP-draft-sergiolerner-segwit2x.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reference source was kindly provided by the Segwit2x group.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best regards,&lt;br/&gt;&amp;gt;  Sergio.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:04:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2qmwdepl0gauzu0usp062lcs6x40fp4k55qkxhlj7n3nwlz2ajjgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5veqvh9</id>
    
      <title type="html">📅 Original date posted:2017-03-28 📝 Original message:Not ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2qmwdepl0gauzu0usp062lcs6x40fp4k55qkxhlj7n3nwlz2ajjgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5veqvh9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszecn9xhmf7j5m707q22qdzfq3t79x5ql27nzjxsspa4j3qt7e40cgp5tkv&#39;&gt;nevent1q…5tkv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-28&lt;br/&gt;📝 Original message:Not sure what &amp;#34;last week&amp;#39;s meeting&amp;#34; is in reference to?&lt;br/&gt;&lt;br/&gt;Agreed that the hard fork should be well-prepared, but I think its&lt;br/&gt;dangerous to think that a hard fork as agreed upon would be a simple&lt;br/&gt;relaxation of the block size. For example, Johnson Lau&amp;#39;s previous&lt;br/&gt;proposal, Spoonnet, which I think is probably one of the better ones,&lt;br/&gt;would be incompatible with these rules.&lt;br/&gt;&lt;br/&gt;I, of course, worry about what happens if we cannot come to consensus on&lt;br/&gt;a number to soft fork down to, potentially significantly risking miner&lt;br/&gt;profits (and, thus, the security of Bitcoin) if a group is able to keep&lt;br/&gt;things &amp;#34;at the status quo&amp;#34;. That said, for that to be alleviated we&lt;br/&gt;could simply do something based on historical transaction growth (which&lt;br/&gt;is somewhat linear, with a few inflection points), but that number ends&lt;br/&gt;up being super low (eg somewhere around 2MB at the next halving, which&lt;br/&gt;SegWit itself already provides :/.&lt;br/&gt;&lt;br/&gt;We could, of course, focus on designing a hard fork&amp;#39;s activation and&lt;br/&gt;technical details, with a very large block size increase in it (ie&lt;br/&gt;closer to 4/6MB at the next halving or so, something we at least could&lt;br/&gt;be confident we could develop software for), with intention to soft fork&lt;br/&gt;it back down if miner profits are suffering.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 03/28/17 16:59, Wang Chun via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I&amp;#39;ve proposed this hard fork approach last year in Hong Kong Consensus&lt;br/&gt;&amp;gt; but immediately rejected by coredevs at that meeting, after more than&lt;br/&gt;&amp;gt; one year it seems that lots of people haven&amp;#39;t heard of it. So I would&lt;br/&gt;&amp;gt; post this here again for comment.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The basic idea is, as many of us agree, hard fork is risky and should&lt;br/&gt;&amp;gt; be well prepared. We need a long time to deploy it.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Despite spam tx on the network, the block capacity is approaching its&lt;br/&gt;&amp;gt; limit, and we must think ahead. Shall we code a patch right now, to&lt;br/&gt;&amp;gt; remove the block size limit of 1MB, but not activate it until far in&lt;br/&gt;&amp;gt; the future. I would propose to remove the 1MB limit at the next block&lt;br/&gt;&amp;gt; halving in spring 2020, only limit the block size to 32MiB which is&lt;br/&gt;&amp;gt; the maximum size the current p2p protocol allows. This patch must be&lt;br/&gt;&amp;gt; in the immediate next release of Bitcoin Core.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; With this patch in core&amp;#39;s next release, Bitcoin works just as before,&lt;br/&gt;&amp;gt; no fork will ever occur, until spring 2020. But everyone knows there&lt;br/&gt;&amp;gt; will be a fork scheduled. Third party services, libraries, wallets and&lt;br/&gt;&amp;gt; exchanges will have enough time to prepare for it over the next three&lt;br/&gt;&amp;gt; years.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We don&amp;#39;t yet have an agreement on how to increase the block size&lt;br/&gt;&amp;gt; limit. There have been many proposals over the past years, like&lt;br/&gt;&amp;gt; BIP100, 101, 102, 103, 104, 105, 106, 107, 109, 148, 248, BU, and so&lt;br/&gt;&amp;gt; on. These hard fork proposals, with this patch already in Core&amp;#39;s&lt;br/&gt;&amp;gt; release, they all become soft fork. We&amp;#39;ll have enough time to discuss&lt;br/&gt;&amp;gt; all these proposals and decide which one to go. Take an example, if we&lt;br/&gt;&amp;gt; choose to fork to only 2MB, since 32MiB already scheduled, reduce it&lt;br/&gt;&amp;gt; from 32MiB to 2MB will be a soft fork.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyway, we must code something right now, before it becomes too late.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:58:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfrlfjvauqqvc49575dnsyl5zq9xuh0ezyj4p5vr6qdru0cxspc2qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5gj8a46</id>
    
      <title type="html">📅 Original date posted:2017-03-23 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfrlfjvauqqvc49575dnsyl5zq9xuh0ezyj4p5vr6qdru0cxspc2qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5gj8a46" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyhelwjwwyspuzun2jdujkfzcdp5uswudnp0mcg3yzmrtdujrputsfwru7f&#39;&gt;nevent1q…ru7f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-23&lt;br/&gt;📝 Original message:I haven&amp;#39;t investigated, but you may be seeing segwit-invalid blocks...0.13.0&#43; nodes will enforce segwit as it activated some time ago on testnet, 0.12.X nodes will not.&lt;br/&gt;&lt;br/&gt;On March 23, 2017 3:37:34 PM PDT, Juan Garavaglia via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;We notice some reorgs in Bitcoin testnet, while reorgs in testnet are&lt;br/&gt;&amp;gt;common and may be part of different tests and experiments, it seems the&lt;br/&gt;&amp;gt;forks are not created by a single user and multiple blocks were mined&lt;br/&gt;&amp;gt;by different users in each chain.  My first impression was that the&lt;br/&gt;&amp;gt;problem was related to network issues but some Bitcoin explorers were&lt;br/&gt;&amp;gt;following one chain while others follow the other one.  Nonetheless,&lt;br/&gt;&amp;gt;well established explorers like blocktrail.com or blockr.io were&lt;br/&gt;&amp;gt;following different chains at different heights which led to me to&lt;br/&gt;&amp;gt;believe that it was not a network issue. After some time, a reorg&lt;br/&gt;&amp;gt;occurs and it all comes to normal state as a single chain.&lt;br/&gt;&amp;gt;We started investigating more and we identified that the fork occurs&lt;br/&gt;&amp;gt;with nodes 0.12; in some situations, nodes 0.12 has longer/different&lt;br/&gt;&amp;gt;chains. The blocks in both chains are valid so something must be&lt;br/&gt;&amp;gt;occurring in the communication between nodes but not related with the&lt;br/&gt;&amp;gt;network itself.&lt;br/&gt;&amp;gt;Long story short, when nodes 0.13&#43; receive blocks from 0.13&#43; nodes all&lt;br/&gt;&amp;gt;is ok, and those blocks propagate to older nodes with no issues. But&lt;br/&gt;&amp;gt;when a block tries to be propagated from bitcoind 0.12.&#43; to newer ones&lt;br/&gt;&amp;gt;those blocks are NOT being propagated to the peers with newer versions&lt;br/&gt;&amp;gt;while these newer blocks are being propagated to peers with older&lt;br/&gt;&amp;gt;versions with no issues.&lt;br/&gt;&amp;gt;My conclusion is that we have a backward compatibility issue between&lt;br/&gt;&amp;gt;0.13.X&#43; and older versions.&lt;br/&gt;&amp;gt;The issue is simple to replicate, first, get latest version of&lt;br/&gt;&amp;gt;bitcoind, complete the IBD after is at current height, then force it to&lt;br/&gt;&amp;gt;use exclusively one or more peers of versions 0.12.X and older, and you&lt;br/&gt;&amp;gt;will notice that the latest version node will never receive a new&lt;br/&gt;&amp;gt;block.&lt;br/&gt;&amp;gt;Probably some alternative bitcoin implementations act as bridges&lt;br/&gt;&amp;gt;between these two versions and facilitate the chain reorgs.&lt;br/&gt;&amp;gt;I have not yet found any way where/how it can be used in a malicious&lt;br/&gt;&amp;gt;way or be exploited by a miner but in theory Bitcoin 0.13.X&#43; should&lt;br/&gt;&amp;gt;remain compatible with older ones, but a 0.13&#43; node may become isolated&lt;br/&gt;&amp;gt;by 0.12 peers, and there is not notice for the node owner.&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/20170323/f7be920b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170323/f7be920b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:57:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs05c4h53rdpc0ya8nlzmjr73le7yl86et4msdmsdugmfq8gyj0a8qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5kzty84</id>
    
      <title type="html">📅 Original date posted:2016-05-11 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs05c4h53rdpc0ya8nlzmjr73le7yl86et4msdmsdugmfq8gyj0a8qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5kzty84" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2c8uufzswwwjj2ya3rcfet3ntvelurrs8e6egmpqr9rreac2u5as2yax3v&#39;&gt;nevent1q…ax3v&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-11&lt;br/&gt;📝 Original message:Indeed, I think the &amp;#34;ASICs are bad, because 1-CPU-1-vote&amp;#34; arguments&lt;br/&gt;mostly died out long ago, and, indeed, the goal that many making those&lt;br/&gt;arguments had of building &amp;#34;unoptimizeable&amp;#34; ASICs failed with them.&lt;br/&gt;&lt;br/&gt;I think everyone understands that there will always be some ability to&lt;br/&gt;iterate on ASIC designs, however, a patented optimization breaks that&lt;br/&gt;assumption. Instead of being freely able to optimize their ASIC design,&lt;br/&gt;patented optimizations require that people who discover such&lt;br/&gt;optimizations themselves do not use them, giving one&lt;br/&gt;manufacturer/licenser a huge influence in who is successful in a market&lt;br/&gt;that we&amp;#39;re all relying on remaining rather flat. Indeed, with AsicBoost,&lt;br/&gt;we saw Spondoolies independently discover the same optimization, but&lt;br/&gt;with the current legal system they would not have been able to sell such&lt;br/&gt;systems without licensing AsicBoost.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 05/11/16 13:08, Marek Palatinus via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Ehm, I though those discussions about &amp;#34;ASICs are bad, because X&amp;#34; ended&lt;br/&gt;&amp;gt; years ago by starting &amp;#34;ASIC unfriendly&amp;#34; altcoins. ASIC industry is&lt;br/&gt;&amp;gt; twisted even without AsicBoost. I don&amp;#39;t see any particular reason why to&lt;br/&gt;&amp;gt; change rules just because of 10% edge.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is opening Pandora box and it is potentially extremely dangerous&lt;br/&gt;&amp;gt; for the health of the network. You cannot know in advance what you&amp;#39;ll&lt;br/&gt;&amp;gt; break by changing the rules.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Disclaimer: I don&amp;#39;t have any stake in any ASIC company/facility.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; slush&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, May 11, 2016 at 2:20 PM, Sergio Demian Lerner via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On Tue, May 10, 2016 at 6:43 PM, Sergio Demian Lerner&lt;br/&gt;&amp;gt;     &amp;lt;sergio.d.lerner at gmail.com &amp;lt;mailto:sergio.d.lerner at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         You can find it here:&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://bitslog.wordpress.com/2014/03/18/the-re-design-of-the-bitcoin-block-header/&#34;&gt;https://bitslog.wordpress.com/2014/03/18/the-re-design-of-the-bitcoin-block-header/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         Basically, the idea is to put in the first 64 bytes a 4 byte&lt;br/&gt;&amp;gt;         hash of the second 64-byte chunk. That design also allows&lt;br/&gt;&amp;gt;         increased nonce space in the first 64 bytes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     My mistake here. I didn&amp;#39;t recalled correctly my own idea. The idea&lt;br/&gt;&amp;gt;     is to include in the second 64-byte chunk a 4-byte hash of the first&lt;br/&gt;&amp;gt;     chunk, not the opposite.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     _______________________________________________&lt;br/&gt;&amp;gt;     bitcoin-dev mailing list&lt;br/&gt;&amp;gt;     bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:50:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszs8x0pt79pe4c0ahx7astyukvt8xwfsm0zldyshelx3rzjpyek6czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mh94wa</id>
    
      <title type="html">📅 Original date posted:2016-05-10 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszs8x0pt79pe4c0ahx7astyukvt8xwfsm0zldyshelx3rzjpyek6czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mh94wa" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv75c22wnzqwem3jh0ekdhlep8500mg8spyzka74l6jwqq3xvcqgglvz40r&#39;&gt;nevent1q…z40r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-10&lt;br/&gt;📝 Original message:Replies inline.&lt;br/&gt;&lt;br/&gt;On 05/10/16 21:43, Sergio Demian Lerner via bitcoin-dev wrote:&lt;br/&gt;-snip-&lt;br/&gt;&lt;br/&gt;&amp;gt; But some ASIC companies already have cores that are better (on power,&lt;br/&gt;&amp;gt; cost, rate, temperature, etc.) than competing companies ASICs. Why do&lt;br/&gt;&amp;gt; you think a 10% improvement from AsicBoost is different from many of&lt;br/&gt;&amp;gt; other improvements they already have (secretly) added? Maybe we (?)&lt;br/&gt;&amp;gt; should only allow ASICs that have a 100% open source designs?&lt;br/&gt;&lt;br/&gt;One is patented and requires paying a license fee to a group, or more&lt;br/&gt;likely, ends up with it being impossible to import hardware from other&lt;br/&gt;jurisdictions into the US/western world. The other requires more&lt;br/&gt;investment in R&amp;amp;D, and over the long run, there is no guaranteed&lt;br/&gt;advantage to such groups.&lt;br/&gt;&lt;br/&gt;&amp;gt; If we change the protocol then the message to the ecosystem is that ASIC&lt;br/&gt;&amp;gt; optimizations should be kept secret.&lt;br/&gt;&lt;br/&gt;To some extent, this is the case, but there is a strong difference&lt;br/&gt;between a guaranteed advantage enforced by the legal system and one that&lt;br/&gt;is true due to intellectual superiority. In the long run, I am confident&lt;br/&gt;the second will not remain the case. For example, AsicBoost was&lt;br/&gt;independently discovered by at least two companies/individuals within a&lt;br/&gt;year or two.&lt;br/&gt;&lt;br/&gt;&amp;gt; It is fair to change the protocol&lt;br/&gt;&amp;gt; because we don&amp;#39;t like that certain ASIC manufacturer has better chips,&lt;br/&gt;&amp;gt; if the chips are sold in the market and anyone can buy them? And what&lt;br/&gt;&amp;gt; about using approximate adders (30% improvement), or dual rail&lt;br/&gt;&amp;gt; asynchronous adders (also more than 10% improvement) ? How do we repair&lt;br/&gt;&amp;gt; those?&lt;br/&gt;&lt;br/&gt;As far as I&amp;#39;m aware neither of these are patented. Is this not the case?&lt;br/&gt;&lt;br/&gt;&amp;gt; Disclaimer: I have stake in AsicBoost, but I&amp;#39;m not sure about this.&lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, May 10, 2016 at 5:27 PM, Tier Nolan via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     The various chunks in the double SHA256 are&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Chunk 1: 64 bytes&lt;br/&gt;&amp;gt;     version&lt;br/&gt;&amp;gt;     previous_block_digest&lt;br/&gt;&amp;gt;     merkle_root[31:4]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Chunk 2: 64 bytes&lt;br/&gt;&amp;gt;     merkle_root[3:0]&lt;br/&gt;&amp;gt;     nonce&lt;br/&gt;&amp;gt;     timestamp&lt;br/&gt;&amp;gt;     target&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Chunk 3: 64 bytes&lt;br/&gt;&amp;gt;     digest from first sha pass&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Their improvement requires that all data in Chunk 2 is identical&lt;br/&gt;&amp;gt;     except for the nonce.  With 4 bytes, the birthday paradox means&lt;br/&gt;&amp;gt;     collisions can be found reasonable easily.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If hard forks are allowed, then moving more of the merkle root into&lt;br/&gt;&amp;gt;     the 2nd chunk would make things harder.  The timestamp and target&lt;br/&gt;&amp;gt;     could be moved into chunk 1.  This increases the merkle root to 12&lt;br/&gt;&amp;gt;     bytes in the 2nd chunk.  Finding collisions would be made much more&lt;br/&gt;&amp;gt;     difficult.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If ASIC limitations mean that the nonce must stay where it is, this&lt;br/&gt;&amp;gt;     would mean that the merkle root would be split into two pieces.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On Tue, May 10, 2016 at 7:57 PM, Peter Todd via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         As part of the hard-fork proposed in the HK agreement(1) we&amp;#39;d&lt;br/&gt;&amp;gt;         like to make the&lt;br/&gt;&amp;gt;         patented AsicBoost optimisation useless, and hopefully make&lt;br/&gt;&amp;gt;         further similar&lt;br/&gt;&amp;gt;         optimizations useless as well.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         What&amp;#39;s the best way to do this? Ideally this would be SPV&lt;br/&gt;&amp;gt;         compatible, but if it&lt;br/&gt;&amp;gt;         requires changes from SPV clients that&amp;#39;s ok too. Also the fix&lt;br/&gt;&amp;gt;         this should be&lt;br/&gt;&amp;gt;         compatible with existing mining hardware.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         1)&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff&#34;&gt;https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         2)&lt;br/&gt;&amp;gt;         &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-April/012596.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-April/012596.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         --&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt;         &amp;lt;&lt;a href=&#34;http://petertodd.org&amp;gt&#34;&gt;http://petertodd.org&amp;gt&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;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:50:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsztzm2egmwnh9kt539sk5wcvwrathtqpnwwzdv6dlkp3u979m24kszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mj8yvu</id>
    
      <title type="html">📅 Original date posted:2016-05-10 📝 Original message:Yea, I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsztzm2egmwnh9kt539sk5wcvwrathtqpnwwzdv6dlkp3u979m24kszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mj8yvu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9s3saj9ars4fsegll02zw0xv5zm5a2nka88dnwxr5g4cx7kdlewcp0r6d5&#39;&gt;nevent1q…r6d5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-10&lt;br/&gt;📝 Original message:Yea, I think in any hardfork that we should be talking about, a part of&lt;br/&gt;it should include 1) fix the version field so its a static constant, 2)&lt;br/&gt;the merkle root becomes hash of the real block header 3) swap first 2&lt;br/&gt;bytes of the merkle root with the timestamp&amp;#39;s two high-order bits, 4)&lt;br/&gt;swap the next 4 bytes of the merkle root with the difficulty field.&lt;br/&gt;&lt;br/&gt;I believe this should be compatible with all existing ASICs, with the&lt;br/&gt;exception, possibly, of some 21 Inc hardware. I believe this fixes&lt;br/&gt;AsicBoost (without thinking about it tooo much, so please critique).&lt;br/&gt;&lt;br/&gt;While this is somewhat nasty, the risks of AsicBoost and the precedent&lt;br/&gt;that should be set necessitates a response, and it should be included in&lt;br/&gt;any hardfork.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 05/10/16 20:27, Tier Nolan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; The various chunks in the double SHA256 are&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Chunk 1: 64 bytes&lt;br/&gt;&amp;gt; version&lt;br/&gt;&amp;gt; previous_block_digest&lt;br/&gt;&amp;gt; merkle_root[31:4]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Chunk 2: 64 bytes&lt;br/&gt;&amp;gt; merkle_root[3:0]&lt;br/&gt;&amp;gt; nonce&lt;br/&gt;&amp;gt; timestamp&lt;br/&gt;&amp;gt; target&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Chunk 3: 64 bytes&lt;br/&gt;&amp;gt; digest from first sha pass&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Their improvement requires that all data in Chunk 2 is identical except&lt;br/&gt;&amp;gt; for the nonce.  With 4 bytes, the birthday paradox means collisions can&lt;br/&gt;&amp;gt; be found reasonable easily.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If hard forks are allowed, then moving more of the merkle root into the&lt;br/&gt;&amp;gt; 2nd chunk would make things harder.  The timestamp and target could be&lt;br/&gt;&amp;gt; moved into chunk 1.  This increases the merkle root to 12 bytes in the&lt;br/&gt;&amp;gt; 2nd chunk.  Finding collisions would be made much more difficult.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If ASIC limitations mean that the nonce must stay where it is, this&lt;br/&gt;&amp;gt; would mean that the merkle root would be split into two pieces.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, May 10, 2016 at 7:57 PM, Peter Todd via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     As part of the hard-fork proposed in the HK agreement(1) we&amp;#39;d like&lt;br/&gt;&amp;gt;     to make the&lt;br/&gt;&amp;gt;     patented AsicBoost optimisation useless, and hopefully make further&lt;br/&gt;&amp;gt;     similar&lt;br/&gt;&amp;gt;     optimizations useless as well.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     What&amp;#39;s the best way to do this? Ideally this would be SPV&lt;br/&gt;&amp;gt;     compatible, but if it&lt;br/&gt;&amp;gt;     requires changes from SPV clients that&amp;#39;s ok too. Also the fix this&lt;br/&gt;&amp;gt;     should be&lt;br/&gt;&amp;gt;     compatible with existing mining hardware.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     1)&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff&#34;&gt;https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     2)&lt;br/&gt;&amp;gt;     &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-April/012596.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-April/012596.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     --&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org &amp;lt;&lt;a href=&#34;http://petertodd.org&amp;gt&#34;&gt;http://petertodd.org&amp;gt&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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:50:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2rg83myvkqy94hhp04r2ntatyxqppd9zzmxr4dksnyxccuca74ngzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5063m3e</id>
    
      <title type="html">📅 Original date posted:2016-05-10 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2rg83myvkqy94hhp04r2ntatyxqppd9zzmxr4dksnyxccuca74ngzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5063m3e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsym450sc7tw542cgxwqfxh5up7at2amwd99mtmps7zq2cj044czdgj4ldxk&#39;&gt;nevent1q…ldxk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-10&lt;br/&gt;📝 Original message:Replies inline.&lt;br/&gt;&lt;br/&gt;On May 10, 2016 5:23:55 PM EDT, Rusty Russell via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;Gregory Maxwell &amp;lt;greg at xiph.org&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; On Tue, May 10, 2016 at 5:28 AM, Rusty Russell via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I used variable-length bit encodings, and used the shortest encoding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; which is unique to you (including mempool).  It&amp;#39;s a little more&lt;br/&gt;&amp;gt;work,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; but for an average node transmitting a block with 1300 txs and&lt;br/&gt;&amp;gt;another&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ~3000 in the mempool, you expect about 12 bits per transaction. &lt;br/&gt;&amp;gt;IOW,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; about 1/5 of your current size.  Critically, we might be able to fit&lt;br/&gt;&amp;gt;in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; two or three TCP packets.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hm. 12 bits sounds very small even giving those figures. Why failure&lt;br/&gt;&amp;gt;&amp;gt; rate were you targeting?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;That&amp;#39;s a good question; I was assuming a best-case in which we have&lt;br/&gt;&amp;gt;mempool set reconciliation (handwave) thus know they are close.  But&lt;br/&gt;&amp;gt;there&amp;#39;s also an alterior motive: any later more sophisticated approach&lt;br/&gt;&amp;gt;will want variable-length IDs, and I&amp;#39;d like Matt to do the work :)&lt;br/&gt;&lt;br/&gt;Yea, there&amp;#39;s already an ongoing discussion of that, and the UDP stuff will definitely want something different than the current proposals.&lt;br/&gt;&lt;br/&gt;&amp;gt;In particular, you can significantly narrow the possibilities for a&lt;br/&gt;&amp;gt;block by sending the min-fee-per-kb and a list of &amp;#34;txs in my mempool&lt;br/&gt;&amp;gt;which didn&amp;#39;t get in&amp;#34; and &amp;#34;txs which did despite not making the&lt;br/&gt;&amp;gt;fee-per-kb&amp;#34;.  Those turn out to be tiny, and often make set&lt;br/&gt;&amp;gt;reconciliation trivial.  That&amp;#39;s best done with variable-length IDs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (*Not interesting because it mostly reduces exposure to loss and the&lt;br/&gt;&amp;gt;&amp;gt; gods of TCP, but since those are the long poles in the latency tent,&lt;br/&gt;&amp;gt;&amp;gt; it&amp;#39;s best to escape them entirely, see Matt&amp;#39;s udp_wip branch.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I&amp;#39;m not convinced on UDP; it always looks impressive, but then ends up&lt;br/&gt;&amp;gt;reimplementing TCP in practice.  We should be well within a TCP window&lt;br/&gt;&amp;gt;for these, so it&amp;#39;s hard to see where we&amp;#39;d win.&lt;br/&gt;&lt;br/&gt;Not at all. The goal with the UDP stuff I&amp;#39;ve been working on is not to provide reliable transport. Like the relay network, it is assumed some percent of blocks will fail to transit properly, and you will use some other transport to figure out how to get the block. Indeed, a big part of my desire for diversity in network protocols is to enable them to make tradeoffs in reliability/privacy/etc.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I would also avoid the nonce to save recalculating for each node,&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; instead define an id as:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Doing this would greatly increase the cost of a collision though, as&lt;br/&gt;&amp;gt;&amp;gt; it would happen in many places in the network at once over the on the&lt;br/&gt;&amp;gt;&amp;gt; network at once, rather than just happening on a single link, thus&lt;br/&gt;&amp;gt;&amp;gt; hardly impacting overall propagation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;#34;Greatly increase&amp;#34;?  I don&amp;#39;t see that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Let&amp;#39;s assume an attacker grinds out 10,000 txs with 128 bits of the&lt;br/&gt;&amp;gt;same&lt;br/&gt;&amp;gt;TXID, and gets them all in a block.  They then win the lottery and get&lt;br/&gt;&amp;gt;a&lt;br/&gt;&amp;gt;collision.  Now we have to transmit ~48 bytes more than expected.&lt;br/&gt;&lt;br/&gt;I assume what Greg was referring to the idea that if there is a conflict, a given block will require an extra round trip when being broadcast between roughly each peer, compounding the effect across each hop.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Using the same nonce means you also would not get a recovery gain&lt;br/&gt;&amp;gt;from&lt;br/&gt;&amp;gt;&amp;gt; jointly decoding using compact blocks sent from multiple peers (which&lt;br/&gt;&amp;gt;&amp;gt; you&amp;#39;ll have anyways in high bandwidth mode).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Not quite true, since if their mempools differ they&amp;#39;ll use different&lt;br/&gt;&amp;gt;encoding lengths, but yes, you&amp;#39;ll get less of this.&lt;br/&gt;&lt;br/&gt;... Assuming different encoding lengths aren&amp;#39;t just truncated, but ok :).&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; With a nonce a sender does have the option of reusing what they got--&lt;br/&gt;&amp;gt;&amp;gt; but the actual encoding cost is negligible, for a 2500 transaction&lt;br/&gt;&amp;gt;&amp;gt; block its 27 microseconds (once per block, shared across all peers)&lt;br/&gt;&amp;gt;&amp;gt; using Pieter&amp;#39;s suggestion of siphash 1-3 instead of the cheaper&lt;br/&gt;&amp;gt;&amp;gt; construct in the current draft.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Of course, if you&amp;#39;re going to check your whole mempool to reroll the&lt;br/&gt;&amp;gt;&amp;gt; nonce, thats another matter-- but that seems wasteful compared to&lt;br/&gt;&amp;gt;just&lt;br/&gt;&amp;gt;&amp;gt; using a table driven size with a known negligible failure rate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;I&amp;#39;m not worried about the sender: The recipient needs to encode all the&lt;br/&gt;&amp;gt;mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; As Peter R points out, we could later enhance receiver to brute&lt;br/&gt;&amp;gt;force&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; collisions (you could speed that by sending a XOR of all the txids,&lt;br/&gt;&amp;gt;but&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; really if there are more than a few collisions, give up).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The band between &amp;#34;no collisions&amp;#34; and &amp;#34;infeasible many&amp;#34; is fairly&lt;br/&gt;&amp;gt;&amp;gt; narrow.  You can add a small amount more space to the ids and&lt;br/&gt;&amp;gt;&amp;gt; immediately be in the no collision zone.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Indeed, I would be adding extra bits in the sender and not implementing&lt;br/&gt;&amp;gt;brute force in the receiver.  But I welcome someone else to do so.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Cheers,&lt;br/&gt;&amp;gt;Rusty.&lt;br/&gt;&amp;gt;_______________________________________________&lt;br/&gt;&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-07T19:50:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgfwvhdrg4r45ewj9shamre3dgpj5tdc5ulneghvlz7k24df8zutszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm539yqhj</id>
    
      <title type="html">📅 Original date posted:2016-05-17 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgfwvhdrg4r45ewj9shamre3dgpj5tdc5ulneghvlz7k24df8zutszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm539yqhj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2rg83myvkqy94hhp04r2ntatyxqppd9zzmxr4dksnyxccuca74ngp6m7cp&#39;&gt;nevent1q…m7cp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-17&lt;br/&gt;📝 Original message:Implemented a few of your suggestions.&lt;br/&gt;&lt;br/&gt;Also opened a formal pull request for the BIP at&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/pull/389&#34;&gt;https://github.com/bitcoin/bips/pull/389&lt;/a&gt; and the code at&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/8068&#34;&gt;https://github.com/bitcoin/bitcoin/pull/8068&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;On 05/09/16 17:06, Pieter Wuille via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On 05/03/2016 12:13 AM, lf-lists at mattcorallo.com (Matt Corallo) wrote:&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The following is a BIP-formatted design spec for compact block relay&lt;br/&gt;&amp;gt;&amp;gt; designed to limit on wire bytes during block relay. You can find the&lt;br/&gt;&amp;gt;&amp;gt; latest version of this document at&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/TheBlueMatt/bips/blob/master/bip-TODO.mediawiki&#34;&gt;https://github.com/TheBlueMatt/bips/blob/master/bip-TODO.mediawiki&lt;/a&gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi Matt,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; thank you for working on this!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; ===New data structures===&lt;br/&gt;&amp;gt;&amp;gt; Several new data structures are added to the P2P network to relay&lt;br/&gt;&amp;gt;&amp;gt; compact blocks: PrefilledTransaction, HeaderAndShortIDs,&lt;br/&gt;&amp;gt;&amp;gt; BlockTransactionsRequest, and BlockTransactions. Additionally, we&lt;br/&gt;&amp;gt;&amp;gt; introduce a new variable-length integer encoding for use in these data&lt;br/&gt;&amp;gt;&amp;gt; structures.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; For the purposes of this section, CompactSize refers to the&lt;br/&gt;&amp;gt;&amp;gt; variable-length integer encoding used across the existing P2P protocol&lt;br/&gt;&amp;gt;&amp;gt; to encode array lengths, among other things, in 1, 3, 5 or 9 bytes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is a not, but I think it&amp;#39;s a bit strange to have two separate&lt;br/&gt;&amp;gt; variable length integers in the same specification. I understand is one&lt;br/&gt;&amp;gt; is already the default for variable-length integers currently, and there&lt;br/&gt;&amp;gt; are reasons to use the other one for efficiency reasons in some places,&lt;br/&gt;&amp;gt; but perhaps we should aim to get everything using the latter?&lt;br/&gt;&lt;br/&gt;Fixed, the whole thing now uses New Varints.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; ====New VarInt====&lt;br/&gt;&amp;gt;&amp;gt; Variable-length integers: bytes are a MSB base-128 encoding of the number.&lt;br/&gt;&amp;gt;&amp;gt; The high bit in each byte signifies whether another digit follows. To make&lt;br/&gt;&amp;gt;&amp;gt; sure the encoding is one-to-one, one is subtracted from all but the last&lt;br/&gt;&amp;gt;&amp;gt; digit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Maybe it&amp;#39;s worth mentioning that it is based on ASN.1 BER&amp;#39;s compressed&lt;br/&gt;&amp;gt; integer format (see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf&#34;&gt;https://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; section 8.1.3.5), though with a small modification to make every integer&lt;br/&gt;&amp;gt; have a single unique encoding.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; ====HeaderAndShortIDs====&lt;br/&gt;&amp;gt;&amp;gt; A HeaderAndShortIDs structure is used to relay a block header, the short&lt;br/&gt;&amp;gt;&amp;gt; transactions IDs used for matching already-available transactions, and a&lt;br/&gt;&amp;gt;&amp;gt; select few transactions which we expect a peer may be missing.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; |shortids||List of uint64_ts||8*shortids_length bytes||Little&lt;br/&gt;&amp;gt;&amp;gt; Endian||The short transaction IDs calculated from the transactions which&lt;br/&gt;&amp;gt;&amp;gt; were not provided explicitly in prefilledtxn&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I tried to derive what length of short ids is actually necessary (some&lt;br/&gt;&amp;gt; write-up is on&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/sipa/b2eb2e486156b5509ac711edd16153ed&#34;&gt;https://gist.github.com/sipa/b2eb2e486156b5509ac711edd16153ed&lt;/a&gt; but it&amp;#39;s&lt;br/&gt;&amp;gt; incomplete).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For any reasonable numbers I can come up with (in a very wide range),&lt;br/&gt;&amp;gt; the number of bits needed is very well approximated by:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   log2(#receiver_mempool_txn * #block_txn_not_in_receiver_mempool /&lt;br/&gt;&amp;gt; acceptable_per_block_failure_rate)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For example, with 20000 mempool transactions, 2500 transactions in a&lt;br/&gt;&amp;gt; block, 95% hitrate, and a chance of 1 in 10000 blocks to fail to&lt;br/&gt;&amp;gt; reconstruct, needed_bits = log2(20000 * 2500 * (1 - 0.95) / 0.0001) =&lt;br/&gt;&amp;gt; 34.54, or 5 byte txids would suffice.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Note that 1 in 10000 failures may sound like a lot, but this is for each&lt;br/&gt;&amp;gt; individual connection, and since every transmission uses separately&lt;br/&gt;&amp;gt; salted identifiers, occasional failures should not affect global&lt;br/&gt;&amp;gt; propagation. Given that transmission failures due to timeouts, network&lt;br/&gt;&amp;gt; connectivity, ... already occur much more frequently than once every few&lt;br/&gt;&amp;gt; gigabytes (what 10000 blocks corresponds to), that&amp;#39;s probably already&lt;br/&gt;&amp;gt; more than enough.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In short: I believe 5 or 6 byte txids should be enough, but perhaps it&lt;br/&gt;&amp;gt; makes sense to allow the sender to choose (so he can weigh trying&lt;br/&gt;&amp;gt; multiple nonces against increasing the short txid length).&lt;br/&gt;&lt;br/&gt;I switched to 6-byte short txids.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; ====Short transaction IDs====&lt;br/&gt;&amp;gt;&amp;gt; Short transaction IDs are used to represent a transaction without&lt;br/&gt;&amp;gt;&amp;gt; sending a full 256-bit hash. They are calculated by:&lt;br/&gt;&amp;gt;&amp;gt; # single-SHA256 hashing the block header with the nonce appended (in&lt;br/&gt;&amp;gt;&amp;gt; little-endian)&lt;br/&gt;&amp;gt;&amp;gt; # XORing each 8-byte chunk of the double-SHA256 transaction hash with&lt;br/&gt;&amp;gt;&amp;gt; each corresponding 8-byte chunk of the hash from the previous step&lt;br/&gt;&amp;gt;&amp;gt; # Adding each of the XORed 8-byte chunks together (in little-endian)&lt;br/&gt;&amp;gt;&amp;gt; iteratively to find the short transaction ID&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; An alternative would be using SipHash-1-3 (a form of SipHash with&lt;br/&gt;&amp;gt; reduced iteration counts; the default is SipHash-2-4). SipHash was&lt;br/&gt;&amp;gt; designed as a Message Authentication Code, where the security&lt;br/&gt;&amp;gt; requirements are much stronger than in our case (in particular, we don&amp;#39;t&lt;br/&gt;&amp;gt; care about observers being able to finding the key, as the key is just&lt;br/&gt;&amp;gt; public knowledge here). One of the designers of SipHash has commented&lt;br/&gt;&amp;gt; that SipHash-1-3 for collision resistance in hash tables may be enough:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/rust-lang/rust/issues/29754#issuecomment-156073946&#34;&gt;https://github.com/rust-lang/rust/issues/29754#issuecomment-156073946&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Using SipHash-1-3 on modern hardware would take ~32 CPU cycles per txid.&lt;br/&gt;&lt;br/&gt;Switched to SipHash2-4.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; ===Implementation Notes===&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There are a few more heuristics that MAY be used to improve performance:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; * Receivers should treat short txids in blocks that match multiple&lt;br/&gt;&amp;gt; mempool transactions as non-matches, and request the transactions. This&lt;br/&gt;&amp;gt; significantly reduces the failure to reconstruct.&lt;br/&gt;&lt;br/&gt;Done.&lt;br/&gt;&lt;br/&gt;&amp;gt; * When constructing a compact block to send, the sender can verify it&lt;br/&gt;&amp;gt; against its own mempool to check for collisions, and if so, choose to&lt;br/&gt;&amp;gt; either try another nonce, or increase the short txid length.&lt;br/&gt;&lt;br/&gt;Additionally we should compare to the orphan pool (which apparently&lt;br/&gt;helps a lot).
    </content>
    <updated>2023-06-07T19:50:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqqqzfqg29jdl6v27xcgu4ylrnd4s6sw9c0msvyw7hr3xc03ahpdczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fsjdcg</id>
    
      <title type="html">📅 Original date posted:2016-05-08 📝 Original message:(This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqqqzfqg29jdl6v27xcgu4ylrnd4s6sw9c0msvyw7hr3xc03ahpdczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fsjdcg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv2tlc6denw8l0tam3ynzz4hhhlrcgt4gmtqmwcrnw5jfzdsamanc4dsaxj&#39;&gt;nevent1q…saxj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-08&lt;br/&gt;📝 Original message:(This response was originally off-list as moderators were still&lt;br/&gt;deciding, here it is for those interested).&lt;br/&gt;&lt;br/&gt;Hi Tom,&lt;br/&gt;&lt;br/&gt;Thanks for reading the draft text and commenting! Replies inline.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 05/08/16 00:40, Johnathan Corgan wrote:&lt;br/&gt;&amp;gt; ---------- Forwarded message ----------&lt;br/&gt;&amp;gt; From: Tom &amp;lt;tomz at freedommail.ch &amp;lt;mailto:tomz at freedommail.ch&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; To: bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;, Matt Corallo &amp;lt;lf-lists at mattcorallo.com &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; Cc: &lt;br/&gt;&amp;gt; Date: Fri, 06 May 2016 13:31:15 &#43;0100&lt;br/&gt;&amp;gt; Subject: Re: [bitcoin-dev] Compact Block Relay BIP&lt;br/&gt;&amp;gt; On Monday 02 May 2016 22:13:22 Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks for putting in the time to make a spec!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It looks good already, but I do think some more improvements can be made.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; ===Intended Protocol Flow===&lt;br/&gt;&amp;gt; I&amp;#39;m not a fan of the solution that a CNode should keep state and talk to&lt;br/&gt;&amp;gt; its remote nodes differently while announcing new blocks.&lt;br/&gt;&amp;gt; Its too complicated and ultimately counter-productive.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The problem is that an individual node needs to predict network behaviour in&lt;br/&gt;&amp;gt; advance. With the downside that if it guesses wrong that both nodes end up&lt;br/&gt;&amp;gt; paying for the wrong guess.&lt;br/&gt;&amp;gt; This is not a good way to design a p2p layer.&lt;br/&gt;&lt;br/&gt;Nodes don&amp;#39;t need to predict much in advance, and the cost for predicting&lt;br/&gt;wrong is 0 if your peers receive blocks with a few hundred ms between&lt;br/&gt;them (as we should expect) and you haven&amp;#39;t set the announce bit on more&lt;br/&gt;than a few peers (as the spec requires for this reason). As for&lt;br/&gt;complexity of keeping state, think of it as a version flag in much the&lt;br/&gt;same way sendheaders operates.&lt;br/&gt;&lt;br/&gt;It seems I forgot to add a suggested peer-preforwarding-selection&lt;br/&gt;algorithm in the text, but the intended use-case is to set the bit on&lt;br/&gt;peers which recently provided you blocks faster than other peers, up to&lt;br/&gt;only one or three peers. This is both simple and should be incredibly&lt;br/&gt;effective.&lt;br/&gt;&lt;br/&gt;[This has now been clarified in the BIP text]&lt;br/&gt;&lt;br/&gt;&amp;gt; I would suggest that a new block is announced to all nodes equally and then&lt;br/&gt;&amp;gt; individual nodes can respond with a request of either a &amp;#39;compact&amp;#39; or a&lt;br/&gt;&amp;gt; normal block.&lt;br/&gt;&amp;gt; This is much more in line with the current design as well.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Detection if remote nodes support compact blocks, for the purpose of&lt;br/&gt;&amp;gt; requesting a compact-block, can be done either via a network-bit or just a&lt;br/&gt;&amp;gt; protocol version. Or something else entirely, if you have better&lt;br/&gt;&amp;gt; suggestions.&lt;br/&gt;&lt;br/&gt;In line with recent trends, neither service bits nor protocol versions&lt;br/&gt;are particularly well-suited for this purpose. Protocol versions are&lt;br/&gt;impossible to handle sanely across different nodes on the network, as&lt;br/&gt;they cannot indicate optional features. Service bits, while somewhat&lt;br/&gt;more appropriate for this purpose, are a very limited resource which is&lt;br/&gt;generally better suited to indicating significant new features which&lt;br/&gt;nodes might need for correct operation, and thus might wish to actively&lt;br/&gt;seek out when making connections. I&amp;#39;m not sure anyone is suggesting that&lt;br/&gt;here, and absent that recent agreement preferred message-based feature&lt;br/&gt;indication instead of version-message-extension.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Variable-length integers: bytes are a MSB base-128 encoding of the&lt;br/&gt;&amp;gt;&amp;gt; number.&lt;br/&gt;&amp;gt;&amp;gt; The high bit in each byte signifies whether another digit follows.&lt;br/&gt;&amp;gt;&amp;gt; [snip bitwise spec]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I suggest just referring to UTF-8 which describes this just fine.&lt;br/&gt;&amp;gt; it is good practice to refer to existing specs when possible and not copy&lt;br/&gt;&amp;gt; the details.&lt;br/&gt;&lt;br/&gt;Hmm? There is no UTF anywhere in this protocol. Indeed this section&lt;br/&gt;needs to be rewritten, as indicated. I&amp;#39;d recommend you read the code&lt;br/&gt;until I update the section with better text if you&amp;#39;re confused.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; ====Short transaction IDs====&lt;br/&gt;&amp;gt;&amp;gt; Short transaction IDs are used to represent a transaction without&lt;br/&gt;&amp;gt;&amp;gt; sending a full 256-bit hash. They are calculated by:&lt;br/&gt;&amp;gt;&amp;gt; # single-SHA256 hashing the block header with the nonce appended (in&lt;br/&gt;&amp;gt;&amp;gt; little-endian)&lt;br/&gt;&amp;gt;&amp;gt; # XORing each 8-byte chunk of the double-SHA256 transaction hash with&lt;br/&gt;&amp;gt;&amp;gt; each corresponding 8-byte chunk of the hash from the previous step&lt;br/&gt;&amp;gt;&amp;gt; # Adding each of the XORed 8-byte chunks together (in little-endian)&lt;br/&gt;&amp;gt;&amp;gt; iteratively to find the short transaction ID&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think this is needed. Just use the first 8 bytes.&lt;br/&gt;&amp;gt; The reason to do xor-ing doesn&amp;#39;t hold up and extra complexity is unneeded.&lt;br/&gt;&amp;gt; Especially since you mention some lines down;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The short transaction ID calculation is designed to take absolutely&lt;br/&gt;&amp;gt;&amp;gt; minimal processing time during block compaction to avoid introducing&lt;br/&gt;&amp;gt;&amp;gt; serious DoS vulnerabilities&lt;br/&gt;&lt;br/&gt;I&amp;#39;m confused as to what, specifically, you&amp;#39;re proposing this be changed&lt;br/&gt;to. I&amp;#39;m pretty sure the proposed protocol is about as simple as you can&lt;br/&gt;get while retaining some reasonable collision resistance. I might,&lt;br/&gt;however, decide to switch to siphash with a very low round count, given&lt;br/&gt;that it&amp;#39;s probably faster than the cache-fill-time taken by just&lt;br/&gt;iterating over the mempool. Needs a bit further investigation.&lt;br/&gt;&lt;br/&gt;&amp;gt; ==Acknowledgements==&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think you need to acknowledge some more people, or just remove this&lt;br/&gt;&amp;gt; paragraph.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers&lt;br/&gt;&lt;br/&gt;Greg was the only large contributor to the document (and was a very&lt;br/&gt;large contributor, as mentioned - the work is based hugely on a protocol&lt;br/&gt;recommendation he wrote up several years ago) don&amp;#39;t see why this should&lt;br/&gt;mean he doesn&amp;#39;t get credit.&lt;br/&gt;&lt;br/&gt;[For those interested, I&amp;#39;m referring here to&lt;br/&gt;&lt;a href=&#34;https://en.bitcoin.it/wiki/User:Gmaxwell/block_network_coding&#34;&gt;https://en.bitcoin.it/wiki/User:Gmaxwell/block_network_coding&lt;/a&gt;. This&lt;br/&gt;BIP/the implementation is a precursor to an implementation that looks&lt;br/&gt;similar to what Greg proposes there which can be found on my udp-wip&lt;br/&gt;branch, which is based on and uses the data structures involved here.]
    </content>
    <updated>2023-06-07T19:50:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8hvr2t2gchaeun5r6f87yju9yzvxp65ckjqq3dk2g3e7z4nzxg8gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56umjv9</id>
    
      <title type="html">📅 Original date posted:2016-05-06 📝 Original message:Thanks ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8hvr2t2gchaeun5r6f87yju9yzvxp65ckjqq3dk2g3e7z4nzxg8gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56umjv9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz8v7vv4hd3aqavakwusvmssljvk3plyzruckvw0kgtyewjvdnt5g66m04g&#39;&gt;nevent1q…m04g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-05-06&lt;br/&gt;📝 Original message:Thanks Greg for the testing!&lt;br/&gt;&lt;br/&gt;Note that to those who are reviewing the doc, a few minor tweaks to&lt;br/&gt;wording and clarification have been made to the git version, so please&lt;br/&gt;review there.&lt;br/&gt;&lt;br/&gt;On 05/03/16 05:02, Gregory Maxwell wrote:&lt;br/&gt;&amp;gt; On Mon, May 2, 2016 at 10:13 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The following is a BIP-formatted design spec for compact block relay&lt;br/&gt;&amp;gt;&amp;gt; designed to limit on wire bytes during block relay. You can find the&lt;br/&gt;&amp;gt;&amp;gt; latest version of this document at&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/TheBlueMatt/bips/blob/master/bip-TODO.mediawiki&#34;&gt;https://github.com/TheBlueMatt/bips/blob/master/bip-TODO.mediawiki&lt;/a&gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks Matt!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;ve been testing this for a couple weeks (in various forms).  I&amp;#39;ve&lt;br/&gt;&amp;gt; been getting over 96% reduction in block-bytes sent. I don&amp;#39;t have a&lt;br/&gt;&amp;gt; good metric for it, but bandwidth spikes are greatly reduced. The&lt;br/&gt;&amp;gt; largest blocktxn message I&amp;#39;ve seen on a node that has been up for at&lt;br/&gt;&amp;gt; least a day is 475736 bytes. 94% of the blocks less than 100kb must be&lt;br/&gt;&amp;gt; sent in total.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In the opportunistic mode my measurements are showing 73% of blocks&lt;br/&gt;&amp;gt; transferred with 0.5 RTT even without prediction, 87% if up to 4&lt;br/&gt;&amp;gt; additional transactions are predicted, and 91% for 30 transactions (my&lt;br/&gt;&amp;gt; rough estimate for the 10k maximum prediction suggested in the BIP.&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:50:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxa4sf4l7kg6yssww42lh26ag39sqhfp5nrxk0kf8flzah2sdvrtczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5c5kusz</id>
    
      <title type="html">📅 Original date posted:2016-01-08 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxa4sf4l7kg6yssww42lh26ag39sqhfp5nrxk0kf8flzah2sdvrtczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5c5kusz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdtqmjs34jdcr9pu334lgrcfkxsx3cwz0j3jszdj7d6t3n3yrjdcgqrg87c&#39;&gt;nevent1q…g87c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-01-08&lt;br/&gt;📝 Original message:Indeed, anything which uses P2SH is obviously vulnerable if there is an attack on RIPEMD160 which reduces it&amp;#39;s security only marginally. While no one thought hard about these attacks when P2SH was designed, we realized later this was not such a good idea to reuse the structure from P2PKH. Hence why this discussion came up.&lt;br/&gt;&lt;br/&gt;On January 7, 2016 7:30:11 PM PST, Rusty Russell via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;Pieter Wuille via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;writes:&lt;br/&gt;&amp;gt;&amp;gt; Yes, this is what I worry about. We&amp;#39;re constructing a 2-of-2 multisig&lt;br/&gt;&amp;gt;&amp;gt; escrow in a contract. I reveal my public key A, you do a 80-bit&lt;br/&gt;&amp;gt;search for&lt;br/&gt;&amp;gt;&amp;gt; B and C such that H(A and B) = H(B and C). You tell me your keys B,&lt;br/&gt;&amp;gt;and I&lt;br/&gt;&amp;gt;&amp;gt; happily send to H(A and B), which you steal with H(B and C).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;FWIW, this attack would effect the current lightning-network&lt;br/&gt;&amp;gt;&amp;#34;deployable&lt;br/&gt;&amp;gt;lightning&amp;#34; design at channel establishment; we reveal our pubkey in the&lt;br/&gt;&amp;gt;opening packet (which is used to redeem a P2SH using normal 2of2).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;At least you need to grind before replying (which will presumably time&lt;br/&gt;&amp;gt;out), rather than being able to do it once the channel is open.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;We could pre-commit by exchanging hashes of pubkeys first, but&lt;br/&gt;&amp;gt;contracts&lt;br/&gt;&amp;gt;on bitcoin are hard enough to get right that I&amp;#39;m reluctant to add more&lt;br/&gt;&amp;gt;hoops.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Cheers,&lt;br/&gt;&amp;gt;Rusty.&lt;br/&gt;&amp;gt;_______________________________________________&lt;br/&gt;&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-07T19:47:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxrulqtlk96wc9ynptgmllmezvxwttucd7hp3ty4d4dv45c5drs0qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5gxdm5f</id>
    
      <title type="html">📅 Original date posted:2016-01-07 📝 Original message:So ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxrulqtlk96wc9ynptgmllmezvxwttucd7hp3ty4d4dv45c5drs0qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5gxdm5f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw5wyd36kln4gfyw5kg0gkwuw7qzn50parthc8lsd6pugxmjzjpesq7vt0y&#39;&gt;nevent1q…vt0y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-01-07&lt;br/&gt;📝 Original message:So just because other attacks are possible we should weaken the crypto&lt;br/&gt;we use? You may feel comfortable weakening crypto used to protect a few&lt;br/&gt;billion dollars of other peoples&amp;#39; money, but I dont.&lt;br/&gt;&lt;br/&gt;On 01/07/16 23:39, Gavin Andresen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Thanks, Ethan, that&amp;#39;s helpful and I&amp;#39;ll stop thinking that collision&lt;br/&gt;&amp;gt; attacks require 2^(n/2) memory...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So can we quantify the incremental increase in security of&lt;br/&gt;&amp;gt; SHA256(SHA256) over RIPEMD160(SHA256) versus the incremental increase in&lt;br/&gt;&amp;gt; security of having a simpler implementation of segwitness?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m going to claim that the difference in the first case is very, very,&lt;br/&gt;&amp;gt; very small-- the risk of an implementation error caused by having&lt;br/&gt;&amp;gt; multiple ways of interpreting the segwitness hash in the scriptPubKey is&lt;br/&gt;&amp;gt; much, much greater.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And even if there IS some risk of collision attack now or at some point&lt;br/&gt;&amp;gt; in the future, I claim that it is easy for wallets to mitigate that&lt;br/&gt;&amp;gt; risk. In fact, the principle of security in depth means wallets that&lt;br/&gt;&amp;gt; don&amp;#39;t completely control the scriptPubKeys they&amp;#39;re creating on behalf of&lt;br/&gt;&amp;gt; users SHOULD be coded to mitigate that risk (e.g. not allowing arbitrary&lt;br/&gt;&amp;gt; data around a user&amp;#39;s public key in a Script so targeted substring&lt;br/&gt;&amp;gt; attacks are eliminated entirely).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Purely from a security point of view, I think a single 20-byte&lt;br/&gt;&amp;gt; segwitness in the scriptPubKey is the best design.&lt;br/&gt;&amp;gt; &amp;#34;Keep the design as simple and small as possible&amp;#34;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.securecoding.cert.org/confluence/plugins/servlet/mobile#content/view/2426&#34;&gt;https://www.securecoding.cert.org/confluence/plugins/servlet/mobile#content/view/2426&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Add in the implied capacity increase of smaller scriptPubKeys and I&lt;br/&gt;&amp;gt; still think it is a no-brainer.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Jan 7, 2016 at 5:56 PM, Ethan Heilman &amp;lt;eth3rs at gmail.com&lt;br/&gt;&amp;gt; &amp;lt;mailto:eth3rs at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     &amp;gt;Ethan:  your algorithm will find two arbitrary values that collide. That isn&amp;#39;t useful as an attack in the context we&amp;#39;re talking about here (both of those values will be useless as coin destinations with overwhelming probability).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I&amp;#39;m not sure exactly the properties you want here and determining&lt;br/&gt;&amp;gt;     these properties is not an easy task, but the case is far worse than&lt;br/&gt;&amp;gt;     just two random values. For instance: (a). with a small modification&lt;br/&gt;&amp;gt;     my algorithm can also find collisions containing targeted substrings,&lt;br/&gt;&amp;gt;     (b). length extension attacks are possible with RIPEMD160.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     (a). targeted cycles:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     target1 = &amp;#34;str to prepend&amp;#34;&lt;br/&gt;&amp;gt;     target2 = &amp;#34;str to end with&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     seed = {0,1}^160&lt;br/&gt;&amp;gt;     x = hash(seed)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     for i in 2^80:&lt;br/&gt;&amp;gt;     ....x = hash(target1||x||target2)&lt;br/&gt;&amp;gt;     x_final = x&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     y = hash(tartget1||x_final||target2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     for j in 2^80:&lt;br/&gt;&amp;gt;     ....if y == x_final:&lt;br/&gt;&amp;gt;     ........print &amp;#34;cycle len: &amp;#34;&#43;j&lt;br/&gt;&amp;gt;     ........break&lt;br/&gt;&amp;gt;     ....y = hash(target1||y||target2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If a collision is found, the two colliding inputs must both start with&lt;br/&gt;&amp;gt;     &amp;#34;str to prepend&amp;#34; and end with the phrase &amp;#34;str to end with&amp;#34;. As before&lt;br/&gt;&amp;gt;     this only requires 2^81.5 computations and no real memory. For an&lt;br/&gt;&amp;gt;     additional 2**80 an adversary has an good change of finding two&lt;br/&gt;&amp;gt;     different targeted substrings which collide. Consider the case where&lt;br/&gt;&amp;gt;     the attacker mixes the targeted strings with the hash output:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     hash(&amp;#34;my name is=0x329482039483204324423&amp;#34;&#43;x[1]&#43;&amp;#34;, my favorite number&lt;br/&gt;&amp;gt;     is=&amp;#34;&#43;x) where x[1] is the first bit of x.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     (b). length extension attacks&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Even if all the adversary can do is create two random values that&lt;br/&gt;&amp;gt;     collide, you can append substrings to the input and get collisions.&lt;br/&gt;&amp;gt;     Once you find two random values hash(x) = hash(y), you could use a&lt;br/&gt;&amp;gt;     length extension attack on RIPEMD-160 to find hash(x||z) = hash(y||z).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Now the bitcoin wiki says:&lt;br/&gt;&amp;gt;     &amp;#34;The padding scheme is identical to MD4 using Merkle–Damgård&lt;br/&gt;&amp;gt;     strengthening to prevent length extension attacks.&amp;#34;[1]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Which is confusing to me because:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     1. MD4 is vulnerable to length extension attacks&lt;br/&gt;&amp;gt;     2. Merkle–Damgård strengthening does not protect against length&lt;br/&gt;&amp;gt;     extension: &amp;#34;Indeed, we already pointed out that none of the 64&lt;br/&gt;&amp;gt;     variants above can withstand the &amp;#39;extension&amp;#39; attack on the MAC&lt;br/&gt;&amp;gt;     application, even with the Merkle-Damgard strengthening&amp;#34; [2]&lt;br/&gt;&amp;gt;     3. RIPEMD-160 is vulnerable to length extension attacks, is Bitcoin&lt;br/&gt;&amp;gt;     using a non-standard version of RIPEMD-160.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     RIPEMD160(SHA256()) does not protect against length extension attacks&lt;br/&gt;&amp;gt;     on SHA256, but should protect RIPEMD-160 against length extension&lt;br/&gt;&amp;gt;     attacks as RIPEMD-160 uses 512-bit message blocks. That being said we&lt;br/&gt;&amp;gt;     should be very careful here. Research has been done that shows that&lt;br/&gt;&amp;gt;     cascading the same hash function twice is weaker than using HMAC[3]. I&lt;br/&gt;&amp;gt;     can&amp;#39;t find results on cascading RIPEMD160(SHA256()).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     RIPEMD160(SHA256()) seems better than RIPEMD160() though, but security&lt;br/&gt;&amp;gt;     should not rest on the notion that an attacker requires 2**80 memory,&lt;br/&gt;&amp;gt;     many targeted collision attacks can work without much memory.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     [1]: &lt;a href=&#34;https://en.bitcoin.it/wiki/RIPEMD-160&#34;&gt;https://en.bitcoin.it/wiki/RIPEMD-160&lt;/a&gt;&lt;br/&gt;&amp;gt;     [2]: &amp;#34;Merkle-Damgard Revisited: How to Construct a Hash Function&amp;#34;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://www.cs.nyu.edu/~puniya/papers/merkle.pdf&#34;&gt;https://www.cs.nyu.edu/~puniya/papers/merkle.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;     [3]: &lt;a href=&#34;https://www.cs.nyu.edu/~dodis/ps/h-of-h.pdf&#34;&gt;https://www.cs.nyu.edu/~dodis/ps/h-of-h.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On Thu, Jan 7, 2016 at 4:06 PM, Gavin Andresen via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;     &amp;gt; Maybe I&amp;#39;m asking this question on the wrong mailing list:&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Matt/Adam: do you have some reason to think that RIPEMD160 will be&lt;br/&gt;&amp;gt;     broken&lt;br/&gt;&amp;gt;     &amp;gt; before SHA256?&lt;br/&gt;&amp;gt;     &amp;gt; And do you have some reason to think that they will be so broken&lt;br/&gt;&amp;gt;     that the&lt;br/&gt;&amp;gt;     &amp;gt; nested hash construction RIPEMD160(SHA256()) will be vulnerable?&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Adam: re: &amp;#34;where to stop&amp;#34;  :  I&amp;#39;m suggesting we stop exactly at&lt;br/&gt;&amp;gt;     the current&lt;br/&gt;&amp;gt;     &amp;gt; status quo, where we use RIPEMD160 for P2SH and P2PKH.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Ethan:  your algorithm will find two arbitrary values that&lt;br/&gt;&amp;gt;     collide. That&lt;br/&gt;&amp;gt;     &amp;gt; isn&amp;#39;t useful as an attack in the context we&amp;#39;re talking about here&lt;br/&gt;&amp;gt;     (both of&lt;br/&gt;&amp;gt;     &amp;gt; those values will be useless as coin destinations with overwhelming&lt;br/&gt;&amp;gt;     &amp;gt; probability).&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Dave: you described a first preimage attack, which is 2**160 cpu&lt;br/&gt;&amp;gt;     time and no&lt;br/&gt;&amp;gt;     &amp;gt; storage.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; --&lt;br/&gt;&amp;gt;     &amp;gt; --&lt;br/&gt;&amp;gt;     &amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;     &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;     &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &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; --&lt;br/&gt;&amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:47:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgryrvl7h2976gtks7fd87eyakedulddr8xnt353l3jscczsjwkqczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53fvrtw</id>
    
      <title type="html">📅 Original date posted:2016-01-07 📝 Original message:We ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgryrvl7h2976gtks7fd87eyakedulddr8xnt353l3jscczsjwkqczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm53fvrtw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw3m5mkh5lrckr3yjcf0yah7g778w6f0sy4dslzxpq5x0rxmjpd0gt9dnd9&#39;&gt;nevent1q…dnd9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-01-07&lt;br/&gt;📝 Original message:We absolutely should be worried about 80-bit collision resistance.&lt;br/&gt;Collisions only take 2**80 work if the hash is theoretically perfect,&lt;br/&gt;which is never the case, not to mention that collision resistance is&lt;br/&gt;almost always the first thing to go for hash functions, and often starts&lt;br/&gt;to get easier slowly long, long before anyone is truly worried about the&lt;br/&gt;security of the hash function.&lt;br/&gt;&lt;br/&gt;I would never assume RIPEMD160&amp;#39;s collision resistance is 2**80, and&lt;br/&gt;would definitely never wager a significant amount of money that this&lt;br/&gt;remains true for, say, five years.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 01/07/16 19:02, Gavin Andresen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I&amp;#39;m hoisting this from some private feedback I sent on the segregated&lt;br/&gt;&amp;gt; witness BIP:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I said:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;I&amp;#39;d also use RIPEMD160(SHA256()) as the hash function and save the 12&lt;br/&gt;&amp;gt; bytes-- a successful preimage attack against that ain&amp;#39;t gonna happen&lt;br/&gt;&amp;gt; before we&amp;#39;re all dead. I&amp;#39;m probably being dense, but I just don&amp;#39;t see&lt;br/&gt;&amp;gt; how a collision attack is relevant here.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Pieter responded:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;The problem case is where someone in a contract setup shows you a&lt;br/&gt;&amp;gt; script, which you accept as being a payment to yourself. An attacker&lt;br/&gt;&amp;gt; could use a collision attack to construct scripts with identical hashes,&lt;br/&gt;&amp;gt; only one of which does have the property you want, and steal coins.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So you really want collision security, and I don&amp;#39;t think 80 bits is&lt;br/&gt;&amp;gt; something we should encourage for that. Normal pubkey hashes don&amp;#39;t have&lt;br/&gt;&amp;gt; that problem, as they can&amp;#39;t be constructed to pay to you.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ... but I&amp;#39;m unconvinced:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;But it is trivial for contract wallets to protect against collision&lt;br/&gt;&amp;gt; attacks-- if you give me a script that is &amp;#34;gavin_pubkey CHECKSIG&lt;br/&gt;&amp;gt; arbitrary_data OP_DROP&amp;#34; with &amp;#34;I promise I&amp;#39;m not trying to rip you off,&lt;br/&gt;&amp;gt; just ignore that arbitrary data&amp;#34; a wallet can just refuse. Even more&lt;br/&gt;&amp;gt; likely, a contract wallet won&amp;#39;t even recognize that as a pay-to-gavin&lt;br/&gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I suppose it could be looking for some form of &amp;#34;gavin_pubkey&lt;br/&gt;&amp;gt; somebody_else_pubkey CHECKMULTISIG ... with the attacker using&lt;br/&gt;&amp;gt; somebody_else_pubkey to force the collision, but, again, trivial&lt;br/&gt;&amp;gt; contract protocol tweaks (&amp;#34;send along a proof you have the private key&lt;br/&gt;&amp;gt; corresponding to the public key&amp;#34; or &amp;#34;everybody pre-commits pubkeys&lt;br/&gt;&amp;gt; they&amp;#39;ll use at protocol start&amp;#34;) would protect against that.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Adding an extra 12 bytes to every segwit to prevent an attack that takes&lt;br/&gt;&amp;gt; 2^80 computation and 2^80 storage, is unlikely to be a problem in&lt;br/&gt;&amp;gt; practice, and is trivial to protect against is the wrong tradeoff to make.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 20 bytes instead of 32 bytes is a savings of almost 40%, which is&lt;br/&gt;&amp;gt; significant.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The general question I&amp;#39;d like to raise on this list is:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Should we be worried, today, about collision attacks against RIPEMD160&lt;br/&gt;&amp;gt; (our 160-bit hash)?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Mounting a successful brute-force collision attack would require at&lt;br/&gt;&amp;gt; least O(2^80) CPU, which is kinda-sorta feasible (Pieter pointed out&lt;br/&gt;&amp;gt; that Bitcoin POW has computed more SHA256 hashes than that). But it also&lt;br/&gt;&amp;gt; requires O(2^80) storage, which is utterly infeasible (there is&lt;br/&gt;&amp;gt; something on the order of 2^35 bytes of storage in the entire world). &lt;br/&gt;&amp;gt; Even assuming doubling every single year (faster than Moore&amp;#39;s Law),&lt;br/&gt;&amp;gt; we&amp;#39;re four decades away from an attacker with THE ENTIRE WORLD&amp;#39;s storage&lt;br/&gt;&amp;gt; capacity being able to mount a collision attack.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; References: &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Collision_attack&#34;&gt;https://en.wikipedia.org/wiki/Collision_attack&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://vsatglobalseriesblog.wordpress.com/2013/06/21/in-2013-the-amount-of-data-generated-worldwide-will-reach-four-zettabytes/&#34;&gt;https://vsatglobalseriesblog.wordpress.com/2013/06/21/in-2013-the-amount-of-data-generated-worldwide-will-reach-four-zettabytes/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:47:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswapdfsdgy935z0cpry30mlcynry24q39vqd35r2ly62lgyng8v9qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fz50gr</id>
    
      <title type="html">📅 Original date posted:2015-12-16 📝 Original message:A ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswapdfsdgy935z0cpry30mlcynry24q39vqd35r2ly62lgyng8v9qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5fz50gr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq9mxcrqupag793znr0ulwxcqfnr2lw32s63npg5y3mq09lpp4j2ce2qveg&#39;&gt;nevent1q…qveg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-12-16&lt;br/&gt;📝 Original message:A large part of your argument is that SW will take longer to deploy than a hard fork, but I completely disagree. Though I do not agree with some people claiming we can deploy SW significantly faster than a hard fork, once the code is ready (probably a six month affair) we can get it deployed very quickly. It&amp;#39;s true the ecosystem may take some time to upgrade, but I see that as a feature, not a bug - we can build up some fee pressure with an immediate release valve available for people to use if they want to pay fewer fees.&lt;br/&gt;&lt;br/&gt;On the other hand, a hard fork, while simpler for the ecosystem to upgrade to, is a  1-2 year affair (after the code is shipped, so at least 1.5-2.5 from today if we all put off heads down and work). One thing that has concerned me greatly through this whole debate is how quickly people seem to think we can roll out a hard fork. Go look at the distribution of node versions on the network today and work backwards to get nearly every node upgraded... Even with a year between fork-version-release and fork-activation, we&amp;#39;d still kill a bunch of nodes and instead of reducing their security model, lead them to be outright robbed.&lt;br/&gt;&lt;br/&gt;On December 16, 2015 12:38:30 PM PST, Jeff Garzik via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;1. Summary&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Segregated Witness (SegWitness, SW) is being presented in the context&lt;br/&gt;&amp;gt;of&lt;br/&gt;&amp;gt;Scaling Bitcoin.  It has useful attributes, notably addressing a major&lt;br/&gt;&amp;gt;malleability vector, but is not a short term scaling solution.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;2. Definitions&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Import Fee Event, ECE, TFM, FFM from previous email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Older clients - Any software not upgraded to SW&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Newer clients - Upgraded, SW aware software&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Block size - refers to the core block economic resource limited by&lt;br/&gt;&amp;gt;MAX_BLOCK_SIZE.  Witness data (or extension block data) is excluded.&lt;br/&gt;&amp;gt;Requires a hard fork to change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Core block - Current bitcoin block, with upper bound MAX_BLOCK_SIZE. &lt;br/&gt;&amp;gt;Not&lt;br/&gt;&amp;gt;changed by SW.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Extended transaction - Newer, upgraded version of transaction data&lt;br/&gt;&amp;gt;format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Extended block - Newer, upgraded version of block data format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;EBS - Extended block size.  Block size seen by newer clients.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;3. Context of analysis&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;One proposal presents SW *in lieu of* a hard fork block size increase.&lt;br/&gt;&amp;gt;This email focuses directly on that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Useful features outside block size context, such as anti-malleability&lt;br/&gt;&amp;gt;or&lt;br/&gt;&amp;gt;fraud proof features, are not covered in depth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;4.1.  Observations on data structure formats and views&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;SW creates two *views* of each transaction and block.  SW has blocks&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;extended blocks.  Similarly, there exists transactions and extended&lt;br/&gt;&amp;gt;transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This view is rendered to clients depending on compatibility level. &lt;br/&gt;&amp;gt;Newer&lt;br/&gt;&amp;gt;clients see extended blocks and extended transactions.  Older clients&lt;br/&gt;&amp;gt;see&lt;br/&gt;&amp;gt;blocks (limit 1M), and do not see extended blocks.  Older clients see&lt;br/&gt;&amp;gt;upgraded transactions as unsigned, anyone-can-pay transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Each extended transaction exists in two states, one unsigned and one&lt;br/&gt;&amp;gt;signed, each of which passes validation as a valid bitcoin transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;4.2.  Observations on behavior of older transaction creation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Transactions created by older clients will not use the extended&lt;br/&gt;&amp;gt;transaction&lt;br/&gt;&amp;gt;format.  All data is stored the standard 1M block as today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;4.3.  Observations on new block economic model&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;SW complicates block economics by creating two separate, supply limited&lt;br/&gt;&amp;gt;resources.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The core block economic resource is heavily contended.  Older clients&lt;br/&gt;&amp;gt;use&lt;br/&gt;&amp;gt;core blocks exclusively.  Newer clients use core blocks more&lt;br/&gt;&amp;gt;conservatively, storing as much data as possible in extended blocks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The extended block economic resource is less heavily contended, though&lt;br/&gt;&amp;gt;that&lt;br/&gt;&amp;gt;of course grows over time as clients upgrade.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Because core blocks are more heavily contended, it is presumed that&lt;br/&gt;&amp;gt;older&lt;br/&gt;&amp;gt;clients will pay a higher fee than newer clients (subject to elasticity&lt;br/&gt;&amp;gt;etc.).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.1.  Problem:  Pace of roll-out will be slow - Whole Ecosystem must be&lt;br/&gt;&amp;gt;considered.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The current apparent proposal is to roll out Segregated Witness as a&lt;br/&gt;&amp;gt;soft&lt;br/&gt;&amp;gt;fork, and keep block size at 1M.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The roll-out pace cannot simply be judged by soft fork speed - which is&lt;br/&gt;&amp;gt;months at best.  Analysis must the layers above:  Updating bitcoin-core&lt;br/&gt;&amp;gt;(JS) and bitcoinj (Java), and then the timelines to roll out those&lt;br/&gt;&amp;gt;updates&lt;br/&gt;&amp;gt;to apps, and then the timeline to update those apps to create extended&lt;br/&gt;&amp;gt;transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Overall, wallet software and programmer libraries must be upgraded to&lt;br/&gt;&amp;gt;make&lt;br/&gt;&amp;gt;use of this new format, adding many more months (12&#43; in some stacks) to&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;roll out timeline.  In the meantime, clients continue to contend&lt;br/&gt;&amp;gt;entirely&lt;br/&gt;&amp;gt;for core block space.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.2.  Problem:   Hard fork to bigger block size Just Works(tm) with&lt;br/&gt;&amp;gt;most&lt;br/&gt;&amp;gt;software, unlike SW.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;A simple hard fork such as BIP 102 is automatically compatible with the&lt;br/&gt;&amp;gt;vast range of today&amp;#39;s ecosystem software.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;SW requires merchants to upgrade almost immediately, requires wallet&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;other peripheral software upgrades to make use of.  Other updates are&lt;br/&gt;&amp;gt;opt-in and occur more slowly.  BIP 70 processors need some updates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The number of LOC that must change for BIP 102 is very small, and the&lt;br/&gt;&amp;gt;problem domain well known, versus SW.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.3.  Problem:   Due to pace, Fee Event not forestalled.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Even presuming SW is merged into Bitcoin Core tomorrow, this does not&lt;br/&gt;&amp;gt;address the risk of a Fee Event and associated Economic Change in the&lt;br/&gt;&amp;gt;coming months.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.4.  Problem:   More complex economic policy, new game theory, new&lt;br/&gt;&amp;gt;bidding&lt;br/&gt;&amp;gt;structure risks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Splitting blocks into two pieces, each with separate and distinct&lt;br/&gt;&amp;gt;behaviors&lt;br/&gt;&amp;gt;and resource values, creates *two fee markets.*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Having two pricing strata within each block has certainly feasible -&lt;br/&gt;&amp;gt;that&lt;br/&gt;&amp;gt;is the current mining policy of (1) fee/KB followed by (2)&lt;br/&gt;&amp;gt;priority/age.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Valuable or not - e.g. incentivizing older clients to upgrade - the&lt;br/&gt;&amp;gt;fact&lt;br/&gt;&amp;gt;remains that SW creates a more-complex bidding structure by creating a&lt;br/&gt;&amp;gt;second economic resource.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;*This is clearly a change to a new economic policy* with standard risks&lt;br/&gt;&amp;gt;associated with that.  Will that induce an Economic Change Event (see&lt;br/&gt;&amp;gt;def&lt;br/&gt;&amp;gt;last email)?  *Unlikely*, due to slow rollout pace.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.5.  Problem:  Current SW mining algorithm needs improvement&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Current SW block template maker does a reasonable job, but makes some&lt;br/&gt;&amp;gt;naive&lt;br/&gt;&amp;gt;assumptions about the fee market across an entire extended block.  This&lt;br/&gt;&amp;gt;is&lt;br/&gt;&amp;gt;a mismatch with the economic reality (just described).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;5.6.   Problem:  New, under-analyzed attack surfaces&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Less significant and fundamental but still worth noting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This is not a fundamental SW problem, but simply standard complexity&lt;br/&gt;&amp;gt;risk&lt;br/&gt;&amp;gt;factors:  splitting the signatures away from transactions, and creating&lt;br/&gt;&amp;gt;a&lt;br/&gt;&amp;gt;new apparently-unsigned version of the transaction opens the&lt;br/&gt;&amp;gt;possibility of&lt;br/&gt;&amp;gt;some network attacks which cause some clients to degrade down from&lt;br/&gt;&amp;gt;extended&lt;br/&gt;&amp;gt;block to core block mode temporarily.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;There is a chance of a failure mode that fools older clients into&lt;br/&gt;&amp;gt;thinking&lt;br/&gt;&amp;gt;fraudulent data is valid (judgement: unlikely vis hashpower but not&lt;br/&gt;&amp;gt;impossible)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;6. Conclusions and recommendations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;It seems unlikely that SW provides scaling in the short term, and SW&lt;br/&gt;&amp;gt;introduces new economics complexities.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;A &amp;#34;short term bump&amp;#34; hard fork block size increase addresses economic&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;ecosystem risks that SW does not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Bump &#43; SW should proceed in parallel, independent tracks, as orthogonal&lt;br/&gt;&amp;gt;issues.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;7. Appendix - Other SW comments&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Hard forks provide much stronger validation, and ensure the network&lt;br/&gt;&amp;gt;operates at a fully trustless level.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;SW hard fork is preferred, versus soft fork.  Soft forking SW places a&lt;br/&gt;&amp;gt;huge&lt;br/&gt;&amp;gt;amount of trust on miners to validate transaction signatures, versus&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;rest of the network, as the network slowly upgrades to newer clients.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;An SW hard fork could also add several zero-filled placeholders in a&lt;br/&gt;&amp;gt;merkle&lt;br/&gt;&amp;gt;tree for future use.&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;_______________________________________________&lt;br/&gt;&amp;gt;bitcoin-dev mailing list&lt;br/&gt;&amp;gt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20151216/4c7fc0c2/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151216/4c7fc0c2/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:46:30&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstamf82cmvw9p26sy75k6rntd366cnavdkv29rzk34u983tlllzxczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm555ntfd</id>
    
      <title type="html">📅 Original date posted:2015-12-04 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstamf82cmvw9p26sy75k6rntd366cnavdkv29rzk34u983tlllzxczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm555ntfd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv9m4rtweu39szfmqwezj9k6amjfs6e2cdnzfuqr3gu889gxgpykq4ypvr0&#39;&gt;nevent1q…pvr0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-12-04&lt;br/&gt;📝 Original message:On December 3, 2015 7:02:20 AM GMT&#43;08:00, Peter Tschipper &amp;lt;peter.tschipper at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;On 02/12/2015 2:23 PM, Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt; My issue is more that its additional complexity and attack surface,&lt;br/&gt;&amp;gt;&amp;gt; and for a very minor gain &lt;br/&gt;&amp;gt;What is a minor gain?  15 to 27% compression sounds good to me and the&lt;br/&gt;&amp;gt;larger the data the better the compression.  And although there is a&lt;br/&gt;&amp;gt;decent peformance gain in proportion to the % of compression, the&lt;br/&gt;&amp;gt;original motivation of the BIP was to reduce bandwidth for users in&lt;br/&gt;&amp;gt;regions where they are subject to caps.&lt;br/&gt;&lt;br/&gt;Ok. It wasn&amp;#39;t clear to me that you weren&amp;#39;t also claiming at latency reduction as a result. In any case, the point I was making is that the p2p protocol isn&amp;#39;t for every use-case. Indeed, I agree (as noted previously) that we should support people who have very restrictive data usage limits, but I don&amp;#39;t think we need to do this in the p2p protocol. Considering we&amp;#39;re in desperate need of more ways to sync, supporting syncing over slow and/or very restrictive connections is something maybe better addressed by a sync-over-http-via-cdn protocol than the p2p protocol.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; which should disappear with further optimization elsewhere &lt;br/&gt;&amp;gt;Why would the benefit of compressing data disappear with further&lt;br/&gt;&amp;gt;optimizations elsewhere, I&amp;#39;m not following you?.  The compression of&lt;br/&gt;&amp;gt;data mainly has benefit in the sending of packets over the network.  I&lt;br/&gt;&amp;gt;would think the performance gain would be cumulative.  Why would this&lt;br/&gt;&amp;gt;go&lt;br/&gt;&amp;gt;away by optimizing elsewhere?&lt;br/&gt;&lt;br/&gt;My point is that, with limited further optimization, and especially after the first hundred thousand blocks, block download should nearly never be the thing limiting IBD speed.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; and less that we absolutely shouldn&amp;#39;t add compression because we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt; definitely gonna have issues.&lt;br/&gt;&amp;gt;It&amp;#39;s not that difficult to add compression.  Even if there was an&lt;br/&gt;&amp;gt;issue,&lt;br/&gt;&amp;gt;the compression feature can be completely turned off. &lt;br/&gt;&lt;br/&gt;No matter how easily you can implement something, complexity always has cost. This is especially true in complicated, incredibly security critical applications exposed to the internet.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On 12/02/15 20:16, Peter Tschipper via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Building a compressor from scratch may yeild some better compression&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ratios, or not, but having trust and faith in whether it will stand&lt;br/&gt;&amp;gt;up&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; against attack vectors another matter.  LZO has been around for 20&lt;br/&gt;&amp;gt;years&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; with very few problems and no current issues.  Maybe something&lt;br/&gt;&amp;gt;better&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; can be built, but when and how much testing will need to be done&lt;br/&gt;&amp;gt;before&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; it can be trusted?  Right now there is something that provides a&lt;br/&gt;&amp;gt;benefit&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and in the future if something better is found it&amp;#39;s not that&lt;br/&gt;&amp;gt;difficult&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to add it.  We could easily support multiple compression libraries.&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; On 02/12/2015 10:57 AM, Emin Gün Sirer wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks Peter for the careful, quantitative work.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I want to bring one additional issue to everyone&amp;#39;s consideration,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; related to the choice of the Lempel-Ziv family of compressors.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; While I&amp;#39;m not familiar with every single compression engine tested,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the Lempel-Ziv family of compressors are generally based on&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;compression tables.&amp;#34; Essentially, they assign a short unique&lt;br/&gt;&amp;gt;number&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to every new subsequence they encounter, and when they re-encounter&lt;br/&gt;&amp;gt;a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sequence like &amp;#34;ab&amp;#34; in &amp;#34;abcdfdcdabcdfabcdf&amp;#34; they replace it with&lt;br/&gt;&amp;gt;that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; short integer (say, in this case, 9-bit constant 256). So this&lt;br/&gt;&amp;gt;example&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sequence may turn into &amp;#34;abcdfd&amp;lt;258 for cd&amp;gt;&amp;lt;256 for ab&amp;gt;&amp;lt;258 for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; cd&amp;gt;f&amp;lt;261 for abc&amp;gt;&amp;lt;259 for df&amp;gt;&amp;#34; which is slightly shorter than the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; original (I&amp;#39;m doing this off the top of my head so the counts may&lt;br/&gt;&amp;gt;be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; off, but it&amp;#39;s meant to be illustrative). Note that the sequence&lt;br/&gt;&amp;gt;&amp;#34;abc&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; got added into the table only after it was encountered twice in the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; input.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This is nice and generic and works well for English text where&lt;br/&gt;&amp;gt;certain&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; letter sequences (e.g. &amp;#34;it&amp;#34; &amp;#34;th&amp;#34; &amp;#34;the&amp;#34; &amp;#34;this&amp;#34; &amp;#34;are&amp;#34; &amp;#34;there&amp;#34; etc)&lt;br/&gt;&amp;gt;are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; repeated often, but it is nowhere as compact as it could possibly&lt;br/&gt;&amp;gt;be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for mostly binary data -- there are opportunities for much better&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compression, made possible by the structured reuse of certain byte&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sequences in the Bitcoin wire protocol.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On a Bitcoin wire connection, we might see several related&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions reorganizing cash in a set of addresses, and&lt;br/&gt;&amp;gt;therefore,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; several reuses of a 20-byte address. Or we might see a 200-byte&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction get transmitted, followed by the same transaction,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; repeated in a block. Ideally, we&amp;#39;d learn the sequence that may be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; repeated later on, all at once (e.g. a Bitcoin address or a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction), and replace it with a short number, referring back to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the long sequence. In the example above, if we knew that &amp;#34;abcdf&amp;#34;&lt;br/&gt;&amp;gt;was a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; UNIT that would likely be repeated, we would put it into the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compression table as a whole, instead of relying on repetition to&lt;br/&gt;&amp;gt;get&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; it into the table one extra byte at a time. That may let us&lt;br/&gt;&amp;gt;compress&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the original sequence down to &amp;#34;abcdfd&amp;lt;257 for cd&amp;gt;&amp;lt;256 for&lt;br/&gt;&amp;gt;abcdf&amp;gt;&amp;lt;256&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for abcdf&amp;gt;&amp;#34; from the get go.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yet the LZ variants I know of will need to see a 200-byte sequence&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; repeated **199 times** in order to develop a single, reusable,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 200-byte long subsequence in the compression table.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; So, a Bitcoin-specific compressor can perhaps do significantly&lt;br/&gt;&amp;gt;better,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but is it a good idea? Let&amp;#39;s argue both sides.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Cons:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On the one hand, Bitcoin-specific compressors will be closely tied&lt;br/&gt;&amp;gt;to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the contents of messages, which might make it difficult to change&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wire format later on -- changes to the wire format may need&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; corresponding changes to the compressor.  If the compressor cannot&lt;br/&gt;&amp;gt;be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implemented cleanly, then the protocol-agnostic, off-the-shelf&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compressors have a maintainability edge, which comes at the expense&lt;br/&gt;&amp;gt;of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the compression ratio.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Another argument is that compression algorithms of any kind should&lt;br/&gt;&amp;gt;be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; tested thoroughly before inclusion, and brand new code may lack the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; maturity required. While this argument has some merit, all outputs&lt;br/&gt;&amp;gt;are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; verified separately later on during processing, so&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compression/decompression errors can potentially be detected. If&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compressor/decompressor can be structured in a way that isolates&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoind from failure (e.g. as a separate process for starters),&lt;br/&gt;&amp;gt;this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; concern can be remedied.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Pros:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The nature of LZ compressors leads me to believe that much higher&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compression ratios are possible by building a custom, Bitcoin-aware&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compressor. If I had to guess, I would venture that compression&lt;br/&gt;&amp;gt;ratios&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of 2X or more are possible in some cases. In some sense, the &amp;#34;O(1)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; block propagation&amp;#34; idea that Gavin proposed a while ago can be seen&lt;br/&gt;&amp;gt;as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; extreme example of a Bitcoin-specific compressor, albeit one that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; constrains the order of transactions in a block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Compression can buy us some additional throughput at zero cost,&lt;br/&gt;&amp;gt;modulo&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; code complexity.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Given the amount of acrimonious debate over the block size we have&lt;br/&gt;&amp;gt;all&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; had to endure, it seems&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; criminal to leave potentially free improvements on the table. Even&lt;br/&gt;&amp;gt;if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the resulting code is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; deemed too complex to include in the production client right now,&lt;br/&gt;&amp;gt;it&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; would be good to understand&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the potential for improvement.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; How to Do It&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If we want to compress Bitcoin, a programming challenge/contest&lt;br/&gt;&amp;gt;would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be one of the best ways to find the best possible, Bitcoin-specific&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compressor. This is the kind of self-contained exercise that bright&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; young hackers love to tackle. It&amp;#39;d bring in new programmers into&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ecosystem, and many of us would love to discover the limits of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; compressibility for Bitcoin bits on a wire. And the results would&lt;br/&gt;&amp;gt;be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; interesting even if the final compression engine is not enabled by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; default, or not even merged.&lt;br/&gt;&amp;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;&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;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:45:25&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxvrqxc89htex06fj0f67wdcxjxmfa4f5se7mqsnfywd6cgv8rpegzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mc0xjh</id>
    
      <title type="html">📅 Original date posted:2015-12-02 📝 Original message:My ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxvrqxc89htex06fj0f67wdcxjxmfa4f5se7mqsnfywd6cgv8rpegzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mc0xjh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq3wcgsvdzqudy9q427npcccpc7nh8m7zczhf8sp9pacx6w29yamqq6rn6g&#39;&gt;nevent1q…rn6g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-12-02&lt;br/&gt;📝 Original message:My issue is more that its additional complexity and attack surface, and &lt;br/&gt;for a very minor gain which should disappear with further optimization &lt;br/&gt;elsewhere and less that we absolutely shouldn&amp;#39;t add compression because &lt;br/&gt;we&amp;#39;re definitely gonna have issues.&lt;br/&gt;&lt;br/&gt;On 12/02/15 20:16, Peter Tschipper via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Building a compressor from scratch may yeild some better compression&lt;br/&gt;&amp;gt; ratios, or not, but having trust and faith in whether it will stand up&lt;br/&gt;&amp;gt; against attack vectors another matter.  LZO has been around for 20 years&lt;br/&gt;&amp;gt; with very few problems and no current issues.  Maybe something better&lt;br/&gt;&amp;gt; can be built, but when and how much testing will need to be done before&lt;br/&gt;&amp;gt; it can be trusted?  Right now there is something that provides a benefit&lt;br/&gt;&amp;gt; and in the future if something better is found it&amp;#39;s not that difficult&lt;br/&gt;&amp;gt; to add it.  We could easily support multiple compression libraries.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 02/12/2015 10:57 AM, Emin Gün Sirer wrote:&lt;br/&gt;&amp;gt;&amp;gt; Thanks Peter for the careful, quantitative work.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I want to bring one additional issue to everyone&amp;#39;s consideration,&lt;br/&gt;&amp;gt;&amp;gt; related to the choice of the Lempel-Ziv family of compressors.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While I&amp;#39;m not familiar with every single compression engine tested,&lt;br/&gt;&amp;gt;&amp;gt; the Lempel-Ziv family of compressors are generally based on&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;compression tables.&amp;#34; Essentially, they assign a short unique number&lt;br/&gt;&amp;gt;&amp;gt; to every new subsequence they encounter, and when they re-encounter a&lt;br/&gt;&amp;gt;&amp;gt; sequence like &amp;#34;ab&amp;#34; in &amp;#34;abcdfdcdabcdfabcdf&amp;#34; they replace it with that&lt;br/&gt;&amp;gt;&amp;gt; short integer (say, in this case, 9-bit constant 256). So this example&lt;br/&gt;&amp;gt;&amp;gt; sequence may turn into &amp;#34;abcdfd&amp;lt;258 for cd&amp;gt;&amp;lt;256 for ab&amp;gt;&amp;lt;258 for&lt;br/&gt;&amp;gt;&amp;gt; cd&amp;gt;f&amp;lt;261 for abc&amp;gt;&amp;lt;259 for df&amp;gt;&amp;#34; which is slightly shorter than the&lt;br/&gt;&amp;gt;&amp;gt; original (I&amp;#39;m doing this off the top of my head so the counts may be&lt;br/&gt;&amp;gt;&amp;gt; off, but it&amp;#39;s meant to be illustrative). Note that the sequence &amp;#34;abc&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; got added into the table only after it was encountered twice in the&lt;br/&gt;&amp;gt;&amp;gt; input.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This is nice and generic and works well for English text where certain&lt;br/&gt;&amp;gt;&amp;gt; letter sequences (e.g. &amp;#34;it&amp;#34; &amp;#34;th&amp;#34; &amp;#34;the&amp;#34; &amp;#34;this&amp;#34; &amp;#34;are&amp;#34; &amp;#34;there&amp;#34; etc) are&lt;br/&gt;&amp;gt;&amp;gt; repeated often, but it is nowhere as compact as it could possibly be&lt;br/&gt;&amp;gt;&amp;gt; for mostly binary data -- there are opportunities for much better&lt;br/&gt;&amp;gt;&amp;gt; compression, made possible by the structured reuse of certain byte&lt;br/&gt;&amp;gt;&amp;gt; sequences in the Bitcoin wire protocol.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On a Bitcoin wire connection, we might see several related&lt;br/&gt;&amp;gt;&amp;gt; transactions reorganizing cash in a set of addresses, and therefore,&lt;br/&gt;&amp;gt;&amp;gt; several reuses of a 20-byte address. Or we might see a 200-byte&lt;br/&gt;&amp;gt;&amp;gt; transaction get transmitted, followed by the same transaction,&lt;br/&gt;&amp;gt;&amp;gt; repeated in a block. Ideally, we&amp;#39;d learn the sequence that may be&lt;br/&gt;&amp;gt;&amp;gt; repeated later on, all at once (e.g. a Bitcoin address or a&lt;br/&gt;&amp;gt;&amp;gt; transaction), and replace it with a short number, referring back to&lt;br/&gt;&amp;gt;&amp;gt; the long sequence. In the example above, if we knew that &amp;#34;abcdf&amp;#34; was a&lt;br/&gt;&amp;gt;&amp;gt; UNIT that would likely be repeated, we would put it into the&lt;br/&gt;&amp;gt;&amp;gt; compression table as a whole, instead of relying on repetition to get&lt;br/&gt;&amp;gt;&amp;gt; it into the table one extra byte at a time. That may let us compress&lt;br/&gt;&amp;gt;&amp;gt; the original sequence down to &amp;#34;abcdfd&amp;lt;257 for cd&amp;gt;&amp;lt;256 for abcdf&amp;gt;&amp;lt;256&lt;br/&gt;&amp;gt;&amp;gt; for abcdf&amp;gt;&amp;#34; from the get go.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Yet the LZ variants I know of will need to see a 200-byte sequence&lt;br/&gt;&amp;gt;&amp;gt; repeated **199 times** in order to develop a single, reusable,&lt;br/&gt;&amp;gt;&amp;gt; 200-byte long subsequence in the compression table.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So, a Bitcoin-specific compressor can perhaps do significantly better,&lt;br/&gt;&amp;gt;&amp;gt; but is it a good idea? Let&amp;#39;s argue both sides.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cons:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the one hand, Bitcoin-specific compressors will be closely tied to&lt;br/&gt;&amp;gt;&amp;gt; the contents of messages, which might make it difficult to change the&lt;br/&gt;&amp;gt;&amp;gt; wire format later on -- changes to the wire format may need&lt;br/&gt;&amp;gt;&amp;gt; corresponding changes to the compressor.  If the compressor cannot be&lt;br/&gt;&amp;gt;&amp;gt; implemented cleanly, then the protocol-agnostic, off-the-shelf&lt;br/&gt;&amp;gt;&amp;gt; compressors have a maintainability edge, which comes at the expense of&lt;br/&gt;&amp;gt;&amp;gt; the compression ratio.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Another argument is that compression algorithms of any kind should be&lt;br/&gt;&amp;gt;&amp;gt; tested thoroughly before inclusion, and brand new code may lack the&lt;br/&gt;&amp;gt;&amp;gt; maturity required. While this argument has some merit, all outputs are&lt;br/&gt;&amp;gt;&amp;gt; verified separately later on during processing, so&lt;br/&gt;&amp;gt;&amp;gt; compression/decompression errors can potentially be detected. If the&lt;br/&gt;&amp;gt;&amp;gt; compressor/decompressor can be structured in a way that isolates&lt;br/&gt;&amp;gt;&amp;gt; bitcoind from failure (e.g. as a separate process for starters), this&lt;br/&gt;&amp;gt;&amp;gt; concern can be remedied.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Pros:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The nature of LZ compressors leads me to believe that much higher&lt;br/&gt;&amp;gt;&amp;gt; compression ratios are possible by building a custom, Bitcoin-aware&lt;br/&gt;&amp;gt;&amp;gt; compressor. If I had to guess, I would venture that compression ratios&lt;br/&gt;&amp;gt;&amp;gt; of 2X or more are possible in some cases. In some sense, the &amp;#34;O(1)&lt;br/&gt;&amp;gt;&amp;gt; block propagation&amp;#34; idea that Gavin proposed a while ago can be seen as&lt;br/&gt;&amp;gt;&amp;gt; extreme example of a Bitcoin-specific compressor, albeit one that&lt;br/&gt;&amp;gt;&amp;gt; constrains the order of transactions in a block.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Compression can buy us some additional throughput at zero cost, modulo&lt;br/&gt;&amp;gt;&amp;gt; code complexity.&lt;br/&gt;&amp;gt;&amp;gt; Given the amount of acrimonious debate over the block size we have all&lt;br/&gt;&amp;gt;&amp;gt; had to endure, it seems&lt;br/&gt;&amp;gt;&amp;gt; criminal to leave potentially free improvements on the table. Even if&lt;br/&gt;&amp;gt;&amp;gt; the resulting code is&lt;br/&gt;&amp;gt;&amp;gt; deemed too complex to include in the production client right now, it&lt;br/&gt;&amp;gt;&amp;gt; would be good to understand&lt;br/&gt;&amp;gt;&amp;gt; the potential for improvement.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; How to Do It&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If we want to compress Bitcoin, a programming challenge/contest would&lt;br/&gt;&amp;gt;&amp;gt; be one of the best ways to find the best possible, Bitcoin-specific&lt;br/&gt;&amp;gt;&amp;gt; compressor. This is the kind of self-contained exercise that bright&lt;br/&gt;&amp;gt;&amp;gt; young hackers love to tackle. It&amp;#39;d bring in new programmers into the&lt;br/&gt;&amp;gt;&amp;gt; ecosystem, and many of us would love to discover the limits of&lt;br/&gt;&amp;gt;&amp;gt; compressibility for Bitcoin bits on a wire. And the results would be&lt;br/&gt;&amp;gt;&amp;gt; interesting even if the final compression engine is not enabled by&lt;br/&gt;&amp;gt;&amp;gt; default, or not even merged.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:45:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvv9aftmxe5yr5qzwucejd6nfqcyw66han7hehkl80huxnszkch7szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qzffdu</id>
    
      <title type="html">📅 Original date posted:2015-12-01 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvv9aftmxe5yr5qzwucejd6nfqcyw66han7hehkl80huxnszkch7szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qzffdu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxdch76zcpu5h8rgwaddp0u65lmg0s5kvu84u6rmtq3u2lhwxp45c9slgm0&#39;&gt;nevent1q…lgm0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-12-01&lt;br/&gt;📝 Original message:I&amp;#39;m really not a fan of this at all. To start with, adding a compression library that is directly accessible to the network on financial software is a really, really scary idea. If there were a massive improvement, I&amp;#39;d find it acceptable, but the improvement you&amp;#39;ve shown really isn&amp;#39;t all that much. The numbers you recently posted show it improving the very beginning of IBD somewhat over high-latency connections, but if we&amp;#39;re throughput-limited after the very beginning of IBD, we should fix that, not compress the blocks. Additionally, I&amp;#39;d be very surprised if this had any significant effect on the speed at which new blocks traverse the network (do you have any simulations or other thoughts on this?).&lt;br/&gt;&lt;br/&gt;All that said, I&amp;#39;d love a proposal that allows clients to download compressed blocks via an external daemon, especially during IBD. This could help people with very restrictive data caps do IBD instead of being pushed to revert to SPV. Additionally, I think we need more chain sync protocols so that the current P2P protocol isn&amp;#39;t consensus-critical anymore.&lt;br/&gt;&lt;br/&gt;On November 30, 2015 4:12:24 PM MST, Peter Tschipper via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;@gmaxwell Bip Editor, and the Bitcoin Dev Community,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;After several weeks of experimenting and testing with various&lt;br/&gt;&amp;gt;compression libraries I think there is enough evidence to show that&lt;br/&gt;&amp;gt;compressing blocks and transactions is not only beneficial in reducing&lt;br/&gt;&amp;gt;network bandwidth but is also provides a small performance boost when&lt;br/&gt;&amp;gt;there is latency on the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The following is a BIP Draft document for your review. &lt;br/&gt;&amp;gt;(The alignment of the columns in the tables doesn&amp;#39;t come out looking&lt;br/&gt;&amp;gt;right in this email but if you cut and paste into a text document they&lt;br/&gt;&amp;gt;are just fine)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;  BIP: ?&lt;br/&gt;&amp;gt;  Title: Datastream compression of Blocks and Tx&amp;#39;s&lt;br/&gt;&amp;gt;  Author: Peter Tschipper &amp;lt;peter.tschipper at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;  Status: Draft&lt;br/&gt;&amp;gt;  Type: Standards Track&lt;br/&gt;&amp;gt;  Created: 2015-11-30&lt;br/&gt;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Abstract==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;To compress blocks and transactions, and to concatenate them together&lt;br/&gt;&amp;gt;when possible, before sending.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Motivation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Bandwidth is an issue for users that run nodes in regions where&lt;br/&gt;&amp;gt;bandwidth is expensive and subject to caps, in addition network latency&lt;br/&gt;&amp;gt;in some regions can also be quite high. By compressing data we can&lt;br/&gt;&amp;gt;reduce daily bandwidth used in a significant way while at the same time&lt;br/&gt;&amp;gt;speed up the transmission of data throughout the network. This should&lt;br/&gt;&amp;gt;encourage users to keep their nodes running longer and allow for more&lt;br/&gt;&amp;gt;peer connections with less need for bandwidth throttling and in&lt;br/&gt;&amp;gt;addition, may also encourage users in areas of marginal internet&lt;br/&gt;&amp;gt;connectivity to run nodes where in the past they would not have been&lt;br/&gt;&amp;gt;able to.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Advertise compression using a service bit.  Both peers must have&lt;br/&gt;&amp;gt;compression turned on in order for data to be compressed, sent, and&lt;br/&gt;&amp;gt;decompressed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Blocks will be sent compressed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Transactions will be sent compressed with the exception of those less&lt;br/&gt;&amp;gt;than 500 bytes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Blocks will be concatenated when possible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Transactions will be concatenated when possible or when a&lt;br/&gt;&amp;gt;MSG_FILTERED_BLOCK is requested.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Compression levels to be specified in &amp;#34;bitcoin.conf&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Compression and decompression can be completely turned off.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Although unlikely, if compression should fail then data will be sent&lt;br/&gt;&amp;gt;uncompressed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The code for compressing and decompressing will be located in class&lt;br/&gt;&amp;gt;CDataStream.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Compression library LZO1x will be used.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Rationale==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;By using a service bit, compression and decompression can be turned&lt;br/&gt;&amp;gt;on/off completely at both ends with a simple configuration setting. It&lt;br/&gt;&amp;gt;is important to be able to easily turn off compression/decompression as&lt;br/&gt;&amp;gt;a fall back mechanism.  Using a service bit also makes the code fully&lt;br/&gt;&amp;gt;compatible with any node that does not currently support compression. A&lt;br/&gt;&amp;gt;node that do not present the correct service bit will simply receive&lt;br/&gt;&amp;gt;data in standard uncompressed format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;All blocks will be compressed. Even small blocks have been found to&lt;br/&gt;&amp;gt;benefit from compression.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;Multiple block requests that are in queue will be concatenated together&lt;br/&gt;&amp;gt;when possible to increase compressibility of smaller blocks.&lt;br/&gt;&amp;gt;Concatenation will happen only if there are multiple block requests&lt;br/&gt;&amp;gt;from&lt;br/&gt;&amp;gt;the same remote peer.  For example, if peer1 is requesting two blocks&lt;br/&gt;&amp;gt;and they are both in queue then those two blocks will be concatenated.&lt;br/&gt;&amp;gt;However, if peer1 is requesting 1 block and peer2 also one block, and&lt;br/&gt;&amp;gt;they are both in queue, then each peer is sent only its block and no&lt;br/&gt;&amp;gt;concatenation will occur. Up to 16 blocks (the max blocks in flight)&lt;br/&gt;&amp;gt;can&lt;br/&gt;&amp;gt;be concatenated but not exceeding the MAX_PROTOCOL_MESSAGE_LENGTH.&lt;br/&gt;&amp;gt;Concatenated blocks compress better and further reduce bandwidth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Transactions below 500 bytes do not compress well and will be sent&lt;br/&gt;&amp;gt;uncompressed unless they can be concatenated (see Table 3).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Multiple transaction requests that are in queue will be concatenated&lt;br/&gt;&amp;gt;when possible.  This further reduces bandwidth needs and speeds the&lt;br/&gt;&amp;gt;transfer of large requests for many transactions, such as with&lt;br/&gt;&amp;gt;MSG_FILTERED_BLOCK requests, or when the system gets busy and is&lt;br/&gt;&amp;gt;flooded&lt;br/&gt;&amp;gt;with transactions.  Concatenation happens in the same way as for&lt;br/&gt;&amp;gt;blocks,&lt;br/&gt;&amp;gt;described above.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;By allowing for differing compression levels which can be specified in&lt;br/&gt;&amp;gt;the bitcoin.conf file, a node operator can tailor their compression to&lt;br/&gt;&amp;gt;a&lt;br/&gt;&amp;gt;level suitable for their system.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Although unlikely, if compression fails for any reason then blocks and&lt;br/&gt;&amp;gt;transactions will be sent uncompressed.  Therefore, even with&lt;br/&gt;&amp;gt;compression turned on, a node will be able to handle both compressed&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;uncompressed data from another peer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;By Abstracting the compression/decompression code into class&lt;br/&gt;&amp;gt;&amp;#34;CDataStream&amp;#34;, compression can be easily applied to any datastream.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The compression library LZO1x-1 does not compress to the extent that&lt;br/&gt;&amp;gt;Zlib does but it is clearly the better performer (particularly as file&lt;br/&gt;&amp;gt;sizes get larger), while at the same time providing very good&lt;br/&gt;&amp;gt;compression (see Tables 1 and 2).  Furthermore, LZO1x-999 can provide&lt;br/&gt;&amp;gt;and almost Zlib like compression for those who wish to have more&lt;br/&gt;&amp;gt;compression, although at a cost.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Test Results==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;With the LZO library, current test results show up to a 20% compression&lt;br/&gt;&amp;gt;using LZO1x-1 and up to 27% when using LZO1x-999.  In addition there is&lt;br/&gt;&amp;gt;a marked performance improvement when there is latency on the network.&lt;br/&gt;&amp;gt;From the test results, with a latency of 60ms there is an almost 30%&lt;br/&gt;&amp;gt;improvement in performance when comparing LZO1x-1 compressed blocks&lt;br/&gt;&amp;gt;with&lt;br/&gt;&amp;gt;uncompressed blocks (see Table 5).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The following table shows the percentage that blocks were compressed,&lt;br/&gt;&amp;gt;using two different Zlib and LZO1x compression level settings.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;TABLE 1:&lt;br/&gt;&amp;gt;range = data size range&lt;br/&gt;&amp;gt;range           Zlib-1  Zlib-6  LZO1x-1 LZO1x-999&lt;br/&gt;&amp;gt;-----------     ------  ------  ------- --------&lt;br/&gt;&amp;gt;0-250           12.44   12.86   10.79   14.34&lt;br/&gt;&amp;gt;250-500         19.33   12.97   10.34   11.11   &lt;br/&gt;&amp;gt;600-700         16.72   n/a     12.91   17.25&lt;br/&gt;&amp;gt;700-800         6.37    7.65    4.83    8.07&lt;br/&gt;&amp;gt;900-1KB         6.54    6.95    5.64    7.9&lt;br/&gt;&amp;gt;1KB-10KB        25.08   25.65   21.21   22.65&lt;br/&gt;&amp;gt;10KB-100KB      19.77   21.57   4.37    19.02&lt;br/&gt;&amp;gt;100KB-200KB     21.49   23.56   15.37   21.55&lt;br/&gt;&amp;gt;200KB-300KB     23.66   24.18   16.91   22.76&lt;br/&gt;&amp;gt;300KB-400KB     23.4    23.7    16.5    21.38&lt;br/&gt;&amp;gt;400KB-500KB     24.6    24.85   17.56   22.43&lt;br/&gt;&amp;gt;500KB-600KB     25.51   26.55   18.51   23.4&lt;br/&gt;&amp;gt;600KB-700KB     27.25   28.41   19.91   25.46&lt;br/&gt;&amp;gt;700KB-800KB     27.58   29.18   20.26   27.17&lt;br/&gt;&amp;gt;800KB-900KB     27      29.11   20      27.4&lt;br/&gt;&amp;gt;900KB-1MB       28.19   29.38   21.15   26.43&lt;br/&gt;&amp;gt;1MB -2MB        27.41   29.46   21.33   27.73&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The following table shows the time in seconds that a block of data&lt;br/&gt;&amp;gt;takes&lt;br/&gt;&amp;gt;to compress using different compression levels.  One can clearly see&lt;br/&gt;&amp;gt;that LZO1x-1 is the fastest and is not as affected when data sizes get&lt;br/&gt;&amp;gt;larger.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;TABLE 2:&lt;br/&gt;&amp;gt;range = data size range&lt;br/&gt;&amp;gt;range           Zlib-1  Zlib-6  LZO1x-1 LZO1x-999&lt;br/&gt;&amp;gt;-----------     ------  ------  ------- ---------&lt;br/&gt;&amp;gt;0-250           0.001   0       0       0&lt;br/&gt;&amp;gt;250-500         0       0       0       0.001&lt;br/&gt;&amp;gt;500-1KB         0       0       0       0.001&lt;br/&gt;&amp;gt;1KB-10KB        0.001   0.001   0       0.002&lt;br/&gt;&amp;gt;10KB-100KB      0.004   0.006   0.001   0.017&lt;br/&gt;&amp;gt;100KB-200KB     0.012   0.017   0.002   0.054&lt;br/&gt;&amp;gt;200KB-300KB     0.018   0.024   0.003   0.087&lt;br/&gt;&amp;gt;300KB-400KB     0.022   0.03    0.003   0.121&lt;br/&gt;&amp;gt;400KB-500KB     0.027   0.037   0.004   0.151&lt;br/&gt;&amp;gt;500KB-600KB     0.031   0.044   0.004   0.184&lt;br/&gt;&amp;gt;600KB-700KB     0.035   0.051   0.006   0.211&lt;br/&gt;&amp;gt;700KB-800KB     0.039   0.057   0.006   0.243&lt;br/&gt;&amp;gt;800KB-900KB     0.045   0.064   0.006   0.27&lt;br/&gt;&amp;gt;900KB-1MB       0.049   0.072   0.006   0.307&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;TABLE 3:&lt;br/&gt;&amp;gt;Compression of Transactions (without concatenation)&lt;br/&gt;&amp;gt;range = block size range&lt;br/&gt;&amp;gt;ubytes = average size of uncompressed transactions&lt;br/&gt;&amp;gt;cbytes = average size of compressed transactions&lt;br/&gt;&amp;gt;cmp% = the percentage amount that the transaction was compressed&lt;br/&gt;&amp;gt;datapoints = number of datapoints taken&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;range       ubytes    cbytes    cmp%    datapoints&lt;br/&gt;&amp;gt;----------  ------    ------    ------  ----------    &lt;br/&gt;&amp;gt;0-250       220       227       -3.16   23780&lt;br/&gt;&amp;gt;250-500     356       354       0.68    20882&lt;br/&gt;&amp;gt;500-600     534       505       5.29    2772&lt;br/&gt;&amp;gt;600-700     653       608       6.95    1853&lt;br/&gt;&amp;gt;700-800     757       649       14.22   578&lt;br/&gt;&amp;gt;800-900     822       758       7.77    661&lt;br/&gt;&amp;gt;900-1KB     954       862       9.69    906&lt;br/&gt;&amp;gt;1KB-10KB    2698      2222      17.64   3370&lt;br/&gt;&amp;gt;10KB-100KB  15463     12092     21.80   15429&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The above table shows that transactions don&amp;#39;t compress well below 500&lt;br/&gt;&amp;gt;bytes but do very well beyond 1KB where there are a great deal of those&lt;br/&gt;&amp;gt;large spam type transactions.   However, most transactions happen to be&lt;br/&gt;&amp;gt;in the &amp;lt; 500 byte range.  So the next step was to appy concatenation&lt;br/&gt;&amp;gt;for&lt;br/&gt;&amp;gt;those smaller transactions.  Doing that yielded some very good&lt;br/&gt;&amp;gt;compression results.  Some examples as follows:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The best one that was seen was when 175 transactions were concatenated&lt;br/&gt;&amp;gt;before being compressed.  That yielded a 20% compression ratio, but&lt;br/&gt;&amp;gt;that&lt;br/&gt;&amp;gt;doesn&amp;#39;t take into account the savings from the unneeded 174 message&lt;br/&gt;&amp;gt;headers (24 bytes each) as well as 174 TCP ACKs of 52 bytes each which&lt;br/&gt;&amp;gt;yields and additional 76*174 = 13224 byte savings, making for an&lt;br/&gt;&amp;gt;overall&lt;br/&gt;&amp;gt;bandwidth savings of 32%:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     2015-11-18 01:09:09.002061 compressed data from 79890 to 67426&lt;br/&gt;&amp;gt;txcount:175&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;However, that was an extreme example.  Most transaction aggregates were&lt;br/&gt;&amp;gt;in the 2 to 10 transaction range.  Such as the following:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;2015-11-17 21:08:28.469313 compressed data from 3199 to 2876 txcount:10&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;But even here the savings of 10% was far better than the &amp;#34;nothing&amp;#34; we&lt;br/&gt;&amp;gt;would get without concatenation, but add to that the 76 byte * 9&lt;br/&gt;&amp;gt;transaction savings and we have a total 20% savings in bandwidth for&lt;br/&gt;&amp;gt;transactions that otherwise would not be compressible.  Therefore the&lt;br/&gt;&amp;gt;concatenation of small transactions can also save bandwidth and speed&lt;br/&gt;&amp;gt;up&lt;br/&gt;&amp;gt;the transmission of those transactions through the network while&lt;br/&gt;&amp;gt;keeping&lt;br/&gt;&amp;gt;network and message queue chatter to a minimum.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Choice of Compression library==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;LZO was chosen over Zlib.  LZO is the fastest most scalable option when&lt;br/&gt;&amp;gt;used at the lowest compression setting which will be a performance&lt;br/&gt;&amp;gt;boost&lt;br/&gt;&amp;gt;for users that prefer performance over bandwidth savings. And at the&lt;br/&gt;&amp;gt;higher end, LZO provides good compression (although at a higher cost)&lt;br/&gt;&amp;gt;which approaches that of Zlib.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Other compression libraries investigated were Snappy, LZOf, fastZlib&lt;br/&gt;&amp;gt;and&lt;br/&gt;&amp;gt;LZ4 however none of these were found to be suitable, either because&lt;br/&gt;&amp;gt;they&lt;br/&gt;&amp;gt;were not portable, lacked the flexibility to set compression levels or&lt;br/&gt;&amp;gt;did not provide a useful compression ratio.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The following two tables show results in seconds for syncing the first&lt;br/&gt;&amp;gt;200,000 blocks. Tests were run on a high-speed wireless LAN with very&lt;br/&gt;&amp;gt;little latency, and also run with a 60ms latency which was induced with&lt;br/&gt;&amp;gt;&amp;#34;Netbalancer&amp;#34;.&lt;br/&gt;&amp;gt;               &lt;br/&gt;&amp;gt;TABLE 4:&lt;br/&gt;&amp;gt;Results shown in seconds on highspeed wireless LAN (no induced latency)&lt;br/&gt;&amp;gt;Num blks sync&amp;#39;d  Uncmp  Zlib-1  Zlib-6  LZO1x-1  LZO1x-999&lt;br/&gt;&amp;gt;---------------  -----  ------  ------  -------  ---------&lt;br/&gt;&amp;gt;10000            255    232     233     231      257      &lt;br/&gt;&amp;gt;20000            464    414     420     407      453      &lt;br/&gt;&amp;gt;30000            677    594     611     585      650      &lt;br/&gt;&amp;gt;40000            887    787     795     760      849     &lt;br/&gt;&amp;gt;50000            1099   961     977     933      1048   &lt;br/&gt;&amp;gt;60000            1310   1145    1167    1110     1259  &lt;br/&gt;&amp;gt;70000            1512   1330    1362    1291     1470  &lt;br/&gt;&amp;gt;80000            1714   1519    1552    1469     1679   &lt;br/&gt;&amp;gt;90000            1917   1707    1747    1650     1882  &lt;br/&gt;&amp;gt;100000           2122   1905    1950    1843     2111    &lt;br/&gt;&amp;gt;110000           2333   2107    2151    2038     2329  &lt;br/&gt;&amp;gt;120000           2560   2333    2376    2256     2580   &lt;br/&gt;&amp;gt;130000           2835   2656    2679    2558     2921 &lt;br/&gt;&amp;gt;140000           3274   3259    3161    3051     3466   &lt;br/&gt;&amp;gt;150000           3662   3793    3547    3440     3919   &lt;br/&gt;&amp;gt;160000           4040   4172    3937    3767     4416   &lt;br/&gt;&amp;gt;170000           4425   4625    4379    4215     4958   &lt;br/&gt;&amp;gt;180000           4860   5149    4895    4781     5560    &lt;br/&gt;&amp;gt;190000           5855   6160    5898    5805     6557    &lt;br/&gt;&amp;gt;200000           7004   7234    7051    6983     7770   &lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;TABLE 5:&lt;br/&gt;&amp;gt;Results shown in seconds with 60ms of induced latency&lt;br/&gt;&amp;gt;Num blks sync&amp;#39;d  Uncmp  Zlib-1  Zlib-6  LZO1x-1  LZO1x-999&lt;br/&gt;&amp;gt;---------------  -----  ------  ------  -------  ---------&lt;br/&gt;&amp;gt;10000            219    299     296     294      291&lt;br/&gt;&amp;gt;20000            432    568     565     558      548&lt;br/&gt;&amp;gt;30000            652    835     836     819      811&lt;br/&gt;&amp;gt;40000            866    1106    1107    1081     1071&lt;br/&gt;&amp;gt;50000            1082   1372    1381    1341     1333&lt;br/&gt;&amp;gt;60000            1309   1644    1654    1605     1600&lt;br/&gt;&amp;gt;70000            1535   1917    1936    1873     1875&lt;br/&gt;&amp;gt;80000            1762   2191    2210    2141     2141&lt;br/&gt;&amp;gt;90000            1992   2463    2486    2411     2411&lt;br/&gt;&amp;gt;100000           2257   2748    2780    2694     2697&lt;br/&gt;&amp;gt;110000           2627   3034    3076    2970     2983&lt;br/&gt;&amp;gt;120000           3226   3416    3397    3266     3302&lt;br/&gt;&amp;gt;130000           4010   3983    3773    3625     3703&lt;br/&gt;&amp;gt;140000           4914   4503    4292    4127     4287&lt;br/&gt;&amp;gt;150000           5806   4928    4719    4529     4821&lt;br/&gt;&amp;gt;160000           6674   5249    5164    4840     5314&lt;br/&gt;&amp;gt;170000           7563   5603    5669    5289     6002&lt;br/&gt;&amp;gt;180000           8477   6054    6268    5858     6638&lt;br/&gt;&amp;gt;190000           9843   7085    7278    6868     7679&lt;br/&gt;&amp;gt;200000           11338  8215    8433    8044     8795&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Backward compatibility==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Being unable to present the correct service bit, older clients will&lt;br/&gt;&amp;gt;continue to receive standard uncompressed data and will be fully&lt;br/&gt;&amp;gt;compatible with this change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Fallback==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;It is important to be able to entirely and easily turn off compression&lt;br/&gt;&amp;gt;and decompression as a fall back mechanism. This can be done with a&lt;br/&gt;&amp;gt;simple bitcoin.conf setting of &amp;#34;compressionlevel=0&amp;#34;. Only one of the&lt;br/&gt;&amp;gt;two&lt;br/&gt;&amp;gt;connected peers need to set compressionlevel=0 in order to turn off&lt;br/&gt;&amp;gt;compression and decompression completely.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Deployment==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This enhancement does not require a hard or soft fork.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Service Bit==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;During the testing of this implementation, service bit 28 was used,&lt;br/&gt;&amp;gt;however this enhancement will require a permanently assigned service&lt;br/&gt;&amp;gt;bit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Implementation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This implementation depends on the LZO compression library: lzo-2.09&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://github.com/ptschip/bitcoin/tree/compress&#34;&gt;https://github.com/ptschip/bitcoin/tree/compress&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;==Copyright==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;This document is placed in the public domain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;_______________________________________________&lt;br/&gt;&amp;gt;bitcoin-dev mailing list&lt;br/&gt;&amp;gt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;
    </content>
    <updated>2023-06-07T19:45:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd27zd546lcjtjaas6jmly3nuu8k8rpeq4dyaymp7n2zqmc2rv0lszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qwum67</id>
    
      <title type="html">📅 Original date posted:2015-10-28 📝 Original message:Oops, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd27zd546lcjtjaas6jmly3nuu8k8rpeq4dyaymp7n2zqmc2rv0lszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5qwum67" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr6s6f3498t3ljdp2mseavc99yrmn5agweddqds2e2kw0uk5l74kswc4n7q&#39;&gt;nevent1q…4n7q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-28&lt;br/&gt;📝 Original message:Oops, just realized I never responded to this...&lt;br/&gt;&lt;br/&gt;On 10/15/15 15:09, Ittay wrote:&lt;br/&gt;&amp;gt; Thanks, Matt. Response inline. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Oct 14, 2015 at 2:57 PM, Matt Corallo &amp;lt;lf-lists at mattcorallo.com&lt;br/&gt;&amp;gt; &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     That conversation missed a second issue. Namely that there is no way&lt;br/&gt;&amp;gt;     to punish people if there is a double spend in a micro block that&lt;br/&gt;&amp;gt;     happens in key block which reorg&amp;#39;d away the first transaction. eg&lt;br/&gt;&amp;gt;     one miner mines a transaction in a micro block, another miner&lt;br/&gt;&amp;gt;     (either by not having seen the first yet, or being malicious -&lt;br/&gt;&amp;gt;     potentially the same miner) mines a key block which reorgs away the&lt;br/&gt;&amp;gt;     first micro block and then, in their first micro block, mines a&lt;br/&gt;&amp;gt;     double spend. This can happen at any time, so you end up having to&lt;br/&gt;&amp;gt;     fall back to regular full blocks for confirmation times :(.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If NG is to be used efficiently, microblocks are going to be very&lt;br/&gt;&amp;gt; frequent, and so such forks should occur at almost every key-block&lt;br/&gt;&amp;gt; publication. Short reorgs as you described are the norm. A user should&lt;br/&gt;&amp;gt; wait before accepting a transaction to make sure there was no key-block&lt;br/&gt;&amp;gt; she missed. The wait time is chosen according to the network propagation&lt;br/&gt;&amp;gt; delay (&#43;as much slack as the user feels necessary). This is similar to&lt;br/&gt;&amp;gt; the situation in Bitcoin when you receive a block. To be confident that&lt;br/&gt;&amp;gt; you have one confirmation you should wait for the propagation time of&lt;br/&gt;&amp;gt; the network to make sure there is no branch you missed. &lt;br/&gt;&lt;br/&gt;I think you&amp;#39;re overstating how short the wait times can be. They need to&lt;br/&gt;be much longer than the network propagation delay.&lt;br/&gt;&lt;br/&gt;&amp;gt; As for the malicious case: the attacker has to win the key-block, have&lt;br/&gt;&amp;gt; the to-be-inverted transaction in the previous epoch, and withhold his&lt;br/&gt;&amp;gt; key-block for a while. That being said, indeed our fraud proof scheme&lt;br/&gt;&amp;gt; doesn&amp;#39;t catch such an event, as it is indistinguishable from benign&lt;br/&gt;&amp;gt; behavior. &lt;br/&gt;&lt;br/&gt;The attacker does not need to withold their keyblock at all. All the&lt;br/&gt;attacker does is, for every transaction they ever send, after it is&lt;br/&gt;included in a microblock, set their hashpower to start mining a keyblock&lt;br/&gt;immediately prior to this microblock. When they find a keyblock, they&lt;br/&gt;immediately announce it and start creating microblocks, the first of&lt;br/&gt;which double-spends the previous transaction. If they dont win the key&lt;br/&gt;block, oh well, their payment went through normally and they couldn&amp;#39;t&lt;br/&gt;double-spend.&lt;br/&gt;&lt;br/&gt;In chatting with Glenn about this, we roughly agreed that the&lt;br/&gt;confirmation time for microblocks possibly doesn&amp;#39;t need to be a full&lt;br/&gt;key-block, but it needs to be a reasonable period after which such an&lt;br/&gt;attacker would lose more in fees than the value of their double-spend&lt;br/&gt;(ie because the key-block afterwards gets 20% more in fees than the&lt;br/&gt;key-block before hand). In any case, the game theory here starts to get&lt;br/&gt;rather complicated and it doesn&amp;#39;t make me want to suggest accepting&lt;br/&gt;microblocks as confirmations is safe.&lt;br/&gt;&lt;br/&gt;&amp;gt;     Also, Greg Slepak brought up a good point on twitter at&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://twitter.com/taoeffect/status/654358023138209792&#34;&gt;https://twitter.com/taoeffect/status/654358023138209792&lt;/a&gt;. Noting that&lt;br/&gt;&amp;gt;     this model means users could no longer pick transactions in a mining&lt;br/&gt;&amp;gt;     pool which was set up in such a way (it could be tweaked to do so&lt;br/&gt;&amp;gt;     with separate rewards and pubkeys, but now the user can commit fraud&lt;br/&gt;&amp;gt;     at a much lower cost - their own pool reward, not the block&amp;#39;s total&lt;br/&gt;&amp;gt;     reward).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Agreed x3: This is a good point, it is correct, and the tweak is dangerous. &lt;br/&gt;&amp;gt; Do you perceive this as a significant practical issue? &lt;br/&gt;&lt;br/&gt;It is not a practical issue today because no one does it, but it is a&lt;br/&gt;massive issue in that the splitting of pool rewards and transaction&lt;br/&gt;selection is one of the few easy wins we have left in the fight against&lt;br/&gt;mining centralization. Mining centralization today is absolutely awful,&lt;br/&gt;and closing off our only big win would be tragic.&lt;br/&gt;&lt;br/&gt;&amp;gt;     On October 14, 2015 11:28:51 AM PDT, Ittay via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         On Wed, Oct 14, 2015 at 2:12 PM, Bryan Bishop &amp;lt;kanzure at gmail.com&lt;br/&gt;&amp;gt;         &amp;lt;mailto:kanzure at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;             On Wed, Oct 14, 2015 at 1:02 PM, Emin Gün Sirer&lt;br/&gt;&amp;gt;             &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;             &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;             &amp;gt; while the whitepaper has all the nitty gritty details:&lt;br/&gt;&amp;gt;             &amp;gt;      &lt;a href=&#34;http://arxiv.org/abs/1510.02037&#34;&gt;http://arxiv.org/abs/1510.02037&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;             Taking reward compensation back by fraud proofs is not&lt;br/&gt;&amp;gt;             enough to fix&lt;br/&gt;&amp;gt;             the problems associated with double spending (such as,&lt;br/&gt;&amp;gt;             everyone has to&lt;br/&gt;&amp;gt;             wait for the &amp;#34;real&amp;#34; confirmations instead of the &amp;#34;possibly&lt;br/&gt;&amp;gt;             double-spend&amp;#34; confirmations). Some of this was discussed in&lt;br/&gt;&amp;gt;             -wizards&lt;br/&gt;&amp;gt;             recently:&lt;br/&gt;&amp;gt;             &lt;a href=&#34;http://gnusha.org/bitcoin-wizards/2015-09-19.log&#34;&gt;http://gnusha.org/bitcoin-wizards/2015-09-19.log&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         Fraud proof removes all the attacker&amp;#39;s revenue. It&amp;#39;s like the&lt;br/&gt;&amp;gt;         attacker sacrifices an entire block for double spending in the&lt;br/&gt;&amp;gt;         current system. I think Luke-Jr got it right at that discussion. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         Best, &lt;br/&gt;&amp;gt;         Ittay &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         ------------------------------------------------------------------------&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         bitcoin-dev mailing list&lt;br/&gt;&amp;gt;         bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;         &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;         &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:43:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdqsmxjwmdmxynytjhjrrp4frayq5dvac4n3xhxm9qlew63wxnh0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5aseetg</id>
    
      <title type="html">📅 Original date posted:2015-10-14 📝 Original message:That ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdqsmxjwmdmxynytjhjrrp4frayq5dvac4n3xhxm9qlew63wxnh0czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5aseetg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs25pfywasf4lja9rrraj6kt870rpxuznwg90sxdxmqv8vs3wnfjzqsq3wgs&#39;&gt;nevent1q…3wgs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-14&lt;br/&gt;📝 Original message:That conversation missed a second issue. Namely that there is no way to punish people if there is a double spend in a micro block that happens in key block which reorg&amp;#39;d away the first transaction. eg one miner mines a transaction in a micro block, another miner (either by not having seen the first yet, or being malicious - potentially the same miner) mines a key block which reorgs away the first micro block and then, in their first micro block, mines a double spend. This can happen at any time, so you end up having to fall back to regular full blocks for confirmation times :(.&lt;br/&gt;&lt;br/&gt;Also, Greg Slepak brought up a good point on twitter at &lt;a href=&#34;https://twitter.com/taoeffect/status/654358023138209792&#34;&gt;https://twitter.com/taoeffect/status/654358023138209792&lt;/a&gt;. Noting that this model means users could no longer pick transactions in a mining pool which was set up in such a way (it could be tweaked to do so with separate rewards and pubkeys, but now the user can commit fraud at a much lower cost - their own pool reward, not the block&amp;#39;s total reward).&lt;br/&gt;&lt;br/&gt;On October 14, 2015 11:28:51 AM PDT, Ittay via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;On Wed, Oct 14, 2015 at 2:12 PM, Bryan Bishop &amp;lt;kanzure at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Oct 14, 2015 at 1:02 PM, Emin Gün Sirer&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; while the whitepaper has all the nitty gritty details:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;      &lt;a href=&#34;http://arxiv.org/abs/1510.02037&#34;&gt;http://arxiv.org/abs/1510.02037&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Taking reward compensation back by fraud proofs is not enough to fix&lt;br/&gt;&amp;gt;&amp;gt; the problems associated with double spending (such as, everyone has&lt;br/&gt;&amp;gt;to&lt;br/&gt;&amp;gt;&amp;gt; wait for the &amp;#34;real&amp;#34; confirmations instead of the &amp;#34;possibly&lt;br/&gt;&amp;gt;&amp;gt; double-spend&amp;#34; confirmations). Some of this was discussed in -wizards&lt;br/&gt;&amp;gt;&amp;gt; recently:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;http://gnusha.org/bitcoin-wizards/2015-09-19.log&#34;&gt;http://gnusha.org/bitcoin-wizards/2015-09-19.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Fraud proof removes all the attacker&amp;#39;s revenue. It&amp;#39;s like the attacker&lt;br/&gt;&amp;gt;sacrifices an entire block for double spending in the current system. I&lt;br/&gt;&amp;gt;think Luke-Jr got it right at that discussion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Best,&lt;br/&gt;&amp;gt;Ittay&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;_______________________________________________&lt;br/&gt;&amp;gt;bitcoin-dev mailing list&lt;br/&gt;&amp;gt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20151014/84d65583/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151014/84d65583/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsztaavs45zggz3mnx73vljwxymn3pvywdaeqrjyyun0mvmwx9ct9czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5va27su</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsztaavs45zggz3mnx73vljwxymn3pvywdaeqrjyyun0mvmwx9ct9czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5va27su" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg9w74y22wkfpgq9mypazvh4wavx80njl4mv89d5445jya3fj8c3gfgxnnc&#39;&gt;nevent1q…xnnc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:I believe the discussion here is on improving initial-sync time by&lt;br/&gt;simply skipping initial-sync and getting a committed-to utxo set. This&lt;br/&gt;is obviously a new security model in between SPV and full-node (I would&lt;br/&gt;call it SPV with future validation). Still, I&amp;#39;m not convinced it buys us&lt;br/&gt;anything, we really should just tweak Bitcoin Core to do spv mode at&lt;br/&gt;startup and validate backwards in the background. I think this would&lt;br/&gt;alleviate most of the concerns raised, given the chain growth is not&lt;br/&gt;entirely unreasonable going forward.&lt;br/&gt;&lt;br/&gt;On 09/18/15 20:07, Alex Morcos via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I guess I always assumed that UTXO set commitments were an alternative&lt;br/&gt;&amp;gt; security model (between SPV and full-node), not that they would cause&lt;br/&gt;&amp;gt; the existing security model to be deprecated.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Fri, Sep 18, 2015 at 3:43 PM, Patrick Strateman via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Full nodes using UTXO set commitments is a change to the bitcoin&lt;br/&gt;&amp;gt;     security model.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Currently an attacker with &amp;gt;50% of the network hashrate can rewrite&lt;br/&gt;&amp;gt;     history.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If full nodes rely on UTXO set commitments such an attacker could create&lt;br/&gt;&amp;gt;     an infinite number of bitcoins (as in many times more than the current&lt;br/&gt;&amp;gt;     21 million bitcoin limit).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Before we consider mechanisms for UTXO set commitments, we should&lt;br/&gt;&amp;gt;     seriously discuss whether the security model reduction is reasonable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On 09/18/2015 12:05 PM, Rune Kjær Svendsen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;     &amp;gt; Currently, when a new node wants to join the network, it needs to&lt;br/&gt;&amp;gt;     retrieve the entire blockchain history, starting from January 2009&lt;br/&gt;&amp;gt;     and up until now, in order to derive a UTXO set that it can verify&lt;br/&gt;&amp;gt;     new blocks/transactions against. With a blockchain size of 40GB and&lt;br/&gt;&amp;gt;     a UTXO size of around 1GB, the extra bandwidth required is&lt;br/&gt;&amp;gt;     significant, and will keep increasing indefinitely. If a newly mined&lt;br/&gt;&amp;gt;     block were to include the UTXO set hash of the chain up until the&lt;br/&gt;&amp;gt;     previous block — the hash of the UTXO set on top of which this block&lt;br/&gt;&amp;gt;     builds — then new nodes, who want to know whether a transaction is&lt;br/&gt;&amp;gt;     valid, would be able to acquire the UTXO set in a trustless manner,&lt;br/&gt;&amp;gt;     by only verifying proof-of-work headers, and knowing that a block&lt;br/&gt;&amp;gt;     with an invalid UTXO set hash would be rejected.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; I’m not talking about calculating a complicated tree structure&lt;br/&gt;&amp;gt;     from the UTXO set, which would put further burden on already&lt;br/&gt;&amp;gt;     burdened Bitcoin Core nodes. We simply include the hash of the&lt;br/&gt;&amp;gt;     current UTXO set in a newly created block, such that the&lt;br/&gt;&amp;gt;     transactions in the new block build *on top* of the UTXO set whose&lt;br/&gt;&amp;gt;     hash is specified. This actually alleviates Bitcoin Core nodes, as&lt;br/&gt;&amp;gt;     it will now become possible for nodes without the entire blockchain&lt;br/&gt;&amp;gt;     to answer SPV queries (by retrieving the UTXO set trustlessly and&lt;br/&gt;&amp;gt;     using this to answer queries). It also saves bandwidth for Bitcore&lt;br/&gt;&amp;gt;     Core nodes, who only need to send roughly 1GB of data, in order to&lt;br/&gt;&amp;gt;     synchronise a node, rather than 40GB&#43;. I will continue to run a full&lt;br/&gt;&amp;gt;     Bitcoin Core node, saving the entire blockchain history, but it&lt;br/&gt;&amp;gt;     shouldn’t be a requirement to hold the entire transaction history in&lt;br/&gt;&amp;gt;     order to start verifying new transactions.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; As far as I can see, this also forces miners to actually maintain&lt;br/&gt;&amp;gt;     an UTXO set, rather than just build on top of the chain with the&lt;br/&gt;&amp;gt;     most proof-of-work. Producing a UTXO set and verifying a block&lt;br/&gt;&amp;gt;     against a chain is the same thing, so by including the hash of the&lt;br/&gt;&amp;gt;     UTXO set we force miners to verify the block that they want to build&lt;br/&gt;&amp;gt;     on top of.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Am I missing something obvious, because as far as I can see, this&lt;br/&gt;&amp;gt;     solves the problem of quadratic time complexity for initial sync:&lt;br/&gt;&amp;gt;     &lt;a href=&#34;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&#34;&gt;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; The only added step to verifying a block is to hash the UTXO set.&lt;br/&gt;&amp;gt;     So it does require additional computation, but most modern CPUs have&lt;br/&gt;&amp;gt;     a SHA256 throughput of around 500 MB/s, which means it takes only&lt;br/&gt;&amp;gt;     two seconds to hash the UTXO set. And this can be improved further&lt;br/&gt;&amp;gt;     (GPUs can do 2-3 GB/s). A small sacrifice for the added ease of&lt;br/&gt;&amp;gt;     initial syncing, in my opinion.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; /Rune&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;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:40:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs87unsfl5ecs3c6ckmlnxtalj3rl5zwecx4eyjg8fx9mlnzsl70sczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5tcm3uk</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:Yes, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs87unsfl5ecs3c6ckmlnxtalj3rl5zwecx4eyjg8fx9mlnzsl70sczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5tcm3uk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyc68sp5edgn4edwcfdd8c8h7v92ldpdjqn0427ft40kqjyst9tcs9u0xqd&#39;&gt;nevent1q…0xqd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:Yes, I&amp;#39;m aware, however they are closer to each other than UTC is to either :p.&lt;br/&gt;&lt;br/&gt;On September 18, 2015 4:31:28 PM EDT, Gregory Maxwell &amp;lt;gmaxwell at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;On Fri, Sep 18, 2015 at 8:27 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; Google Calendar is localized, but has an option to change the&lt;br/&gt;&amp;gt;timezone&lt;br/&gt;&amp;gt;&amp;gt; of an event, it just doesnt have UTC in its options. So, yes, we&lt;br/&gt;&amp;gt;should&lt;br/&gt;&amp;gt;&amp;gt; use something that observes DST in roughly the same way as everyone&lt;br/&gt;&amp;gt;else&lt;br/&gt;&amp;gt;&amp;gt; - CEST/PDT/EST/etc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;uh. There is fairly little global consistency in DST usage. Lots of&lt;br/&gt;&amp;gt;places do dst on different dates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;So if it&amp;#39;s in some DST timezone it&amp;#39;s likely to move twice each change&lt;br/&gt;&amp;gt;for some subset of the people who do it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;E.g. europe and US end DST one week apart.
    </content>
    <updated>2023-06-07T19:40:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp0jgefqqt7mu7e74rh7de24s25vmngx2h7ycgxw5c8t4dqyt6rtczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5v4jm6h</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp0jgefqqt7mu7e74rh7de24s25vmngx2h7ycgxw5c8t4dqyt6rtczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5v4jm6h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv32ynxh9en8pcvpvzhceq94q58zuu3lu7xmj996ryykszlsvpr7c9dtrtt&#39;&gt;nevent1q…trtt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:I believe that is out of date. I see neither UTC nor GMT on the website nor on Android.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On September 18, 2015 4:30:23 PM EDT, Jeffrey Paul &amp;lt;jp at eeqj.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On 18 Sep 2015, at 22:27, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Google Calendar is localized, but has an option to change the&lt;br/&gt;&amp;gt;timezone&lt;br/&gt;&amp;gt;&amp;gt; of an event, it just doesnt have UTC in its options. So, yes, we&lt;br/&gt;&amp;gt;should&lt;br/&gt;&amp;gt;&amp;gt; use something that observes DST in roughly the same way as everyone&lt;br/&gt;&amp;gt;else&lt;br/&gt;&amp;gt;&amp;gt; - CEST/PDT/EST/etc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;According to this post, it is possible to configure Google Calendar to&lt;br/&gt;&amp;gt;show an additional time zone to your localized one, and GMT/UTC is&lt;br/&gt;&amp;gt;indeed in the list.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    &lt;a href=&#34;https://productforums.google.com/forum/#!topic/calendar/y6uaiAdZrIg&#34;&gt;https://productforums.google.com/forum/#!topic/calendar/y6uaiAdZrIg&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;-jp&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;--&lt;br/&gt;&amp;gt;Jeffrey Paul                                                      EEQJ&lt;br/&gt;&amp;gt;jp at eeqj.com                                           &lt;a href=&#34;https://eeqj.com&#34;&gt;https://eeqj.com&lt;/a&gt;&lt;br/&gt;&amp;gt;&#43;1-800-403-1126 (America)                  &#43;1-312-361-0355 (Worldwide)&lt;br/&gt;&amp;gt;5539 AD00 DE4C 42F3 AFE1                      1575 0524 43F4 DF2A 55C2
    </content>
    <updated>2023-06-07T19:40:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2qpwzlwm9k4sz0k4e2a5f7rrjd4zg4fashn2v7hcn94gg2xykn9czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5s7sumc</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:Google ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2qpwzlwm9k4sz0k4e2a5f7rrjd4zg4fashn2v7hcn94gg2xykn9czyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5s7sumc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxdsrg3m83x9qrahe37mdqxzmr29mcl3hvrfthsdkprnrza83hlvcfajudh&#39;&gt;nevent1q…judh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:Google Calendar is localized, but has an option to change the timezone&lt;br/&gt;of an event, it just doesnt have UTC in its options. So, yes, we should&lt;br/&gt;use something that observes DST in roughly the same way as everyone else&lt;br/&gt;- CEST/PDT/EST/etc.&lt;br/&gt;&lt;br/&gt;On 09/18/15 20:24, Btc Drak wrote:&lt;br/&gt;&amp;gt; Google calendar is localised, so it doesn&amp;#39;t matter. The problem with&lt;br/&gt;&amp;gt; quoting UTC anyway it the meeting times are going to change for those&lt;br/&gt;&amp;gt; that observe DST. It would be much better to quote an actual timezone of&lt;br/&gt;&amp;gt; an actual area so it will remain constant, like 1700 CEST, or 0900AM PDT&lt;br/&gt;&amp;gt; for example. Otherwise when the clocks change, what was a convenient&lt;br/&gt;&amp;gt; meeting time will become inconvenient for some.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Fri, Sep 18, 2015 at 9:14 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Generally in favor, but for practical purposes can we select a timezone&lt;br/&gt;&amp;gt;     that is available in Google Calendar? It appears it does not directly&lt;br/&gt;&amp;gt;     support UTC...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On 09/18/15 01:07, Wladimir J. van der Laan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;     &amp;gt; Hello,&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; At Monday&amp;#39;s code sprint we had a good idea to schedule a regular&lt;br/&gt;&amp;gt;     developer meeting in #bitcoin-dev.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Attendance is of course voluntary, but it may be good to have a&lt;br/&gt;&amp;gt;     time that many people are expected to be present and current issues&lt;br/&gt;&amp;gt;     can be discussed.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Any preference for days/times?&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; What about e.g. every week 15:00-16:00 UTC on Thursday?&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Wladimir&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;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     _______________________________________________&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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:40:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy0eejjlk3mr23367er832uush89ajyanywqm3lnklrec2nzc49cqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5d6yk30</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy0eejjlk3mr23367er832uush89ajyanywqm3lnklrec2nzc49cqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5d6yk30" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspkh28fxcujm9kfck8j4jx3zyj8utfj3quzc7a8hl8de50wzgc0uqxc5w9x&#39;&gt;nevent1q…5w9x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:Generally in favor, but for practical purposes can we select a timezone&lt;br/&gt;that is available in Google Calendar? It appears it does not directly&lt;br/&gt;support UTC...&lt;br/&gt;&lt;br/&gt;On 09/18/15 01:07, Wladimir J. van der Laan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; At Monday&amp;#39;s code sprint we had a good idea to schedule a regular developer meeting in #bitcoin-dev.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Attendance is of course voluntary, but it may be good to have a time that many people are expected to be present and current issues can be discussed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Any preference for days/times?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; What about e.g. every week 15:00-16:00 UTC on Thursday?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Wladimir&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:40:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx5n82prallenzm9s6vz7hn5dz2el4naam7m2ykkud3z6g0f92s7qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xdnzkf</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:I did ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx5n82prallenzm9s6vz7hn5dz2el4naam7m2ykkud3z6g0f92s7qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5xdnzkf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs94hnpfrje6zacdkt44anyx6x2t5k5jdk7vxde30e38vus5yq6mjsaqh6a9&#39;&gt;nevent1q…h6a9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:I did not intend to imply that there was agreement on a desire to&lt;br/&gt;schedule a second hardfork. My wording may have been a bit too loose.&lt;br/&gt;Instead, I believe there was much agreement that doing a short-term&lt;br/&gt;hardfork now, with many agreeing that a second would hopefully be&lt;br/&gt;entirely unnecessary/impossible, while others thought that a second&lt;br/&gt;would be necessary and would have to happen. While this may set up a&lt;br/&gt;similar controversy again in several years, I think everyone agreed that&lt;br/&gt;we cannot predict the future and I, personally, think none of us should&lt;br/&gt;be committing to a viewpoint for what should be done at that time.&lt;br/&gt;&lt;br/&gt;Personally, I think it is also critical that there be no messaging that&lt;br/&gt;people should rely on or assume there will be a future increase after a&lt;br/&gt;short-term bump (which I also do not believe people should be relying on&lt;br/&gt;now).&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 09/18/15 05:55, Mark Friedenbach wrote:&lt;br/&gt;&amp;gt; Correction of a correction, in-line:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Sep 16, 2015 at 5:51 PM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     &amp;gt; - Many interested or at least willing to accept a &amp;#34;short term bump&amp;#34;, a&lt;br/&gt;&amp;gt;     &amp;gt; hard fork to modify block size limit regime to be cost-based via&lt;br/&gt;&amp;gt;     &amp;gt; &amp;#34;net-utxo&amp;#34; rather than a simple static hard limit.  2-4-8 and 17%/year&lt;br/&gt;&amp;gt;     &amp;gt; were debated and seemed &amp;#34;in range&amp;#34; with what might work as a short term&lt;br/&gt;&amp;gt;     &amp;gt; bump - net after applying the new cost metric.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I would be careful to point out that hard numbers were deliberately NOT&lt;br/&gt;&amp;gt;     discussed. Though some general things were thrown out, they were not&lt;br/&gt;&amp;gt;     extensively discussed nor agreed to. I personally think 2-4 is &amp;#34;in&lt;br/&gt;&amp;gt;     range&amp;#34;, though 8 maybe not so much. Of course it depends on exactly how&lt;br/&gt;&amp;gt;     the non-blocksize limit accounting/adjusting is done.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Still, the &amp;#34;greatest common denominator&amp;#34; agreement did not seem to be&lt;br/&gt;&amp;gt;     agreeing to an increase which continues over time, but which instead&lt;br/&gt;&amp;gt;     limits itself to a set, smooth increase for X time and then requires a&lt;br/&gt;&amp;gt;     second hardfork if there is agreement on a need for more blocksize at&lt;br/&gt;&amp;gt;     that point.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Perhaps it is accurate to say that there wasn&amp;#39;t consensus at all except&lt;br/&gt;&amp;gt; that (1) we think we can work together on resolving this impasse (yay!),&lt;br/&gt;&amp;gt; and (2) it is conceivable that changing from block size to some other&lt;br/&gt;&amp;gt; metric might provide the basis for a compromise on near-term numbers.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As an example, I do not think the net-UTXO metric provides any benefit&lt;br/&gt;&amp;gt; with respect to scalability, and in some ways makes the situation worse&lt;br/&gt;&amp;gt; (even though it helpfully solves an unrelated problem of spammy dust&lt;br/&gt;&amp;gt; outputs). But there are other possible metrics and I maintain hope that&lt;br/&gt;&amp;gt; data will show the benefit of another metric or other metrics combined&lt;br/&gt;&amp;gt; with net-UTXO in a way that will allow us to reach consensus.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As a further example, I also am quite concerned about 2-4-8MB with&lt;br/&gt;&amp;gt; either block size or net-UTXO as the base metric. As you say, it depends&lt;br/&gt;&amp;gt; on how the non-blocksize limit accounting/adjusting is done... But if a&lt;br/&gt;&amp;gt; metric were chosen that addressed my concerns (worst case propagation&lt;br/&gt;&amp;gt; and validation time), then I could be in favor of an initial bump that&lt;br/&gt;&amp;gt; allowed a larger number of typical transactions in a block.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; But where I really need to disagree is on the requirement for a 2nd hard&lt;br/&gt;&amp;gt; fork. I will go on record as being definitively against this. While&lt;br/&gt;&amp;gt; being conservative with respect to exponentials, I would very much like&lt;br/&gt;&amp;gt; to make sure that there is a long-term growth curve as part of any&lt;br/&gt;&amp;gt; proposal. I am willing to accept a hard-fork if the adopted plan is too&lt;br/&gt;&amp;gt; conservative, but I do not want to be kicking the can down the road to a&lt;br/&gt;&amp;gt; scheduled 2nd hard fork that absolutely must occur. That, I feel, could&lt;br/&gt;&amp;gt; be a more dangerous outcome than an exponential that outlasts&lt;br/&gt;&amp;gt; conservative historical trends.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I commend Jeff for writing a Chatham-rules summary of the outcome of&lt;br/&gt;&amp;gt; some hallway conversations that occurred. On the whole I think his&lt;br/&gt;&amp;gt; summary does represent the majority view of the opinions expressed by&lt;br/&gt;&amp;gt; core developers at the workshop. I will caution though that on nearly&lt;br/&gt;&amp;gt; every issue there were those expressed disagreement but did not fight&lt;br/&gt;&amp;gt; the issue, and those who said nothing and left unpolled opinions.&lt;br/&gt;&amp;gt; Nevertheless this summary is informative as it feeds forwards into the&lt;br/&gt;&amp;gt; design of proposals that will be made prior to the Hong Kong workshop in&lt;br/&gt;&amp;gt; December, in order that they have a higher likelihood of success.
    </content>
    <updated>2023-06-07T19:40:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstq7fgrymgvsj3e8zaggjgmxptlhq5wgdlk2leax3pt23vyye4ckqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5s04xg8</id>
    
      <title type="html">📅 Original date posted:2015-09-16 📝 Original message:I only ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstq7fgrymgvsj3e8zaggjgmxptlhq5wgdlk2leax3pt23vyye4ckqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5s04xg8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst3hhg2yweecwtuj8cstktux8snpnqe082qffq0tl8ckgf4scfu3qsevsx4&#39;&gt;nevent1q…vsx4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-16&lt;br/&gt;📝 Original message:I only have one &amp;#34;correction&amp;#34;, included inline.&lt;br/&gt;&lt;br/&gt;On 09/16/15 21:32, Jeff Garzik via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; During Scaling Bitcoin, Bitcoin Core committers and notable contributors&lt;br/&gt;&amp;gt; got together and chatted about where a &amp;#34;greatest common denominator&amp;#34;&lt;br/&gt;&amp;gt; type consensus might be.  The following is a without-attribution&lt;br/&gt;&amp;gt; (Chatham House) summary.  This is my own personal summary of the chat;&lt;br/&gt;&amp;gt; any errors are my own; this is _not_ a consensus statement or anything&lt;br/&gt;&amp;gt; formal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Background (pre-conference, was on public IRC): &amp;#34;net-utxo&amp;#34;,&lt;br/&gt;&amp;gt; calculating transaction size within block by applying a delta to&lt;br/&gt;&amp;gt; transaction size based on the amount of data added, or removed, from the&lt;br/&gt;&amp;gt; UTXO set.  Fee is then evaluated after the delta is applied.  This&lt;br/&gt;&amp;gt; aligns user incentives with UTXO resource usage/cost.  Original idea by&lt;br/&gt;&amp;gt; gmaxwell (and others??).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - Many interested or at least willing to accept a &amp;#34;short term bump&amp;#34;, a&lt;br/&gt;&amp;gt; hard fork to modify block size limit regime to be cost-based via&lt;br/&gt;&amp;gt; &amp;#34;net-utxo&amp;#34; rather than a simple static hard limit.  2-4-8 and 17%/year&lt;br/&gt;&amp;gt; were debated and seemed &amp;#34;in range&amp;#34; with what might work as a short term&lt;br/&gt;&amp;gt; bump - net after applying the new cost metric.&lt;br/&gt;&lt;br/&gt;I would be careful to point out that hard numbers were deliberately NOT&lt;br/&gt;discussed. Though some general things were thrown out, they were not&lt;br/&gt;extensively discussed nor agreed to. I personally think 2-4 is &amp;#34;in&lt;br/&gt;range&amp;#34;, though 8 maybe not so much. Of course it depends on exactly how&lt;br/&gt;the non-blocksize limit accounting/adjusting is done.&lt;br/&gt;&lt;br/&gt;Still, the &amp;#34;greatest common denominator&amp;#34; agreement did not seem to be&lt;br/&gt;agreeing to an increase which continues over time, but which instead&lt;br/&gt;limits itself to a set, smooth increase for X time and then requires a&lt;br/&gt;second hardfork if there is agreement on a need for more blocksize at&lt;br/&gt;that point.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; - Hard fork method:  Leaning towards &amp;#34;if (timestamp &amp;gt; X)&amp;#34; flag day hard&lt;br/&gt;&amp;gt; fork Y months in the future.  Set high bit in version, resulting in a&lt;br/&gt;&amp;gt; negative number, to more cleanly fork away.  &amp;#34;miner advisement&amp;#34; -&lt;br/&gt;&amp;gt; miners, as they&amp;#39;ve done recently, signal non-binding (Bitcoin Core does&lt;br/&gt;&amp;gt; not examine the value) engineering readiness for a hard fork via&lt;br/&gt;&amp;gt; coinbase moniker.  Some fork cancellation method is useful, if&lt;br/&gt;&amp;gt; unsuccessful after Z time elapses.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - As discussed publicly elsewhere, other forks may be signaled via&lt;br/&gt;&amp;gt; setting a bit in version, and then triggering a fork&amp;#39;ing change once a&lt;br/&gt;&amp;gt; threshold is reached.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Chat participants are invited to reply to this message with their own&lt;br/&gt;&amp;gt; corrections and comments and summary in their view.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For the wider community, take this as one of many &amp;#34;inputs&amp;#34; described at&lt;br/&gt;&amp;gt; Scaling Bitcoin.  Over the next few months developers and the community&lt;br/&gt;&amp;gt; should evaluate everything discussed and work towards some concrete&lt;br/&gt;&amp;gt; proposal(s) that are implemented, tested and simulated in December in&lt;br/&gt;&amp;gt; Hong Kong.
    </content>
    <updated>2023-06-07T19:40:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqjp424fnv795jxmj9v7m6v4gsy4e3y693xzx96akjn5kvwvdav9qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5h3fxue</id>
    
      <title type="html">📅 Original date posted:2015-08-24 📝 Original message:Its ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqjp424fnv795jxmj9v7m6v4gsy4e3y693xzx96akjn5kvwvdav9qzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5h3fxue" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ft2vyj3evwtn8y9krwepdw2an7da6ykquy3tf537alrm9laf97qrs6j4c&#39;&gt;nevent1q…6j4c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-24&lt;br/&gt;📝 Original message:Its more of a statement of &amp;#34;in the future, we expect things to happen&lt;br/&gt;which would make this an interesting thing to do, so we state here that&lt;br/&gt;it is not against spec to do so&amp;#34;. Could reword it as &amp;#34;NODE_BLOOM is&lt;br/&gt;distinct from NODE_NETWORK, and it is legal to advertise NODE_BLOOM but&lt;br/&gt;not NODE_NETWORK (though there is little reason to do so now, some&lt;br/&gt;proposals may make this more useful in the future)&amp;#34;?&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 08/24/15 15:29, Wladimir J. van der Laan wrote:&lt;br/&gt;&amp;gt;&amp;gt; NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;&amp;gt;&amp;gt; NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;&amp;gt;&amp;gt; which, nonetheless, provide filtered access to the data which they do have).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; But is this useful without having decided on a way to signal which blocks pruned nodes do have?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It looks like the part between paranthesis is speculation and should be left to a future BIP. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Wladimir&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyhr6k3cf04tex4r25l3prjjatq4te832xxswkrky3xte2jas39hqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vpdl68</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyhr6k3cf04tex4r25l3prjjatq4te832xxswkrky3xte2jas39hqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vpdl68" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdh5wg6aj0jkm6d6seurs6cuwf2r4dllxr4py3vvfm2rvnft8uugcnmsn2k&#39;&gt;nevent1q…sn2k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:The proposal will not break any existing clients in the first release.&lt;br/&gt;After sufficient time to upgrade SPV clients, a new version will be&lt;br/&gt;released which will result in older SPV clients finding themselves&lt;br/&gt;disconnected from peers when they send filter* commands, so they can go&lt;br/&gt;find other peers which do support bloom filtering.&lt;br/&gt;&lt;br/&gt;On 08/21/15 05:48, Jeff Garzik wrote:&lt;br/&gt;&amp;gt; If this is widely deployed &#43; enabled, what is the impact to current&lt;br/&gt;&amp;gt; wallets in use?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Fri, Aug 21, 2015 at 12:46 AM, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Peter: Since I stole most of this text from your old BIP, should I leave&lt;br/&gt;&amp;gt;     you as an author?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     BIP: ?&lt;br/&gt;&amp;gt;     Title: NODE_BLOOM service bit&lt;br/&gt;&amp;gt;     Author: Matt Corallo &amp;lt;bip at bluematt.me &amp;lt;mailto:bip at bluematt.me&amp;gt;&amp;gt;,&lt;br/&gt;&amp;gt;     Peter Todd &amp;lt;pete at petertodd.org &amp;lt;mailto:pete at petertodd.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;     Type: Standards Track (draft)&lt;br/&gt;&amp;gt;     Created: 20-08-2015&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Abstract&lt;br/&gt;&amp;gt;     ========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     This BIP extends BIP 37, Connection Bloom filtering, by defining a&lt;br/&gt;&amp;gt;     service bit to allow peers to advertise that they support bloom filters&lt;br/&gt;&amp;gt;     explicitly. It also bumps the protocol version to allow peers to&lt;br/&gt;&amp;gt;     identify old nodes which allow bloom filtering of the connection despite&lt;br/&gt;&amp;gt;     lacking the new service bit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Motivation&lt;br/&gt;&amp;gt;     ==========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt;     implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt;     However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt;     implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt;     to no privacy, as well as being a large DoS risk on some nodes. Thus,&lt;br/&gt;&amp;gt;     allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt;     much-needed feature.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Specification&lt;br/&gt;&amp;gt;     =============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     The following protocol bit is added:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;         NODE_BLOOM = (1 &amp;lt;&amp;lt; 2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Nodes which support bloom filters should set that protocol bit.&lt;br/&gt;&amp;gt;     Otherwise it should remain unset. In addition the protocol version is&lt;br/&gt;&amp;gt;     increased from 70002 to 70011 in the reference implementation. It is&lt;br/&gt;&amp;gt;     often the case that nodes which have a protocol version smaller than&lt;br/&gt;&amp;gt;     70011, but larger than 70000 support bloom filtered connections without&lt;br/&gt;&amp;gt;     the NODE_BLOOM bit set, however clients which require bloom filtered&lt;br/&gt;&amp;gt;     connections should avoid making this assumption.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;&amp;gt;     NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;&amp;gt;     which, nonetheless, provide filtered access to the data which they&lt;br/&gt;&amp;gt;     do have).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If a node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;gt;     &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;&amp;gt;     disconnect that peer immediately. For backwards compatibility, in&lt;br/&gt;&amp;gt;     initial implementations, nodes may choose to only disconnect nodes which&lt;br/&gt;&amp;gt;     have the new protocol version set and attempt to send a filter command.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     While outside the scope of this BIP it is suggested that DNS seeds and&lt;br/&gt;&amp;gt;     other peer discovery mechanisms support the ability to specify the&lt;br/&gt;&amp;gt;     services required; current implementations simply check only that&lt;br/&gt;&amp;gt;     NODE_NETWORK is set.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Design rational&lt;br/&gt;&amp;gt;     ===============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     A service bit was chosen as applying a bloom filter is a service.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     The increase in protocol version is for backwards compatibility. In&lt;br/&gt;&amp;gt;     initial implementations, old nodes which are not yet aware of NODE_BLOOM&lt;br/&gt;&amp;gt;     and use a protocol version &amp;lt; 70011 may still send filter* messages to a&lt;br/&gt;&amp;gt;     node without NODE_BLOOM. This feature may be removed after there are&lt;br/&gt;&amp;gt;     sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&lt;br/&gt;&amp;gt;     allowing node operators to fully close the bloom-related DoS vectors.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Reference Implementation&lt;br/&gt;&amp;gt;     ========================&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Copyright&lt;br/&gt;&amp;gt;     =========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     This document is placed in the public domain.&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;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdyzqzpcyeja8auqsajyqs6pf7wmmgqewx976yx2uuhs28g7d4ceszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zplx0x</id>
    
      <title type="html">📅 Original date posted:2015-08-24 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdyzqzpcyeja8auqsajyqs6pf7wmmgqewx976yx2uuhs28g7d4ceszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5zplx0x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqkgxcwcygxd2fd9xkl929prwr9mehr7pw2waazel76ad3lnq4vaccyhlnc&#39;&gt;nevent1q…hlnc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-24&lt;br/&gt;📝 Original message:I&amp;#39;ll just quote what I said on github:&lt;br/&gt;&lt;br/&gt;Neither this pull nor the BIP has any stated intention of phasing out&lt;br/&gt;bloom filtering support in the protocol. As much as I&amp;#39;d love to, I 100%&lt;br/&gt;agree with @mikehearn here, that would break any ability of SPV clients&lt;br/&gt;to operate on the P2P network (either as a way to double-check&lt;br/&gt;centralized servers, or otherwise), and that is really not a good idea&lt;br/&gt;without a replacement in place. This pull/BIP DOES suggest we phase out&lt;br/&gt;REQUIRED bloom filtering support in the protocol - thereby fixing the&lt;br/&gt;peer selection of SPV clients in the face of btcd with some flags/many&lt;br/&gt;patched versions of Core/etc peers, providing a remedy for a potential&lt;br/&gt;DoS attack, etc.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 08/24/15 15:19, Tom Harding via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On 8/21/2015 3:06 PM, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; On Fri, Aug 21, 2015 at 05:55:58PM &#43;0000, Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Anyone have the best reference for the DoS issues?&lt;br/&gt;&amp;gt;&amp;gt; Well actually, we can reference the DoS attacks that Bitcoin XT nodes&lt;br/&gt;&amp;gt;&amp;gt; are undergoing right now - part of the attack is repeated Bloom filter&lt;br/&gt;&amp;gt;&amp;gt; requests to soak up disk IO bandwidth.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So, to summarize, someone is attacking Mike Hearn&amp;#39;s bitcoin fork. &lt;br/&gt;&amp;gt; Therefore, now is the perfect time to write a BIP and author changes&lt;br/&gt;&amp;gt; that begin the process of dropping support for the most broadly&lt;br/&gt;&amp;gt; successful class of wallets, which Mike Hearn&amp;#39;s SPV client library enables.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgypk0tnnkz5hcre7tyrn5xwjekkvs72aj0985g2spxwspasz5dlczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5jm5tyg</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:BIP ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgypk0tnnkz5hcre7tyrn5xwjekkvs72aj0985g2spxwspasz5dlczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5jm5tyg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdyzqzpcyeja8auqsajyqs6pf7wmmgqewx976yx2uuhs28g7d4cesmtyjja&#39;&gt;nevent1q…yjja&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:BIP Editor: Can I get a BIP # for this?&lt;br/&gt;&lt;br/&gt;On 08/21/15 17:55, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Revised copy follows. re: mentioning the HTTP seeding stuff, I&amp;#39;m not&lt;br/&gt;&amp;gt; sure we want to encourage more people aside from bitcoinj to use&lt;br/&gt;&amp;gt; that...I thought about adding a DNS seed section to this bip, but&lt;br/&gt;&amp;gt; decided against it...still, I think we should add the option to select&lt;br/&gt;&amp;gt; service bits to DNS seeds ASAP.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Re: need to &amp;#34;shard&amp;#34; the blockchain: not sure what you&amp;#39;re referring to&lt;br/&gt;&amp;gt; here. The bloom filter stuff requires you to download the chain&lt;br/&gt;&amp;gt; in-order, sure, but you have to do that for headers anyway, and&lt;br/&gt;&amp;gt; hopefully your total data isnt too much more than headers alone.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyone have the best reference for the DoS issues?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP: ?&lt;br/&gt;&amp;gt; Title: NODE_BLOOM service bit&lt;br/&gt;&amp;gt; Author: Matt Corallo &amp;lt;bip at bluematt.me&amp;gt;, Peter Todd &amp;lt;pete at petertodd.org&amp;gt;&lt;br/&gt;&amp;gt; Type: Standards Track (draft)&lt;br/&gt;&amp;gt; Created: 20-08-2015&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Abstract&lt;br/&gt;&amp;gt; ========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This BIP extends BIP 37, Connection Bloom filtering, by defining a&lt;br/&gt;&amp;gt; service bit to allow peers to advertise that they support bloom filters&lt;br/&gt;&amp;gt; explicitly. It also bumps the protocol version to allow peers to&lt;br/&gt;&amp;gt; identify old nodes which allow bloom filtering of the connection despite&lt;br/&gt;&amp;gt; lacking the new service bit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt; ==========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt; to no privacy[1], as well as being a large DoS risk on some nodes[2].&lt;br/&gt;&amp;gt; Thus, allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Specification&lt;br/&gt;&amp;gt; =============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The following protocol bit is added:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     NODE_BLOOM = (1 &amp;lt;&amp;lt; 2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Nodes which support bloom filters should set that protocol bit.&lt;br/&gt;&amp;gt; Otherwise it should remain unset. In addition the protocol version is&lt;br/&gt;&amp;gt; increased from 70002 to 70011 in the reference implementation. It is&lt;br/&gt;&amp;gt; often the case that nodes which have a protocol version smaller than&lt;br/&gt;&amp;gt; 70011, but larger than 70000 support bloom filtered connections without&lt;br/&gt;&amp;gt; the NODE_BLOOM bit set, however clients which require bloom filtered&lt;br/&gt;&amp;gt; connections should avoid making this assumption.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;&amp;gt; NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;&amp;gt; which, nonetheless, provide filtered access to the data which they do have).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If a node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;gt; &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;&amp;gt; disconnect that peer immediately. For backwards compatibility, in&lt;br/&gt;&amp;gt; initial implementations, nodes may choose to only disconnect nodes which&lt;br/&gt;&amp;gt; have the new protocol version set and attempt to send a filter command.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While outside the scope of this BIP it is suggested that DNS seeds and&lt;br/&gt;&amp;gt; other peer discovery mechanisms support the ability to specify the&lt;br/&gt;&amp;gt; services required; current implementations simply check only that&lt;br/&gt;&amp;gt; NODE_NETWORK is set.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Design rational&lt;br/&gt;&amp;gt; ===============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A service bit was chosen as applying a bloom filter is a service.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The increase in protocol version is for backwards compatibility. In&lt;br/&gt;&amp;gt; initial implementations, old nodes which are not yet aware of NODE_BLOOM&lt;br/&gt;&amp;gt; and use a protocol version &amp;lt; 70011 may still send filter* messages to a&lt;br/&gt;&amp;gt; node without NODE_BLOOM. This feature may be removed after there are&lt;br/&gt;&amp;gt; sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&lt;br/&gt;&amp;gt; allowing node operators to fully close the bloom-related DoS vectors.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reference Implementation&lt;br/&gt;&amp;gt; ========================&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Copyright&lt;br/&gt;&amp;gt; =========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This document is placed in the public domain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; References&lt;br/&gt;&amp;gt; ==========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;http://eprint.iacr.org/2014/763&#34;&gt;http://eprint.iacr.org/2014/763&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] ???? is one example where the issues were found, though others&lt;br/&gt;&amp;gt; independently discovered issues as well. Sample DoS exploit code&lt;br/&gt;&amp;gt; available at &lt;a href=&#34;https://github.com/petertodd/bloom-io-attack&#34;&gt;https://github.com/petertodd/bloom-io-attack&lt;/a&gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 08/21/15 05:42, Peter Todd wrote:&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Aug 20, 2015 at 10:38:19PM -0700, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ==========&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to no privacy, as well as being a large DoS risk on some nodes. Thus,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;d reference that paper on bloom filters re: the &amp;#34;little to no privacy&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; issue. There&amp;#39;s also a post in the bitcoinj mailing list somewhere IIRC&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; talking about the default settings, and how they don&amp;#39;t provide any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; privacy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Oh, and we should also point out that Bloom filters have scaling issues,&lt;br/&gt;&amp;gt;&amp;gt; as each application of the filter has to scan the whole blockchain -&lt;br/&gt;&amp;gt;&amp;gt; with future blocksize increases these issues increase, in some proposals&lt;br/&gt;&amp;gt;&amp;gt; quite dramatically. The underlying idea also conflicts with some&lt;br/&gt;&amp;gt;&amp;gt; proposals to &amp;#34;shard&amp;#34; the blockchain, again suggesting that we need a bit&lt;br/&gt;&amp;gt;&amp;gt; to handle future upgrades to more scalable designs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0n7e5xleyzpm6nguea7g40a5tct3qfd5h3pkeu3lr29tmzly5q9gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vanfsp</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0n7e5xleyzpm6nguea7g40a5tct3qfd5h3pkeu3lr29tmzly5q9gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5vanfsp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0f5pcsvzfwep55gc0z8q2kr0yvz5newn73mjrylc7vmp2vyejp9qadfwmx&#39;&gt;nevent1q…fwmx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:On 08/21/15 22:06, Peter Todd wrote:&lt;br/&gt;&amp;gt; On Fri, Aug 21, 2015 at 05:55:58PM &#43;0000, Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt; Revised copy follows. re: mentioning the HTTP seeding stuff, I&amp;#39;m not&lt;br/&gt;&amp;gt;&amp;gt; sure we want to encourage more people aside from bitcoinj to use&lt;br/&gt;&amp;gt;&amp;gt; that...I thought about adding a DNS seed section to this bip, but&lt;br/&gt;&amp;gt;&amp;gt; decided against it...still, I think we should add the option to select&lt;br/&gt;&amp;gt;&amp;gt; service bits to DNS seeds ASAP.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Well, in general relying on seeds every time you start your node is a&lt;br/&gt;&amp;gt; really bad idea; doing so much be carefully weighed against the&lt;br/&gt;&amp;gt; downsides and should be used only as a last resort. Nodes should be&lt;br/&gt;&amp;gt; doing caching and proper gossip protocol participation whenever&lt;br/&gt;&amp;gt; possible. (note how bitcoinj nodes *do* rely on centralized servers,&lt;br/&gt;&amp;gt; implemented with an unauthenticated, unencrypted, protocol - the worst&lt;br/&gt;&amp;gt; of all possible solutions with many possible MITM vectors and privacy&lt;br/&gt;&amp;gt; security holes)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To that end, I&amp;#39;d be inclined to leave the DNS seed protocol as it is and&lt;br/&gt;&amp;gt; let others solve the centralized server use-case, for which Cartographer&lt;br/&gt;&amp;gt; isn&amp;#39;t all that bad of a load balancing mechanism. Also as gmaxwell noted&lt;br/&gt;&amp;gt; on IRC, adding flag bits does have privacy implications.&lt;br/&gt;&lt;br/&gt;Had a discussion on IRC and with Pieter, and I kinda agree that the more&lt;br/&gt;optimal way is for DNS seeds to, instead of returning NODE_NETWORK&lt;br/&gt;nodes, return any node which responds to getaddr, allowing clients to&lt;br/&gt;connect to a few DNS seeds by name, do a getaddr, then disconnect (like&lt;br/&gt;Bitcoin Core does now if you&amp;#39;re using Tor). They can then select the&lt;br/&gt;peers they want based on nServices.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Re: need to &amp;#34;shard&amp;#34; the blockchain: not sure what you&amp;#39;re referring to&lt;br/&gt;&amp;gt;&amp;gt; here. The bloom filter stuff requires you to download the chain&lt;br/&gt;&amp;gt;&amp;gt; in-order, sure, but you have to do that for headers anyway, and&lt;br/&gt;&amp;gt;&amp;gt; hopefully your total data isnt too much more than headers alone.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Any protocol change that would split blocks themselves into multiples.&lt;br/&gt;&amp;gt; Not an easy problem to solve, but given the inherent O(n^2) scaling of&lt;br/&gt;&amp;gt; global consensus blockchains, it&amp;#39;s the only kind of solution that could&lt;br/&gt;&amp;gt; in the future make the blockchain itself have reasonable scalability.&lt;br/&gt;&lt;br/&gt;Meh, whatever, justification is already provided well enough without&lt;br/&gt;having to go into &amp;#34;but if we did this long into the future&amp;#34;  arguments.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Anyone have the best reference for the DoS issues?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Well actually, we can reference the DoS attacks that Bitcoin XT nodes&lt;br/&gt;&amp;gt; are undergoing right now - part of the attack is repeated Bloom filter&lt;br/&gt;&amp;gt; requests to soak up disk IO bandwidth. I&amp;#39;ve CC&amp;#39;d Gavin and Mike - as far&lt;br/&gt;&amp;gt; as I know they haven&amp;#39;t published details of those attacks - a write-up&lt;br/&gt;&amp;gt; would be very helpful.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While so far those are being directed only at XT nodes, obviously this&lt;br/&gt;&amp;gt; is a potential issue for Core nodes as well. Like I mentioned last time&lt;br/&gt;&amp;gt; around, it&amp;#39;s critical that miners aren&amp;#39;t affected by these attacks -&lt;br/&gt;&amp;gt; nodes simply serving SPV wallet clients are much less latency sensitive,&lt;br/&gt;&amp;gt; so a good DoS attack mitigation strategy would be to have the two&lt;br/&gt;&amp;gt; classes of nodes out there &amp;#34;in the wild&amp;#34;&lt;br/&gt;&lt;br/&gt;Ehh, I was going more for the oldest mention.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; BIP: ?&lt;br/&gt;&amp;gt;&amp;gt; Title: NODE_BLOOM service bit&lt;br/&gt;&amp;gt;&amp;gt; Author: Matt Corallo &amp;lt;bip at bluematt.me&amp;gt;, Peter Todd &amp;lt;pete at petertodd.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Type: Standards Track (draft)&lt;br/&gt;&amp;gt;&amp;gt; Created: 20-08-2015&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Abstract&lt;br/&gt;&amp;gt;&amp;gt; ========&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This BIP extends BIP 37, Connection Bloom filtering, by defining a&lt;br/&gt;&amp;gt;&amp;gt; service bit to allow peers to advertise that they support bloom filters&lt;br/&gt;&amp;gt;&amp;gt; explicitly. It also bumps the protocol version to allow peers to&lt;br/&gt;&amp;gt;&amp;gt; identify old nodes which allow bloom filtering of the connection despite&lt;br/&gt;&amp;gt;&amp;gt; lacking the new service bit.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt;&amp;gt; ==========&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt;&amp;gt; to no privacy[1], as well as being a large DoS risk on some nodes[2].&lt;br/&gt;&amp;gt;&amp;gt; Thus, allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Specification&lt;br/&gt;&amp;gt;&amp;gt; =============&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The following protocol bit is added:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     NODE_BLOOM = (1 &amp;lt;&amp;lt; 2)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Nodes which support bloom filters should set that protocol bit.&lt;br/&gt;&amp;gt;&amp;gt; Otherwise it should remain unset. In addition the protocol version is&lt;br/&gt;&amp;gt;&amp;gt; increased from 70002 to 70011 in the reference implementation. It is&lt;br/&gt;&amp;gt;&amp;gt; often the case that nodes which have a protocol version smaller than&lt;br/&gt;&amp;gt;&amp;gt; 70011, but larger than 70000 support bloom filtered connections without&lt;br/&gt;&amp;gt;&amp;gt; the NODE_BLOOM bit set, however clients which require bloom filtered&lt;br/&gt;&amp;gt;&amp;gt; connections should avoid making this assumption.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;&amp;gt;&amp;gt; NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;&amp;gt;&amp;gt; which, nonetheless, provide filtered access to the data which they do have).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If a node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;&amp;gt;&amp;gt; disconnect that peer immediately. For backwards compatibility, in&lt;br/&gt;&amp;gt;&amp;gt; initial implementations, nodes may choose to only disconnect nodes which&lt;br/&gt;&amp;gt;&amp;gt; have the new protocol version set and attempt to send a filter command.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While outside the scope of this BIP it is suggested that DNS seeds and&lt;br/&gt;&amp;gt;&amp;gt; other peer discovery mechanisms support the ability to specify the&lt;br/&gt;&amp;gt;&amp;gt; services required; current implementations simply check only that&lt;br/&gt;&amp;gt;&amp;gt; NODE_NETWORK is set.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Design rational&lt;br/&gt;&amp;gt;&amp;gt; ===============&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A service bit was chosen as applying a bloom filter is a service.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The increase in protocol version is for backwards compatibility. In&lt;br/&gt;&amp;gt;&amp;gt; initial implementations, old nodes which are not yet aware of NODE_BLOOM&lt;br/&gt;&amp;gt;&amp;gt; and use a protocol version &amp;lt; 70011 may still send filter* messages to a&lt;br/&gt;&amp;gt;&amp;gt; node without NODE_BLOOM. This feature may be removed after there are&lt;br/&gt;&amp;gt;&amp;gt; sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&lt;br/&gt;&amp;gt;&amp;gt; allowing node operators to fully close the bloom-related DoS vectors.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Reference Implementation&lt;br/&gt;&amp;gt;&amp;gt; ========================&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Copyright&lt;br/&gt;&amp;gt;&amp;gt; =========&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This document is placed in the public domain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; References&lt;br/&gt;&amp;gt;&amp;gt; ==========&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;http://eprint.iacr.org/2014/763&#34;&gt;http://eprint.iacr.org/2014/763&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] ???? is one example where the issues were found, though others&lt;br/&gt;&amp;gt;&amp;gt; independently discovered issues as well. Sample DoS exploit code&lt;br/&gt;&amp;gt;&amp;gt; available at &lt;a href=&#34;https://github.com/petertodd/bloom-io-attack&#34;&gt;https://github.com/petertodd/bloom-io-attack&lt;/a&gt;.&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:34&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrkrnnxhwg0v5nu3fh9sxck8gduae35axx2yexlmtxm49gzsavakszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5cyu3h8</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrkrnnxhwg0v5nu3fh9sxck8gduae35axx2yexlmtxm49gzsavakszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5cyu3h8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqmkmx25tjrenyjm3rrwy5ae4fhjdn9qc6lln768pntludaj8g9dglwp3cp&#39;&gt;nevent1q…p3cp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:Revised copy follows. re: mentioning the HTTP seeding stuff, I&amp;#39;m not&lt;br/&gt;sure we want to encourage more people aside from bitcoinj to use&lt;br/&gt;that...I thought about adding a DNS seed section to this bip, but&lt;br/&gt;decided against it...still, I think we should add the option to select&lt;br/&gt;service bits to DNS seeds ASAP.&lt;br/&gt;&lt;br/&gt;Re: need to &amp;#34;shard&amp;#34; the blockchain: not sure what you&amp;#39;re referring to&lt;br/&gt;here. The bloom filter stuff requires you to download the chain&lt;br/&gt;in-order, sure, but you have to do that for headers anyway, and&lt;br/&gt;hopefully your total data isnt too much more than headers alone.&lt;br/&gt;&lt;br/&gt;Anyone have the best reference for the DoS issues?&lt;br/&gt;&lt;br/&gt;BIP: ?&lt;br/&gt;Title: NODE_BLOOM service bit&lt;br/&gt;Author: Matt Corallo &amp;lt;bip at bluematt.me&amp;gt;, Peter Todd &amp;lt;pete at petertodd.org&amp;gt;&lt;br/&gt;Type: Standards Track (draft)&lt;br/&gt;Created: 20-08-2015&lt;br/&gt;&lt;br/&gt;Abstract&lt;br/&gt;========&lt;br/&gt;&lt;br/&gt;This BIP extends BIP 37, Connection Bloom filtering, by defining a&lt;br/&gt;service bit to allow peers to advertise that they support bloom filters&lt;br/&gt;explicitly. It also bumps the protocol version to allow peers to&lt;br/&gt;identify old nodes which allow bloom filtering of the connection despite&lt;br/&gt;lacking the new service bit.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Motivation&lt;br/&gt;==========&lt;br/&gt;&lt;br/&gt;BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;implemented in several clients today, has been shown to provide little&lt;br/&gt;to no privacy[1], as well as being a large DoS risk on some nodes[2].&lt;br/&gt;Thus, allowing node operators to disable connection bloom filtering is a&lt;br/&gt;much-needed feature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Specification&lt;br/&gt;=============&lt;br/&gt;&lt;br/&gt;The following protocol bit is added:&lt;br/&gt;&lt;br/&gt;    NODE_BLOOM = (1 &amp;lt;&amp;lt; 2)&lt;br/&gt;&lt;br/&gt;Nodes which support bloom filters should set that protocol bit.&lt;br/&gt;Otherwise it should remain unset. In addition the protocol version is&lt;br/&gt;increased from 70002 to 70011 in the reference implementation. It is&lt;br/&gt;often the case that nodes which have a protocol version smaller than&lt;br/&gt;70011, but larger than 70000 support bloom filtered connections without&lt;br/&gt;the NODE_BLOOM bit set, however clients which require bloom filtered&lt;br/&gt;connections should avoid making this assumption.&lt;br/&gt;&lt;br/&gt;NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;which, nonetheless, provide filtered access to the data which they do have).&lt;br/&gt;&lt;br/&gt;If a node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;disconnect that peer immediately. For backwards compatibility, in&lt;br/&gt;initial implementations, nodes may choose to only disconnect nodes which&lt;br/&gt;have the new protocol version set and attempt to send a filter command.&lt;br/&gt;&lt;br/&gt;While outside the scope of this BIP it is suggested that DNS seeds and&lt;br/&gt;other peer discovery mechanisms support the ability to specify the&lt;br/&gt;services required; current implementations simply check only that&lt;br/&gt;NODE_NETWORK is set.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Design rational&lt;br/&gt;===============&lt;br/&gt;&lt;br/&gt;A service bit was chosen as applying a bloom filter is a service.&lt;br/&gt;&lt;br/&gt;The increase in protocol version is for backwards compatibility. In&lt;br/&gt;initial implementations, old nodes which are not yet aware of NODE_BLOOM&lt;br/&gt;and use a protocol version &amp;lt; 70011 may still send filter* messages to a&lt;br/&gt;node without NODE_BLOOM. This feature may be removed after there are&lt;br/&gt;sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&lt;br/&gt;allowing node operators to fully close the bloom-related DoS vectors.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Reference Implementation&lt;br/&gt;========================&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Copyright&lt;br/&gt;=========&lt;br/&gt;&lt;br/&gt;This document is placed in the public domain.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;References&lt;br/&gt;==========&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;http://eprint.iacr.org/2014/763&#34;&gt;http://eprint.iacr.org/2014/763&lt;/a&gt;&lt;br/&gt;[2] ???? is one example where the issues were found, though others&lt;br/&gt;independently discovered issues as well. Sample DoS exploit code&lt;br/&gt;available at &lt;a href=&#34;https://github.com/petertodd/bloom-io-attack&#34;&gt;https://github.com/petertodd/bloom-io-attack&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On 08/21/15 05:42, Peter Todd wrote:&lt;br/&gt;&amp;gt; On Thu, Aug 20, 2015 at 10:38:19PM -0700, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==========&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to no privacy, as well as being a large DoS risk on some nodes. Thus,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d reference that paper on bloom filters re: the &amp;#34;little to no privacy&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; issue. There&amp;#39;s also a post in the bitcoinj mailing list somewhere IIRC&lt;br/&gt;&amp;gt;&amp;gt; talking about the default settings, and how they don&amp;#39;t provide any&lt;br/&gt;&amp;gt;&amp;gt; privacy.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Oh, and we should also point out that Bloom filters have scaling issues,&lt;br/&gt;&amp;gt; as each application of the filter has to scan the whole blockchain -&lt;br/&gt;&amp;gt; with future blocksize increases these issues increase, in some proposals&lt;br/&gt;&amp;gt; quite dramatically. The underlying idea also conflicts with some&lt;br/&gt;&amp;gt; proposals to &amp;#34;shard&amp;#34; the blockchain, again suggesting that we need a bit&lt;br/&gt;&amp;gt; to handle future upgrades to more scalable designs.&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:37:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyr55alwnu8y2r30wzat84hs3kv3qfrj7frw8adcn60rld37pg0nqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5nrzmyh</id>
    
      <title type="html">📅 Original date posted:2015-08-14 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyr55alwnu8y2r30wzat84hs3kv3qfrj7frw8adcn60rld37pg0nqzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5nrzmyh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgcjyf3qdmk3kl9epnwdfz8wr93tqv8xfsaxla0c4gp2dtf9e549gnsw0da&#39;&gt;nevent1q…w0da&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-14&lt;br/&gt;📝 Original message:On 08/14/15 00:47, Mark Friedenbach via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On Thu, Aug 13, 2015 at 4:42 PM, Joseph Poon via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I haven&amp;#39;t tested the details of this, but is there another bit available&lt;br/&gt;&amp;gt;     for use in the future for the relative blockheight?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I strongly believe that Lightning needs mitigations for a systemic&lt;br/&gt;&amp;gt;     supervillan attack which attemps to flood the network with transactions,&lt;br/&gt;&amp;gt;     which can hypothetically be mitigated with something like a timestop&lt;br/&gt;&amp;gt;     bit (as originally suggested by gmaxwell).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This proposal includes no such provision.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Since we talked about it, I spent considerable time thinking about the&lt;br/&gt;&amp;gt; supposed risk and proposed mitigations. I&amp;#39;m frankly not convinced that&lt;br/&gt;&amp;gt; it is a risk of high enough credibility to worry about, or if it is that&lt;br/&gt;&amp;gt; a protocol-level complication is worth doing.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The scenario as I understand it is a hub turns evil and tries to cheat&lt;br/&gt;&amp;gt; every single one of its users out of their bonds. Normally a lightning&lt;br/&gt;&amp;gt; user is protected form such behavior because they have time to broadcast&lt;br/&gt;&amp;gt; their own transactions spending part or all of the balance as fees.&lt;br/&gt;&lt;br/&gt;My concern is how the hell do you automate this? Having a threat of&lt;br/&gt;&amp;#34;well, everyone could update their software to a new version which will&lt;br/&gt;destroy all coins right now&amp;#34; is kinda useless, and trying to come up&lt;br/&gt;with a reasonable set of metrics as to how much and when you move from&lt;br/&gt;just paying the fee to destroying coins is really hard, especially if&lt;br/&gt;you assume the attacker is a miner with, say, enough hashrate (maybe&lt;br/&gt;rented) to get one or three blocks in the next day (the timeout period).&lt;br/&gt;&lt;br/&gt;&amp;gt; Therefore because of the threat of mutually assured destruction, the&lt;br/&gt;&amp;gt; optimal outcome is to be an honest participant.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; But, the argument goes, the hub has many channels with many different&lt;br/&gt;&amp;gt; people closing at the same time. So if the hub tries to cheat all of&lt;br/&gt;&amp;gt; them at once by DoS&amp;#39;ing the network, it can do so and spend more in fees&lt;br/&gt;&amp;gt; than any one participant stands to lose. My issue with this is that&lt;br/&gt;&amp;gt; users don&amp;#39;t act alone -- users can be assured that other users will&lt;br/&gt;&amp;gt; react, and all of them together have enough coins to burn to make the&lt;br/&gt;&amp;gt; attack unprofitable.&lt;br/&gt;&lt;br/&gt;Now users are coordinating quickly in an attack scenario?&lt;br/&gt;&lt;br/&gt;&amp;gt; The hub-cheats-many-users case really is the same&lt;br/&gt;&amp;gt; as the hub-cheats-one-user case if the users act out their role in&lt;br/&gt;&amp;gt; unison, which they don&amp;#39;t have to coordinate to do.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Other than that, even if you are still concerned about that  scenario,&lt;br/&gt;&amp;gt; I&amp;#39;m not sure timestop is the appropriate solution. A timestop is a&lt;br/&gt;&amp;gt; protocol-level complication that is not trivial to implement, indeed I&amp;#39;m&lt;br/&gt;&amp;gt; not even sure there is a way to implement it at all -- how do you&lt;br/&gt;&amp;gt; differentiate in consensus code a DoS attack from regular old blocks&lt;br/&gt;&amp;gt; filling up? And if you could, why add further complication to the&lt;br/&gt;&amp;gt; consensus protocol?&lt;br/&gt;&lt;br/&gt;Yea, implementation is really tricky here. I do not at all think we&lt;br/&gt;should be thinking about implementing this any time soon, and should&lt;br/&gt;assume Lightning will have to stand reasonably on its own without it&lt;br/&gt;first, and only if it gains a lot of traction will there be enough&lt;br/&gt;motivation for making such a change at the Bitcoin protocol level for&lt;br/&gt;Lightning.&lt;br/&gt;&lt;br/&gt;&amp;gt; A simpler solution to me seems to be outsourcing the response to an&lt;br/&gt;&amp;gt; attack to a third party&lt;br/&gt;&lt;br/&gt;Doesnt that defeat the purpose of Lightning?&lt;br/&gt;&lt;br/&gt;&amp;gt; or otherwise engineering ways for users to&lt;br/&gt;&amp;gt; respond-by-default even if their wallet is offline, or otherwise&lt;br/&gt;&amp;gt; assuring sufficient coordination in the event of a bad hub.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not even sure if sufficient coordination is a sufficient solution.&lt;br/&gt;If you assume a hub just shut down, and everyone is trying to flush to&lt;br/&gt;the chain, with a backlog of a few days worth of transactions (with&lt;br/&gt;timeouts of a day or so), and users are even paying huge fees (99% of&lt;br/&gt;what they&amp;#39;d get back), if the former-hub is a miner, it can claim that&lt;br/&gt;last 1% of many of the transactions that take longer than a day to confirm.
    </content>
    <updated>2023-06-07T19:34:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxlupgrykwxdsuwp0pn2fzgs8mrtx2x4re8vxukp34sdjp98jxr4szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5jcws0c</id>
    
      <title type="html">📅 Original date posted:2015-08-05 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxlupgrykwxdsuwp0pn2fzgs8mrtx2x4re8vxukp34sdjp98jxr4szyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5jcws0c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswvjuyf4z6h2fs932wux5zwd07fcskjmuxh7xu65lmugmk80s7x7q399hyp&#39;&gt;nevent1q…9hyp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-05&lt;br/&gt;📝 Original message:See-also: Bitcoinrelaynetwork.org. It&amp;#39;s already in use my the majority of large miners, is publicly available to anyone, and the protocol is rather simple and the client could be tweaked easily to keep exactly it&amp;#39;s block ready to quickly relay to the nearest server (ie only have to relay the header, the coinbase transaction, and only small other data... Experience shows this is really easy to fit into one packet on the wire). It&amp;#39;s not nearly as complicated as your suggestion, but may still marginally favor well-connected miners, but hopefully not much (when you&amp;#39;re taking about single packets, it should all be latency, and the servers are well distributed). If you feel so inclined, there are some todos to make it really meet is efficiency limits filled on github.com/TheBlueMatt/RelayNode, feel free to rewrite the protocol if you really want :).&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On August 5, 2015 9:07:44 PM GMT&#43;02:00, Arnoud Kouwenhoven - Pukaki Corp via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;Hello all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;We’d like to share an idea we have to dramatically increase the bitcoin&lt;br/&gt;&amp;gt;block propagation speed after a new block has been mined for the first&lt;br/&gt;&amp;gt;time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Efficient bitcoin block propagation&lt;br/&gt;&amp;gt;A proposed solution to provide near-instantaneous block propagation on&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;bitcoin network, even with slow network connections or large block&lt;br/&gt;&amp;gt;sizes.&lt;br/&gt;&amp;gt;Increasing mining efficiency for everyone while decreasing transaction&lt;br/&gt;&amp;gt;confirmation times and strengthening the distributed nature of bitcoin.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;Short summary: we propose to introduce bitcoin-backed guarantees&lt;br/&gt;&amp;gt;(“Guarantee Messages”) between miners. This would allow miners to mine&lt;br/&gt;&amp;gt;on&lt;br/&gt;&amp;gt;blocks that are not yet fully transmitted. This reduces the effect of&lt;br/&gt;&amp;gt;slow&lt;br/&gt;&amp;gt;internet connections, leveling the playing field between the 1st world&lt;br/&gt;&amp;gt;fiberoptic datacenter miners and the rest of the world. We also believe&lt;br/&gt;&amp;gt;it&lt;br/&gt;&amp;gt;strengthens the bitcoin network by using existing processing power that&lt;br/&gt;&amp;gt;is&lt;br/&gt;&amp;gt;currently wasted into further securing the blockchain, and it reduces&lt;br/&gt;&amp;gt;the&lt;br/&gt;&amp;gt;likelihood of transactions becoming confirmed, then unconfirmed and&lt;br/&gt;&amp;gt;then&lt;br/&gt;&amp;gt;-hopefully- confirmed again (due to different miners finding competing&lt;br/&gt;&amp;gt;blocks with different transactions at approx the same time).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;It is possible to implement our idea as a fork of bitcoind, or as layer&lt;br/&gt;&amp;gt;between the standard bitcoind and the mining equipment. In the future&lt;br/&gt;&amp;gt;it&lt;br/&gt;&amp;gt;could be incorporated in the bitcoin core if and when that becomes a&lt;br/&gt;&amp;gt;priority, but that step would not make sense until it becomes a&lt;br/&gt;&amp;gt;priority.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;There are a lot of nuances in this idea, and the first reaction is&lt;br/&gt;&amp;gt;quite&lt;br/&gt;&amp;gt;probably that this is a crazy idea. We have attempted to address the&lt;br/&gt;&amp;gt;most&lt;br/&gt;&amp;gt;important nuances in our proposal, which is currently at v.0.2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;We cannot guarantee that there are no ‘hidden devils in the details’&lt;br/&gt;&amp;gt;and we&lt;br/&gt;&amp;gt;invite you to be critical in a friendly and constructive manner. We&lt;br/&gt;&amp;gt;will do&lt;br/&gt;&amp;gt;our best to answer all questions that arise.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;The ‘official’ proposal is at:&lt;br/&gt;&amp;gt;PDF: &lt;a href=&#34;http://pukaki.bz/efficient-bitcoin-block-propagation-v.0.2.pdf&#34;&gt;http://pukaki.bz/efficient-bitcoin-block-propagation-v.0.2.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;HTML: &lt;a href=&#34;http://pukaki.bz/efficient-bitcoin-block-propagation-v.0.2.html&#34;&gt;http://pukaki.bz/efficient-bitcoin-block-propagation-v.0.2.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;-- Arnoud Kouwenhoven&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;_______________________________________________&lt;br/&gt;&amp;gt;bitcoin-dev mailing list&lt;br/&gt;&amp;gt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;-------------- 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/20150805/fc69da36/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150805/fc69da36/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:33:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfnsxdszmke9frsdy7fxyjwwa6dhtwz0e2asmk8jcp4muts52zytszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56nvcda</id>
    
      <title type="html">📅 Original date posted:2016-01-07 📝 Original message:So ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfnsxdszmke9frsdy7fxyjwwa6dhtwz0e2asmk8jcp4muts52zytszyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm56nvcda" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ec92sama8ngjltuam7c5pvwkul7w45udzc60gr0fx4mptj3cyygjv8f05&#39;&gt;nevent1q…8f05&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-01-07&lt;br/&gt;📝 Original message:So just because other attacks are possible we should weaken the crypto&lt;br/&gt;we use? You may feel comfortable weakening crypto used to protect a few&lt;br/&gt;billion dollars of other peoples&amp;#39; money, but I dont.&lt;br/&gt;&lt;br/&gt;On 01/07/16 23:39, Gavin Andresen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Thanks, Ethan, that&amp;#39;s helpful and I&amp;#39;ll stop thinking that collision&lt;br/&gt;&amp;gt; attacks require 2^(n/2) memory...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So can we quantify the incremental increase in security of&lt;br/&gt;&amp;gt; SHA256(SHA256) over RIPEMD160(SHA256) versus the incremental increase in&lt;br/&gt;&amp;gt; security of having a simpler implementation of segwitness?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m going to claim that the difference in the first case is very, very,&lt;br/&gt;&amp;gt; very small-- the risk of an implementation error caused by having&lt;br/&gt;&amp;gt; multiple ways of interpreting the segwitness hash in the scriptPubKey is&lt;br/&gt;&amp;gt; much, much greater.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And even if there IS some risk of collision attack now or at some point&lt;br/&gt;&amp;gt; in the future, I claim that it is easy for wallets to mitigate that&lt;br/&gt;&amp;gt; risk. In fact, the principle of security in depth means wallets that&lt;br/&gt;&amp;gt; don&amp;#39;t completely control the scriptPubKeys they&amp;#39;re creating on behalf of&lt;br/&gt;&amp;gt; users SHOULD be coded to mitigate that risk (e.g. not allowing arbitrary&lt;br/&gt;&amp;gt; data around a user&amp;#39;s public key in a Script so targeted substring&lt;br/&gt;&amp;gt; attacks are eliminated entirely).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Purely from a security point of view, I think a single 20-byte&lt;br/&gt;&amp;gt; segwitness in the scriptPubKey is the best design.&lt;br/&gt;&amp;gt; &amp;#34;Keep the design as simple and small as possible&amp;#34;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.securecoding.cert.org/confluence/plugins/servlet/mobile#content/view/2426&#34;&gt;https://www.securecoding.cert.org/confluence/plugins/servlet/mobile#content/view/2426&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Add in the implied capacity increase of smaller scriptPubKeys and I&lt;br/&gt;&amp;gt; still think it is a no-brainer.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Jan 7, 2016 at 5:56 PM, Ethan Heilman &amp;lt;eth3rs at gmail.com&lt;br/&gt;&amp;gt; &amp;lt;mailto:eth3rs at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     &amp;gt;Ethan:  your algorithm will find two arbitrary values that collide. That isn&amp;#39;t useful as an attack in the context we&amp;#39;re talking about here (both of those values will be useless as coin destinations with overwhelming probability).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     I&amp;#39;m not sure exactly the properties you want here and determining&lt;br/&gt;&amp;gt;     these properties is not an easy task, but the case is far worse than&lt;br/&gt;&amp;gt;     just two random values. For instance: (a). with a small modification&lt;br/&gt;&amp;gt;     my algorithm can also find collisions containing targeted substrings,&lt;br/&gt;&amp;gt;     (b). length extension attacks are possible with RIPEMD160.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     (a). targeted cycles:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     target1 = &amp;#34;str to prepend&amp;#34;&lt;br/&gt;&amp;gt;     target2 = &amp;#34;str to end with&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     seed = {0,1}^160&lt;br/&gt;&amp;gt;     x = hash(seed)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     for i in 2^80:&lt;br/&gt;&amp;gt;     ....x = hash(target1||x||target2)&lt;br/&gt;&amp;gt;     x_final = x&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     y = hash(tartget1||x_final||target2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     for j in 2^80:&lt;br/&gt;&amp;gt;     ....if y == x_final:&lt;br/&gt;&amp;gt;     ........print &amp;#34;cycle len: &amp;#34;&#43;j&lt;br/&gt;&amp;gt;     ........break&lt;br/&gt;&amp;gt;     ....y = hash(target1||y||target2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     If a collision is found, the two colliding inputs must both start with&lt;br/&gt;&amp;gt;     &amp;#34;str to prepend&amp;#34; and end with the phrase &amp;#34;str to end with&amp;#34;. As before&lt;br/&gt;&amp;gt;     this only requires 2^81.5 computations and no real memory. For an&lt;br/&gt;&amp;gt;     additional 2**80 an adversary has an good change of finding two&lt;br/&gt;&amp;gt;     different targeted substrings which collide. Consider the case where&lt;br/&gt;&amp;gt;     the attacker mixes the targeted strings with the hash output:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     hash(&amp;#34;my name is=0x329482039483204324423&amp;#34;&#43;x[1]&#43;&amp;#34;, my favorite number&lt;br/&gt;&amp;gt;     is=&amp;#34;&#43;x) where x[1] is the first bit of x.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     (b). length extension attacks&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Even if all the adversary can do is create two random values that&lt;br/&gt;&amp;gt;     collide, you can append substrings to the input and get collisions.&lt;br/&gt;&amp;gt;     Once you find two random values hash(x) = hash(y), you could use a&lt;br/&gt;&amp;gt;     length extension attack on RIPEMD-160 to find hash(x||z) = hash(y||z).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Now the bitcoin wiki says:&lt;br/&gt;&amp;gt;     &amp;#34;The padding scheme is identical to MD4 using Merkle–Damgård&lt;br/&gt;&amp;gt;     strengthening to prevent length extension attacks.&amp;#34;[1]&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     Which is confusing to me because:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     1. MD4 is vulnerable to length extension attacks&lt;br/&gt;&amp;gt;     2. Merkle–Damgård strengthening does not protect against length&lt;br/&gt;&amp;gt;     extension: &amp;#34;Indeed, we already pointed out that none of the 64&lt;br/&gt;&amp;gt;     variants above can withstand the &amp;#39;extension&amp;#39; attack on the MAC&lt;br/&gt;&amp;gt;     application, even with the Merkle-Damgard strengthening&amp;#34; [2]&lt;br/&gt;&amp;gt;     3. RIPEMD-160 is vulnerable to length extension attacks, is Bitcoin&lt;br/&gt;&amp;gt;     using a non-standard version of RIPEMD-160.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     RIPEMD160(SHA256()) does not protect against length extension attacks&lt;br/&gt;&amp;gt;     on SHA256, but should protect RIPEMD-160 against length extension&lt;br/&gt;&amp;gt;     attacks as RIPEMD-160 uses 512-bit message blocks. That being said we&lt;br/&gt;&amp;gt;     should be very careful here. Research has been done that shows that&lt;br/&gt;&amp;gt;     cascading the same hash function twice is weaker than using HMAC[3]. I&lt;br/&gt;&amp;gt;     can&amp;#39;t find results on cascading RIPEMD160(SHA256()).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     RIPEMD160(SHA256()) seems better than RIPEMD160() though, but security&lt;br/&gt;&amp;gt;     should not rest on the notion that an attacker requires 2**80 memory,&lt;br/&gt;&amp;gt;     many targeted collision attacks can work without much memory.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     [1]: &lt;a href=&#34;https://en.bitcoin.it/wiki/RIPEMD-160&#34;&gt;https://en.bitcoin.it/wiki/RIPEMD-160&lt;/a&gt;&lt;br/&gt;&amp;gt;     [2]: &amp;#34;Merkle-Damgard Revisited: How to Construct a Hash Function&amp;#34;&lt;br/&gt;&amp;gt;     &lt;a href=&#34;https://www.cs.nyu.edu/~puniya/papers/merkle.pdf&#34;&gt;https://www.cs.nyu.edu/~puniya/papers/merkle.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;     [3]: &lt;a href=&#34;https://www.cs.nyu.edu/~dodis/ps/h-of-h.pdf&#34;&gt;https://www.cs.nyu.edu/~dodis/ps/h-of-h.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     On Thu, Jan 7, 2016 at 4:06 PM, Gavin Andresen via bitcoin-dev&lt;br/&gt;&amp;gt;     &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;     &amp;gt; Maybe I&amp;#39;m asking this question on the wrong mailing list:&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Matt/Adam: do you have some reason to think that RIPEMD160 will be&lt;br/&gt;&amp;gt;     broken&lt;br/&gt;&amp;gt;     &amp;gt; before SHA256?&lt;br/&gt;&amp;gt;     &amp;gt; And do you have some reason to think that they will be so broken&lt;br/&gt;&amp;gt;     that the&lt;br/&gt;&amp;gt;     &amp;gt; nested hash construction RIPEMD160(SHA256()) will be vulnerable?&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Adam: re: &amp;#34;where to stop&amp;#34;  :  I&amp;#39;m suggesting we stop exactly at&lt;br/&gt;&amp;gt;     the current&lt;br/&gt;&amp;gt;     &amp;gt; status quo, where we use RIPEMD160 for P2SH and P2PKH.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Ethan:  your algorithm will find two arbitrary values that&lt;br/&gt;&amp;gt;     collide. That&lt;br/&gt;&amp;gt;     &amp;gt; isn&amp;#39;t useful as an attack in the context we&amp;#39;re talking about here&lt;br/&gt;&amp;gt;     (both of&lt;br/&gt;&amp;gt;     &amp;gt; those values will be useless as coin destinations with overwhelming&lt;br/&gt;&amp;gt;     &amp;gt; probability).&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; Dave: you described a first preimage attack, which is 2**160 cpu&lt;br/&gt;&amp;gt;     time and no&lt;br/&gt;&amp;gt;     &amp;gt; storage.&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; --&lt;br/&gt;&amp;gt;     &amp;gt; --&lt;br/&gt;&amp;gt;     &amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;     &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;     &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;     &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;     &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt; &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; --&lt;br/&gt;&amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:31:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqumv2te2aah33fn8jvksqdxrmxm7dcunmaddgz20c3ng6r0an60gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wlsa9y</id>
    
      <title type="html">📅 Original date posted:2016-01-07 📝 Original message:We ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqumv2te2aah33fn8jvksqdxrmxm7dcunmaddgz20c3ng6r0an60gzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5wlsa9y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswagkd4vu4m2rzgaqr20eaw4jkjtzclwr0mxh3ry663yhwkrnh4ysrvae6r&#39;&gt;nevent1q…ae6r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-01-07&lt;br/&gt;📝 Original message:We absolutely should be worried about 80-bit collision resistance.&lt;br/&gt;Collisions only take 2**80 work if the hash is theoretically perfect,&lt;br/&gt;which is never the case, not to mention that collision resistance is&lt;br/&gt;almost always the first thing to go for hash functions, and often starts&lt;br/&gt;to get easier slowly long, long before anyone is truly worried about the&lt;br/&gt;security of the hash function.&lt;br/&gt;&lt;br/&gt;I would never assume RIPEMD160&amp;#39;s collision resistance is 2**80, and&lt;br/&gt;would definitely never wager a significant amount of money that this&lt;br/&gt;remains true for, say, five years.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 01/07/16 19:02, Gavin Andresen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; I&amp;#39;m hoisting this from some private feedback I sent on the segregated&lt;br/&gt;&amp;gt; witness BIP:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I said:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;I&amp;#39;d also use RIPEMD160(SHA256()) as the hash function and save the 12&lt;br/&gt;&amp;gt; bytes-- a successful preimage attack against that ain&amp;#39;t gonna happen&lt;br/&gt;&amp;gt; before we&amp;#39;re all dead. I&amp;#39;m probably being dense, but I just don&amp;#39;t see&lt;br/&gt;&amp;gt; how a collision attack is relevant here.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Pieter responded:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;The problem case is where someone in a contract setup shows you a&lt;br/&gt;&amp;gt; script, which you accept as being a payment to yourself. An attacker&lt;br/&gt;&amp;gt; could use a collision attack to construct scripts with identical hashes,&lt;br/&gt;&amp;gt; only one of which does have the property you want, and steal coins.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So you really want collision security, and I don&amp;#39;t think 80 bits is&lt;br/&gt;&amp;gt; something we should encourage for that. Normal pubkey hashes don&amp;#39;t have&lt;br/&gt;&amp;gt; that problem, as they can&amp;#39;t be constructed to pay to you.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ... but I&amp;#39;m unconvinced:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;#34;But it is trivial for contract wallets to protect against collision&lt;br/&gt;&amp;gt; attacks-- if you give me a script that is &amp;#34;gavin_pubkey CHECKSIG&lt;br/&gt;&amp;gt; arbitrary_data OP_DROP&amp;#34; with &amp;#34;I promise I&amp;#39;m not trying to rip you off,&lt;br/&gt;&amp;gt; just ignore that arbitrary data&amp;#34; a wallet can just refuse. Even more&lt;br/&gt;&amp;gt; likely, a contract wallet won&amp;#39;t even recognize that as a pay-to-gavin&lt;br/&gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I suppose it could be looking for some form of &amp;#34;gavin_pubkey&lt;br/&gt;&amp;gt; somebody_else_pubkey CHECKMULTISIG ... with the attacker using&lt;br/&gt;&amp;gt; somebody_else_pubkey to force the collision, but, again, trivial&lt;br/&gt;&amp;gt; contract protocol tweaks (&amp;#34;send along a proof you have the private key&lt;br/&gt;&amp;gt; corresponding to the public key&amp;#34; or &amp;#34;everybody pre-commits pubkeys&lt;br/&gt;&amp;gt; they&amp;#39;ll use at protocol start&amp;#34;) would protect against that.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Adding an extra 12 bytes to every segwit to prevent an attack that takes&lt;br/&gt;&amp;gt; 2^80 computation and 2^80 storage, is unlikely to be a problem in&lt;br/&gt;&amp;gt; practice, and is trivial to protect against is the wrong tradeoff to make.&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 20 bytes instead of 32 bytes is a savings of almost 40%, which is&lt;br/&gt;&amp;gt; significant.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The general question I&amp;#39;d like to raise on this list is:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Should we be worried, today, about collision attacks against RIPEMD160&lt;br/&gt;&amp;gt; (our 160-bit hash)?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Mounting a successful brute-force collision attack would require at&lt;br/&gt;&amp;gt; least O(2^80) CPU, which is kinda-sorta feasible (Pieter pointed out&lt;br/&gt;&amp;gt; that Bitcoin POW has computed more SHA256 hashes than that). But it also&lt;br/&gt;&amp;gt; requires O(2^80) storage, which is utterly infeasible (there is&lt;br/&gt;&amp;gt; something on the order of 2^35 bytes of storage in the entire world). &lt;br/&gt;&amp;gt; Even assuming doubling every single year (faster than Moore&amp;#39;s Law),&lt;br/&gt;&amp;gt; we&amp;#39;re four decades away from an attacker with THE ENTIRE WORLD&amp;#39;s storage&lt;br/&gt;&amp;gt; capacity being able to mount a collision attack.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; References: &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Collision_attack&#34;&gt;https://en.wikipedia.org/wiki/Collision_attack&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://vsatglobalseriesblog.wordpress.com/2013/06/21/in-2013-the-amount-of-data-generated-worldwide-will-reach-four-zettabytes/&#34;&gt;https://vsatglobalseriesblog.wordpress.com/2013/06/21/in-2013-the-amount-of-data-generated-worldwide-will-reach-four-zettabytes/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:31:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy6szlajpz3hwlrd98lrhqkhjcceqn89xje888d9dtffla4frlwcgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mwcsuy</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:BIP ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy6szlajpz3hwlrd98lrhqkhjcceqn89xje888d9dtffla4frlwcgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5mwcsuy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy80syykcdrdhqzzhccy8e24xwu7a64kxyxpggawd04appkxryycgejf059&#39;&gt;nevent1q…f059&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:BIP Editor: Can I get a BIP # for this?&lt;br/&gt;&lt;br/&gt;On 08/21/15 17:55, Matt Corallo via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Revised copy follows. re: mentioning the HTTP seeding stuff, I&amp;#39;m not&lt;br/&gt;&amp;gt; sure we want to encourage more people aside from bitcoinj to use&lt;br/&gt;&amp;gt; that...I thought about adding a DNS seed section to this bip, but&lt;br/&gt;&amp;gt; decided against it...still, I think we should add the option to select&lt;br/&gt;&amp;gt; service bits to DNS seeds ASAP.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Re: need to &amp;#34;shard&amp;#34; the blockchain: not sure what you&amp;#39;re referring to&lt;br/&gt;&amp;gt; here. The bloom filter stuff requires you to download the chain&lt;br/&gt;&amp;gt; in-order, sure, but you have to do that for headers anyway, and&lt;br/&gt;&amp;gt; hopefully your total data isnt too much more than headers alone.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyone have the best reference for the DoS issues?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP: ?&lt;br/&gt;&amp;gt; Title: NODE_BLOOM service bit&lt;br/&gt;&amp;gt; Author: Matt Corallo &amp;lt;bip at bluematt.me&amp;gt;, Peter Todd &amp;lt;pete at petertodd.org&amp;gt;&lt;br/&gt;&amp;gt; Type: Standards Track (draft)&lt;br/&gt;&amp;gt; Created: 20-08-2015&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Abstract&lt;br/&gt;&amp;gt; ========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This BIP extends BIP 37, Connection Bloom filtering, by defining a&lt;br/&gt;&amp;gt; service bit to allow peers to advertise that they support bloom filters&lt;br/&gt;&amp;gt; explicitly. It also bumps the protocol version to allow peers to&lt;br/&gt;&amp;gt; identify old nodes which allow bloom filtering of the connection despite&lt;br/&gt;&amp;gt; lacking the new service bit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt; ==========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt; to no privacy[1], as well as being a large DoS risk on some nodes[2].&lt;br/&gt;&amp;gt; Thus, allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Specification&lt;br/&gt;&amp;gt; =============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The following protocol bit is added:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;     NODE_BLOOM = (1 &amp;lt;&amp;lt; 2)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Nodes which support bloom filters should set that protocol bit.&lt;br/&gt;&amp;gt; Otherwise it should remain unset. In addition the protocol version is&lt;br/&gt;&amp;gt; increased from 70002 to 70011 in the reference implementation. It is&lt;br/&gt;&amp;gt; often the case that nodes which have a protocol version smaller than&lt;br/&gt;&amp;gt; 70011, but larger than 70000 support bloom filtered connections without&lt;br/&gt;&amp;gt; the NODE_BLOOM bit set, however clients which require bloom filtered&lt;br/&gt;&amp;gt; connections should avoid making this assumption.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&lt;br/&gt;&amp;gt; NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&lt;br/&gt;&amp;gt; which, nonetheless, provide filtered access to the data which they do have).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If a node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;gt; &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;&amp;gt; disconnect that peer immediately. For backwards compatibility, in&lt;br/&gt;&amp;gt; initial implementations, nodes may choose to only disconnect nodes which&lt;br/&gt;&amp;gt; have the new protocol version set and attempt to send a filter command.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While outside the scope of this BIP it is suggested that DNS seeds and&lt;br/&gt;&amp;gt; other peer discovery mechanisms support the ability to specify the&lt;br/&gt;&amp;gt; services required; current implementations simply check only that&lt;br/&gt;&amp;gt; NODE_NETWORK is set.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Design rational&lt;br/&gt;&amp;gt; ===============&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A service bit was chosen as applying a bloom filter is a service.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The increase in protocol version is for backwards compatibility. In&lt;br/&gt;&amp;gt; initial implementations, old nodes which are not yet aware of NODE_BLOOM&lt;br/&gt;&amp;gt; and use a protocol version &amp;lt; 70011 may still send filter* messages to a&lt;br/&gt;&amp;gt; node without NODE_BLOOM. This feature may be removed after there are&lt;br/&gt;&amp;gt; sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&lt;br/&gt;&amp;gt; allowing node operators to fully close the bloom-related DoS vectors.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reference Implementation&lt;br/&gt;&amp;gt; ========================&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Copyright&lt;br/&gt;&amp;gt; =========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This document is placed in the public domain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; References&lt;br/&gt;&amp;gt; ==========&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;http://eprint.iacr.org/2014/763&#34;&gt;http://eprint.iacr.org/2014/763&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] ???? is one example where the issues were found, though others&lt;br/&gt;&amp;gt; independently discovered issues as well. Sample DoS exploit code&lt;br/&gt;&amp;gt; available at &lt;a href=&#34;https://github.com/petertodd/bloom-io-attack&#34;&gt;https://github.com/petertodd/bloom-io-attack&lt;/a&gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 08/21/15 05:42, Peter Todd wrote:&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Aug 20, 2015 at 10:38:19PM -0700, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ==========&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; BIP 37 did not specify a service bit for the bloom filter service, thus&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implicitly assuming that all nodes that serve peers data support it.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; However, the connection filtering algorithm proposed in BIP 37, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implemented in several clients today, has been shown to provide little&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to no privacy, as well as being a large DoS risk on some nodes. Thus,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; allowing node operators to disable connection bloom filtering is a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; much-needed feature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;d reference that paper on bloom filters re: the &amp;#34;little to no privacy&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; issue. There&amp;#39;s also a post in the bitcoinj mailing list somewhere IIRC&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; talking about the default settings, and how they don&amp;#39;t provide any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; privacy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Oh, and we should also point out that Bloom filters have scaling issues,&lt;br/&gt;&amp;gt;&amp;gt; as each application of the filter has to scan the whole blockchain -&lt;br/&gt;&amp;gt;&amp;gt; with future blocksize increases these issues increase, in some proposals&lt;br/&gt;&amp;gt;&amp;gt; quite dramatically. The underlying idea also conflicts with some&lt;br/&gt;&amp;gt;&amp;gt; proposals to &amp;#34;shard&amp;#34; the blockchain, again suggesting that we need a bit&lt;br/&gt;&amp;gt;&amp;gt; to handle future upgrades to more scalable designs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T17:49:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy80syykcdrdhqzzhccy8e24xwu7a64kxyxpggawd04appkxryycgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ndeevl</id>
    
      <title type="html">📅 Original date posted:2015-08-24 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy80syykcdrdhqzzhccy8e24xwu7a64kxyxpggawd04appkxryycgzyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5ndeevl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx0kvgh8ec2ntxxnrgjh7z5d4psejn0rhqq4chyn0jc32ud9g8jngcqfy6j&#39;&gt;nevent1q…fy6j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-24&lt;br/&gt;📝 Original message:I&amp;#39;ll just quote what I said on github:&lt;br/&gt;&lt;br/&gt;Neither this pull nor the BIP has any stated intention of phasing out&lt;br/&gt;bloom filtering support in the protocol. As much as I&amp;#39;d love to, I 100%&lt;br/&gt;agree with @mikehearn here, that would break any ability of SPV clients&lt;br/&gt;to operate on the P2P network (either as a way to double-check&lt;br/&gt;centralized servers, or otherwise), and that is really not a good idea&lt;br/&gt;without a replacement in place. This pull/BIP DOES suggest we phase out&lt;br/&gt;REQUIRED bloom filtering support in the protocol - thereby fixing the&lt;br/&gt;peer selection of SPV clients in the face of btcd with some flags/many&lt;br/&gt;patched versions of Core/etc peers, providing a remedy for a potential&lt;br/&gt;DoS attack, etc.&lt;br/&gt;&lt;br/&gt;Matt&lt;br/&gt;&lt;br/&gt;On 08/24/15 15:19, Tom Harding via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On 8/21/2015 3:06 PM, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; On Fri, Aug 21, 2015 at 05:55:58PM &#43;0000, Matt Corallo wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Anyone have the best reference for the DoS issues?&lt;br/&gt;&amp;gt;&amp;gt; Well actually, we can reference the DoS attacks that Bitcoin XT nodes&lt;br/&gt;&amp;gt;&amp;gt; are undergoing right now - part of the attack is repeated Bloom filter&lt;br/&gt;&amp;gt;&amp;gt; requests to soak up disk IO bandwidth.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So, to summarize, someone is attacking Mike Hearn&amp;#39;s bitcoin fork. &lt;br/&gt;&amp;gt; Therefore, now is the perfect time to write a BIP and author changes&lt;br/&gt;&amp;gt; that begin the process of dropping support for the most broadly&lt;br/&gt;&amp;gt; successful class of wallets, which Mike Hearn&amp;#39;s SPV client library enables.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T17:49:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswqu5xu7tgh6py5wl8ype800uew7phf7rjevtgxleg92q8qe0w5xczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5m75tra</id>
    
      <title type="html">📅 Original date posted:2015-08-20 📝 Original message:I dont ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswqu5xu7tgh6py5wl8ype800uew7phf7rjevtgxleg92q8qe0w5xczyrxh2w4gl0q39c20l607p8fkxrcwlamv568rwmsqfw880d584hwm5m75tra" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszwtgfw27tv5lafhnhrmustppsj6hq6fghps7g2lclmqncc59x30czqjkrh&#39;&gt;nevent1q…jkrh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-20&lt;br/&gt;📝 Original message:I dont think a libconsensus would have any kind of networking layer, nor&lt;br/&gt;is C&#43;&#43; an antique tool set (hopefully libconsensus can avoid a boost&lt;br/&gt;dependency, though thats not antique either). Ideally it would have a&lt;br/&gt;simple API to give it blocks and a simple API for it to inform you of&lt;br/&gt;what the current chain is. If you really want to get fancy maybe it has&lt;br/&gt;pluggable block storage, too, but I dont see why you couldnt use this in&lt;br/&gt;~any client?&lt;br/&gt;&lt;br/&gt;On 08/20/15 08:35, Tamas Blummer via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; Every re-implementation, re-factoring even copy-paste introduces a risk of disagreement,&lt;br/&gt;&amp;gt; but also open the chance of doing the work better, in the sense of software engineering.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On Aug 20, 2015, at 10:06, Jorge Timón &amp;lt;jtimon at jtimon.cc&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; But the goal is not reimplementing the consensus rules but rather&lt;br/&gt;&amp;gt;&amp;gt; extract them from Bitcoin Core so that nobody needs to re-implement&lt;br/&gt;&amp;gt;&amp;gt; them again.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My goal is different. Compatibility with Bitcoin is important as I also want to deal with Bitcoins,&lt;br/&gt;&amp;gt; but it is also imperative to be able to create and serve other block chains with other rules and for those&lt;br/&gt;&amp;gt; I do not want to carry on the legacy of an antique tool set and a spaghetti style.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Bits of Proof uses scala (akka networking), java (api service), c&#43;&#43; (leveledb and now libconsensus)&lt;br/&gt;&amp;gt; and I am eager to integrate secp256k1 (c) as soon as part of consensus. The choices were&lt;br/&gt;&amp;gt; made because each piece appears best in what they do.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Tamas Blummer&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T17:48:45&#43;02:00</updated>
  </entry>

</feed>