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




  <entry>
    <id>https://nostr.ae/nevent1qqsqxq284pc6fky5qedhkpvq56qj7zuqqv0j0lxx5tfec0498xke5eszyqzjprrkey6a6yn5k9djvyr8hp3x9g8tame77mxjyw62dyh7ac4c73t9m0m</id>
    
      <title type="html">📅 Original date posted:2017-04-17 📝 Original message:1TB ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqxq284pc6fky5qedhkpvq56qj7zuqqv0j0lxx5tfec0498xke5eszyqzjprrkey6a6yn5k9djvyr8hp3x9g8tame77mxjyw62dyh7ac4c73t9m0m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyhyf33f6f039r8fp3qrpgu2az5qv8h3sjn46mfw8nqumjs8jtwycvxqn9a&#39;&gt;nevent1q…qn9a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-17&lt;br/&gt;📝 Original message:1TB HDD is now available for under $40 USD.  How is the 100GB storage&lt;br/&gt;requirement preventing anyone from setting up full nodes?&lt;br/&gt;&lt;br/&gt;On Apr 16, 2017 11:55 PM, &amp;#34;David Vorick via bitcoin-dev&amp;#34; &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; *Rationale:*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A node that stores the full blockchain (I will use the term archival node)&lt;br/&gt;&amp;gt; requires over 100GB of disk space, which I believe is one of the most&lt;br/&gt;&amp;gt; significant barriers to more people running full nodes. And I believe the&lt;br/&gt;&amp;gt; ecosystem would benefit substantially if more users were running full nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The best alternative today to storing the full blockchain is to run a&lt;br/&gt;&amp;gt; pruned node, which keeps only the UTXO set and throws away already verified&lt;br/&gt;&amp;gt; blocks. The operator of the pruned node is able to enjoy the full security&lt;br/&gt;&amp;gt; benefits of a full node, but is essentially leeching the network, as they&lt;br/&gt;&amp;gt; performed a large download likely without contributing anything back.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This puts more pressure on the archival nodes, as the archival nodes need&lt;br/&gt;&amp;gt; to pick up the slack and help new nodes bootstrap to the network. As the&lt;br/&gt;&amp;gt; pressure on archival nodes grows, fewer people will be able to actually run&lt;br/&gt;&amp;gt; archival nodes, and the situation will degrade. The situation would likely&lt;br/&gt;&amp;gt; become problematic quickly if bitcoin-core were to ship with the defaults&lt;br/&gt;&amp;gt; set to a pruned node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even further, the people most likely to care about saving 100GB of disk&lt;br/&gt;&amp;gt; space are also the people least likely to care about some extra bandwidth&lt;br/&gt;&amp;gt; usage. For datacenter nodes, and for nodes doing lots of bandwidth, the&lt;br/&gt;&amp;gt; bandwidth is usually the biggest cost of running the node. For home users&lt;br/&gt;&amp;gt; however, as long as they stay under their bandwidth cap, the bandwidth is&lt;br/&gt;&amp;gt; actually free. Ideally, new nodes would be able to bootstrap from nodes&lt;br/&gt;&amp;gt; that do not have to pay for their bandwidth, instead of needing to rely on&lt;br/&gt;&amp;gt; a decreasing percentage of heavy-duty archival nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have (perhaps incorrectly) identified disk space consumption as the most&lt;br/&gt;&amp;gt; significant factor in your average user choosing to run a pruned node or a&lt;br/&gt;&amp;gt; lite client instead of a full node. The average user is not typically too&lt;br/&gt;&amp;gt; worried about bandwidth, and is also not typically too worried about&lt;br/&gt;&amp;gt; initial blockchain download time. But the 100GB hit to your disk space can&lt;br/&gt;&amp;gt; be a huge psychological factor, especially if your hard drive only has&lt;br/&gt;&amp;gt; 500GB available in the first place, and 250&#43; GB is already consumed by&lt;br/&gt;&amp;gt; other files you have.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe that improving the disk usage situation would greatly benefit&lt;br/&gt;&amp;gt; decentralization, especially if it could be done without putting pressure&lt;br/&gt;&amp;gt; on archival nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Small Nodes Proposal:*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I propose an alternative to the pruned node that does not put undue&lt;br/&gt;&amp;gt; pressure on archival nodes, and would be acceptable and non-risky to ship&lt;br/&gt;&amp;gt; as a default in bitcoin-core. For lack of a better name, I&amp;#39;ll call this new&lt;br/&gt;&amp;gt; type of node a &amp;#39;small node&amp;#39;. The intention is that bitcoin-core would&lt;br/&gt;&amp;gt; eventually ship &amp;#39;small nodes&amp;#39; by default, such that the expected amount of&lt;br/&gt;&amp;gt; disk consumption drops from today&amp;#39;s 100&#43; GB to less than 30 GB.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My alternative proposal has the following properties:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &#43; Full nodes only need to store ~20% of the blockchain&lt;br/&gt;&amp;gt; &#43; With very high probability, a new node will be able to recover the&lt;br/&gt;&amp;gt; entire blockchain by connecting to 6 random small node peers.&lt;br/&gt;&amp;gt; &#43; An attacker that can eliminate a chosen&#43; 95% of the full nodes running&lt;br/&gt;&amp;gt; today will be unable to prevent new nodes from downloading the full&lt;br/&gt;&amp;gt; blockchain, even if the attacker is also able to eliminate all archival&lt;br/&gt;&amp;gt; nodes. (assuming all nodes today were small nodes instead of archival nodes)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Method:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A small node will pick an index [5, 256). This index is that node&amp;#39;s&lt;br/&gt;&amp;gt; permanent index. When storing a block, instead of storing the full block,&lt;br/&gt;&amp;gt; the node will use Reed-Solomon coding to erasure code the block using a&lt;br/&gt;&amp;gt; 5-of-256 scheme. The result will be 256 pieces that are 20% of the size of&lt;br/&gt;&amp;gt; the block each. The node picks the piece that corresponds to its index, and&lt;br/&gt;&amp;gt; stores that instead. (Indexes 0-4 are reserved for archival nodes -&lt;br/&gt;&amp;gt; explained later)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The node is now storing a fragment of every block. Alone, this fragment&lt;br/&gt;&amp;gt; cannot be used to recover any piece of the blockchain. However, when paired&lt;br/&gt;&amp;gt; with any 5 unique fragments (fragments of the same index will not be&lt;br/&gt;&amp;gt; unique), the full block can be recovered.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nodes can optionally store more than 1 fragment each. At 5 fragments, the&lt;br/&gt;&amp;gt; node becomes a full archival node, and the chosen indexes should be 0-4.&lt;br/&gt;&amp;gt; This is advantageous for the archival node as the encoded data for the&lt;br/&gt;&amp;gt; first 5 indexes will actually be identical to the block itself - there is&lt;br/&gt;&amp;gt; no computational overhead for selecting the first indexes. There is also no&lt;br/&gt;&amp;gt; need to choose random indexes, because the full block can be recovered no&lt;br/&gt;&amp;gt; matter which indexes are chosen.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When connecting to new peers, the indexes of each peer needs to be known.&lt;br/&gt;&amp;gt; Once peers totaling 5 unique indexes are discovered, blockchain download&lt;br/&gt;&amp;gt; can begin. Connecting to just 5 small node peers provides a &amp;gt;95% chance of&lt;br/&gt;&amp;gt; getting 5 uniques, with exponentially improving odds of success as you&lt;br/&gt;&amp;gt; connect to more peers. Connecting to a single archive node guarantees that&lt;br/&gt;&amp;gt; any gaps can be filled.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A good encoder should be able to turn a block into a 5-of-256 piece set in&lt;br/&gt;&amp;gt; under 10 milliseconds using a single core on a standard consumer desktop.&lt;br/&gt;&amp;gt; This should not slow down initial blockchain download substantially, though&lt;br/&gt;&amp;gt; the overhead is more than a rounding error.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *DoS Prevention:*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A malicious node may provide garbage data instead of the actual piece.&lt;br/&gt;&amp;gt; Given just the garbage data and 4 other correct pieces, it is impossible&lt;br/&gt;&amp;gt; (best I know anyway) to tell which piece is the garbage piece.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One option in this case would be to seek out an archival node that could&lt;br/&gt;&amp;gt; verify the correctness of the pieces, and identify the malicious node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another option would be to have the small nodes store a cryptographic&lt;br/&gt;&amp;gt; checksum of each piece. Obtaining the cryptographic checksum for all 256&lt;br/&gt;&amp;gt; pieces would incur a nontrivial amount of hashing (post segwit, as much as&lt;br/&gt;&amp;gt; 100MB of extra hashing per block), and would require an additional ~4kb of&lt;br/&gt;&amp;gt; storage per block. The hashing overhead here may be prohibitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another solution would be to find additional pieces and brute-force&lt;br/&gt;&amp;gt; combinations of 5 until a working combination was discovered. Though this&lt;br/&gt;&amp;gt; sounds nasty, it should take less than five seconds of computation to find&lt;br/&gt;&amp;gt; the working combination given 5 correct pieces and 2 incorrect pieces. This&lt;br/&gt;&amp;gt; computation only needs to be performed once to identify the malicious peers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I also believe that alternative erasure coding schemes exist which&lt;br/&gt;&amp;gt; actually are able to identify the bad pieces given sufficient good pieces,&lt;br/&gt;&amp;gt; however I don&amp;#39;t know if they have the same computational performance as the&lt;br/&gt;&amp;gt; best Reed-Solomon coding implementations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Deployment:*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Small nodes are completely useless unless the critical mass of 5 pieces&lt;br/&gt;&amp;gt; can be obtained. The first version that supports small node block downloads&lt;br/&gt;&amp;gt; should default everyone to an archival node (meaning indexes 0-4 are used)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once there are enough small-node-enabled archive nodes, the default can be&lt;br/&gt;&amp;gt; switched so that nodes only have a single index by default. In the first&lt;br/&gt;&amp;gt; few days, when there are only a few small nodes, the previously-deployed&lt;br/&gt;&amp;gt; archival nodes can help fill in the gaps, and the small nodes can be useful&lt;br/&gt;&amp;gt; for blockchain download right away.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ----------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This represents a non-trivial amount of code, but I believe that the&lt;br/&gt;&amp;gt; result would be a non-trivial increase in the percentage of users running&lt;br/&gt;&amp;gt; full nodes, and a healthier overall network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- 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/20170417/02c3dd58/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170417/02c3dd58/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:00:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspwfuv2e0v67cxu3n7nzc2afpppst8ake6t87kttdqwuxcm08w42qzyqzjprrkey6a6yn5k9djvyr8hp3x9g8tame77mxjyw62dyh7ac4c7fw22mg</id>
    
      <title type="html">📅 Original date posted:2015-06-08 📝 Original message:FWIW, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspwfuv2e0v67cxu3n7nzc2afpppst8ake6t87kttdqwuxcm08w42qzyqzjprrkey6a6yn5k9djvyr8hp3x9g8tame77mxjyw62dyh7ac4c7fw22mg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf925qdrw6sjhtaremj4hhgk9jjhxrjzk0mc4vr5yxr2jfn38229g24gua6&#39;&gt;nevent1q…gua6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-06-08&lt;br/&gt;📝 Original message:FWIW, The Open Assets colored coin protocol (CoinPrism) places special&lt;br/&gt;significance on the zeroth input and the position of the OP_RETURN colored&lt;br/&gt;coin marker output to distinguish colored coin issuance outputs from&lt;br/&gt;transfer outputs. Reordering the inputs or the outputs breaks the colored&lt;br/&gt;coin representation.&lt;br/&gt;&lt;br/&gt;Recommending sorting of the inputs and outputs as a best practice is fine&lt;br/&gt;(and better than random, IMO), but not as part of IsStandard() or consensus&lt;br/&gt;rules.  There are cases where the order of the inputs and outputs is&lt;br/&gt;significant.&lt;br/&gt;&lt;br/&gt;-Danny&lt;br/&gt;&lt;br/&gt;On Fri, Jun 5, 2015 at 9:42 PM, Rusty Russell &amp;lt;rusty at rustcorp.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Title: Canonical Input and Output Ordering&lt;br/&gt;&amp;gt; Author: Rusty Russell &amp;lt;rusty at rustcorp.com.au&amp;gt;&lt;br/&gt;&amp;gt; Discussions-To: &amp;#34;Bitcoin Dev&amp;#34; &amp;lt;bitcoin-development at lists.sourceforge.net&amp;gt;&lt;br/&gt;&amp;gt; Status: Draft&lt;br/&gt;&amp;gt; Type: Standards Track&lt;br/&gt;&amp;gt; Created: 2015-06-06&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Abstract&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP provides a canonical ordering of inputs and outputs when&lt;br/&gt;&amp;gt; creating transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Motivation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Most bitcoin wallet implementations randomize the outputs of&lt;br/&gt;&amp;gt; transactions they create to avoid trivial linkage analysis (especially&lt;br/&gt;&amp;gt; change outputs), however implementations have made mistakes in this area&lt;br/&gt;&amp;gt; in the past.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Using a canonical ordering has the same effect, but is simpler, more&lt;br/&gt;&amp;gt; obvious if incorrect, and can eventually be enforced by IsStandard() and&lt;br/&gt;&amp;gt; even a soft-fork to enforce it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Specification&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Inputs should be ordered like so:&lt;br/&gt;&amp;gt;         index (lower value first)&lt;br/&gt;&amp;gt;         txid (little endian order, lower byte first)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Outputs should be ordered like so:&lt;br/&gt;&amp;gt;         amount (lower value first)&lt;br/&gt;&amp;gt;         script (starting from first byte, lower byte first, shorter wins)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Rationale&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any single wallet is already free to implement this, but if other&lt;br/&gt;&amp;gt; wallets do not it would reduce privacy by making those transactions&lt;br/&gt;&amp;gt; stand out.  Thus a BIP is appropriate, especially if this were to&lt;br/&gt;&amp;gt; become an IsStandard() rule once widely adopted.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Because integers are fast to compare, they&amp;#39;re sorted first, before the&lt;br/&gt;&amp;gt; lexographical ordering.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The other input fields do not influence the sort order, as any valid&lt;br/&gt;&amp;gt; transactions cannot have two inputs with the same index and txid.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reference Implementation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/rustyrussell/bitcoin/tree/bip-in-out-ordering&#34;&gt;https://github.com/rustyrussell/bitcoin/tree/bip-in-out-ordering&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-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150608/d7100388/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150608/d7100388/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:36:42&#43;02:00</updated>
  </entry>

</feed>