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