<oembed><type>rich</type><version>1.0</version><author_name>npub1sgs97fe0n9wehe6zw7drcxdz4cy9yt9pfqjv8gasz5jlk4zezc0quppx3c</author_name><author_url>https://nostr.ae/npub1sgs97fe0n9wehe6zw7drcxdz4cy9yt9pfqjv8gasz5jlk4zezc0quppx3c</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2017-04-11&#xA;📝 Original message:-----BEGIN PGP SIGNED MESSAGE-----&#xA;Hash: SHA256&#xA;&#xA;On 04/11/2017 01:43 AM, Tomas wrote:&#xA;&gt; Splitting transactions only happens *on storage* and is just a&#xA;&gt; minor optimization compared to storing them in full.&#xA;&#xA;Ok&#xA;&#xA;&gt; Sure, we can still call switching tips a &#34;reorg&#34;. And it is indeed&#xA;&gt; a trade off as orphan blocks are stored, but a block in the spend&#xA;&gt; tree takes only ~12kb and contains the required state information.&#xA;&gt; &#xA;It&#39;s not the headers/tx-hashes of the blocks that I&#39;m referring to, it&#xA;is the confirmation and spend information relative to all txs and all&#xA;outputs for each branch. This reverse navigation (i.e. utxo&#xA;information) is essential, must be persistent and is branch-relative.&#xA;&#xA;&gt; The blockchain is - by design - only eventually consistent across&#xA;&gt; nodes. Even if nodes would use the same &#34;tip-selection&#34; rules, you&#xA;&gt; cannot rely on all blocks being propagated and hence each&#xA;&gt; transaction having the same number of confirmations across all&#xA;&gt; nodes.&#xA;&gt; &#xA;&gt; As a simpler example, if two miners both mine a block at&#xA;&gt; approximately the same time and send it to each other, then surely&#xA;&gt; they would want to continue mining on their own block. Otherwise&#xA;&gt; they would be throwing away their own reward.&#xA;&#xA;That&#39;s not your concurrent validation scenario. In the scenario you&#xA;described, the person chooses the weaker block of two that require&#xA;validation because it&#39;s better somehow, not because it&#39;s his own&#xA;(which does not require validation).&#xA;&#xA;&gt; And yes, this can also happen over multiple blocks, but the chances&#xA;&gt; of consistency are vastly increased with each confirmation.&#xA;&#xA;Consistency is reached, despite seeing things at different times,&#xA;because people use the same rules. If the economy ran on arbitrary&#xA;block preference consistency would be elusive.&#xA;&#xA;&gt; I am not talking about rejecting blocks, I am only talking choosing&#xA;&gt; on which tip to mine.&#xA;&#xA;This line of reasoning has me a bit baffled. Yet as I said, it&#39;s not&#xA;important to the question at hand. It is not likely to be optimal to&#xA;validate concurrently even if you consider selection of a weaker block&#xA;advantageous.&#xA;&#xA;&gt;&gt; If you intend this to be useful it has to help build the chain,&#xA;&gt;&gt; not just rely on hardwiring checkpoints once rule changes are&#xA;&gt;&gt; presumed to be buried deeply enough to do so (as the result of&#xA;&gt;&gt; other implementations ).&#xA;&gt;&gt; &#xA;&gt;&gt; I understand this approach, it was ours at one time. There is a &#xA;&gt;&gt; significant difference, and your design is to some degree based&#xA;&gt;&gt; on a failure to fully consider this. I encourage you to not&#xA;&gt;&gt; assume any consensus-related detail is too small.&#xA;&gt; &#xA;&gt; I am not failing to consider this, and I don&#39;t consider this too&#xA;&gt; small . But ensuring contextual transaction validity by &#34;validate&#xA;&gt; =&gt;  valid with rules X,Y,Z&#34; and then checking the active rules&#xA;&gt; (softfork activation) on order validation, will give logically the&#xA;&gt; same results as &#34;validate with X,Y,Z =&gt; valid&#34;. This is not&#xA;&gt; &#34;hardwiring checkpoints&#34; at all.&#xA;&#xA;Storing the validation flags with each tx is exactly what libbitcoin&#xA;does (otherwise pre-validation would be infeasible). But that was not&#xA;the full point. You said on this in response previously:&#xA;&#xA;&gt;&gt;&gt; ...height-based compliance as meta data of validation seems to&#xA;&gt;&gt;&gt; be&#xA;adequate and safe.&#xA;&#xA;I read this as encoding the height at which a fork historically&#xA;activated. If you intend to track activation for each branch that will&#xA;not be &#34;height-based&#34; it will be history based.&#xA;&#xA;e&#xA;-----BEGIN PGP SIGNATURE-----&#xA;Version: GnuPG v2.0.22 (GNU/Linux)&#xA;&#xA;iQEcBAEBCAAGBQJY7KTHAAoJEDzYwH8LXOFOI+QH/RzX++1TNLC9DEMWioE7SmMj&#xA;yKOrP8WEkOnnrZdFKxVmwV9oZBekEvDABMnJmFiW5TMjsmPz7XwKAYzV0Y5L5oGU&#xA;fZYo3IOPyr0dA9TcpP15gNziR6pFUBq/QTYB6BcbUvvlkJv6xjgIdedgDMEyREWU&#xA;Hm/JU5g7gQUQd6MIDWbQ9FbYjtPuNSRQi851YfIn5mDivT4HuidaqQYMd9t5yS2Z&#xA;FuoQBI6L5GTJIqml1bTwJ0wsA7+ZseBEgMn1TT1ehy2v1FFJTojTpzIwG+m3eiXg&#xA;TxN3U/+fNAj+sKBb8Hq+nb7DvgjvKHyHuyRryBju7yq5d5rsb6meXcoiOtAznP8=&#xA;=fRXf&#xA;-----END PGP SIGNATURE-----</html></oembed>