<oembed><type>rich</type><version>1.0</version><author_name>npub1g6vxlp4e0nyhs2dqxxcryztyf5f5hyuaq93nw4r87zcnv0sdsa0qqsl5wd</author_name><author_url>https://nostr.ae/npub1g6vxlp4e0nyhs2dqxxcryztyf5f5hyuaq93nw4r87zcnv0sdsa0qqsl5wd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-04-10&#xA;📝 Original message:Error correction is an interesting suggestion.&#xA;&#xA;If there was 10000 nodes and each stored 0.1% of the blocks, at random,&#xA;then the odds of a block not being stored is 45 in a million.&#xA;&#xA;Blocks are stored on average 10 times, so there is already reasonable&#xA;redundancy.&#xA;&#xA;With 1 million blocks, 45 would be lost in that case, even though most are&#xA;stored multiple times.&#xA;&#xA;With error correction codes, the chances of blocks going missing is much&#xA;lower.&#xA;&#xA;For example, if there was 32 out of 34 Reed-Solomon-like system, then 2&#xA;blocks out of 34 could be lost without any actual data loss for the network.&#xA;&#xA;As a back of the envelop check, the odds of 2 missing blocks landing within&#xA;34 of another is 68/1000000.  That means that the odds of 2 missing blocks&#xA;falling in the same correction section is 45 * 34 / 1000000 = 0.153%.  Even&#xA;in that case, the missing blocks could be reconstructed, as long as you&#xA;know that they are missing.&#xA;&#xA;The error correction code has taken it from being a near certainty that&#xA;some blocks would be lost to less than 0.153%.&#xA;&#xA;A simple error correction system would just take 32 blocks in sequence and&#xA;then compute 2 extra blocks.&#xA;&#xA;The extra blocks would have to be the same length as the longest block in&#xA;the 32 being corrected.&#xA;&#xA;The shorter blocks would be padded with zeroes so everything is the same&#xA;size.&#xA;&#xA;For each byte position in the blocks you compute the polynomial that goes&#xA;through byte (x, data(x)), for x = 0 to 31.  This could be a finite field,&#xA;or just mod 257.&#xA;&#xA;You can then compute the value for x=32 and x = 33.  Those are the values&#xA;for the 2 extra blocks.&#xA;&#xA;If mod 257 is used, then only the 2 extra blocks have to deal with symbols&#xA;from 0 to 256.&#xA;&#xA;If you have 32 of the 34 blocks, you can compute the polynomial and thus&#xA;generate the 32 actual blocks.&#xA;&#xA;This could be achieved by a soft fork by having a commitment every 32&#xA;blocks in the coinbase.&#xA;&#xA;It makes the header chain much longer though.&#xA;&#xA;Longer sections are more efficient, but need more calculations to recover&#xA;everything.  You could also do interleaving to handle the case where entire&#xA;sections are missing.&#xA;&#xA;&#xA;On Thu, Apr 10, 2014 at 12:54 PM, Peter Todd &lt;pete at petertodd.org&gt; wrote:&#xA;&#xA;&gt; -----BEGIN PGP SIGNED MESSAGE-----&#xA;&gt; Hash: SHA512&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; On 10 April 2014 07:50:55 GMT-04:00, Gregory Maxwell &lt;gmaxwell at gmail.com&gt;&#xA;&gt; wrote:&#xA;&gt; &gt;(Just be glad I&#39;m not suggesting coding the entire blockchain with an&#xA;&gt; &gt;error correcting code so that it doesn&#39;t matter which subset you&#39;re&#xA;&gt; &gt;holding)&#xA;&gt;&#xA;&gt; I forgot to ask last night: if you do that, can you add new blocks to the&#xA;&gt; chain with the encoding incrementally?&#xA;&gt; -----BEGIN PGP SIGNATURE-----&#xA;&gt; Version: APG v1.1.1&#xA;&gt;&#xA;&gt; iQFQBAEBCgA6BQJTRoZ+MxxQZXRlciBUb2RkIChsb3cgc2VjdXJpdHkga2V5KSA8&#xA;&gt; cGV0ZUBwZXRlcnRvZGQub3JnPgAKCRAZnIM7qOfwhYudCAC7ImifMnLIFHv1UifV&#xA;&gt; zRxtDkx7UxIf9dncDAcrTIyKEDhoouh0TmoZl3HKQ3KUEETAVKsMzqXLgqVe6Ezr&#xA;&gt; ny1bm0pQlkBCZFRwuZvmB27Y3mwC8PD6rT9ywtWzFjWd8PEg6/UaM547nQPw7ir0&#xA;&gt; 27S3XMfE/BMiQWfWnWc/nqpbmJjd8x/dM3oiTG9SVZ7iNxotxAqfnW2X5tkhJb0q&#xA;&gt; dAV08wpu6aZ5hTyLpvDxXDFjEG119HJeLkT9QVIrg+GBG55PYORqE4gQr6uhrF4L&#xA;&gt; fGZS2EIlbk+kAiv0EjglQfxWM7KSRegplSASiKEOuX80tqLIsEugNh1em8qvG401&#xA;&gt; NOAS&#xA;&gt; =CWql&#xA;&gt; -----END PGP SIGNATURE-----&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; ------------------------------------------------------------------------------&#xA;&gt; Put Bad Developers to Shame&#xA;&gt; Dominate Development with Jenkins Continuous Integration&#xA;&gt; Continuously Automate Build, Test &amp; Deployment&#xA;&gt; Start a new project now. Try Jenkins in the cloud.&#xA;&gt; http://p.sf.net/sfu/13600_Cloudbees&#xA;&gt; _______________________________________________&#xA;&gt; Bitcoin-development mailing list&#xA;&gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140410/1f9c48ef/attachment.html&gt;</html></oembed>