<oembed><type>rich</type><version>1.0</version><author_name>npub1fx98zxt3lzspjs5f4msr0fxysx5euucm29ghysryju7vpc9j0jzqtcl2d8</author_name><author_url>https://nostr.ae/npub1fx98zxt3lzspjs5f4msr0fxysx5euucm29ghysryju7vpc9j0jzqtcl2d8</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-09-18&#xA;📝 Original message:s/move the genesis block forward/move your genesis checkpoint forward/&#xA;On Sep 18, 2015 4:37 PM, &#34;Jorge Timón&#34; &lt;jtimon at jtimon.cc&gt; wrote:&#xA;&#xA;&gt; Well, with utxo commitments at some point maybe is enough to validate the&#xA;&gt; full headers history but only the last 5 years of ttansaction history&#xA;&gt; (assuming utxo commitments are buried 5 years worth of blocks in the past).&#xA;&gt; This scales much better than validating the full history and if we get a 5&#xA;&gt; year reorg something is going really wrong anyway...&#xA;&gt; Maybe after validating the last 5 years you also want to validate the rest&#xA;&gt; of the history backards to get the &#34;fully-full node&#34; security.&#xA;&gt; Of course 5 years it&#39;s just an arbitrary number: 2 or maybe even 1 would&#xA;&gt; probably be secure enough for most people. I&#39;ve referred to this idea as&#xA;&gt; &#34;hard checkpoints&#34; or &#34;moving the genesis block forward&#34; in the past.&#xA;&gt; On Sep 18, 2015 4:18 PM, &#34;Rune Kjær Svendsen&#34; &lt;&#xA;&gt; bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&gt;&#xA;&gt;&gt; There are a couple of points I’d like to address.&#xA;&gt;&gt;&#xA;&gt;&gt; Firstly, yes, &gt;50% attacks are a problem for Bitcoin. Bitcoin does not&#xA;&gt;&gt; function if the majority of mining power is dishonest. There is no way&#xA;&gt;&gt; around that. It’s how proof-of-work functions. And if we lose&#xA;&gt;&gt; proof-of-work, we lose Bitcoin.&#xA;&gt;&gt;&#xA;&gt;&gt; Secondly, I’m not suggesting that UTXO set hashes *replace* block hashes,&#xA;&gt;&gt; or even that it should be in the block header (probably in the coinbase&#xA;&gt;&gt; somewhere). I suggest it as an *addition* to the existing consensus rules.&#xA;&gt;&gt; Full nodes can still verify the chain with the added step of hashing the&#xA;&gt;&gt; UTXO set for every block. Of course, this can easily be deferred to after&#xA;&gt;&gt; proof-of-work has been verified already, such that no work is wasted.&#xA;&gt;&gt; Unless a 51% attack is in effect. But I argue that this is a moot point,&#xA;&gt;&gt; since Bitcoin is useless anyway under such circumstances.&#xA;&gt;&gt;&#xA;&gt;&gt; Lastly, I’m not suggesting miners discard the blockchain history. A miner&#xA;&gt;&gt; has an incentive to be absolutely sure that the chain he’s building on is&#xA;&gt;&gt; the right one. If he’s wrong, he loses money/income. There’s simply no&#xA;&gt;&gt; reason for a professional miner *not* to do the full initial sync, which&#xA;&gt;&gt; only needs to be done once. Non-miners, who just want to check the balance&#xA;&gt;&gt; of their wallet, however, really don’t need to retrieve information about&#xA;&gt;&gt; Hal Finney sending bitcoins to Satoshi in 2010. In any case, this practice&#xA;&gt;&gt; isn’t sustainable.&#xA;&gt;&gt;&#xA;&gt;&gt; In the end, it isn’t possible to control whether a miner verifies the&#xA;&gt;&gt; entire blockchain anyway (anyone can send the UTXO set over the wire). Not&#xA;&gt;&gt; letting the proof-of-work cover the UTXO hash doesn’t solve this problem,&#xA;&gt;&gt; it only makes it impossible to know whether a given UTXO set is the one&#xA;&gt;&gt; that the majority is mining on without retrieving the entire blockchain,&#xA;&gt;&gt; and doing the verification yourself. People can choose to skip that&#xA;&gt;&gt; regardless of what we do.&#xA;&gt;&gt;&#xA;&gt;&gt; Furthermore, all nodes have the option of deciding which level of&#xA;&gt;&gt; security they want. We’re not lessening security of the protocol, we’re&#xA;&gt;&gt; strengthening the security of something that’s already possible to do&#xA;&gt;&gt; (build on top of an unverified blockchain), but we’d rather want that&#xA;&gt;&gt; people not do.&#xA;&gt;&gt;&#xA;&gt;&gt; /Rune&#xA;&gt;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; &gt; On 18 Sep 2015, at 21:43, Patrick Strateman via bitcoin-dev &lt;&#xA;&gt;&gt; bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; Full nodes using UTXO set commitments is a change to the bitcoin&#xA;&gt;&gt; &gt; security model.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; Currently an attacker with &gt;50% of the network hashrate can rewrite&#xA;&gt;&gt; history.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; If full nodes rely on UTXO set commitments such an attacker could create&#xA;&gt;&gt; &gt; an infinite number of bitcoins (as in many times more than the current&#xA;&gt;&gt; &gt; 21 million bitcoin limit).&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; Before we consider mechanisms for UTXO set commitments, we should&#xA;&gt;&gt; &gt; seriously discuss whether the security model reduction is reasonable.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; On 09/18/2015 12:05 PM, Rune Kjær Svendsen via bitcoin-dev wrote:&#xA;&gt;&gt; &gt;&gt; Currently, when a new node wants to join the network, it needs to&#xA;&gt;&gt; retrieve the entire blockchain history, starting from January 2009 and up&#xA;&gt;&gt; until now, in order to derive a UTXO set that it can verify new&#xA;&gt;&gt; blocks/transactions against. With a blockchain size of 40GB and a UTXO size&#xA;&gt;&gt; of around 1GB, the extra bandwidth required is significant, and will keep&#xA;&gt;&gt; increasing indefinitely. If a newly mined block were to include the UTXO&#xA;&gt;&gt; set hash of the chain up until the previous block — the hash of the UTXO&#xA;&gt;&gt; set on top of which this block builds — then new nodes, who want to know&#xA;&gt;&gt; whether a transaction is valid, would be able to acquire the UTXO set in a&#xA;&gt;&gt; trustless manner, by only verifying proof-of-work headers, and knowing that&#xA;&gt;&gt; a block with an invalid UTXO set hash would be rejected.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; I’m not talking about calculating a complicated tree structure from&#xA;&gt;&gt; the UTXO set, which would put further burden on already burdened Bitcoin&#xA;&gt;&gt; Core nodes. We simply include the hash of the current UTXO set in a newly&#xA;&gt;&gt; created block, such that the transactions in the new block build *on top*&#xA;&gt;&gt; of the UTXO set whose hash is specified. This actually alleviates Bitcoin&#xA;&gt;&gt; Core nodes, as it will now become possible for nodes without the entire&#xA;&gt;&gt; blockchain to answer SPV queries (by retrieving the UTXO set trustlessly&#xA;&gt;&gt; and using this to answer queries). It also saves bandwidth for Bitcore Core&#xA;&gt;&gt; nodes, who only need to send roughly 1GB of data, in order to synchronise a&#xA;&gt;&gt; node, rather than 40GB+. I will continue to run a full Bitcoin Core node,&#xA;&gt;&gt; saving the entire blockchain history, but it shouldn’t be a requirement to&#xA;&gt;&gt; hold the entire transaction history in order to start verifying new&#xA;&gt;&gt; transactions.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; As far as I can see, this also forces miners to actually maintain an&#xA;&gt;&gt; UTXO set, rather than just build on top of the chain with the most&#xA;&gt;&gt; proof-of-work. Producing a UTXO set and verifying a block against a chain&#xA;&gt;&gt; is the same thing, so by including the hash of the UTXO set we force miners&#xA;&gt;&gt; to verify the block that they want to build on top of.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; Am I missing something obvious, because as far as I can see, this&#xA;&gt;&gt; solves the problem of quadratic time complexity for initial sync:&#xA;&gt;&gt; http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;t=2h02m12s&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; The only added step to verifying a block is to hash the UTXO set. So&#xA;&gt;&gt; it does require additional computation, but most modern CPUs have a SHA256&#xA;&gt;&gt; throughput of around 500 MB/s, which means it takes only two seconds to&#xA;&gt;&gt; hash the UTXO set. And this can be improved further (GPUs can do 2-3 GB/s).&#xA;&gt;&gt; A small sacrifice for the added ease of initial syncing, in my opinion.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; /Rune&#xA;&gt;&gt; &gt;&gt; _______________________________________________&#xA;&gt;&gt; &gt;&gt; bitcoin-dev mailing list&#xA;&gt;&gt; &gt;&gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt;&gt; &gt;&gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; _______________________________________________&#xA;&gt;&gt; &gt; bitcoin-dev mailing list&#xA;&gt;&gt; &gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt;&gt; &gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&gt;&#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;&gt;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150918/45701f72/attachment.html&gt;</html></oembed>