{"id":4927,"date":"2018-02-10T22:40:22","date_gmt":"2018-02-10T22:40:22","guid":{"rendered":"https:\/\/davidgerard.co.uk\/blockchain\/?p=4927"},"modified":"2018-06-06T20:27:46","modified_gmt":"2018-06-06T20:27:46","slug":"do-you-need-a-blockchain-probably-less-than-wust-and-gervais-think-you-do","status":"publish","type":"post","link":"https:\/\/davidgerard.co.uk\/blockchain\/2018\/02\/10\/do-you-need-a-blockchain-probably-less-than-wust-and-gervais-think-you-do\/","title":{"rendered":"Do you need a Blockchain? Probably less than W\u00fcst and Gervais think you do"},"content":{"rendered":"<p>The general answer to &#8220;do you need a blockchain?&#8221; is &#8220;no.&#8221; As I detail in <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/table-of-contents\/\">chapter 11<\/a> of <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/book\/\">the book,<\/a> append-only transaction ledgers with cryptographic tamper-proofing are good and deserve wider use \u2014 but the &#8220;distributed&#8221; bit is largely superfluous.<\/p>\n<p>You&#8217;ll basically never need a so-called &#8220;permissioned blockchain.&#8221; If you have a trusted third party, you don&#8217;t need any sort of blockchain \u2014 and in real-world use cases, you&#8217;ll almost always have a trusted third party, or central administrator of some sort.<\/p>\n<p>When Satoshi Nakamoto created Bitcoin, he took the append-only ledger \u2014 a robust construct that had been around for decades \u2014 and bolted on a <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/2017\/12\/28\/a-bitcoin-joke\/\">torturously convoluted<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Proof-of-work_system\">stupidly wasteful<\/a> consensus mechanism, to determine who got to write the next block, in order to avoid having any central control whatsoever.<\/p>\n<p>This solved a problem only the <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/the-conspiracist-gold-bug-economics-of-bitcoin\/\">economically delusional<\/a> thought they had, and even then it only solved it temporarily \u2014 Bitcoin had recentralised by 2014. It was an extremely clever and interesting hack \u2014 but that&#8217;s not the same as being useful for any other purpose.<\/p>\n<p>Most business usage that thinks it needs a blockchain just wants the append-only ledger. And we&#8217;ve had those for decades.<\/p>\n<p>The best-known example is probably <a href=\"https:\/\/en.wikipedia.org\/wiki\/Git\">Git<\/a> from 2005, four years before Bitcoin. This is a program by Linus Torvalds, the creator of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux\">Linux<\/a> \u2014 it&#8217;s his second big hit. He needed something to store the Linux computer code in, that would let you readily look through <a href=\"https:\/\/en.wikipedia.org\/wiki\/Version_control\">the full history of the code,<\/a> back to the beginning.<\/p>\n<p>Git has cryptographic tamper-proofing, as part of how it ensures the data is consistent\u00a0\u2014 if a single bit changes, all the hashes change. Software developers routinely copy entire full-history Git repositories around. Git is append-only ledgers on steroids.<\/p>\n<p>As I note in the book, your actual problem is usually cleaning up your data and its formats. If you really want an append-only ledger, <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/business-bafflegab-but-on-the-blockchain\/\">you may just need Git, or a simplified version of Git.<\/a> Some actually-useful &#8220;blockchain&#8221; products can reasonably be described as a simplified Git.<\/p>\n<p>But the question &#8220;do I need a blockchain?&#8221; needs addressing in detail. Karl W\u00fcst and Arthur Gervais from the ETH Z\u00fcrich Department of Computer Science have written a paper on the subject: <a href=\"https:\/\/eprint.iacr.org\/2017\/375.pdf\">Do you need a Blockchain?<\/a><\/p>\n<p>This paper is worth your time. They explain the jargon at length, and discuss many commonly-advocated blockchain use cases\u00a0\u2014 it&#8217;s a useful survey of the area\u00a0\u2014 even as the authors are huge Bitcoin and blockchain advocates, and somewhat more optimistic for applying blockchains than is really warranted.<\/p>\n<p>The main takeaway from the paper is this flowchart:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/davidgerard.co.uk\/blockchain\/2018\/02\/10\/do-you-need-a-blockchain-probably-less-than-wust-and-gervais-think-you-do\/do-you-need-a-blockchain-flowchart\/\" rel=\"attachment wp-att-4929\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4929\" src=\"https:\/\/davidgerard.co.uk\/blockchain\/wp-content\/uploads\/2018\/02\/do-you-need-a-blockchain-flowchart.png\" alt=\"\" width=\"800\" height=\"479\" srcset=\"https:\/\/davidgerard.co.uk\/blockchain\/wp-content\/uploads\/2018\/02\/do-you-need-a-blockchain-flowchart.png 800w, https:\/\/davidgerard.co.uk\/blockchain\/wp-content\/uploads\/2018\/02\/do-you-need-a-blockchain-flowchart-300x180.png 300w, https:\/\/davidgerard.co.uk\/blockchain\/wp-content\/uploads\/2018\/02\/do-you-need-a-blockchain-flowchart-768x460.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>To put that chart into text form:<\/p>\n<ul>\n<li>Do you need to store state? <em>(data on where you are right now in your process)<\/em><\/li>\n<li>Are there multiple writers?<\/li>\n<li>Can you use an always online Trusted Third Party?\u00a0<em>(a central authority)<\/em><\/li>\n<\/ul>\n<p>If either of the first two are &#8220;no,&#8221; or the third is &#8220;yes,&#8221; you don&#8217;t need a blockchain.<\/p>\n<ul>\n<li>Are all writers known?<\/li>\n<\/ul>\n<p>If not, you may need a public Bitcoin-style blockchain.<\/p>\n<ul>\n<li>Are all writers trusted?<\/li>\n<\/ul>\n<p>If yes, you don&#8217;t need a blockchain.<\/p>\n<ul>\n<li>Is public verifiability required?<\/li>\n<\/ul>\n<p>If yes, you may need a public permissioned blockchain. If no, you may need a private permissioned blockchain.<\/p>\n<p>This is mostly good and plausible. But\u00a0W\u00fcst and Gervais are a bit overenthusiastic about blockchains and their applicability.<\/p>\n<p>Naup1ius on Reddit \/r\/buttcoin <a href=\"https:\/\/www.reddit.com\/r\/Buttcoin\/comments\/7wakmc\/do_you_need_a_blockchain_a_critical_analysis\/dtzddgt\/\">takes us through<\/a> the use case I mentioned at the top: what does Linus Torvalds want to store his computer code in, to share it with his collaborators around the world?<\/p>\n<blockquote><p>Let&#8217;s run through the use case &#8220;Version Control for the Linux Kernel Source Code&#8221;:<\/p>\n<p>\u2022&nbsp;Do you need to store state? Um, yeah.<br \/>\n\u2022&nbsp;Are there multiple writers? Um, yeah, anyone can create a pull request or work on some branch somewhere.<br \/>\n\u2022&nbsp;Can you use an always online TTP? No, source code version control should not require coders to be constantly connected to something.<br \/>\n\u2022&nbsp;Are all writers known? No. As mentioned, anyone can create a pull request or work on some branch somewhere.<\/p>\n<p>Therefore, according to the flowchart, not only does &#8220;Version Control for the Linux Kernel Source Code&#8221; require a Blockchain, but a Permissionless Blockchain at that.<\/p>\n<p>Now, I guess they could say that &#8220;writer&#8221; in this case should really only be applied to Linus&#8217;s blessed branch on his blessed machine, to which indeed only he and\/or people subordinate to him have write privileges. But that isn&#8217;t obvious, and confusion on this point is part of why people think there&#8217;s a lot more use cases for blockchains than there are.<\/p><\/blockquote>\n<p>W\u00fcst and Gervais don&#8217;t address non-blockchain uses of append-only ledgers at all \u2014 and not addressing Git, and similar highly successful uses for append-only ledgers, is a glaring omission in the paper.<\/p>\n<p>The authors also include this table of the difference between a Bitcoin-style &#8220;permissionless&#8221; blockchain, a &#8220;permissioned blockchain&#8221; and an ordinary database:<\/p>\n<p>&nbsp;<\/p>\n<table width=\"90%\">\n<tbody>\n<tr>\n<th><\/th>\n<th>Permissionless Blockchain<\/th>\n<th>Permissioned Blockchain<\/th>\n<th>Central Database<\/th>\n<\/tr>\n<tr>\n<td>Throughput<\/td>\n<td>Low<\/td>\n<td>High<\/td>\n<td>Very High<\/td>\n<\/tr>\n<tr>\n<td>Latency<\/td>\n<td>Slow<\/td>\n<td>Medium<\/td>\n<td>Fast<\/td>\n<\/tr>\n<tr>\n<td>Number of readers<\/td>\n<td>High<\/td>\n<td>High<\/td>\n<td>High<\/td>\n<\/tr>\n<tr>\n<td>Number of writers<\/td>\n<td>High<\/td>\n<td>Low<\/td>\n<td>High<\/td>\n<\/tr>\n<tr>\n<td>Number of untrusted writers<\/td>\n<td>High<\/td>\n<td>Low<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Consensus mechanism<\/td>\n<td>Mainly PoW, some PoS<\/td>\n<td>BFT protocols (e.g. PBFT)<\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td>Centrally managed<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>(The &#8220;consensus mechanism&#8221; is how you choose who writes the next block. &#8220;PoW&#8221; is proof of work, the incredibly wasteful method used by Bitcoin. &#8220;PoS&#8221; is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Proof-of-stake\">proof of stake<\/a>, a mechanism used by some insignificant cryptocurrencies, and which Ethereum is <a href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/Proof-of-Stake-FAQ\">trying to switch to<\/a> but <a href=\"https:\/\/www.coindesk.com\/ethereum-time-highs-overshadow-wave-technical-issues\/\">haven&#8217;t got working properly yet.<\/a> &#8220;BFT&#8221; and &#8220;PBFT&#8221; are various consensus mechanisms that, in practice, are variants on &#8220;taking turns,&#8221; because all writers to a permissioned blockchain are authorised, by definition.)<\/p>\n<p>The append-only ledger with cryptographic tamper-proofing is good \u2014 it&#8217;s an obviously useful format for data that needs to be verifiable by others as not having been tampered with.<\/p>\n<p>The only use case that needs the full Bitcoin-style consensus mechanism is a cryptocurrency.<\/p>\n<p>Outside of that use case, you&#8217;re going to have a central authority, however you slice it \u2014 and the only reason anyone posits using a &#8220;blockchain&#8221; for this job is either cryptocurrency advocacy or buzzword compatibility.<\/p>\n<p>The <a href=\"https:\/\/davidgerard.co.uk\/blockchain\/2017\/11\/26\/the-world-food-programmes-much-publicised-blockchain-has-one-participant-i-e-its-a-database\/\">World Food Programme system<\/a>, that uses a private Ethereum instance for just a single user, is a good example of a &#8220;permissioned&#8221; blockchain that offers no advantage over a central database \u2014 even if anyone else ever joins the system, the World Food Programme still have ultimate control. So there&#8217;s no reason a similar programme should follow its example and deliberately adopt an inefficient system.<\/p>\n<p>Just use a database. You can write a log to an append-only ledger you distribute if you like, but you don&#8217;t need to be using that as your database.<\/p>\n<br><br><div align=\"center\"><p><a href=\"https:\/\/www.patreon.com\/bePatron?u=8420236\"><img src=\"https:\/\/davidgerard.co.uk\/blockchain\/wp-content\/uploads\/2021\/10\/become_a_patron_button.svg\" alt=\"Become a Patron!\" title=\"Become a Patron!\" width=217 height=51><\/a><br><p style=\"align:center;\" class=\"patreon-badge\"><i>Your subscriptions keep this site going. <a href=\"https:\/\/www.patreon.com\/bePatron?u=8420236\">Sign up today!<\/a><\/i><\/p><\/div>","protected":false},"excerpt":{"rendered":"<p>W\u00fcst and Gervais&#8217; paper &#8220;Do you need a Blockchain?&#8221; is pretty good, but goes a bit far in claiming use cases for blockchains. You&#8217;ll basically never need a so-called &#8220;permissioned blockchain.&#8221;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[155,463,74,464,462],"class_list":["post-4927","post","type-post","status-publish","format-standard","hentry","category-uncategorised","tag-rbuttcoin","tag-arthur-gervais","tag-blockchain","tag-git","tag-karl-wuest"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/posts\/4927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/comments?post=4927"}],"version-history":[{"count":56,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/posts\/4927\/revisions"}],"predecessor-version":[{"id":7650,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/posts\/4927\/revisions\/7650"}],"wp:attachment":[{"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/media?parent=4927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/categories?post=4927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidgerard.co.uk\/blockchain\/wp-json\/wp\/v2\/tags?post=4927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}