<oembed><type>rich</type><version>1.0</version><author_name>npub10z4xjfgftd3fm9dfu7dw6mkemgyhxgumcmhd7yd0ggjq7rsaw4wqa3xfzw</author_name><author_url>https://nostr.ae/npub10z4xjfgftd3fm9dfu7dw6mkemgyhxgumcmhd7yd0ggjq7rsaw4wqa3xfzw</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 guess I always assumed that UTXO set commitments were an alternative&#xA;security model (between SPV and full-node), not that they would cause the&#xA;existing security model to be deprecated.&#xA;&#xA;&#xA;On Fri, Sep 18, 2015 at 3:43 PM, Patrick Strateman via bitcoin-dev &lt;&#xA;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&#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 and up&#xA;&gt; until now, in order to derive a UTXO set that it can verify new&#xA;&gt; blocks/transactions against. With a blockchain size of 40GB and a UTXO size&#xA;&gt; of around 1GB, the extra bandwidth required is significant, and will keep&#xA;&gt; increasing indefinitely. If a newly mined block were to include the UTXO&#xA;&gt; set hash of the chain up until the previous block — the hash of the UTXO&#xA;&gt; set on top of which this block builds — then new nodes, who want to know&#xA;&gt; whether a transaction is valid, would be able to acquire the UTXO set in a&#xA;&gt; trustless manner, by only verifying proof-of-work headers, and knowing that&#xA;&gt; a block 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 from the&#xA;&gt; UTXO set, which would put further burden on already burdened Bitcoin Core&#xA;&gt; nodes. We simply include the hash of the current UTXO set in a newly&#xA;&gt; created block, such that the transactions in the new block build *on top*&#xA;&gt; of the UTXO set whose hash is specified. This actually alleviates Bitcoin&#xA;&gt; Core nodes, as it will now become possible for nodes without the entire&#xA;&gt; blockchain to answer SPV queries (by retrieving the UTXO set trustlessly&#xA;&gt; and using this to answer queries). It also saves bandwidth for Bitcore Core&#xA;&gt; nodes, who only need to send roughly 1GB of data, in order to synchronise a&#xA;&gt; node, rather than 40GB+. I will continue to run a full Bitcoin Core node,&#xA;&gt; saving the entire blockchain history, but it shouldn’t be a requirement to&#xA;&gt; hold the entire transaction history in order to start verifying new&#xA;&gt; transactions.&#xA;&gt; &gt;&#xA;&gt; &gt; As far as I can see, this also forces miners to actually maintain an&#xA;&gt; UTXO set, rather than just build on top of the chain with the most&#xA;&gt; proof-of-work. Producing a UTXO set and verifying a block against a chain&#xA;&gt; is the same thing, so by including the hash of the UTXO set we force miners&#xA;&gt; to verify the block that they want to build on top of.&#xA;&gt; &gt;&#xA;&gt; &gt; Am I missing something obvious, because as far as I can see, this solves&#xA;&gt; 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. So it&#xA;&gt; does require additional computation, but most modern CPUs have a SHA256&#xA;&gt; throughput of around 500 MB/s, which means it takes only two seconds to&#xA;&gt; hash the UTXO set. And this can be improved further (GPUs can do 2-3 GB/s).&#xA;&gt; A small sacrifice for the added ease of 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; &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; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150918/b0e1a5b4/attachment-0001.html&gt;</html></oembed>