Jekyll2020-12-23T00:30:03+00:00https://www.etherean.org/feed.xmlEtherean.orgA community dedicated to discussing the big picture: humans, technology, and the connections between them, with an eye towards avoiding techno-dystopian outcomes.The key ingredients to a better blockchain, Part X: Sustainability2020-12-21T21:48:00+00:002020-12-21T21:48:00+00:00https://www.etherean.org/blockchain/economics/governance/2020/12/21/key-ingredients-better-blockchain-part-x-sustainability<p><img src="/assets/vitto-sommella-CrDnEQE_9vY-unsplash.jpg" alt="Lego Firework Guy" /></p>
<p style="text-align: center"><sub>We humans have learned to build big, impressive things, but we’re less good at building things that last. Even the most mature digital technologies have survived barely one generation in human terms. Blockchain has the potential for real longevity, but to achieve this, we must do a much better job of designing for the long run. (Photo by <a href="https://unsplash.com/@vitto_s?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Vitto Sommella</a> on Unsplash)</sub></p>
<p>[This is part of a multi-part series on the key ingredients to a better blockchain. I recommend starting with part one, <a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Tech and Protocol</a>. See the <a href="#nav-links">full list of articles</a> in the series.]</p>
<p></p>
<h4>Table of Contents</h4>
<ul id="markdown-toc">
<li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
<li><a href="#economics" id="markdown-toc-economics">Economics</a></li>
<li><a href="#onboarding-and-enfranchisement" id="markdown-toc-onboarding-and-enfranchisement">Onboarding and Enfranchisement</a></li>
<li><a href="#governance" id="markdown-toc-governance">Governance</a></li>
<li><a href="#avoiding-capture" id="markdown-toc-avoiding-capture">Avoiding Capture</a></li>
<li><a href="#data-bloat" id="markdown-toc-data-bloat">Data Bloat</a></li>
<li><a href="#scope-creep" id="markdown-toc-scope-creep">Scope Creep</a></li>
<li><a href="#scaling" id="markdown-toc-scaling">Scaling</a></li>
<li><a href="#open-source-readiness" id="markdown-toc-open-source-readiness">Open Source Readiness</a></li>
<li><a href="#base-layer-complexity" id="markdown-toc-base-layer-complexity">Base Layer Complexity</a></li>
<li><a href="#a-healthy-ecosystem" id="markdown-toc-a-healthy-ecosystem">A Healthy Ecosystem</a></li>
<li><a href="#conclusion-where-were-headed" id="markdown-toc-conclusion-where-were-headed">Conclusion: Where We’re Headed</a></li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
</ul>
<h2 id="introduction">Introduction</h2>
<p>The previous article in this series discussed the critical transition that occurs as a platform and community move from the R&D phase into the production phase with the launch of a mainnet. While there are many challenges associated with this transition, things do not magically get easier once it’s over.</p>
<p>To use a more concrete metaphor, launching a production network is like piloting an airplane during takeoff. It’s by far the most dangerous phase in the journey. However, it’s not the case that, once airborne, all danger has passed. What’s changed is the nature of the danger and what must be done to avoid it. Staying airborne is more about finding and maintaining equilibrium, continuing to make steady improvements, and making progress along a charted course while dealing with unexpected challenges.</p>
<p>An airplane requires a fantastic array of systems and technologies to stay safely airborne, and a blockchain is no different. This article discusses things you can do to maximize the sustainability and longevity of a project and its community. This article is about the long run.</p>
<h2 id="economics">Economics</h2>
<p>All ships need fuel to keep flying. For blockchain, that fuel comes in the form of ongoing investment of capital—financial, intellectual, and social capital—needed to fund security, infrastructure R&D, and other <a href="https://www.etherean.org/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html#how-is-the-common-good-funded">common goods</a>. As with nation states, economic policies have important implications on a network’s long-term sustainability, such as the degree to which it’s able to attract outside sources of capital and maintain an adequate degree of ongoing investment in public goods. The two most important questions are where this funding comes from and how it’s distributed.</p>
<p>Every network needs an initial pool of capital for bootstrapping. This capital is generally provided by a small, centralized, core R&D team and the investors that back them. This centralized model works well because it’s efficient: funding flows freely, decisions can be made relatively easily, and the network can be designed, built, and launched relatively quickly.</p>
<p>Once an initial source of capital has been secured, the economic firepower it provides can then be extended through issuance. Investment implies a valuation for the network and its token, meaning that some service providers should accept the token in exchange for providing services to the network. Like a traditional firm compensating employees with issuance of stock and other forms of equity-based compensation, the network and community can fund investment via inflation, which can come in the form of a premine (issuance that occurs before network launch) or ongoing issuance (e.g., block rewards/subsidy).</p>
<p>The first thing that must be funded is network security. While Bitcoin and other blockchains plan to eventually transition to an entirely fee-based model with less and less issuance, no major blockchain has yet successfully made this transition and doing so remains <a href="https://www.cs.princeton.edu/~arvindn/publications/mining_CCS.pdf">complex and risky</a>. Funding security therefore almost certainly requires a subsidy. Most blockchain communities also decide to fund R&D work and other public goods through a premine and/or by capturing a portion of such rewards in an ecosystem fund (see, for instance, the <a href="https://www.coindesk.com/zcashs-funding-vote-and-the-problems-with-decentralized-governance">Zcash dev fund</a>).</p>
<p>However, there are limits to the amount of inflation that’s acceptable and sustainable. We need look no further than countries such as <a href="https://www.cnbc.com/2019/04/09/argentinas-peso-could-slip-into-crisis-mode-ahead-of-elections.html">Argentina</a> and <a href="https://en.wikipedia.org/wiki/Hyperinflation_in_Zimbabwe">Zimbabwe</a> to see the long term consequences of unsustainable economic policy and inflation that’s too high relative to a country’s real output. In practice even the most fiscally liberal blockchain communities maintain at best constant issuance (i.e., issuing a fixed number of new tokens per block), meaning that inflation falls over time in proportional terms.</p>
<p>Paying for public goods such as security and R&D through inflation means redistributing intrinsic capital (i.e., capital that is already present within the network): for instance, paying a subsidy to miners redistributes value away from all other tokenholders to fund security. In order for a network to continue to grow and develop, it also needs to attract extrinsic capital, i.e., capital that’s currently deployed elsewhere. One signal this is happening is appreciation of the value of a network’s token against benchmarks like USD or BTC. In the best case scenario, the value of the network token will gradually appreciate so that less issuance is necessary to sustain a given level of real public spending.</p>
<p>The question of how to attract extrinsic capital to a project is thorny and beyond the scope of this article, but a good starting point is to clearly articulate what a project stands for, and to put in place inclusive economic policies and institutions. For more on this topic, see <a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">Economics</a> and <a href="/blockchain/economics/society/2020/05/02/to-share-or-not-to-share.html">To Share or Not to Share?</a>.</p>
<h2 id="onboarding-and-enfranchisement">Onboarding and Enfranchisement</h2>
<p>Openness is not a priority for every project. Some projects are intended to have niche appeal, only solicit contributions from big companies, or otherwise want to limit the number of stakeholders. Given that decentralization and permissionlessness are central to blockchain technology and <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">the things it enables</a>, however, openness is highly valued by many blockchain projects and communities.</p>
<p>Projects that do value openness and intend to have broad appeal should take steps to be as open as possible to new contributors, users, and other community members and stakeholders for as long as possible. It’s critical to understand that openness is not a default state of a project and doesn’t come for free. On the contrary, as projects mature, as more stakeholders appear, and as the stakes increase, early stakeholders and those in positions of influence naturally tend to take advantage of those positions, an economic phenomenon known as <a href="https://en.wikipedia.org/wiki/Rent-seeking">rent-seeking</a>. In the process, projects tend to become less welcoming towards new arrivals. It takes a great deal of self awareness, foresight, planning, and hard work to prevent this from happening and instead to “lock the door open” to newcomers.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup></p>
<p>It should be easy for new arrivals to learn about the project and community, to get up to speed and begin contributing quickly, and to earn a stake in the network: not only an ownership or economic stake but also a voice in governance. Networks where most ownership and influence remain in the hands of a small number of elite stakeholders will struggle to appeal to a wider audience. After all, isn’t this how the world already works, and isn’t the purpose of blockchain to do better by embodying values such as decentralization and equality?</p>
<p>Meaningfully distributing ownership, economic stake, and influence is not easy. Blockchain appeals today to a relatively narrow segment of society, one that’s already well-off by global standards, and reaching outside this demographic is challenging. But it’s not necessary to enfranchise a billion people overnight. The most important thing is to ensure that, rather than entrenching existing power structures, we instead make room at the table for those who arrive later. A good place to start doing this is with balanced, <a href="https://onlinelibrary.wiley.com/doi/10.1111/psj.12212">multipolar systems of governance</a> with division of responsibility and checks and balances. It’s also a good idea to set aside a significant chunk of ownership and influence, in the form of tokens or other digital property, for future network participants, and to make it as easy as possible for them to earn a stake through mechanisms that are open, permissionless, and <a href="https://nakamoto.com/credible-neutrality/">credibly neutral</a>.</p>
<p>For more on this topic, see <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Governance</a> and <a href="/blockchain/economics/society/2020/05/02/to-share-or-not-to-share.html">To Share or Not to Share?</a>.</p>
<h2 id="governance">Governance</h2>
<p>Distributing decision-making authority away from a centralized party also goes a long way towards promoting the longevity of a project. One reason is to ensure that a project avoids capture (see next section) and can continue to develop indefinitely. Another reason is to make sure that most community members and project stakeholders feel that their voice is being heard and considered, so that they don’t feel disenfranchised and lose interest or faith in a project. A third reason is to avoid “key person” risk, overreliance on a single person or organization. Distributing governance makes room for a greater diversity of voices and preferences, which tends to lead to a better platform over time, and makes room for more and more diverse stakeholders. A robust system for considering the needs of all project stakeholders, and for distributing funding fairly, is one key task of project governance.</p>
<p>While a small set of private investors and centralized management of resources including funding is probably sufficient to launch a network, and has the benefit of efficiency as discussed above, requirements will change post-genesis. Over time successful projects will experience an increase in both the number and diversity of stakeholders. As this happens, centralized provision and management of funding may become unsustainable. This is normal and happens for a variety of reasons: priorities change and some early project backers may decide to invest in other things. Different stakeholders and different backers have different preferences and will tend to form coalitions. There’s no way that any single backer can win the trust and support of everyone in a large, diverse community, and there’s no way that they can fund a project forever no matter how deep their pockets.</p>
<p>To prepare for this eventuality, it’s very helpful to establish other sources of funding as early as possible. This may include funding from private individuals and organizations with an interest in the network’s success, in the form of ongoing token sales, grants, bounties, or sponsored seats for developers or researchers. It may include donations from community members (see <a href="https://gitcoin.co/">Gitcoin</a>, a platform for managing fundraising campaigns and donations across many chains). It may include an ecosystem fund. Having diverse sources of funding helps ensure that the network and community has the means to survive regardless of what happens to any individual person or organization.</p>
<p>Governance is of course complex and thorny and there is no single model appropriate for every project. For much more on this topic, see <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Governance</a>.</p>
<h2 id="avoiding-capture">Avoiding Capture</h2>
<p>When determining how to govern a blockchain, one of the first and most important questions to contemplate is, who is this platform for? As <a href="#onboarding-and-enfranchisement">discussed above</a>, some projects are intended for the use and benefit of a niche group, such as a consortium of companies. Others have more ambitious aims and regard themselves as truly public and open. Such platforms are designed for anyone, anywhere to use, and intend to host a wide variety of applications.</p>
<p>In spite of our best intentions, however, sometimes a system intended for the use and benefit of one group of people falls under the control of a different group of people. The term “capture” refers to <a href="https://en.wikipedia.org/wiki/State_capture">state capture</a>, a phenomenon all too common in real world politics whereby a small group of people, institutions, or special interests gain a great deal of power and influence over the governance of a country or other political entity and exploit that power and influence to benefit private interests, at everyone else’s expense. This often involves misuse of power such as ensuring that favorable laws are passed or that funding is directed towards private interests. A key characteristic of state capture is that it cannot be discovered or remedied through normal, legal means because the institutions that would ordinarily undertake investigate and prosecution (e.g., police, courts, electoral process, legislative and executive powers) are likely to have been subverted by the captors.</p>
<p>It may seem exaggerated to talk of state capture in the context of blockchain, since there isn’t nearly as much at stake in blockchain as in global politics. However, blockchains and states have a lot in common. Nation states and public blockchains both have millions of stakeholders. Both have governance that is, nominally, open and participatory. Blockchains do a lot of the things that states do: they have economic policy, they mint currency and collect taxes (transaction fees), they fund public goods, and they enact regulation (the protocol and other standards). At least in economic terms, there is in fact a lot at stake in blockchain: Bitcoin has a <a href="https://coinmarketcap.com/currencies/bitcoin/">market capitalization</a> larger than the GDP of all but 26 countries, putting it right <a href="https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)">between Nigeria and Belgium</a> in economic terms. And they are both, unfortunately, subject to capture.</p>
<p>A blockchain may be captured in many ways, some more visible and obvious than others. A proof of stake chain may be captured permanently by a cartel of validators that control more than half of the chain’s overall stake, something that may be invisible if that stake is divided into many small, pseudonymous pieces. A similar thing can happen in a proof of work chain, when one party or cartel controls a high enough percentage of mining. Capture can also happen by social means, such as when one organization or cartel controls most of the funding or influence in a community. A corporation or even a state actor could capture a blockchain, openly or secretly, by accumulating a majority of hash power or validator slots or by corrupting key actors in a community.</p>
<p>Avoiding capture is extraordinarily difficult, and is a highly contentious topic in the blockchain community. While some feel that all explicit governance structures or processes are subject to capture, and that blockchain governance should therefore remain informal, informal systems of governance are subject to yet another especially insidious form of capture, the <a href="https://en.wikipedia.org/wiki/The_Tyranny_of_Structurelessness">tyranny of structurelessness</a>.</p>
<p>As discussed in the previous section, good governance is key for sustainability. In order for governance to be sustainable, it must be resistant to capture. In this, as in so many other things, we should look to best practices from the pre-blockchain, offline world: the best way to avoid capture is to design open, participatory institutions of governance and law that are transparent and accountable to the broader population, and that are subject to checks and balances. See <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Governance</a> for more on this topic.</p>
<h2 id="data-bloat">Data Bloat</h2>
<p>There seems to be a rule that, over time, the throughput and hence the amount of bandwidth and data processing capacity required to fully validate a blockchain increases monotonically in the best case, and exponentially in the worst. It certainly never gets easier! Even with extremely limited throughput, as of this writing the Bitcoin blockchain is <a href="https://ycharts.com/indicators/bitcoin_blockchain_size">around 317gb</a> and increasingly rapidly, at around 25% per year. The disk space required to fully sync the Ethereum blockchain has reached <a href="https://etherscan.io/chartsync/chaindefault">nearly 600gb</a> and due to more demanding resource requirements this process <a href="https://twitter.com/ercwl/status/1159940020331040770?s=20">can take weeks</a>, or <a href="https://github.com/ethereum/go-ethereum/issues/19682">sometimes not finish at all</a>, even on good hardware. While it used to be possible to run an Ethereum full node on consumer-grade hardware on a home internet connection, that’s rapidly becoming untenable. Home mining, which was possible in the early days of both projects—and, indeed, was the way many early stakeholders earned their first BTC and ETH tokens—is now all but impossible. In this respect, popular blockchains such as Bitcoin and Ethereum have become victims of their own success.</p>
<p>While the problem of ever-rising resource requirements cannot be completely avoided, there are things that a project can do today to partially mitigate the issue. The most important thing is simply to do the math: <a href="https://en.wikipedia.org/wiki/Sensitivity_analysis">sensitivity analysis</a> will help you calculate best, middle, and worst case scenarios for the projected size of the database and the resources required to operate a full node down the road. If these requirements are too high to support your planned use cases, the best time to make changes is prior to genesis. Even shaving a few bytes off the size of a transaction or a signature, or allowing nodes to prune some types of data, can have a profound impact on resource requirements in the future.</p>
<p>Firstly, as a rule of thumb, blockchain projects should strive to make data encoding as efficient as possible. Different cryptographic signature formats produce signatures of varying sizes. As one concrete example, ECDSA signatures allow the public key associated with a signature to be <a href="https://bitcointalk.org/index.php?topic=6430.0">extracted implicitly from the signature</a>,<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">2</a></sup> meaning that a transaction does not need to explicitly contain the public key of its sender. Different serialization algorithms also clearly have an impact on data size.</p>
<p>Secondly, give careful consideration to precisely which data a full node most retrieve and store, and how long it must be stored. While core data such as blocks and transactions may need to be stored indefinitely, auxiliary data such as receipts and logs can likely be pruned after some time. It should be clear which data a node must store indefinitely, which data may be pruned, and when and how to do the pruning.</p>
<p>A third strategy is division of labor: rather than requiring every node to fully synchronize and validate the entire blockchain, it may make sense to allow individual nodes to be responsible for syncing and validating only a portion of the chain, such as through <a href="https://medium.com/nearprotocol/the-authoritative-guide-to-blockchain-sharding-part-1-1b53ed31e060">sharding</a>. Another example of division of labor is the archive node, which stores not only all blocks, transactions, and auxiliary data like other full nodes, but also <a href="https://ethereum.stackexchange.com/questions/57710/what-is-gcmode-archive-in-geth">every intermediate state</a>. This makes certain types of data queries much faster and easier, but requires substantially more disk space than an ordinary full node (<a href="https://etherscan.io/chartsync/chainarchive">around 6tb</a> as of now for an Ethereum archive node).</p>
<p>A fourth strategy is better economics and incentives. In most blockchains, a user only needs to pay a single, upfront fee to write some data to the blockchain. The data must then be stored forever by all full nodes, which receive no ongoing compensation for storing the data. As a result, as many as 95% of the smart contracts stored on the Ethereum network are never used or are used only a few times,<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">3</a></sup> so from the perspective of the network this space is wasted and there is no way to reclaim it.<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">4</a></sup> A better economic model involves charging the owner of the data for this storage service per unit time, either directly through the payment of “<a href="https://medium.com/going-byzantine/ethereum-storage-rent-a2b89e96bd35">storage rent</a>” or “<a href="https://ethresear.ch/tag/storage-fee-rent">state fees</a>” or else indirectly by requiring them to lock some tokens into a “<a href="https://medium.com/conflux-network/conflux-economic-model-staking-collateral-for-storage-on-conflux-network-cb4c8c150e3">storage bond</a>.” This properly incentivizes use of scarce storage space and prevents such waste.</p>
<p>Additionally, there are a number of experimental strategies that should someday reduce the data storage burden on blockchain nodes. One such strategy, known as <a href="https://ethresear.ch/tag/stateless">statelessness</a>, shifts the burden of data storage from full nodes to users by requiring users to <a href="https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/stateless-clients/">store their own data</a> (or, alternatively, pay someone else to store it for them). Another experimental strategy involves using recursive zero-knowledge proofs to collapse the entire blockchain state at a given point in time down to a single proof (see <a href="https://minaprotocol.com/">Mina</a> and <a href="https://electriccoin.co/blog/halo-recursive-proof-composition-without-a-trusted-setup/">Halo</a>). While I’m not aware of any projects having launched these strategies in production, this is an area of active, ongoing research and I expect that, eventually, they will be put to good use.</p>
<h2 id="scope-creep">Scope Creep</h2>
<p>Data and resource requirements aren’t the only aspect of blockchain that tends to grow larger over time. Software, like regulation, tends to monotonically grow more complex. While this may be a good thing for some types of software, this is arguably not the case for a system like a blockchain. As base layer infrastructure, the goal of blockchain should be to grow more stable and reliable over time, not more complex. As Antoine de Saint-Exupery famously said,</p>
<blockquote>
<p>Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.</p>
</blockquote>
<p>Blockchain software would do well to take this admonition to heart. Every blockchain should have a social contract with its users and developers that sets out the things it aims to achieve. Once those things are achieved, the only things that should change are emergency fixes and “under the hood” performance improvements. Beyond this, new features increase the risk of upgrade problems, new attack vectors, and new security vulnerabilities, and thus amount to dangerous bloat.</p>
<p>For a good example we can look to Bitcoin, which has arguably already achieved its most important goals: a censorship-resistant, seizure-resistant, non-sovereign form of sound money. There are many features that could be added to increase scalability or enable various use cases, but not without compromising on Bitcoin’s <a href="https://uncommoncore.co/unpacking-bitcoins-social-contract/">implicit social contract</a> and promises of security, trustlessness, and hard issuance cap. This had led to a norm of “no hard forks” <a href="https://bitcoincore.org/en/2016/01/07/statement/">on the part of Bitcoin Core</a> and <a href="https://www.reddit.com/r/Bitcoin/comments/877h05/no_hard_forks_bitcoin_has_fundamental_laws_people/">in the Bitcoin community</a> more broadly, and a roadmap with very few new features. The few features <a href="https://www.crypto-news-flash.com/bitcoin-core-developer-outlines-btc-roadmap-for-2020/">on the roadmap</a> are mostly designed to improve L2 solutions such as Lightning Network, where most innovation in Bitcoin is happening today.</p>
<p>As an even better, more mature example, we can look to standards such as <a href="https://twitter.com/aka_pugs/status/1311310109088182274">Ethernet</a>, IPv4, and ASCII. These are foundational building blocks of modern computing and the Internet that developers can safely rely on because they’ve stopped evolving. These technologies have achieved their goals and have thus evolved to a final, complete state. This is sometimes referred to as <a href="https://jtobin.io/kelvin-versioning">Kelvin versioning</a>: rather than using incremental versions as most software does, we can imagine some standards <em>cooling</em> towards an absolute zero, final state. This is how standard infrastructure like blockchains, VMs, and <a href="https://en.wikipedia.org/wiki/Instruction_set_architecture">ISAs</a> should be designed and engineered.</p>
<p>To be clear, this does not mean that innovation should stop or slow, but rather that it should be pushed to higher layers in the technology stack. While IPv4 hasn’t changed meaningfully <a href="https://tools.ietf.org/html/rfc791">since 1981</a>, new standards such as <a href="https://en.wikipedia.org/wiki/QUIC">QUIC</a> have been built on top of it. The same is true of blockchain: the base layer provides primitives such as P2P/gossip, the database, consensus, transactions, and a VM, and applications at layer two and above can make use of these primitives to do more complex, innovative things. The base layer should continue to evolve until it’s mature, reliable, scalable, and secure, at which point innovation should be pushed up to these higher layers.</p>
<h2 id="scaling">Scaling</h2>
<p>While the term scalability can be interpreted in several ways, most commonly it refers to the number of transactions that a blockchain can process per unit time. It’s one of the thorniest, most complex, and most important topics in blockchain, and is an area of active research and development. A network that doesn’t scale won’t be able to handle high transaction throughput, won’t be able to support many production applications and use cases, and will struggle to attract users and ongoing investment, negatively impacting sustainability.<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote">5</a></sup></p>
<p>There are many approaches to scaling blockchains. However, they can all be reduced to <a href="https://multicoin.capital/2018/02/23/models-scaling-trustless-computation/">one fundamental trilemma</a>: security vs. transaction throughput vs. decentralization. Other things being equal, adding more nodes to a network increases decentralization but decreases transaction throughput since more nodes need to exchange more messages in order to reach consensus and stay in sync. And, other things being equal, requiring nodes to do more work to produce or validate blocks makes the network more secure but decreases transaction throughput since that work takes time.</p>
<p>These tradeoffs occur because of fundamental limits imposed by physics and thermodynamics and there is no way around them. For the same reason, you cannot increase throughput without reducing one or both of security and decentralization. Every blockchain that wishes to increase throughput must therefore make difficult tradeoffs.</p>
<p>One approach to scalability is to limit the number of nodes that participate in consensus by, e.g., requiring that they be <a href="https://docs.hedera.com/guides/mainnet/mainnet-nodes/node-requirements">large, powerful computers</a> with <a href="https://docs.solana.com/running-validator/validator-reqs">very fast and reliable internet connections</a> and/or that potential validators <a href="https://learn.hedera.com/hedera-governing-council-contact">apply for permission</a> to join the network. This approach, which trades decentralization for scalability, has been adopted by projects such as <a href="https://www.validators.app/">Solana</a> and <a href="https://docs.hedera.com/guides/mainnet/mainnet-nodes">Hashgraph</a>. Another approach is to divide the blockchain into a set of smaller logical chains, and to have fewer nodes validate the transactions on each of these smaller chains. Depending on whether and how they share security, the sub-chains may be called shards or parachains. This approach, which trades security for scalability, has been adopted by projects such as <a href="https://ethereum.org/en/eth2/shard-chains/">Eth2</a> and <a href="https://wiki.polkadot.network/docs/en/learn-parachains">Polkadot</a>.</p>
<p>While there’s no way around these tradeoffs in the <em>chain</em> topology, there are other distributed ledger topologies with different tradeoffs. DAG-based protocols such as Kadena and Spacemesh are able to achieve higher throughput without sacrificing security or decentralization by adding multiple blocks at each block height. However, these protocols are more complex than blockchain protocols and are unproven in production.</p>
<p>There are many competing architectures for scaling and none have so far emerged as dominant. As is always the case in design and engineering, each architecture has certain strengths and weaknesses. Each project should study the options, consider its needs and preferences, and pick one. While transaction volume may be low in the beginning and thus scalability may not feel like a priority, note that it tends to increase <a href="https://etherscan.io/chart/tx">suddenly and exponentially</a> so, if scalability matters, it’s important that you have a plan in place for when it does increase. You can always start off with a single shard or otherwise limited throughput, and increase it later as needed.</p>
<h2 id="open-source-readiness">Open Source Readiness</h2>
<p>While a small, focused, experienced team of developers may be able to build and ship a production blockchain platform, at some point they’ll probably want to open the project for contributions from outside developers. There are several reasons for this: funding may be limited, complexity increases over time and they’ll need help, having <a href="https://ethereum.org/en/developers/docs/nodes-and-clients/#clients">many independent client implementations is good</a>, good ideas come from many places, and it gives the community a <a href="/experience/software/web3/2020/12/13/software-ikea-effect.html">sense of ownership in the platform</a>, to name a few.</p>
<p>However, as any developer who has tried knows all too well, soliciting outside contributions to a project, especially one as complex as a blockchain, involves a lot more than making the repository public! There are many open source projects competing for developers’ limited time and attention, and there are only so many developers with the skills necessary to contribute meaningfully to the development of full node software (skills such as systems programming, concurrency, networking, and languages like Rust and Go). There are certain steps you can take to make your project as inviting as possible to outside contributors.</p>
<p>These include picking the right license (and making sure that all prior contributors sign off on the license), improving documentation and tooling, and adopting good engineering hygiene such as making sure code is clean, well documented, and easy to read. It means improving software engineering workflow: <a href="https://www.kubernetes.dev/docs/guide/help-wanted/">clearly tagging issues</a> (“Help Wanted” and “Good First Issue” are especially helpful here), moving as much communication as possible from internal channels into public ones such as issues and pull requests, communicating clearly, having a clear workflow for reviewing and merging code changes, and sticking to this workflow. It means responding quickly and politely to outside contributions and questions. Many teams of developers, used to working only among internal team members and communicating on private channels, may find these changes uncomfortable in the beginning.</p>
<p>It also requires thinking outside the box, escaping one’s comfortable, narrow frame of reference, and adopting a stance of patience and empathy: things that might “just work” for the core team—because, e.g., everyone is running the same OS, or has the same tools or libraries installed—may cause headaches for potential contributors using different tools or platforms. (Of course, this is another reason why it’s good to have outside contributors: your code should work on as many platforms and be compatible with as many development environments as possible!)</p>
<p>To some extent, soliciting contributions from outside developers is also a marketing challenge. It’s important to articulate clearly <a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">what your project stands for</a> and why it’s worth contributing to. Writing blog posts and speaking at conferences, about your project specifically but also about general technical challenges you’ve encountered and how you’ve solved them, can help a lot with attracting developer interest.</p>
<h2 id="base-layer-complexity">Base Layer Complexity</h2>
<p>In every application stack there is a tradeoff between, on the one hand, keeping complexity in the base layer versus, on the other hand, pushing it further up the stack. Other things being equal, complexity in the base layer is nice because it ensures a more consistent experience for all apps and all users, and better tooling. Everyone relies on the same base layer, and if everyone is using the same base layer tools more can be invested in those tools and they will get better, faster.</p>
<p>On the flipside, a more complex base layer presents several important challenges. It’s harder to make changes when something is more complex. A more complex base layer presents a larger attack surface and increases the likelihood of bugs and exploits, reducing security. In the case of blockchain, changing the base layer usually requires a network upgrade hard fork, which is costly to coordinate and cannot be done too frequently. Mistakes at the base layer are also very costly, since the network will probably <a href="https://www.etherean.org/blockchain/governance/community/2020/11/15/key-ingredients-better-blockchain-part-ix-production-readiness.html#backwards-compatibility">be burdened with them forever</a>. And, as with politics, it’s impossible to make everyone happy with protocol changes. For this reason, other things being equal, it’s better for the base layer to be as simple as possible. This allows more “localized” innovation and experimentation to happen further up the stack.<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote">6</a></sup><sup>,</sup><sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote">7</a></sup></p>
<p>This is a tricky balancing act and every network and protocol has to choose a point on the spectrum. Optimize very far in one direction and you get Bitcoin: a simple, stable, secure base layer and cryptocurrency with mature tooling, but one that’s arguably too simple to do many really interesting, useful things. Go very far in the other direction and you get Ethereum: a protocol that <a href="https://medium.com/mycrypto/the-history-of-ethereum-hard-forks-6a6dae76d56f">changes often</a> in ways that sometimes <a href="https://www.coindesk.com/ethereums-istanbul-upgrade-will-break-680-smart-contracts-on-aragon">seem arbitrary and unpredictable</a>, that’s <a href="https://medium.com/chainsecurity/constantinople-enables-new-reentrancy-attack-ace4088297d9">less secure as a result</a>, and that has a plethora of immature, <a href="https://github.com/ethereum/fe">experimental tooling</a>.</p>
<p>The “Goldilocks point” is a base layer that’s <a href="https://quoteinvestigator.com/2011/05/13/einstein-simple/">as simple as possible, but no simpler</a>—one that’s secure, reliable, and that changes in predictable ways, and enables lots of interesting innovation at higher layers. Many different apps, use cases, and narratives should ideally be able to share a single base layer and exchange data and value. Such a blockchain would be extremely sustainable because changes to the base protocol would become <a href="https://jtobin.io/kelvin-versioning">vanishingly rare over time</a>.</p>
<h2 id="a-healthy-ecosystem">A Healthy Ecosystem</h2>
<p>What ultimately makes platforms like Windows, Mac, iOS, Android, Linux, and the Web so valuable and dominant is not just their technical merit. It’s a virtuous feedback loop whereby the firms and organizations behind those platforms kickstart them by investing heavily in their success and recruiting stakeholders and the first few applications, leading to network effects, leading to a growing ecosystem of developers, users, companies, and other applications relying on the platforms, leading to yet more investment and development, and so on.</p>
<p>While all of the above areas, from economics to governance to scalability, are essential for sustainability, none is sufficient by itself. Simply having the best technology, documentation, governance, or even people is not enough. Platforms that want to be competitive and sustainable over the long term need to invest in an ecosystem: this, above all, is why blockchain communities and platforms such as Bitcoin and Ethereum continue to receive the lion’s share of attention and investment, even as more technologically sophisticated platforms continue to launch.</p>
<p>Developing and maintaining a healthy ecosystem is the hardest aspect of sustainability. There is no simple recipe since each successful project and platform ecosystem can and should be quite different, and because many different kinds of ecosystems can prosper. Compare, for instance, the Windows ecosystem and the Linux ecosystem. Both are vast, mature, and hugely successful. Both include large numbers of companies, developers, and applications. But these two ecosystems look almost nothing alike—one corporate and highly centralized, the other open source and highly decentralized—and there is very little overlap between them (or, at least, there wasn’t <a href="https://www.techrepublic.com/article/what-is-microsoft-doing-with-linux-everything-you-need-to-know-about-its-plans-for-open-source/">until recently</a>).</p>
<p>While ecosystem development tends to be chaotic, organic, and difficult to control, there are a few concrete steps that a project’s founders and stakeholders can to do to promote the development of a healthy ecosystem. <a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">Community culture</a>, <a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">constitution</a>, and good <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">governance</a> are absolutely essential starting points as they attract the right ecosystem participants, put off the wrong ones, and help align interests. Another starting point is to kickstart the virtuous flywheel described above by investing in early wins: good documentation, reliable infrastructure and tooling, and a few killer apps. It’s also essential to cast a wide net and build bridges with different classes of stakeholders, since an ecosystem by definition requires a diverse set of participants. In addition to developers and users, this should include designers, investors, students, and those with experience managing community and public relations. Investment in education can also help a lot: bootcamps, accelerators, and online courses are a great way to attract more ecosystem contributors.</p>
<h2 id="conclusion-where-were-headed">Conclusion: Where We’re Headed</h2>
<p>An enormous amount of funding has flowed into blockchain recently. As a result, the landscape has become crowded and the field has grown quite competitive. This is good news from a social perspective because it has validated the idea of blockchain and cemented it in the minds of many people as a meaningful, high potential technology that’s here to stay. It also means that, among the many designs being tried, it’s likely that one or more winning designs will find product market fit, survive, and create value for many people. However, intense competition naturally makes it harder for any single platform and community to differentiate.</p>
<p>As the technology behind blockchain continues to develop, disseminate, and become commoditized, the best projects and teams will differentiate themselves in a way that has less to do with technology and more to do with mission, vision, values, and culture. Fostering a healthy culture is as important for the longevity of a project as any of the other topics discussed above. It’s also one of the hardest because, unlike technology, culture is hard to see, hard to define, and hard to protect.</p>
<p>A project’s social fabric is its contributors, community, and the mission, values, and principles that bind them together. A community that’s united primarily by a profit motive, or even by a concrete deliverable such as a particular piece of infrastructure, is not a community that will endure hardships or make it through the long haul together. Giving thoughtful attention to culture and adopting a long-term attitude and posture from the project’s earliest phases will maximize its sustainability and longevity. This is both because these actions and ideas really do have a direct impact on a project’s and community’s health and longevity, but equally because investing in these things sends an unambiguous signal that “this community is here for good.” It attracts the right kind of people, those interested in the long-term health of the network and community. (For more on this topic, see <a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">Community</a>, <a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">Constitution</a> and <a href="/blockchain/culture/values/2020/08/09/crypto-has-a-purpose-problem.html">Crypto Has a Purpose Problem</a>.)</p>
<p>To continue with the metaphor introduced in the introduction, blockchain is like a powerful airship that can take us quite far. The question is, where do we want to go? In the vector that is progress, technology gives us magnitude, but it doesn’t give us direction. What good is an airship, or any machine for that matter, if we don’t know where we want it to take us?</p>
<p>It’s very early days for blockchain as an idea and a technology, and I’m not sure that any team, project, or community yet has a compelling answer to this question. Even the stablest and most mature projects, such as Bitcoin, continue to face very real challenges and uncertainties. I don’t know which platforms, technologies, and communities will ultimately prevail, but I know one thing for sure: the ones that do will be the ones that have a clear, compelling answer to this question. In other words, they’ll be the ones that boldly and proudly know where they’re going and why, and aren’t afraid to talk about it.</p>
<p>As you think about the long term sustainability of your project, this is as good a place as any to start: where are you headed, and why? While I can’t articulate exactly what our destination is, I have a feeling that, even as we take very different paths, we’re all headed there together. I look forward to seeing you there. Godspeed.</p>
<h2 id="notes">Notes</h2>
<hr />
<p></p>
<p><a name="nav-links"></a></p>
<p>This article is part of a multi-part series on the key ingredients to a better blockchain. Check out the other articles in the series:</p>
<ul>
<li><a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Part I: Tech and protocol</a></li>
<li><a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">Part II: Decentralization</a></li>
<li><a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">Part III: Community</a></li>
<li><a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">Part IV: Constitution</a></li>
<li><a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Part V: Governance</a></li>
<li><a href="/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html">Part VI: Privacy</a></li>
<li><a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">Part VII: Economics</a></li>
<li><a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html">Part VIII: Usability</a></li>
<li><a href="/blockchain/governance/community/2020/11/15/key-ingredients-better-blockchain-part-ix-production-readiness.html">Part IX: Production Readiness</a></li>
<li><a href="/blockchain/economics/governance/2020/12/21/key-ingredients-better-blockchain-part-x-sustainability.html">Part X: Sustainability</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>This happens throughout human society. It’s the reason that people in a country built by immigrants can arbitrarily decide one day that they don’t want to allow any more immigration. And it’s easy to convince yourself why this is rational: because resources are limited, because we should prioritize those who are already here, or because there just isn’t room for more—nevermind the fact that, in countries as in blockchains, immigrants create enormous value over the long term. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>See sample code at <a href="https://github.com/spacemeshos/ed25519">https://github.com/spacemeshos/ed25519</a>. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>Source: Oliva, G.A., Hassan, A.E. & Jiang, Z.M.. An exploratory study of smart contracts in the Ethereum blockchain platform. Empir Software Eng 25, 1864–1904 (2020). <a href="https://doi.org/10.1007/s10664-019-09796-5">https://doi.org/10.1007/s10664-019-09796-5</a> <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Ethereum does offer a partial refund for smart contract storage space that’s cleared, but it appears not to be enough of an incentive since this rarely happens. See <a href="https://gastoken.io/">GasToken</a> for more information. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>Bitcoin and Ethereum have proven remarkably sustainable in spite of (and certainly not because of) their inherent lack of scalability. However, it’s important to note that we don’t have a counterfactual: if these networks could handle 10x or 100x the throughput, how much more popular would they be? How many more applications and users would they boast? Other things being equal, greater scalability and more throughput is always better. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:6" role="doc-endnote">
<p>As a concrete example, the Ethereum community is currently considering a proposal, <a href="https://eips.ethereum.org/EIPS/eip-2593">EIP-2593</a>, that introduces an in-protocol bidding parameter that allows a user to specify a transaction fee that is automatically escalated over time. While this initially sounds like a good idea, upon further reflection, it feels to me like complexity that doesn’t belong at the base layer. It has the downside of making bidding more complex for everybody, and some users may be better served by an entirely different bidding strategy which they can already deploy on their own (using, e.g., better wallet software). <a href="#fnref:6" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:7" role="doc-endnote">
<p>There are some interesting real-world parallels here as well. Companies and countries face a version of this tradeoff. When they move complexity, in the form of regulation or policy, into the “base layer” (i.e., the top, executive, or national level), they gain efficiency at the cost of more localized innovation, and making the entire structure more fragile. When they devolve this complexity, they make the opposite tradeoff: more local innovation and more resiliency at the cost of standardization and efficiency. <a href="#fnref:7" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigSimple, Durable, Yours2020-12-21T01:21:00+00:002020-12-21T01:21:00+00:00https://www.etherean.org/software/web3/2020/12/21/simple-durable-yours<p><img src="/assets/adriano-pucciarelli-ZFR1RlZWyF0-unsplash.jpg" alt="A casio digital wristwatch" /></p>
<p style="text-align: center"><sub>When designing and building software, I take inspiration from tools like this. I've owned one of these watches for years. They're simple and elegant, indestructible, and run for years on a single battery. Sometimes, less is more. (Photo by <a href="https://unsplash.com/@lettera71?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Adriano Pucciarelli</a> on Unsplash)</sub></p>
<p>Software today is a total mess. This may be an unpopular opinion, but it’s something that I’m sure of. In fact, it’s probably the thing I believe the most strongly that the greatest number of people would disagree with.</p>
<p>This is true for <a href="/blockchain/web3/software/2020/08/04/faster-horses-better-software.html">several reasons</a>. Software today is overly complex. It’s unreliable. It’s slow. There’s hardly any interoperability. It’s too hard to design, build, and maintain. And, of course, software companies spy on us, <a href="https://en.wikipedia.org/wiki/Surveillance_capitalism">exploit us</a>, and <a href="https://www.applescotch.com/values/philosophy/society/2020/09/11/institutional-hypocrisy.html">deceive us</a>. These companies take our data away from us and make it <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">difficult or impossible</a> to get it back or move it somewhere else. They actively and <a href="https://www.theverge.com/2012/8/16/3248079/twitter-limits-app-developers-control/in/3027522">intentionally cripple</a> their software, <a href="https://9to5google.com/2019/07/11/google-kills-features-its-fine-calm-down/">remove functionality</a>, and <a href="https://www.theverge.com/2018/2/15/17017864/google-removes-view-image-button-from-search-results">make it hard</a> to do what we want, to their benefit (and our expense).</p>
<p>Software is quickly becoming one of the most important technologies in the world for the billions of people that rely on it every day. In this respect, it’s following in the footsteps of the automobile, which became a mainstream technology a hundred years ago. Software has only been in the mainstream for about 30 years, and relative to where it could and someday will be, it’s about as mature today as the automobile was in the fifties. We have a long way to go.</p>
<p>When I suggest that software can and should be much better than it is today people often ask, then why don’t users demand better software? Users today seem pretty happy overall with software from Google, Apple, Facebook, and other tech giants, and they’re not clamoring for open source, self-sovereign, P2P, Web3 alternatives.</p>
<p>While this may be true, I’m confident that in the end the best software will win because software is a tool. We use the best tools we can, and when better tools come along, we use them instead. In order to be useful, tools need to be both durable and customizable. In the early part of the previous century thousands of people bought and drove the Model T because it was the best car available at the time. When better, faster, cheaper, more reliable cars came along, people bought those instead. Over time the same thing will happen with software.</p>
<p>I’m not the only one thinking about how software can be better. Lots of smart people are thinking about this problem, and they’ve come up with things like the <a href="http://bit.ly/datafesto">New Tech Manifesto</a> and the <a href="https://youtu.be/LbIavBeq5BE">Can’t Be Evil engineering principles</a>. My own attempt is the <a href="https://forum.etherean.org/t/a-web3-bill-of-rights/210?u=lane">Web3 Bill of Rights</a>.</p>
<p>The more I think about it, however, the more I realize that it doesn’t need to be so complicated. Think about the tools you use in your daily life. Think about your refrigerator, your washing machine, your car, that old lamp in the corner. Think about tools large and small: doors and cupboards, hammers and nails, airplanes and buildings. What do they all have in common?</p>
<p>It boils down to three fundamental properties: simplicity, durability, and ownership. What the tools we rely on the most heavily have in common is that they’re all simple, durable, and ours. Software that has all of these properties also satisfies the criteria in the above lists.</p>
<p>Software needs to be <em>simple</em> so that anyone can use it. It needs to be possible to explain what an application does, and its purpose, in just a few words. And a user without any special skills or training needs to be able to figure out how to use an application in a few minutes without an instruction manual. If it’s not simple, then only tech savvy users can use it, which reduces network effects. Software should also be simple to develop so that there’s a huge marketplace and an ecosystem of developers and applications.</p>
<p>Software needs to be <em>durable</em> for the same reason that all tools need to be durable: by definition a tool is something we can rely on, and we shouldn’t have to replace our tools often. We can’t constantly learn or invest in new tools. When I put a screwdriver in a drawer, I know that it will still work in a year. If I don’t start my car for a week or two, I know that it will be fine, and modern automobiles can go hundreds of thousands of miles before breaking down. The same should be true of our software: an application I haven’t run in a year should still just work when I run it again. If I invest a lot of time in customizing an application, or in learning to use it like an expert, I have to know that I’ll be able to use that application indefinitely and that someone won’t suddenly decide to shut it down or change in it a way that removes features that I rely on.</p>
<p>The third property is a bit more nuanced. Software needs to be <em>yours</em> because something that’s not yours is by definition not durable because someone else can take it away from you. But it’s more than this. Software isn’t a simple tool like a screwdriver that you pick up and use from time to time. It’s more like an automobile or, better yet, a home. It’s a place you spend time. Increasingly, we spend more and more time in <em><a href="https://www.etherean.org/blockchain/web3/software/2020/08/04/faster-horses-better-software.html#digital-spaces">digital spaces</a>,</em> and these spaces are accordingly more and more important in our lives. What do we humans do to our spaces? We customize them to make them more comfortable, familiar, and livable. We hang art that we like on the wall. We rearrange the furniture. We change the paint color. We expand and reconfigure them. All of this needs to be possible with software as well.</p>
<p>When we look at modern software through this lens, it becomes immediately obvious why most of it fails to meet these criteria. Most of the software we use is not meaningfully ours because it’s controlled by its publisher, not us. It runs on someone else’s servers, not on our devices. The data that lives in the apps we use <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">is not ours</a>. The digital devices we buy and use <a href="https://www.androidcentral.com/who-really-owns-your-phone">are not ours</a>. Even software from the most trusted, privacy-conscious publishers <a href="https://sneak.berlin/20201112/your-computer-isnt-yours/">spies on us</a>. And most of the software we use is not durable. It’s fragile, constantly breaking, constantly requiring us to update, to re-authenticate. If we’re unlucky, if the publisher of an app is malicious, negligent, or lazy, or if their plans change, an app we rely on may stop working entirely and we’ll have to start over completely. Apps and services get shut down, acquired, and assimilated all the time.</p>
<p>There are a number of approaches to make software meaningfully ours, and to make it durable, such as the approaches taken by the P2P, Web3, and blockchain communities. These approaches are promising since they rely on decentralization, and it’s axiomatic that software that’s durable has to be decentralized in the sense that it doesn’t have a single operator that can shut it down unilaterally. However, these types of software currently have another problem: they’re not simple. It’s currently very difficult to run a blockchain full node, to safely manage a set of private keys, or to access most P2P networks.</p>
<p>How do we get <em>all three</em> properties?</p>
<p>I don’t think anyone has quite figured this out yet, because if they had, we’d all be using their software. Part of the answer is that we need to go much deeper down the software stack than most projects are prepared to go. Managing keys, identities, accounts, and network connections is complicated but it’s not a new problem: operating systems have been doing all of these things for decades. Our access to the software we use is mediated by low-level tools like web browsers, operating systems, and hardware devices. While these tools and devices have become much more powerful and user-friendly in recent years, they’re all tightly coupled to the existing, broken model. As long as the only accounts I can add to my mobile and desktop operating systems are accounts owned by Google, Apple, and the like, software <em>can’t</em> get much better. Without meaningful control over our applications and data, software won’t be durable, and without support baked into the operating system, it won’t be simple.</p>
<p>The only project I’ve found so far that takes this bottom-up approach is <a href="https://urbit.org/">Urbit</a>, which reimagines computing all the way down to the layer of the VM and the programming language. Indeed, this post was inspired by <a href="https://urbit.org/blog/simple-durable-yours/">a post on the Urbit blog</a>. Urbit is still very limited in what it can do, and it’s far from simple to configure and run, but it’s rapidly getting better and easier, which gives me hope. In time there will be other approaches. Some of them may go even further than Urbit, and reimagine hardware as well as software.</p>
<p>As I continue to envision and work towards better software, software that’s a tool that solves real problems for everyday people, I continue to be inspired by this vision: simple, durable, yours. We’re not there yet, but we will be. Every day we get closer.</p>Lane RettigSoftware and the IKEA Effect2020-12-13T13:47:00+00:002020-12-13T13:47:00+00:00https://www.etherean.org/experience/software/web3/2020/12/13/software-ikea-effect<p><img src="/assets/mika-baumeister-moia38qcU84-unsplash.jpg" alt="An allen wrench" /></p>
<p style="text-align: center"><sub>If you've spent as many hours assembling IKEA furniture as I have, this photo should trigger you. Don't worry, we'll do better with software. (Photo by <a href="https://unsplash.com/@mbaumi?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Mika Baumeister</a> on Unsplash)</sub></p>
<p>A few days ago I set up an <a href="https://ethereum.org/en/eth2/staking/">Eth2 validator</a> to participate in the Eth2 beacon chain genesis event. This required reading several pages of documentation, making the necessary Ethereum transactions, backing up the credentials, allocating hard drive space and setting up a VM, downloading, configuring, and running the node software, syncing the node, then double and triple-checking everything to make sure I hadn’t made any mistakes. The whole process took a few hours, and at the end, I had a running validator. In the days since, I’ve spent several additional hours monitoring it and troubleshooting. So far, I’ve earned around $15 worth of ETH, and the APY on my initial investment is estimated to be around 3%. Even the ETH I’ve earned lives on the new beacon chain, not the Ethereum mainnet, so I couldn’t withdraw or spend it even if I wanted to. That means, strictly speaking, I should discount this yield to factor in opportunity cost and risk. Why work so hard for so little reward?</p>
<p>It’s definitely not about the money.</p>
<p>For one thing, the process of reading, transacting, downloading, configuring, and running the node is educational and the experience is valuable. Designing incentives and writing code are one thing, but actually participating in a real, live, running network, with real funds on the line and real skin in the game, is where the rubber of blockchain meets the road, so to speak. Lots of things you don’t expect and cannot predict happen when you participate in a live, production network.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup> As someone who builds blockchain software for a living, it’s important for me to have experience participating in as many networks as possible.</p>
<p>For another, there’s the community. While I haven’t personally been involved in the development of Eth2, many of the people behind it are friends. I want a chance to understand and support their work, and joining the network is a great way to do that. I want to see the network succeed.</p>
<p><img src="/assets/validator.png" alt="The logfile from an eth2 client" />
<sub>Watching the Eth2 Beacon Chain genesis on December 1</sub></p>
<p>Finally, there’s the joy and satisfaction of successfully setting up something complex and seeing it come to life. When the setup process was done, genesis happened, and I saw my validator begin successfully posting attestations, it was an exciting feeling—even in spite of the fact that I can’t currently use the network to do anything else! Having joined the community in 2017, I missed the genesis event of the original Ethereum network, so participating in the Eth2 genesis gave me a taste of what it must have felt like the first time around. There is some magic in seeing a piece of software, a network, suddenly spring to life when you’ve been following it for a long time and feel invested in its success, especially when you’re contributing meaningfully to the launch by running a node.</p>
<p>I certainly never felt that way about a macOS update or a Slack upgrade, which goes to show the power of open networks that allow anyone, anywhere to contribute and participate in design, engineering, operation, and governance.</p>
<p>The experience made me realize that there’s an interesting tension in designing and building software. On the one hand, application developers want their apps to be as easy as possible to install and run so that as many people as possible are able to use those apps, and choose to do so often. Application developers and publishers have decided to take away agency from the user, unilaterally and paternalistically removing all of the rough edges from the experience in order to cater to the lowest common denominator, i.e., the least savvy user. Far from being able to customize the apps we use, we no longer control our credentials (Facebook and Google do), we no longer control where and how applications are installed, run, and updated (they live on the Web, not on our devices), and we no longer control what content we consume (algorithms predict which content will be most engaging and social media applications push this content to us). Increasingly, we don’t even control our own data: files that live on our devices are rapidly <a href="https://stackoverflow.com/questions/22449067/how-does-the-gdoc-format-work">being replaced by</a> amorphous blobs of data that instead live inside proprietary databases that we have only narrow, mediated access to. All of this makes signing up for and using apps quick and easy, but it deprives us of nearly any agency in the process.</p>
<p>At the same time, however, developers want us to invest time and energy into their apps to make them more “sticky.” This increases switching costs, reducing the likelihood that a user will switch to a competing app or platform, especially if you don’t allow users to <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">easily export their data</a>. It also leads to a phenomenon known as the <a href="https://en.wikipedia.org/wiki/IKEA_effect">IKEA Effect</a>: people tend to value things that they invested time and energy in (“some assembly required”) more highly than things that don’t require this investment. Entrepreneurs have long been aware of and exploited this phenomenon, especially in software.</p>
<p>The result of this tension is applications that allow (and in some cases require) the user to invest time and energy but only in very superficial ways. These apps are designed to give the user a semblance of control and agency while in fact ensuring that all real control remains squarely in the hands of the app’s publisher. While the public has begun to wake up to <a href="https://g.co/kgs/PT4pGw">the dangerous realities</a> of surveillance capitalism, the attention economy, and highly targeted content, the situation is in fact even worse than most people realize: we’re being manipulated by the software we use, the content we read, and the networks we participate in for the benefit of the corporations behind them, but <em>we’ve been fooled into thinking we’re actually in control.</em></p>
<p>This manipulation tends to be subtle and feel relatively benign. It includes behaviors such as customizing our profile or an app’s layout or colors, adding widgets, following suggested friends or influencers, collecting “karma” or reputation points, signing up for loyalty programs and collecting rewards, and customizing game characters with unique weapons, outfits, and abilities. More perniciously, it also includes apps siphoning up our most personal data, often with the excuse of backing it up or making it easier to share: migrating all of our documents to Google Docs, or sharing access to the contacts and photos on our devices with apps that move this data “to the cloud” (i.e., onto private databases on a company’s servers). Sometimes it can even be downright hostile, a phenomenon known as <a href="https://darkpatterns.org/">dark patterns</a>: e.g., causing you sign up for something or purchase something you didn’t intend to, or making it impossible to close an application or website. Of course, these applications never give the user real control over the things that actually matter, such as the application’s data and algorithms.</p>
<p>All of this was maybe, just maybe, understandable at the beginning of the mass migration into the digital age, when most users were unsophisticated and undemanding: digital “tourists” rather than digital “natives.” Tourists are okay with bland hotel rooms that they can’t customize because they know they’ll only be there for a few days. But we’re spending more and more of our lives inside <a href="https://www.etherean.org/blockchain/web3/software/2020/08/04/faster-horses-better-software.html#digital-spaces">digital spaces</a>. It’s only natural that we become tired of the bland, one-size-fits-all appointment of these spaces and, over time, desire to customize them to suit our tastes and preferences. I think the IKEA Effect may hold the key to achieving this.</p>
<p>As users, we should be aware of how the software we use manipulates us—through <a href="https://www.theguardian.com/technology/2018/mar/04/has-dopamine-got-us-hooked-on-tech-facebook-apps-addiction">dopamine hooks, triggers, and notifications</a>, but also by coercing us into handing our data to companies and investing time and energy in platforms we have no control over. We should pay particular attention to what the apps we use and the digital spaces we inhabit allow us to control, and what they do not. We should demand that these apps and platforms give us agency and the ability to customize our experience, and our spaces. We should demand that they make it easy for us to leave when they fail to do so—and we should leave the ones that don’t, choosing to invest our scarce time, energy, and attention elsewhere. Finally, we should demand that these platforms also provide us a way to <a href="https://www.aeaweb.org/articles?id=10.1257/pandp.20181003">benefit economically</a> from our attention, participation, and contributions.</p>
<p>As creators, we should design and develop software that takes advantage of the IKEA Effect, not in pernicious or superficial ways but in deeper, more meaningful and constructive ways. We have excellent examples of how to do this in the many successful P2P and open source projects, where anyone can contribute, anyone can have a say in the decision-making process, and anyone can participate in the network as a full peer. We should think about the wider ecosystem where our software lives and about the digital spaces it enables. We should continue to look for ways to include the user, deeply and meaningfully, in the value creation and distribution process.</p>
<p>This model won’t work equally well for all software and all users. I don’t expect participatory software such as blockchain, Web3, and P2P to take over the world overnight. While the experience will no doubt get better over time, today these tools are still tricky to set up and use (as my experience setting up an Eth2 validator shows). Even the most sophisticated, demanding users don’t want to have to spend hours configuring every application they use. Helping build and operate open software and networks requires a huge commitment of time and energy. I want 80% of the software I use to work “out of the box” with little or no fuss or customization required.</p>
<p>But the other 20%, the apps, tools, and spaces where I spend 80% of my time and energy, are another story entirely. I want to have agency and a meaningful degree of control over these. It will be a long, messy process, but over time more users will demand more control over more tools, and over time, we will gain that ability. Forward thinking application designers and developers see the writing on the wall.</p>
<p>It’s important to note that the IKEA Effect is not only beneficial to consumers: it’s good for producers, as well. IKEA didn’t start out asking consumers to assemble their own furniture as a way to make them feel better, of course: it was a way to save money and reduce prices. The same thing is true of software. We’re entering an era where software developed by scrappy, global teams of motivated hobbyists, empowered by better collaboration tools like GitHub and StackOverflow, is starting to be competitive with software created by billion dollar corporations despite costing far less to develop. Rather than view it as competitive, the best, most forward-looking firms are <a href="https://opensource.microsoft.com/">beginning to embrace this model</a>, wherein consumers and users of software become co-creators and participate in the value creation process:</p>
<blockquote>
<p>[A]s a result of earlier consumer psychology studies that essentially pointed to the existence of the IKEA effect, many firms transitioned from viewing consumers as “recipients of value” to instead “co-creators of value.” One element of this shift was the involvement of consumers in product design, marketing, and testing. (<a href="https://en.wikipedia.org/wiki/IKEA_effect">Wikipedia</a>)</p>
</blockquote>
<p>In the not too distant future, choosing software to fill our digital spaces may feel a bit more like choosing furniture to fill our physical spaces. We’ll have the choice to use software that works out of the box, or software that’s labeled “some assembly required,” and we’ll all be better off for having this choice.</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>For instance, I would never have guessed that the time on my VM being off by just a few seconds would cause so many of my validator’s attestations to fail to post. I learned this the hard way and it was a valuable lesson! <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigA Better Life2020-11-22T22:16:00+00:002020-11-22T22:16:00+00:00https://www.etherean.org/communication/health/technology/2020/11/22/technology-making-life-better<p><img src="/assets/h-heyerlein-riYdn15o96U-unsplash.jpg" alt="Blacklight and colored dots illuminate a face" /></p>
<p style="text-align: center"><sub>Technology is getting closer and closer to us, literally and figuratively. It touches our lives in progressively deeper and more intimate ways. How should we feel about this? (Photo by <a href="https://unsplash.com/@heyerlein?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">h heyerlein</a> on Unsplash)</sub></p>
<h2 id="introduction">Introduction</h2>
<p>I describe myself as a technologist. I’m fascinated by technology both because of the challenge of understanding how it works and because of the potential it holds to improve the human experience. I used to believe naively that more technology is always a good thing, but recently I’m less sure about this. More and more, I find myself pondering questions such as, Has technology actually made my life better? If so, how? What are some concrete ways that it has? And if not, why not?</p>
<p>One of the benefits of getting older is perspective: the more change you experience, the more you can put that change into context and understand the impact it’s had on your life and on the world around you. Technology evolves pretty quickly these days, and by now I’ve experienced a couple of technological revolutions.</p>
<p>As one of the first members of the Millennial cohort I’ve always had access to the Internet, but I remember life before laptops and tablets, e-books, smartphones, social media, sharing economy, and videoconferencing, just to name a few of the technologies that have emerged during my lifetime. I remember writing software before git and GitHub, containerization, virtualization, and the cloud.</p>
<p>One of the <a href="/community/meta/2019/08/24/welcome-to-the-new-etherean-org.html">core themes</a> of this blog is technology and how to bend it towards good. In order to do this we need to be honest about both the positive and the negative effects of modern technology. The positive effects may seem clear. Technology has become objectively better over the past few decades in key ways. Computers today are faster, cheaper, and more reliable. We now all carry supercomputers in our pockets, and we can stay connected anywhere, anytime, cheaply and easily. These are big, important improvements. But if I asked you to list <em>concrete ways in which tech has made your life easier,</em> what would you say? This is not as easy as it sounds, especially without falling back on generalities such as “life is easier” and “technology has made life more convenient.”</p>
<p>On the flipside, there’s growing backlash against some forms of modern technology, especially social media and big tech firms. Some prominent scholars feel that the pace of technological innovation has <a href="https://en.wikipedia.org/wiki/The_Great_Stagnation">slowed considerably</a>. Rather than high level analysis and pronouncements, however, I think a good place to start is with my personal, lived experience of technology. What technology has had the biggest direct impact on my life, and has that impact has been good, bad, or neutral?</p>
<h2 id="communication">Communication</h2>
<p>The area that’s impacted me most during my lifetime is, broadly, <a href="https://en.wikipedia.org/wiki/Information_and_communications_technology">information and communications technology</a> (ICT): the Internet, email and instant messaging, the Web, mobile phones, videoconferencing, photo and video sharing, social media, etc.. Let’s start with professional life where the impact of ICT is clear and, I think, overwhelmingly positive. The value of being able to communicate, collaborate, and share data and code with friends, classmates, and colleagues all over the world, in real time and for free, cannot be overstated. To me, these tools have meant freedom: freedom to work with whomever I want, when and wherever we all happen to be. Physical location no longer makes much difference when what you’re collaborating on consists purely of bits, e.g., code, design, or writing. To be clear, collaboration over large distances is not yet seamless: poor Internet connections still occasionally cause headaches, especially on the road, as do timezones and language barriers. But I suspect that someday we’ll <a href="https://www.imore.com/best-language-translation-devices">overcome most</a> <a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0225988">or all of these</a>.</p>
<p>In my personal life, the answer is far less clear. It took a while, but I’m no longer under the spell of the early days of social media when IMing, poking, and tweeting all felt novel, exciting, even edgy. We now see social media for what it really is, and it’s not pretty. Thanks to recent political events, disinformation and polarization, and films such as <a href="https://g.co/kgs/pGFbu2">The Social Dilemma</a>, it’s become clear that social media benefits big tech companies far more than it benefits us as individuals. To be clear, this has little to do with the technology itself and more to do with the business models that have emerged around it.</p>
<p>While the idea of always being connected and in touch was exciting and appealing in the early days of social media, in practice today I find that the less time I spend on social media, the happier I am. Similarly, while I’m in touch with many more people than I was in the pre-Internet, pre-social media era, the depth and quality of those interactions is, on average, far lower. I find that the fewer people I’m in touch with, the deeper and more meaningful those interactions are and the happier I am. In sum, I’d rate the concrete impact of ICT on my personal life as neutral to negative. It’s positive only when I engage with it mindfully and intentionally, which is still a work in progress.</p>
<h2 id="hardware">Hardware</h2>
<p>Closely related to ICT is the hardware that enables that technology. This includes laptops, tablets, and smartphones, but also watches, bluetooth headphones, e-readers and the like. I’d also include virtualized hardware such as cloud computing, as well as enabling technology like better batteries in this category.</p>
<p>Computers have improved a great deal during my lifetime, and faster processors and more memory, bandwidth, and disk space are objectively better. However, better hardware isn’t unambiguously a good thing. For one thing, hardware that only ever gets better has made programmers lazy and led to terrible software. While it’s certainly possible to do more different things with computers today, to work faster, and to do more things in parallel, the overall reliability of applications has decreased in tandem. Interfaces are much noisier and there’s much more distraction. While I don’t miss the days of ultra-slow download speeds, laggy, low-res video games, and waiting ages for even the most basic apps to load off a floppy disk, I do think the modern state of computing and, in particular, the application stack <a href="/blockchain/web3/software/2020/08/04/faster-horses-better-software.html">leaves something to be desired</a>.</p>
<p>There’s a fallacy in technology where it’s easy to believe that something faster and sexier, with better specs and more features, is always a good thing. But this isn’t always true. Doctors still like using pagers because they’re simple, reliable, indestructible, have very long battery lives, and don’t drown you in ads and notifications. In other words, they just work. This is the same reason that I prefer running with a GPS watch rather than my smartphone, and I prefer reading a book on a Kindle rather than on an iPad. These devices all do one thing, and they do that thing very well. Of course, none of these devices (except maybe pagers) existed when I was born.</p>
<p>I think this one is a toss-up. My gut feeling is that modern, <em>simple, specialized</em> devices such as bluetooth headphones, GPS watches, and e-readers are clear wins and definitely make my life better. The case is much less clear for general purpose computing devices.</p>
<h2 id="health">Health</h2>
<p>The biggest advance in health in my lifetime is better understanding of diet, in particular, the harms of <a href="https://www.health.harvard.edu/heart-health/the-sweet-danger-of-sugar">added sugar</a>, <a href="https://www.healthline.com/nutrition/good-carbs-bad-carbs">simple carbohydrates</a>, and <a href="https://www.health.harvard.edu/staying-healthy/eating-more-ultra-processed-foods-may-shorten-life-span">processed foods</a>. We’ve finally recognized the awfulness of the <a href="https://en.wikipedia.org/wiki/Food_pyramid_(nutrition)">food pyramid</a> that my generation grew up with. My diet today, which includes a lot more healthy fat and protein and a lot less simple carbs, is a lot better than it used to be. At the same time, I don’t have a counterfactual since our nutritional needs change as we age. I also have to account for the psychic cost of constantly worrying about what to eat and where to find healthy food, especially while traveling. When I was younger, I ate and drank whatever I wanted and my health was okay.</p>
<p>The development of health and fitness tracking devices and <a href="https://en.wikipedia.org/wiki/Quantified_self">quantified self</a> software is interesting, and I’ve used quite a few such devices and apps, but it’s unclear whether they’ve actually made my life better in some concrete way. They feel like another thing to think about and worry about, another data set to manage. It’s nice to know how my <a href="https://support.garmin.com/en-SG/?faq=MyIZ05OMpu6wSl95UVUjp7">VO2 max</a> is trending over time, but this has no direct impact on my running, my fitness, or my life in general. I suspect these tools are wonderful for professional athletes or for those who have specific goals such as weight loss or improving performance, but for <a href="https://en.wikipedia.org/wiki/Worried_well_(medicine)">someone without such goals</a> they’re mostly a waste of time.</p>
<p>I try to use such devices the same way I use social media: mindfully, temporarily, with a specific goal in mind or question I want to answer. Since I haven’t found many answers yet, this one is also a toss-up.</p>
<h2 id="food-and-drink">Food and Drink</h2>
<p>While most digital health technology doesn’t feel life changing, certain modern, functional food and beverage products do. The most obvious of these is Soylent. While the media loves to treat Soylent as a <a href="https://www.nytimes.com/2014/05/29/technology/personaltech/the-soylent-revolution-will-not-be-pleasurable.html">punching bag</a>, it’s one of the clearest and best examples of technologies that have had a positive, concrete impact on my life. I love cooking and I love good, real, slow food and can appreciate all of these things, but I don’t need them all of the time. I think of Soylent the way I think of water: cold pressed juice and frappucinos are nice once in a while, but I don’t need them all the time, either. Water is also nice, it’s cheap, and it does a perfectly good job of keeping me alive. The same is true of Soylent. While I won’t claim that it’s truly 100% healthy and complete, it does a wonderful job of replacing those one or two daily meals when I would otherwise spend more time and money and eat <a href="https://www.theatlantic.com/health/archive/2016/07/soylent-is-healthier-than-our-diet/489830/">something less healthy</a>. I am similarly enamored of functional foods and drinks such as <a href="https://www.nytimes.com/2014/12/14/style/the-cult-of-the-bulletproof-coffee-diet.html">bulletproof coffee</a>, <a href="http://www.drinksupercoffee.com/">Super Coffee</a>, and <a href="https://us.catalinacrunch.com/">Catalina Crunch</a>. Overall, for this category, it’s a clear yes.</p>
<h2 id="entertainment-and-education">Entertainment and Education</h2>
<p>While I rarely consume video content, I’m an avid consumer of text- and audio-based content. Digital access to great books, magazines, and podcasts has allowed me to consume tons of excellent content wherever I am without having to carry around reams of paper. Digital textbooks made school easier and more convenient for the same reason.</p>
<p>I listen to 10x as many audiobooks as I read paper books. I’ve taken a number of free online courses, and while I don’t think the experience replaces old-fashioned in person learning, it does augment formal learning and has allowed me to continue to explore topics I didn’t study in school and wouldn’t otherwise study. This one is also a clear yes, but I want to add the caveat that, for most people, I fear attempting to replace formal education entirely with online study may be quite dangerous at this stage.</p>
<h2 id="sharing-economy">Sharing Economy</h2>
<p>For years I’ve made heavy use of sharing economy services such as ride sharing, car sharing, and home rentals while traveling. While Airbnb faces a number of challenges in the runup to its <a href="https://www.sec.gov/Archives/edgar/data/1559720/000119312520294801/d81668ds1.htm">planned IPO</a>, my experience with the platform has been overall quite positive. It’s saved me a lot of money many times, and it’s also enabled me to visit places I would otherwise never have visited, usually far from city centers. Similarly, in my experience, ride sharing services such as Uber and Lyft generally offer a significantly better experience than traditional taxis for the same cost or less.</p>
<p>On the other hand, my experience with other types of sharing economy and on-demand services have been much less positive. Food delivery services, in particular, seem like a waste of time and money. They charge more than ordering directly from a restaurant and their fees are exorbitant and unpredictable—and in spite of this, they’re <a href="https://nymag.com/intelligencer/2020/05/why-do-food-delivery-companies-lose-money.html">nearly all losing money</a>. I can live without them.</p>
<p>We should be mindful of the fact that the experience is <a href="https://www.theguardian.com/us-news/2019/mar/22/uber-lyft-ipo-drivers-unionize-low-pay-expenses">not always as good for the providers</a> as the platforms would have us believe. Sharing economy services have definitely made life easier for me and I’m hopeful that we can find a way to make them sustainably beneficial for both services providers and consumers.</p>
<h2 id="honorable-mention">Honorable Mention</h2>
<p>I want to briefly mention a few other technologies that haven’t had a large, direct impact on my life but that have had an indirect impact and/or stand to do so in the foreseeable future.</p>
<h3 id="blockchain">Blockchain</h3>
<p>I would be remiss if I didn’t mention blockchain, cryptocurrency, smart contracts, and Web3 technology since it’s the thing I work on full time. While I think these technologies have <a href="https://spacemesh.io/a-new-human-chain/">incredible potential</a>, they’re simply too new to have made much of an impact on my life or on the lives of most people I know—even those who work on them full time as I do. There’s clearly value in seizure-resistant, censorship-resistant, self-sovereign digital money like bitcoin, especially if you happen to live somewhere like <a href="https://www.imf.org/external/datamapper/PCPIPCH@WEO/OEMDC?year=2020">Argentina, Venezuela, or Zimbabwe</a>. Aside from this use case, however, blockchain does not yet have a “killer app” and it’s still in the process of <a href="/blockchain/web3/software/2020/07/25/whats-it-good-for.html">finding product market fit</a>. Most of the things being built on blockchain today <a href="/blockchain/defi/ethereum/2020/10/04/ethereum-is-a-casino.html">are still toys</a>. Working on this cutting-edge technology brings me enormous joy and inspiration, and being exposed to the culture and ideas of the blockchain and Web3 community has totally changed how I think about <a href="/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html">privacy</a>, <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">my data</a> and the <a href="/blockchain/web3/software/2020/08/04/faster-horses-better-software.html">existing computing and application stack</a>. It’s made me question even bigger things like <a href="https://www.applescotch.com/finance/cryptocurrency/sovereignty/2020/04/19/scalpels-and-sledgehammers.html">banks</a>, the role of money, and how human society is <a href="/society/technology/2020/10/31/digital-localism.html">structured and governed</a>. For all that, it hasn’t had much of a direct impact on my life—at least not yet. But <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">I think it will</a>.</p>
<h3 id="cryptography">Cryptography</h3>
<p>Cryptography has advanced by leaps and bounds during my lifetime. At the same time, it’s the sort of enabling technology that tends to be invisible. While I wouldn’t say it’s had a large direct impact on my life, behind the scenes it quietly powers many of the other technologies I described here including communication and collaboration tools, blockchain, sharing economy, entertainment, and health technology. It also makes it possible to shop and transact online, a big innovation in its own right. It’s right up there with computers and the Internet themselves, and the software that powers the Web, in terms of the impact it’s had on enabling modern, digital life.</p>
<h3 id="life-sciences">Life Sciences</h3>
<p>Life sciences, from minimally-invasive surgery to implants to cancer treatments to pharmaceuticals to gene editing, have developed rapidly during my lifetime and they continue to do so. There’s no doubt that this has a direct, mostly positive impact on the lives of millions if not billions of people around the world. While the direct impact of these technologies on my life has been limited so far, they’ve saved the lives of people close to me. And the direct impact is likely to increase soon, for me and billions of others, with one of the biggest developments in life science ever: the development of <a href="https://www.nytimes.com/interactive/2020/science/coronavirus-vaccine-tracker.html">vaccines for SARS-CoV-2</a> in a few short months.</p>
<h3 id="business-models">Business Models</h3>
<p>This is another example of an enabling technology that powers much of the modern economy that’s mostly invisible unless you work in manufacturing, supply chain, or e-commerce. Companies that manufactured and sold consumer goods, from toaster ovens to cars to computers, used to need to manage large inventories and big, expensive warehouses. Over the past few decades, better communications, software, and logistics networks have enabled these firms to outsource manufacturing and optimize their supply chains. This makes consumer goods much cheaper and allows us to receive them much more quickly. It also leads to shortages in times of excess demand, like <a href="https://www.cidrap.umn.edu/covid-19/supply-chain-issues">right now</a>.</p>
<h3 id="what-else">What Else?</h3>
<p>What about all of the other fancy technology that’s been developed during my lifetime? What about electric and self-driving cars, AI and machine learning, VR, and 3D printing? In their present form, these all feel like “nice to haves,” and none has had a big, direct impact on my life so far. This isn’t to say that they won’t have a bigger impact as they mature!</p>
<h2 id="conclusion">Conclusion</h2>
<p>Having the knowledge and tools to maintain a healthy diet, being able to work from anywhere, having cheap, near-immediate access to great books and other digital content, and being able to travel more cheaply and conveniently are just a few concrete examples of the ways in which modern technology has had a positive impact on my life. However, the case for communication tools, which have probably had the biggest impact of any technology that’s emerged during my lifetime, is much less clear-cut.</p>
<p>Has technology made my life better overall? I think the answer is a reserved “yes”—with the caveat that interfacing constructively with modern technology requires a lot of mindfulness, something most of us have very little training in, and something that’s very much still a work in progress for me. I suspect this is true of any sufficiently advanced, sufficiently powerful technology: we must be cautious how, where, and why we use it, to make sure that we’re using it in ways that are beneficial to us and those around us. Powerful technology is like a sharp knife: fantastically useful if used carefully and with intent, incredibly dangerous in the wrong hands, or if used carelessly or for the wrong purpose.</p>
<p>As we design, build, and use more and more powerful technology, it’s critical that we consider not only theoretical applications and implications but also the concrete, lived experience of interacting with that technology. Only in this way can we ensure that it does as much good and as little harm as possible.</p>
<p>What concrete impact has technology had on your life? Do you feel that it’s made your life better in concrete ways? <a href="https://forum.etherean.org/t/a-better-life-etherean-org/357">Leave a comment</a> and let me know how.</p>Lane RettigThe key ingredients to a better blockchain, Part IX: Production Readiness2020-11-15T18:22:00+00:002020-11-15T18:22:00+00:00https://www.etherean.org/blockchain/governance/community/2020/11/15/key-ingredients-better-blockchain-part-ix-production-readiness<p><img src="/assets/hello-i-m-nik-8yCmQODY2SY-unsplash.jpg" alt="Lego Firework Guy" /></p>
<p style="text-align: center"><sub>The launch of a new network is the most exciting and rewarding moment in the lifecycle of a project, but it's also one of the trickiest to prepare for. It's good to start preparing early rather than planning a "big bang" launch. (Photo by <a href="https://unsplash.com/@helloimnik?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Hello I'm Nik</a> on Unsplash.)</sub></p>
<p>[This is part of a multi-part series on the key ingredients to a better blockchain. I recommend starting with part one, <a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Tech and Protocol</a>. See the <a href="#nav-links">full list of articles</a> in the series.]</p>
<p></p>
<h4>Table of Contents</h4>
<ul id="markdown-toc">
<li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
<li><a href="#wallet-software" id="markdown-toc-wallet-software">Wallet software</a></li>
<li><a href="#regular-releases" id="markdown-toc-regular-releases">Regular releases</a></li>
<li><a href="#documentation-documentation-documentation" id="markdown-toc-documentation-documentation-documentation">Documentation, documentation, documentation</a></li>
<li><a href="#identifying-and-responding-to-bugs-and-vulnerabilities" id="markdown-toc-identifying-and-responding-to-bugs-and-vulnerabilities">Identifying and responding to bugs and vulnerabilities</a></li>
<li><a href="#bootstrapping-mining-and-security" id="markdown-toc-bootstrapping-mining-and-security">Bootstrapping mining and security</a></li>
<li><a href="#testing" id="markdown-toc-testing">Testing</a></li>
<li><a href="#multiple-client-implementations" id="markdown-toc-multiple-client-implementations">Multiple client implementations</a></li>
<li><a href="#backwards-compatibility" id="markdown-toc-backwards-compatibility">Backwards compatibility</a></li>
<li><a href="#api" id="markdown-toc-api">API</a></li>
<li><a href="#frontend" id="markdown-toc-frontend">Frontend</a></li>
<li><a href="#tooling" id="markdown-toc-tooling">Tooling</a></li>
<li><a href="#community-channels" id="markdown-toc-community-channels">Community channels</a></li>
<li><a href="#exchanges" id="markdown-toc-exchanges">Exchanges</a></li>
<li><a href="#governance" id="markdown-toc-governance">Governance</a></li>
<li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
</ul>
<h2 id="introduction">Introduction</h2>
<p>Only a year ago, the idea of a successful mainnet launch was treated more as a joke in the blockchain community than as a reality. The number of projects that successfully launched a mainnet prior to 2020 is exceedingly small, and many projects that had promised to deliver one in 2018 or 2019 repeatedly postponed those launches. By contrast, 2020 has become the long-touted, long-awaited “year of mainnet.” This year has already seen high profile launches such as <a href="https://near.org/blog/near-mainnet-genesis/">NEAR Protocol</a>, <a href="https://cointelegraph.com/news/polkadot-officially-in-mainnet-as-governance-removes-admin-rights">Polkadot</a>, <a href="https://medium.com/celoorg/its-official-celo-mainnet-is-here-6a3a71763f68">Celo</a>, <a href="https://medium.com/avalabs/avalanche-mainnet-is-live-c2101c82ce10">Avalanche</a>, <a href="https://solana.com/">Solana</a>, and <a href="https://filecoin.io/blog/mainnet-ignition/">Filecoin</a>, with <a href="https://www.onflow.org/">others</a> <a href="https://www.chia.net/faq/">on track</a> for late 2020 and still others for <a href="https://product.spacemesh.io/#/">early 2021</a>. Blockchain projects that have made it to mainnet are no longer unicorns.</p>
<p><img src="/assets/mainnet.png" alt="Platforms that could go live within the next 18 months" />
<sub>Image source: <a href="https://messari.io/mainnet2020">Messari</a></sub></p>
<p>The most critical juncture for any project is the transition from an initial, focused R&D phase to a production launch. It’s truly a phase shift: the processes that serve a project and a community well during the R&D phase are probably not the ones that will be needed to address issues that arise in production.</p>
<p>In the early days of a project, policies and procedures can be fairly loose. There is very little at stake and the community is small and focused. The team knows and trusts each other. Things are relatively centralized within a single company or organization. Don’t take for granted how easy it is to coordinate work during this phase, and how much harder things get when there’s a larger and more diverse group of stakeholders, and when there is more at stake! Protocol changes <a href="#governance">become harder over time</a>.</p>
<p>This article discusses steps that project teams and communities must take to successfully complete the critical transition to mainnet, and to prepare for what comes after. Note that, while most of these best practices apply to <em>any</em> mature, production grade software, they’re especially important in the blockchain space due to its adversarial nature and what’s at stake economically.</p>
<h2 id="wallet-software">Wallet software</h2>
<p>A great place to start preparing for mainnet is with well-designed wallet software. While testnet tokens have no real value, this is obviously not the case on mainnet. It’s not a disaster if a user loses access to a testnet wallet, but the consequences are much greater if those tokens have value. Production-grade wallet software should make it very easy to generate, back up, and restore credentials and keypairs for multiple accounts.</p>
<p>While software wallets are a prerequisite for production readiness, they’re not sufficient. In addition to basic wallet software, a network should also support hardware wallets and <a href="https://en.bitcoin.it/wiki/Multisignature">multisignature wallets</a> (a.k.a., multisig), both industry standards. Note that hardware wallet support is much easier if your network uses a <a href="https://wiki.trezor.io/Cryptocurrency_standards">standard signature scheme</a> that’s already supported by common devices from vendors such as Ledger and Trezor.</p>
<p>Since multisig is the <a href="https://blog.keys.casa/how-to-protect-your-bitcoin-from-5-wrench-attacks/">gold standard</a> for securely storing cryptographic assets, sophisticated investors won’t invest much in a network without robust multisig support that’s both secure and easy to use. These <a href="https://bitcoinmagazine.com/articles/multisig-future-bitcoin-1394686504">design requirements</a> are common and well understood. It should be straightforward for any network with basic smart contract support to implement a multisig. Even Bitcoin, with only a barebones scripting language, has <a href="https://bitcoin.stackexchange.com/questions/6100/how-will-multisig-addresses-work">native support for multisig wallets</a>.</p>
<h2 id="regular-releases">Regular releases</h2>
<p>The release process tends to be haphazard early in the life of a project. Multiple developers may cut ad hoc releases from time to time to fix bugs, address issues, or add features. Releases may not have proper versioning. As with any mature software, this process should get much tighter and more disciplined before a production launch. There should be a single release manager who owns the release roadmap and is responsible for cutting all releases. This release manager is responsible for deciding what to include in each release, working with R&D to make sure release targets are met, making sure tests are run, writing release notes, coordinating versioning and releases of related infrastructure and applications, notifying interested parties, etc..</p>
<p>Releases should happen regularly. Precisely how often is a subject of some debate, but the “Goldilocks spot” is a frequency that’s high enough to address major bugs and issues as they arise, but not so high that it creates an undue burden on node operators. Releases should be frequent in the beginning, but should probably become less frequent over time as the software and protocol mature and stabilize.</p>
<p>More important than frequency is predictability. There should be transparency into what’s slated for inclusion into upcoming upgrades and when those upgrades will happen. This should be integrated into a support system, so that users know their issues are being addressed, and which release will include a fix for a given issue. The build process should be well documented and <a href="https://en.wikipedia.org/wiki/Reproducible_builds">verifiable</a> so that developers can easily build and verify the software themselves on multiple platforms. If you correctly use a mature <a href="https://en.wikipedia.org/wiki/Continuous_integration">continuous integration</a> system such as <a href="https://github.com/features/actions">GitHub Actions</a>, cutting a release should be as simple as <a href="https://github.com/marketplace/actions/automatic-releases">creating a tag</a> on your main branch and adding release notes.</p>
<p>Note that there is a big difference between a routine upgrade and a protocol upgrade that requires a network hard fork. While the former should be relatively frequent, the latter should be infrequent due to the coordination effort that it entails. More on this <a href="#governance">below</a>.</p>
<h2 id="documentation-documentation-documentation">Documentation, documentation, documentation</h2>
<p>As discussed elsewhere in this series, documentation is as essential to production readiness as it is to <a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html">usability</a> and <a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">community</a>. Users rely on documentation to understand how to download and run your software, how to generate and use wallets and accounts, and how to submit transactions. Miners, exchanges, and other node operators rely on documentation to set up tooling and devops and securely and safely run production-grade nodes. Developers rely on documentation to get started building applications and contributing to infrastructure. It’s expensive to build and maintain good documentation, but as it’s valuable to so many parts of the community, it’s clearly worth the cost to develop and maintain great documentation.</p>
<h2 id="identifying-and-responding-to-bugs-and-vulnerabilities">Identifying and responding to bugs and vulnerabilities</h2>
<p>While bugs are expected in a testnet, the situation in a production mainnet is another story entirely. A great deal of value and user data is at stake on a mainnet. It’s essential that proper policies, procedures, and disclosure frameworks be established for mainnet security incidents prior to a production launch. This is not as straightforward as it seems. There is often a difficult tradeoff between on the one hand maximizing transparency and reporting issues as soon as possible, and on the other hand addressing critical bugs before they’re exploited in the wild. For a recent example of how hard it is to get this right in a production network, see the <a href="https://gist.github.com/karalabe/e1891c8a99fdc16c4e60d9713c35401f">Geth v1.9.17 Post Mortem</a> which explains how a bug that was quietly fixed in a more recent version of <a href="https://github.com/ethereum/go-ethereum">go-ethereum</a> caused a consensus issue when some node operators didn’t upgrade. See also cases from <a href="https://www.getmonero.org/2017/05/17/disclosure-of-a-major-bug-in-cryptonote-based-currencies.html">Monero</a>, <a href="https://electriccoin.co/blog/zcash-counterfeiting-vulnerability-successfully-remediated/">Zcash</a>, and <a href="https://www.coindesk.com/the-latest-bitcoin-bug-was-so-bad-developers-kept-its-full-details-a-secret">Bitcoin</a>.</p>
<p>While they cannot prevent all issues, third party audits are a great way to spot possible issues before they escalate into real vulnerabilities in production. There are a number of experienced teams of auditors that have worked with multiple blockchain platforms and are familiar with the risks and challenges associated with blockchain platforms and software. These professionals have studied more blockchain software and infrastructure and identified more issues than any individual team is likely to be able to. Audits are good at spotting high level architectural issues, and less good at spotting tiny bugs—but they’re absolutely essential for any production-grade blockchain platform. Wise, experienced users and investors won’t put much trust or value into a system that has not been audited once or, ideally, multiple times by multiple teams of auditors.</p>
<p>Bounties can also increase trust in a similar fashion, especially if they’re large enough and have gone unclaimed for a while. At the minimum, mature projects establish <a href="https://cointelegraph.com/news/white-hat-hackers-earned-878-000-from-crypto-bug-bounties-in-2018-data-shows">bug bounties</a> (to incentivize security researchers to report vulnerabilities rather than take advantage of them or sell them to those who would), a <a href="https://bounty.ethereum.org/">channel</a> to anonymously communicate security issues and fixes, and a vulnerability <a href="https://github.com/RD-Crypto-Spec/Responsible-Disclosure">disclosure policy</a>.</p>
<h2 id="bootstrapping-mining-and-security">Bootstrapping mining and security</h2>
<p>All blockchain networks need a minimum number of miners or validators to participate in the consensus process and keep the network secure. If there are too few, adversaries can attack the consensus process through, e.g., a 51% attack, and the miners can be attacked directly through <a href="https://en.bitcoin.it/wiki/Weaknesses#Denial_of_Service_.28DoS.29_attacks">DoS attacks</a>, <a href="https://academy.binance.com/en/articles/what-is-an-eclipse-attack">eclipse attacks</a> and the like. Too few miners also make a network less censorship resistant.</p>
<p>Over the long term, a platform with <a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">good incentive design</a> should have no problem attracting a sustainable community of miners. However, even the best designed networks face a bootstrapping problem: if the network isn’t secure enough at launch, few will use it. And if few use the network, it won’t be secure enough.</p>
<p>In the case of successful networks like Bitcoin and Ethereum, network effects have led to a virtuous cycle of increasing network security and value. New networks need to find a way to bootstrap this cycle and recruit a minimum number of miners at launch. Recent, successful network launches have featured <a href="https://polkadot.network/hello-world-by-polkadot-take-the-challenge/">contests</a>, <a href="https://near.org/stakewars/">games</a>, <a href="https://near.org/rainbow/">hackathons</a>, <a href="https://medium.com/celoorg/and-the-winners-of-the-inaugural-celo-camp-are-740f98407a8a">prizes</a>, <a href="https://polkadot.network/build-polkadot-network-launch-bounty-challenges/">bounties</a>, etc., all of which can help, although if poorly executed they run the risk of appearing gimmicky or attracting short-term profit-seekers rather than those invested in the long-term health of the network.</p>
<p>As a project team, it may be possible to run a sufficient number of miners to bootstrap a network launch on your own. You should figure out the minimum viable security level that will be required at network launch, how to recruit that many nodes, and how much it would cost to augment them with your own managed nodes. However, attempting to run all of the nodes yourself on a single cloud provider is a bad idea since it increases the chance of network failure and thus fragility. Also note that recruiting miners is not that different from recruiting other classes of stakeholders such as developers and investors. It requires many of the other tasks discussed in this and the other articles in this series: good documentation, support channels, software that’s easy to run and maintain, etc.. If you’re already following other best practices it shouldn’t be that much more work to recruit a healthy community of miners.</p>
<h2 id="testing">Testing</h2>
<p>Given the highly complex nature of blockchain software and the potential for harm if the software fails, it’s essential that blockchain project teams employ software engineering best practices including testing. This should include basic unit tests as well as black box/application/integration tests and regression tests. <a href="https://en.wikipedia.org/wiki/Test-driven_development">Test-driven development</a> is a great way to instill a culture of always writing tests and making sure that testing doesn’t fall behind in order to meet deadlines.</p>
<p>All well-engineered, production-grade software should ship with a robust suite of unit tests. A blockchain full node is no exception. The code should have a thorough test suite that provides a high degree of coverage over all of the various features and components of the system. As one example, Ethereum has a <a href="https://github.com/ethereum/tests">comprehensive suite</a> of around 40,000 individual tests that all full node implementations are expected to pass. This suite is further broken down into many <a href="https://ethereum-tests.readthedocs.io/en/latest/index.html">different classes of tests</a> which are each responsible for testing a different part of the system: the blockchain, the VM, transactions, the network layer, etc..</p>
<p>One further note on testing: blockchain is unlike most other software, even other complex, networked systems, because of its decentralized, peer-to-peer topology. Due to changing economic and network conditions, the number of nodes participating in consensus at any given time can change quite rapidly and this can have a serious impact on the system. These scenarios are notoriously <a href="https://eprint.iacr.org/2016/555.pdf">hard to test</a>, and while no test can perfectly replicate real-world scenarios, the dual strategies of simulation and emulation can get you 80% of the way there.</p>
<p>Simulation involves building models of realistic economic and network conditions and running them through various stress tests to see how the platform responds. Because a live blockchain network has many classes of users with different incentives, <a href="https://en.wikipedia.org/wiki/Agent-based_model">multi-agent modeling</a> is a good starting point for a simulation. Emulation involves tests that get even closer to reality: whereas a simulation typically runs on a single system, emulation might involving firing up hundreds or even thousands of nodes spread out on different subnets and network infrastructures, operating systems, and architectures, around the world. It’s essential to run tests that escape lab conditions and get as close to real-world scenarios as possible. This level of sophistication in testing is beyond the means of many project teams, but there are professional teams with heaps of experience that can help devise a strategy, build the infrastructure, run tests, and analyze the results.</p>
<h2 id="multiple-client-implementations">Multiple client implementations</h2>
<p>As <a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">discussed previously</a> in this series, the question of whether and to what extent it’s desirable to have multiple client implementations to run a blockchain network is somewhat contentious. However, without multiple implementations, ideally written in <a href="https://www.applescotch.com/running/software/mindfulness/2020/10/11/run-the-other-way.html">different languages and frameworks</a>, supported and maintained by different teams and organizations, you cannot realistically refer to the thing they implement as a <em>protocol.</em></p>
<p>It’s useful to have multiple implementations for a host of reasons. For one, they allow more customizability, as different implementations likely excel at different things.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">1</a></sup> For another, they act as a powerful decentralizing force in governance. And perhaps most importantly, they help in the detection of critical bugs and help the network <a href="https://www.infoq.com/news/2016/09/Ethereum-DOS-Attack/">withstand attacks</a>.</p>
<p>While a single, complete, well-tested implementation is sufficient to run a testnet and launch a mainnet, you should begin thinking early about how you might incentivize multiple implementations to be built by the time mainnet launches. You might build a second implementation in house, outsource it to an experienced team of developers, or leave it as a task for the community, incentivized by grants and bounties.</p>
<p>Note that having multiple implementations also necessitates having a formal protocol specification that multiple teams of developers can build and test against, and contribute to. It’s good practice for this reason alone, and implementing the same protocol multiple times in multiple languages using multiple architectures and frameworks is an excellent way to battle test a protocol design. Having a formal specification makes testing and auditing easier, and also helps ensure backwards compatibility in the protocol.</p>
<h2 id="backwards-compatibility">Backwards compatibility</h2>
<p>Breaking changes can and should happen often early in the network and protocol lifecycle. They should become accordingly less frequent as the software, protocol, and network evolve. While regular software updates—which fix bugs and add new features—should be common, protocol changes should be rare. When they do occur, it’s essential that they only <em>add</em> functionality and not break existing functionality. The only exception to this rule should be a security issue that requires a breaking protocol change to address.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">2</a></sup></p>
<p>The reality of a protocol and a software platform (as opposed to a simple application) is that there are many downstream users, applications, and products that rely on it. In the case of blockchain, that may include a long value chain and a lot of value. As a result, changing a protocol should be less like changing a line of code and more like changing a law, a treaty, or a constitution (see more on governance, <a href="#governance">below</a>). There is, in essence, a social contract, explicit or implicit, that exists between the core developers of a platform or protocol and the downstream developers, that breaking changes will not occur. It can help to make this contract explicit so that developers that rely on the platform know what to expect and can be sure that their applications will be able to run for a long time.</p>
<p><img src="/assets/nature-reclaiming-abandoned-places.jpg" alt="A tree swallows an old bicycle" />
<br />
<sub>My visualization of a bug that ends up getting incorporated into a protocol. (<a href="https://imgur.com/gallery/NkYhk/comment/301072437">source</a>)</sub></p>
<p>Here as elsewhere, it’s worth pointing out that this challenge is not unique to blockchains. All software platforms deal with the challenges of having an installed user base, and as a result long-lived platforms have ample quirks and oddities that will be part of them forever (see, for example, the <a href="https://www.plantation-productions.com/Webster/www.artofasm.com/Windows/HTML/CPUArchitecturea2.html">history of x86</a>, <a href="https://en.wikipedia.org/wiki/Quirks_mode">quirks mode</a> on the Web, and <a href="https://exploringjs.com/es6/ch_one-javascript.html">One JavaScript</a> for examples from other platforms). Even bugs in the original protocol have a tendency to become canonical once they’ve been released into the wild!<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">3</a></sup></p>
<p>While some platforms have been more aggressive about forcing upgrades and breaking changes (e.g., <a href="https://stackoverflow.com/questions/9066956/why-is-python-3-not-backwards-compatible">Python</a> and <a href="https://www.macworld.com/article/3561765/apple-transition-to-its-own-processors.html">Apple</a>), this challenge is even more severe for blockchain than for other types of applications, given the <em>permanent</em> nature of blockchain data and applications. A smart contract deployed on Ethereum or a similar platform should be able to operate for 100 years with no ongoing maintenance, at least in theory.</p>
<p>There are certain clever ways around this problem, such as emulators, but they are not mature nor well-tested. There is <a href="https://ethereum.org/en/eth2/docking/">a plan to merge</a> the existing Ethereum network and the new Ethereum 2 network after its successful launch. One proposal <a href="https://ethresear.ch/c/eth1-to-eth2-transition/38">for how to do so</a> is to “collapse” the existing Ethereum blockchain down into a smart contract or a shard that will continue to run indefinitely inside a new Ethereum 2.</p>
<h2 id="api">API</h2>
<p>The importance of a good API in a blockchain client cannot be overstated. Like most systems, a blockchain node is invisible by default: it runs in the background, exchanging data, participating in consensus, and managng a database. In order to know what’s going on, and to be able to interact with the running node—in other words, to do anything useful with it—applications have to communicate with a node using its API. The API allows the user to view the P2P network status and synchronization progress, to start or stop mining, to query accounts, balances, and transaction status, to view and update configuration options, and to submit new transactions.</p>
<p>The most common protocol used in blockchain node APIs is <a href="https://en.wikipedia.org/wiki/JSON-RPC">JSON-RPC</a>, which is not the most intuitive nor the simplest, but it has the benefit of using HTTP so client software such as wallets and Javascript-based Web3 applications can easily talk to it. Some modern clients choose to use <a href="https://grpc.io/">GRPC</a> instead, which allows client code to be auto-generated for a variety of different languages. GRPC is well documented and under active development by Google. It also gives you a <a href="https://grpc-ecosystem.github.io/grpc-gateway/">RESTful JSON API for free</a> so it’s the best of both worlds.</p>
<p>As with all of its other features, it’s important that a blockchain’s API be well documented to improve the experience of developing applications.</p>
<h2 id="frontend">Frontend</h2>
<p>Most of the early design and engineering effort in blockchain tends to go into the backend, including components like database, consensus, and P2P. This is understandable since those are the trickiest, most complex parts of the infrastructure. However, it’s important to keep in mind that a <a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html#take-a-product-approach">product approach</a> to a blockchain means more than an invisible backend. Even with a well-designed API in place, it’s simply not practical for most users to interact with a node <a href="https://eth.wiki/json-rpc/API">using text-based commands and curl</a>. In order for a blockchain to feel like a tangible product to developers and end users alike, it needs a frontend. The frontend of a blockchain usually takes the form of a suite of applications including wallet, block explorer, and dashboard, which communicate with the node using the API.</p>
<p>As discussed elsewhere in this series, a wallet application allows the user to manage one or more accounts, to see their balance and incoming and outgoing transactions (as well as rewards received, in the case of mining), and to send transactions. Some wallets also allow interaction with layer two applications (dapps). The block explorer provides a more objective view of the network: it shows all transaction and block data in real time, and allows the user to track the status of any transaction or view any account’s balance. (For good examples of production block explorers, see <a href="https://blockchair.com/">Blockchair</a>, <a href="https://polkascan.io/">Polkascan</a>, and <a href="https://etherscan.io/">Etherscan</a>.)</p>
<p>A third common application, nice to have but a little bit less essential than wallet and explorer, is the dashboard. Whereas a block explorer displays data on historical blocks and transactions, a dashboard allows the user to see the status of one or more running nodes: its sync status, how long it’s been running, its latency to the rest of the network, its number of peer connections, the version of the client software it’s running, etc. (For good examples of production dashboards, see <a href="https://ethstats.net/">Ethstats</a>, <a href="https://cosmos.bigdipper.live/validators">Big Dipper</a>, and <a href="https://polkadot.js.org/apps/#/staking">Polkadot staking</a>.)</p>
<p>As with a second client implementation, there are many ways to develop a frontend: in house, outsourcing, or leaving it up to the community of open source developers.</p>
<h2 id="tooling">Tooling</h2>
<p>As discussed previously in <a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html">Usability</a>, good tooling can make all the difference for both developers and users. Users rely on tools such as block explorers and wallet/key management software. Developers rely on tools for building, testing, deploying, and maintaining smart contracts, running and monitoring node software, communicating with a running node, and testing and interacting with <a href="#api">the API</a>. They also rely on frameworks and SDKs that facilitate reading data and submitting transactions for building higher level applications. The better and more mature the tooling, the better the UX and developer experience it enables and the easier it is to build mature, usable applications on top of the blockchain. A blockchain that makes it very difficult to develop usable applications is not one that’s ready for production! For all of these reasons, tooling should not be an afterthought and its design and development should be prioritized alongside node software, frontend, and API.</p>
<h2 id="community-channels">Community channels</h2>
<p>Early in the life of a platform, most or all communication will happen internally among the core team. Over time, however, a healthy project will naturally attract a broad <a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">community</a> of enthusiasts, developers, investors, miners, and other stakeholders and contributors. These community members will need a place to congregate, find one another, and share ideas. In particular, they’ll need a place to ask questions and find answers.</p>
<p>The goal of a blockchain project should be to migrate away from centralized tools, and to <a href="https://deviq.com/dogfooding/">dogfood</a> Web3 and decentralized applications as much as possible. While platforms and protocols like <a href="https://matrix.org/">Matrix</a> and <a href="https://status.im/">Status</a> have come a long way, the reality is that most Web3 applications still aren’t very mature and tend to be difficult to use and unreliable. We should keep an eye on these tools and use them whenever possible. However, communication and coordination are extremely important and, while some may disagree, I encourage project teams to use well designed, centralized platforms as a stopgap until the Web3 ecosytem is more mature.</p>
<p>While Slack is intended for use among a trusted group, e.g., an internal company or project team, and thus has very limited moderation and community management capabilities, <a href="https://discord.com/">Discord</a> in particular has proven itself very well-suited to managing communities. It has sophisticated support for different classes of users and permissions out of the box, and can easily be extended with various customizations, integrations, and bots. To support this use case, Discord has introduced new <a href="https://support.discord.com/hc/en-us/articles/360047132851-Enabling-Your-Community-Server">community server</a> features recently.</p>
<p>Other channels such as Twitter, Reddit, and Telegram are also popular among blockchain communities. Each has its strengths and drawbacks and each is popular among a different audience. It’s important to understand each of the constituencies within the community and their needs and preferences, and to recognize that a single channel or app may not suit all of them. Developers and investors tend to hang out in different places and to prefer different communication styles. Some particularly active subgroups, such as miners/stakers/validators, may prefer a separate community focused exclusively on the topics that interest them.</p>
<p>While it may therefore make sense to have a presence on several such channels, be mindful of opening lots of social media accounts or hosting chat servers if you don’t have the resources to maintain and engage with all of them! Other things being equal, avoiding a platform or channel is generally better than engaging with it halfheartedly.</p>
<p>Understanding and managing a community is not easy. For any sizeable community it’s truly a full-time task, and for teams that have the resources, hiring an experienced community manager who can focus on this task is a great idea. You may also be able to recruit community moderators from among active groups on a per-group basis. See the <a href="https://stackexchange.com/about/moderators">Stack Exchange moderator system</a> for inspiration on what’s possible when this is done well.</p>
<h2 id="exchanges">Exchanges</h2>
<p>Once you’ve launched a stable mainnet it’s highly likely that your native token will be listed on one or more exchanges. While many teams and communities would prefer to delay listing as long as possible to prevent the sort of rampant speculation that has given the blockchain space a bad reputation, in a permissionless network there is of course nothing that you can do to prevent it. You can, however, prepare for it in several important ways.</p>
<p>The first and most obvious way is economics: avoid having too large a premine or issuing too many tokens early in the life of the network. You can and should also impose vesting on early investors and team members, enforced in software, so that no one can “dump” tokens on the market.</p>
<p>Nextly, you should have legal counsel, a legal stance, and a plan of action. Is your token a security, or not? In which jurisdictions might it be classified as such, and why? In order to answer questions such as these, or to engage fruitfully with legal counsel to find answers, it will be necessary to think carefully and honestly through the questions presented in <a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">Economics</a>. What role does/do the token or tokens play in your network? How does one earn tokens, and what can they be redeemed for?</p>
<p>Note that it’s not practically possible <em>not</em> to have a stance on these questions. Refusing to engage with them or attempt to answer them does not protect you from, e.g, an <a href="https://www.sec.gov/news/press-release/2019-87">SEC enforcement action</a>. It may be possible to assert that a network is decentralized and thus in the hands of its users rather than in the hands of one organization as there is <a href="https://www.coincenter.org/sec-chairman-clayton-just-confirmed-commission-staff-analysis-that-found-ethereum-and-cryptos-like-it-are-not-securities/">precedent for this</a>, but the burden of proof has become greater recently.</p>
<p>There is also a technical component to tokens listing on exchanges. Exchanges will need to run their own nodes, and may therefore become one of the more important infrastructure providers on the network. To the extent that you feel comfortable engaging with exchanges and supporting their work, you should be prepared to offer high touch technical support, especially in the beginning, to make sure that they’re able to successfully run and integrate with your software and participate in network upgrades and governance.</p>
<p>It’s worth noting that historically some exchanges, especially the more popular ones, have asked projects to pay “listing fees” that may be as high as a million dollars. You should consider for yourself the legality and ethicality of paying such fees, as well as how much it’s worth to list your token on a particular exchange at a particular time. Rest assured that any successful project will eventually be listed on major exchanges since it’s in their interest to do so, regardless of listing fees.</p>
<p>Also bear in mind that different jurisdictions have different rules regarding trading of cryptographic assets, and rather than attempt to comply with burdensome regulations, many exchanges simply block users from such jurisdictions from accessing their platform entirely or from trading certain assets. Many major exchanges <a href="https://news.bitcoin.com/as-crypto-exchanges-exit-the-us-which-trading-platforms-will-enter-the-breach/">block all customers from the United States</a>, and residents of New York face <a href="https://news.bitcoin.com/idex-blacklists-new-york-residents-setting-a-worrying-precedent/">even more onerous restrictions</a>. For this reason, some or many of your project’s stakeholders may face severe obstacles to acquiring and trading your token even once it’s listed—all the more reason you should reward various forms of meaningful contribution to the project and community with tokens wherever possible! Fortunately, the rising popularity of mature decentralized exchanges such as <a href="https://uniswap.exchange/">Uniswap</a>, and the depth of the markets they host, mean that the importance of highly regulated centralized exchanges will decrease over time. Listing a token on a decentralized exchange currently requires <a href="https://near.org/blog/eth-near-rainbow-bridge/">bridging it to Ethereum</a> and that platform’s robust <a href="https://www.coindesk.com/five-years-in-defi-now-defines-ethereum">DeFi ecosystem</a>.</p>
<h2 id="governance">Governance</h2>
<p>As <a href="#regular-releases">discussed above</a>, in the early days, changing the software or even the protocol itself is typically a decision that’s in the hands of a small number of core developers. During the R&D phase, a single developer might change the protocol unilaterally by changing a single line of code. The change may be discussed in a team meeting or on a GitHub issue. During the subsequent testnet phase, protocol changes are less common. There should be fewer changes, they should emerge from team consensus, and they should be infrequent. They can only be rolled out when the testnet is relaunched, which should not happen too often.</p>
<p>As a project transitions into production, however, making changes naturally becomes more burdensome. This is by design since a production network has a much larger set of stakeholders and an installed user base, and any changes post-genesis should take into consideration the concerns of active stakeholders (if not potential, future stakeholders as well). Protocol changes should become increasingly infrequent. They’re unlikely to be rolled out more than once or twice a year, and they almost definitely need to be <a href="#backwards-compatibility">backwards compatible</a>.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">4</a></sup> As the frequency of protocol changes decreases and the corresponding difficulty of making changes increases, the cost of mistakes and bad design and engineering decisions increases because the protocol will likely be stuck with them forever.</p>
<p>The process of understanding the needs of diverse stakeholders and negotiating whether, when, and how to include them in the release, update, and maintenance process is called governance. Governance becomes necessary the moment a network goes live in production, and while it’s less critical prior to this point, there’s lots of groundwork that can be laid early on. It’s a good idea to start early because governance only becomes more difficult over time as the number and diversity of stakeholders and the amount at stake grows.</p>
<p>Some basic principles of good governance are clear delineation of roles, responsibilities, and accountability processes so that stakeholders can see clearly how decisions are being made and know whom to hold accountable for those decisions. Additionally, changes should be communicated well ahead of time, and stakeholders should know how to weigh in and participate in the decision-making process. Records of the process, such as recordings of calls or chat transcripts, should be made available indefinitely to the public, or at least to network stakeholders. This is true for technical as well as for non-technical changes, such as those that impact economics. All stakeholders should be aware of various <a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">economic policies</a> that may impact them, how and when those policies may change, and how they can communicate their needs, propose ideas, and participate in the decision-making process.</p>
<p>As <a href="#identifying-and-responding-to-bugs-and-vulnerabilities">discussed above</a>, it’s important that there be clear, official, established channels for communicating about and coordinating upgrades, bugfixes, and responses to security incidents. This may involve roles such as core developers, security officers, community/communication managers, a technical steering committee responsible for setting the overall roadmap, and representatives of essential constituencies such as miners, validators, exchanges, and node operators. All of this takes time to design, build, and launch, so you should begin the process early to be ready in time for mainnet.</p>
<p>Lastly, the value of a clear roadmap and strong leadership cannot be overstated. One of the greatest risks of decentralization is a lack of strong leadership. This can lead to a lack of direction, like a row boat where everyone is working hard but <a href="https://youtu.be/uooGLTHdT8Q?t=17">rowing in different directions</a>. Early in the project lifecycle, up to and including the launch of a mainnet, and before the project achieves stability and maturity, strong, centralized leadership can be helpful. It simplifies communication and coordination and allows the team to respond quickly when things go wrong. Over time, as a platform and community mature, it makes sense to give more agency and authority to the community and to remove the core team as a single point of failure.</p>
<p>Note that strong leadership does not necessarily imply a single leader! The best projects tend to have leadership that’s multipolar, but that is nevertheless able to coordinate and act in concert, in the best interest of the network at large. Having multiple poles of governance, power, and influence, and multiple strong, trusted leaders means that these leaders tend to keep one another honest and in check, and make up for one another’s failings and oversights. Good leadership structures take time to develop but there is much that can be done to facilitate this development, such as making room for many voices in platform development and governance.</p>
<p>For more on this topic, see <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Governance</a>.</p>
<h2 id="conclusion">Conclusion</h2>
<p>As I hope this article makes clear, the transition from the R&D phase to the production, mainnet phase is the most important in the life of any project, including a blockchain. It’s one of the most exciting moments, but it’s also one of the most dangerous. The production phase requires a very different set of actions, a very different sort of communication and coordination, and a very different approach to the platform and product than any prior phase in the lifecycle. In some cases, the team that successfully designed and built the platform may not be the right team to operate it in production, and to navigate the intricacies of community and governance. It’s essential that blockchain product teams be honest with themselves about their strengths and weaknesses, and recruit team members and allies with the right set of skills and experiences to maximize the chance of the long term success of the platform.</p>
<p>However, for the project team, finally seeing the thing they’ve worked hard to build come to life and mature into something that more and more people use and rely on is an incredibly rewarding experience. Congratulations on making it this far in your blockchain product journey :) Few teams and projects do!</p>
<p>The final section in this series, Sustainability, will discuss a few ways to keep a project, platform, and community healthy and active far beyond this initial production launch phase.</p>
<h2 id="notes">Notes</h2>
<hr />
<p></p>
<p><a name="nav-links"></a></p>
<p>This article is part of a multi-part series on the key ingredients to a better blockchain. Check out the other articles in the series:</p>
<ul>
<li><a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Part I: Tech and protocol</a></li>
<li><a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">Part II: Decentralization</a></li>
<li><a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">Part III: Community</a></li>
<li><a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">Part IV: Constitution</a></li>
<li><a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Part V: Governance</a></li>
<li><a href="/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html">Part VI: Privacy</a></li>
<li><a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">Part VII: Economics</a></li>
<li><a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html">Part VIII: Usability</a></li>
<li><a href="/blockchain/governance/community/2020/11/15/key-ingredients-better-blockchain-part-ix-production-readiness.html">Part IX: Production Readiness</a></li>
<li><a href="/blockchain/economics/governance/2020/12/21/key-ingredients-better-blockchain-part-x-sustainability.html">Part X: Sustainability</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:2" role="doc-endnote">
<p>Different classes of users use node software for different purposes and thus have different requirements. For instance, an exchange may need to manage only a small number of wallets but need to support massively parallel transaction processing. A firm doing analytics may not need transaction processing at all, or may not need data that’s immediately up to date, but will likely need a database that’s tuned for reading huge amounts of data, possibly in parallel. A core R&D team may not care about the database, but may want node architecture that’s flexible, modular, and extensible. In order to support as many use cases as possible, node software should not be monolithic. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>One such example of a critical fix to a live network that necessitated changing the protocol was the Ethereum network upgrade that occurred in <a href="https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/">October 2016</a> in response to a DoS attack. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>When I say forever, I really mean forever. <a href="https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2014-November/006878.html">Bitcoin</a> and <a href="https://github.com/ethereum/go-ethereum/pull/3341">Ethereum</a> have both incorporated bugs into their respective protocols because the cost of doing so was less than the cost of fixing them. This phenomenon is called <a href="https://en.wikipedia.org/wiki/Bug_compatibility">bug compatibility</a> or, affectionately, “bugwards compatibility.” This <a href="https://www.gwern.net/Bitcoin-is-Worse-is-Better#how-worse-is-better">might not be such a bad thing</a>. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:1" role="doc-endnote">
<p>Of course, different projects handle their release schedule differently. Some <a href="https://github.com/monero-project/monero#scheduled-software-upgrades">occur frequently</a>, some <a href="https://z.cash/upgrade/">occur</a> <a href="https://docs.ethhub.io/ethereum-basics/history-and-forks/">infrequently</a>, and some are more liberal with protocol changes than others. But the point remains: a given network in production releases fewer, less frequent updates than the same network in the R&D and testnet phases. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigBuddha on the Blockchain2020-11-09T22:16:00+00:002020-11-09T22:16:00+00:00https://www.etherean.org/society/consensus/blockchain/2020/11/09/buddha-on-the-blockchain<p><img src="/assets/luca-santos-rIjXKaqPmeE-unsplash.jpg" alt="Greyscale picture of a Buddha statue" /></p>
<p style="text-align: center"><sub>It turns out that carving things into stone is a pretty good way to preserve the canonical truth. But first you have to agree on the truth, which isn't so straightforward. (Photo by <a href="https://unsplash.com/@luca_saint?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Luca Santos</a> on Unsplash)</sub></p>
<blockquote>
<p>When many voices shout at once<br />
None considers himself a fool;<br />
Though the Sangha is being split<br />
None thinks himself to be at fault.<br />
Buddha, Mv.X.3.2</p>
</blockquote>
<p>Consensus is something we talk a lot about in the blockchain space. We tend to talk about it in the context of state and transactions: a blockchain is an engine that allows many untrusted systems to agree on things like <a href="/blockchain/web3/software/2020/07/25/whats-it-good-for.html">the order of transactions and the state of a ledger</a>. Of course, the idea of consensus is much older than blockchain, the Internet, and computers. If we really want to understand blockchain and why it’s such an important technology, a good place to start is by understanding consensus on both a technical and social level.</p>
<p>While blockchain can feel radically new and revolutionary, like all technologies it doesn’t enable anything that wasn’t previously possible or desirable.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup> At least since the invention of language humans have found ways to reach consensus, sometimes over almost unbelievable time and distance. The way in which blockchain enables consensus and the underlying technologies it relies on are novel, but the idea of consensus is not.</p>
<p>Sometimes, however, making something orders of magnitude faster, easier, and cheaper can change the world. Blockchain technology has this effect on the process of reaching consensus. To understand why this matters—to see how far we’ve come, what a difference modern technology makes, and why consensus is so important to human society—we can look at previous technologies for reaching and maintaining consensus, and the role those technologies have played in society. There’s a lot we can learn about what worked and didn’t work previously!</p>
<p>Simply put, consensus formation is the process by which a group of people discuss, debate, and ultimately reach agreement. Consensus is about more than agreeing on facts: groups also need to come to consensus on beliefs and practices. Indeed, <a href="https://www.merriam-webster.com/dictionary/consensus">one definition</a> of consensus is “group solidarity in sentiment and belief.” Humans are social creatures and consensus is fundamental to society. Couples, families, communities, firms, and countries all need to reach consensus in order to function. Sometimes the process is quick and painless. Other times it’s long, expensive, and difficult, and the results of a failure to achieve and maintain consensus are plainly visible: witness the recent United States election and the dysfunctional state of American government.</p>
<p>Consensus can be formal or informal, structured or unstructured, intentional or unintentional. Contrast, for instance, legal, judicial, and political processes to the way languages and social norms develop. All of these processes are examples of technologies of <a href="https://unenumerated.blogspot.com/2017/02/money-blockchains-and-social-scalability.html">social scalability</a>, tools that allow institutions to overcome inherent limits in human cognitive abilities and scale the number of people that can participate in or benefit from that institution.</p>
<p>For instance, when two people sign a legal contract, they don’t need to worry too much about the contract being enforced since they can trust the legal system to provide recourse if the other party breaches the contract. This allows both parties to focus on the substance of the transaction rather than the infrastructure. In the same fashion, I don’t need to worry whether or not you’ll be able to read this article since it’s published in a common, legible language (English) using a common stack of technologies (the Web). This allows me to focus instead on the content and the ideas.</p>
<p>There are many examples of technologies of social scalability and consensus formation. These range from concrete ideas and technologies like the postal service, telegraph, telephone, the Web, the automobile, and commercial aviation to abstract ideas as large as language, money, democracy, the nation state, and international law that enable consensus among billions of people. All are the outcome of long and successful processes of consensus formation, and all in turn enable easier consensus formation and even greater social scalability.</p>
<p>The best technology humans have come up with for successfully achieving, scaling, and maintaining consensus over enormous groups of people, and over enormous time and distance, is religion. The <a href="https://en.wikipedia.org/wiki/Major_religious_groups">largest religions</a> have existed for thousands of years and have billions of followers, larger than even the largest nation states and the most popular languages. If we wish to understand how consensus is achieved, how it’s maintained over time, how it evolves, and what happens when it fails, religion is a good place to start.</p>
<p>Other things being equal, consensus is less important when things change less often. We don’t tend to think of religion as being especially dynamic or contemporary so, naively, it’s not immediately obvious why consensus is critical to its survival and success. In fact, however, evolution is the only way to achieve longevity and all successful religions evolve. The oldest religions have perfected the balancing act of evolving just enough to stay relevant and legible, while not evolving so much that they lose their character.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">2</a></sup> A robust consensus mechanism is key to this success.</p>
<p>I’m not a religious scholar, so I can’t explain precisely how religions establish, scale, and maintain consensus across billions of people and thousands of years. However, I recently came across a fascinating, modern example of this consensus process in Buddhism, involving debate about the validity of an ordination ceremony, that may help answer this question.</p>
<p>This example struck me for several reasons. First, because the religion in question, Buddhism, is one that appears especially conservative to me. When I think of Buddhism, I think of <a href="https://google.com/search?q=buddhism&tbm=isch">timeless images</a> of ancient statues and of monks and nuns meditating and reciting mantras by candlelight. Second, the doctrinal point in question is as old as the Buddha. I had naively assumed that in the 2500 years since then Buddhism would have worked out the finer points of doctrine, at least around practices as important as ordination. Third, while the debate seems insignificant to the uninitiated, several of the most prominent Buddhist scholars and practitioners in the world participated, demonstrating the importance of this question to the Buddhist community today. Finally, this debate is especially interesting because it relates to women’s rights and gender equality, both important, modern topics that have relevance far beyond Buddhism.</p>
<p>In brief, the debate involves the ordination of four nuns (<em>bhikkhunī</em>) during a single ordination ceremony at an Australian monastery, <a href="https://en.wikipedia.org/wiki/Bodhinyana_Monastery">Bodhinyana</a>, in 2009. The debate centers not on the doctrinal fitness or eligibility of the nuns—indeed, all had substantial training prior to the ordination—but rather on procedural details of the ordination process. Following the controversial ordination, a number of scholars from the Thai Forest Tradition (of which Bodhinyana was a branch) and other Buddhist schools weighed in on the ceremony’s validity. While the debate was overwhelmingly polite and respectful, this should not lead us to believe that it wasn’t heated. It appears to have caused a large divide in the Buddhist community, and in the end, the Bodhinyana Monastery and its senior monks, including those who conducted the ceremony, were <a href="https://en.wikipedia.org/wiki/Bodhinyana_Monastery#Bhikkhuni_controversy">expelled from their lineage</a>. As one commentator put it:</p>
<blockquote>
<p>[T]he Buddhist world watches with dismay the clamor arisen among senior bhikkhus (monks) in the wake of the recent ordination of bhikkhunis (nuns) into their lineage. - Ven. Sudhamma Bhikkhuni</p>
</blockquote>
<p>The details of the debate are abstruse and not terribly relevant for our purposes, but they’re laid out in great detail in <a href="https://web.archive.org/web/20091127090538/http://www.dhammalight.com/vinaya/ThanissaroBhikkhu_13-11-09.htm">this letter</a> from <a href="https://en.wikipedia.org/wiki/%E1%B9%ACh%C4%81nissaro_Bhikkhu">Ṭhānissaro Bhikkhu</a>, one of the <a href="https://www.accesstoinsight.org/index-author.html#thanissaro">foremost scholars and prolific translators</a> of early Buddhist texts.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">3</a></sup> As a renowned scholar of the monastic code and head of another Thai Forest Tradition branch monastery, he was asked to review the validity of the ceremony in question.</p>
<p>What struck me in particular about Ṭhānissaro’s letter is its familiar language, including words such as “protocol,” “validate,” and “trust.” He refers to the ordination itself as a “transaction,” a word he uses no less than 56 times in the letter. Here’s one example, which should look familiar to any blockchain developer:</p>
<blockquote>
<p>“The passage… lists five ways in which a transaction statement is rendered invalid, thus invalidating the transaction as a whole”</p>
</blockquote>
<p>According to Ṭhānissaro the ordination is a transaction, and that transaction is only deemed valid if it follows certain rules—i.e., conforms to a protocol. He goes on to say:</p>
<blockquote>
<p>[W]hatever a “transaction that is not a transaction” claimed to accomplish would automatically not count as accomplished… this would mean that the candidates accepted through such a transaction would not count as genuine bhikkhus [monks] or bhikkhunīs [nuns]</p>
</blockquote>
<p>This is eerily similar to the way we talk about transaction validity in blockchain. Whatever change an invalid transaction “claimed to accomplish,” e.g., transferring a balance from one account to another, would automatically fail to be applied to the ledger. In the case of Buddhism, the ledger in question is the set of ordained monks and nuns (along with the lineage of who ordained whom).</p>
<p>Ṭhānissaro explains that there are certain, rare exceptions to the protocol:</p>
<blockquote>
<p>[A]n Acceptance transaction that does not mention the preceptor would break with the authorized pattern… [and] would grant an exemption from following the authorized form</p>
</blockquote>
<p>In blockchain, we have a word for an exceptional transaction that doesn’t follow the ordinary rules of the protocol but is still deemed valid: an <a href="https://blog.ethereum.org/2016/07/20/hard-fork-completed/">irregular state change</a>.</p>
<p>Ṭhānissaro’s language is echoed by several other commentators who opined <a href="http://www.bhikkhuni.net/wp-content/uploads/2013/08/Buddhist-Scholars-Response-to-the-Validity-of-Bhikkhuni-Ordination-071209.pdf">in response to his letter</a>. For instance:</p>
<blockquote>
<p>[A]n ordination is said to “fail”… because of faults in the proclamations - Bhikkhu Bodhi</p>
</blockquote>
<p>We might say the same thing of a blockchain transaction: that it fails because of faults in its “proclamations,” e.g., trying to transfer an amount that’s greater than the sender’s balance at the time the transaction is processed.</p>
<p>Here’s another, subtler example:</p>
<blockquote>
<p>[An] ordination ceremony culminates in a motion and three proclamations identifying the candidate and his preceptor, and asserting that the candidate seeks ordination and is qualified; if all remain silent, the proclamations become the decision of the group, and the ordination is a completed legal transaction. Permission came for lumping together proclamations for multiple candidates, when two men planning to ordain under one preceptor quarreled over whose proclamations would be spoken first… Being first presumably would determine not only who felt more favored but which student would become the more senior of the two, a matter greatly impacting the co-students’ daily lives. - Ven. Sudhamma Bhikkhuni</p>
</blockquote>
<p>This quote sheds light on the details of the ordination process and on how the group of monks reaches consensus. The emphasis on “if all remain silent” sounds eerily similar to the idea of rough consensus, <a href="https://tools.ietf.org/html/rfc7282">pioneered by the IETF</a> and adopted by blockchain communities including Ethereum as a <a href="https://eips.ethereum.org/EIPS/eip-1">governance mechanism</a>.<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">4</a></sup> It also reminds me of <a href="https://eprint.iacr.org/2018/1028.pdf">certain Byzantine agreement protocols</a> where participants in a consensus process gossip proposals and acceptance or rejection of those proposals to one another through several rounds until the group reaches consensus—resulting in silence on the network.</p>
<p>Additionally in Buddhism as in blockchain the order of transactions matters! If one monk is ordained before another, even as part of the same ceremony, he becomes more senior, a matter of great importance in the community of monks.</p>
<p>In closing, Ṭhānissaro explains why it’s so important to follow the rules of the protocol, even when they seem obscure and “heartlessly legalistic”:</p>
<blockquote>
<p>We have to remember, though, how the Buddha instituted the Saṅgha [community of monks and nuns]. He created no overarching organization to administer or police the survival of his Dhamma and Vinaya [teachings and monastic code]. Instead, he established rules, protocols, and other patterns of behavior, entrusting each local Community with the task of governing itself in line with those forms. The act of adhering to the authorized forms for Community transactions is one of the few ways we have of showing to ourselves and others that we are deserving of the Buddha’s trust.</p>
</blockquote>
<p>This statement particularly resonates for me. In a few short sentences, the author has captured the reason a protocol exists and the central role it has played in Buddhism. While some religions are highly centralized and hierarchical, Buddhism is famously and perhaps uniquely decentralized.<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote">5</a></sup> There are <a href="https://en.wikipedia.org/wiki/Schools_of_Buddhism">thousands</a> of Buddhist schools, sects, subsects, and movements around the world. Without a central agency to oversee or “validate” each individual school and its “transactions,” the schools must instead validate one another, and the protocol is the only way they have of doing this. They may disagree on the finer points of doctrine, but as long as they adhere to certain central tenets, in particular those specified by the Buddha, they can rest assured that they and their “transactions” will be recognized as valid by other schools. As another of the commentators points out, consistency matters:</p>
<blockquote>
<p>[A]n important criterion is consistency. Given that according to the discourses the Buddha himself presented consistency as a criterion of truth, it would be reasonable to expect that the Buddha was coherent in his views - Bhikkhu Anālayo</p>
</blockquote>
<p>Reaching consensus and maintaining consistency today is facilitated by technology such as airplanes, telephones, and the Internet. How on earth did Buddhism achieve and maintain consistency for thousands of years before these technologies existed?</p>
<p>It achieved this feat using an old but remarkably robust technology: putting everyone in a room together from time to time (or, in the case of Buddhism, a cave). Starting three months after the death of the Buddha, the international <a href="https://en.wikipedia.org/wiki/Theravada">Theravāda</a> community has met every so often to come to consensus on a number of important points of doctrine, the most important of which is the contents of the canon, i.e., the protocol. Six times over the past 2500 years, a group of hundreds or thousands of senior monks have met and recited the canon in its entirety. This process can take as long as nine months as the canon is 20,000 pages long and all of the monks must chant every word. It ends when the monks agree unanimously on the contents:</p>
<blockquote>
<p>These collective recitations which were performed by the monks at all these Dhamma Councils are known as the ‘Dhamma Saṅgītis’, the Dhamma Recitations. They are so designated because of the precedent set at the First Dhamma Council, when all the Teachings were recited first by an Elder of the Saṅgha and then chanted once again in chorus by all of the monks attending the assembly. The recitation was judged to have been authentic, when and only when, it had been approved unanimously by the members of the Council (<a href="https://www.tipitaka.org/chattha">Chaṭṭha Saṅgāyana, The Six Dhamma Councils</a>)</p>
</blockquote>
<p>The most recent such council occurred in 1954 in Myanmar. The final product of that council is available <a href="https://www.tipitaka.org/">on the Web</a>, but previous councils used older technologies to record and disseminate the resultant canon. After the council of 1871, the entire canon was carved into <a href="https://en.wikipedia.org/wiki/Tripi%E1%B9%ADaka_tablets_at_Kuthodaw_Pagoda">730 enormous marble slabs</a> that are still on display in a Burmese pagoda. What more permanent way is there to record canonical truth than to literally carve it into stone and put it on public display? And the fact that the canon was divided into 730 contiguous stone blocks is the icing on the cake to fans of blockchain.</p>
<p>While the Buddhist process for achieving and maintaining consensus has been quite successful, it hasn’t been entirely without issues. Unlike the Bible or the Quran, the Buddhist canon has traditionally been considered more open. Various texts were added to it over time, and in modern times, texts that seem less relevant to the world today have also been removed. Unfortunately, the details of who added or modified what, when, have been lost to the sands of time. As a result, certain elements of the canon are regarded as older or purer, and as doing a better job of conveying the original words of the Buddha, than others. This is referred to as “stratification,” which also sounds quite familiar: layers are piled on top of older layers, and the older layers become more authoritative, trustworthy, and harder to change over time.<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote">6</a></sup></p>
<p>Reviewing the sources of gender discrimination in the Buddhist canon and the Thai Forest Tradition, another commentator describes this process of stratification in detail:</p>
<blockquote>
<p>The Pali texts are not the only textual renditions of the Buddha’s early oral teachings; and the Pali texts, as well as other early texts such as those of the Middle Indo-Aryan languages, have their strata. This means that they exist in layers that developed over time, just as is true with the modern English language… Scholars of the Pali language and other ancient languages can… read such differences of time and place, called stratification.</p>
</blockquote>
<blockquote>
<p>From this study of the stratification of the Buddhist texts, we understand that both the Pali Suttas and the Vinaya [monastic code] have taken shape and come to be in their present form over a vast period of time. The last Buddhist Council, in which the Pali Canon was set in its current form, took place in Burma remarkably recently, just a little over 50 years ago…</p>
</blockquote>
<blockquote>
<p>The Vinaya is commonly spoken of within the Thai forest tradition as one of the oldest and purest teachings of the Buddha. But the Vinaya shows such textual stratification. It developed a little differently in different times and places; some parts of the Vinaya where [sic] “closed” earlier, while other parts continued to develop. - <a href="https://www.bhikkhuni.net/beyond-ambiguity-going-beyond-gender-ambiguity-in-theravada-forest-tradition/">Going Beyond Gender Ambiguity in Theravada Forest Tradition</a>, Tathaaloka Bhikkhuni</p>
</blockquote>
<p>Tathaaloka Bhikkhuni goes on to argue that, while Buddhism has a long history of patriarchy and male chauvinism, this was not the case in Buddhism’s earliest days. She points out that sexism and chauvinism in Buddhism are instead a product of the patriarchal cultures through which Buddhism has been transmitted, and that the process of stratification has obscured the Buddha’s original attitude towards women and his female disciples.</p>
<p>The route the canon has taken from the original teachings of the Buddha to us today is anything but a straight line. It has meandered and been filtered through many countries, cultures, languages, traditions, and other religions, coming into contact with, affecting, and in turn being affected by each of these. Along the way, commentators, scribes, and translators have also made alterations, some intentional, some unintentional. Different branches of the canon have evolved independently, sometimes in isolation for hundreds of years. This independent evolution has given rise to an enormous breadth of schools and traditions, many of which survive and thrive today. Branches and evolution are unsurprising given the enormous time and distance, cultural as well as geographic, that the canon has traveled. What’s perhaps more surprising is the fact that, in spite of this meandering journey, “Buddhism” still exists as one distinct, intact, legible religion. This is testament to the difficult and often dangerous work that Buddhist monks did to translate and carry the Buddha’s teachings all across Asia, and to the success of the consensus process.</p>
<p>It’s also interesting to note cases where independent, isolated branches of Buddhism were later reconciled, partially or fully. For instance, the Theravada school evolved largely independently in Sri Lanka and Myanmar, two especially active centers of <a href="https://www.accesstoinsight.org/lib/authors/bischoff/wheel399.html">scholarship and commentary</a>. While the canon was eventually reconciled at the Dhamma Councils and a single canon was agreed, these different evolutionary paths and the process of stratification means that many differences in interpretation remain among different schools and traditions. This makes it difficult and contentious to determine the proper protocol for transactions such as the Bodhinyana ordination.</p>
<p>It doesn’t take much work to translate ideas such as stratification, forks, and reconciliation to the language and context of blockchain. I’ve heard blockchain compared to religion many times. Satoshi Nakamoto is often called a Christ figure. Religious canons like the Bible are sometimes referred to as the original blockchains as they don’t change often, they’re rather expensive to get something into, they get harder to change over time, and they’re about as permanent as any form of human knowledge can be. I never took those ideas very seriously or gave them much thought, but I’m beginning to. I’m beginning to wonder what else I’ve been missing.</p>
<p>However, these are all very abstract ideas. What do they mean for blockchain communities today? What can we learn from the history of Buddhism and the Theravada canon, and from the Bodhinyana incident and other examples of conflict and reconciliation in religious communities?</p>
<p>One possible lesson for the blockchain community is that, in blockchain as in biology, diversity is beneficial. As the Dalai Lama put it:</p>
<blockquote>
<p>I find this idea—which is so emphasized and explicitly pointed out in Buddhist literature—very attractive: there is a diversity of mental dispositions and receptivity interest, and spiritual inclinations existing among humanity. In Buddhist literature, all Buddhist schools of thought follow the same teacher, Buddha Shakyamuni. However, there is such diversity in the teachings that are attributed to the Buddha—some of them may even seem to contradict each other—that we are prevented from falling into dogmatism. All these various teachings are aimed toward sentient beings’ diverse mental dispositions, needs and spiritual inclinations. And when I understand the truth of this, I am able to truly appreciate the richness and value of other traditions, because it enables me to extend the same principle of diversity to other traditions as well. - from The Dalai Lama, The Good Heart: A Buddhist Perspective on the Teachings of Jesus (Boston: Wisdom Publications, 1996), pp 71-73</p>
</blockquote>
<p>Diversity in practice and teaching allows Buddhism to make itself approachable to the “diverse mental dispositions, needs and spiritual inclinations” of people everywhere. It has likely made Buddhism <a href="/blockchain/decentralization/2020/05/17/much-ado-about-decentralization.html">antifragile</a>, capable of adapting itself to different cultural settings and evolving in response to threats. Embracing diversity may be one way that religions like Buddhism have enjoyed such longevity. In blockchain terms, this could mean that having many chains and many protocols is desirable in order to serve diverse attitudes and needs, and to adapt to local regulatory environments.</p>
<p>I think the best lesson from the Bodhinyana incident is that, important as it is, scripture and protocol are not intended to be interpreted literally. In the case of the Bodhinyana ordination, the rule in question, which prohibits multiple nuns from being ordained in a single ceremony, was originally intended to protect nuns and ensure that they received sufficient training and instruction as their order was new at the time and there was a shortage of lodging. As several commentators argued, the situation in 2009 was very different, as the nuns had received ample training and had the support of a large, active community, and therefore the original offense “hardly applies in present times” (Ajahn Brahm).</p>
<p>One of the reasons Buddhism and other major religions have managed to stay relevant is precisely the way in which they’ve balanced the need to evolve and adapt themselves to modern, local preferences against the need to maintain ancient traditions. While they may appear monolithic to the untrained eye, the most successful religions are very much living, evolving projects that don’t stand still for a single moment. In this way they are very much like companies, countries, and code repositories.</p>
<p>In order to accomplish balanced evolution, there must be room for interpretation, compassion, and judgement in light of present circumstances, all things that don’t encode well into a protocol. Several of the commentators spoke to this point:</p>
<blockquote>
<p>Vinaya [monastic code] is not a system of absolute black and whites, with immediate invalidation of anything that transgresses a minor rule. On the contrary, Vinaya, as laid down in the texts, is a highly flexible instrument, which clearly tries to be as reasonable and contextual as possible. - Ajahn Sujato</p>
</blockquote>
<blockquote>
<p>[T]he pragmatic principle of adjusting to circumstances [is] a recurrent feature in the formation of rules as documented throughout the Vinaya. In the end, tradition–which I personally highly value–only stands a chance to survive if it is able to adjust to changing circumstances without loss of what is essential - Bhikkhu Anālayo</p>
</blockquote>
<p>The Buddha emphasized flexibility and pragmatism in his teaching, an idea known as <a href="https://en.wikipedia.org/wiki/Upaya">upāya</a> and often translated as “expedient means.” Upāya dictates that a teaching must be geared towards the audience and must be guided by wisdom and compassion. As scholar <a href="http://www.buddhanet.net/skilful-means.htm">Peter Nelson writes</a>:</p>
<blockquote>
<p>[T]he Buddha asserted that his spiritual teaching was only a useful ‘pointer’ to the truth—not the truth itself. This meant that the dhamma—because merely provisional—was neither fixed nor dogmatic. Rather, being an expedient ‘means’ (upāya) to an end, this teaching was—like Socrates’ celebrated dialectical method—dynamic and contextual. This pragmatic philosophical stance gave the Buddha enormous flexibility—it meant he was free to adjust or change his teaching to suit the level of his audience.</p>
</blockquote>
<p>The Buddha also emphasized that we should not blindly adhere to protocol, tradition, scripture, or math, but that we should instead always trust our own experience:</p>
<blockquote>
<p>Don’t go by reports, by legends, by traditions, by scripture, by logical conjecture, by inference, by analogies, by agreement through pondering views, by probability, or by the thought, “This contemplative is our teacher.” When you know for yourselves that, “These qualities are unskillful; these qualities are blameworthy; these qualities are criticized by the observant; these qualities, when adopted & carried out, lead to harm & to suffering”—then you should abandon them… When you know for yourselves that, “These qualities are skillful; these qualities are blameless; these qualities are praised by the observant; these qualities, when adopted & carried out, lead to welfare & to happiness”—then you should enter & remain in them. - <a href="https://www.dhammatalks.org/suttas/AN/AN3_66.html">Kālāma Sutta</a></p>
</blockquote>
<p>In the blockchain community we tend to adhere to strict protocols and be “heartlessly legalistic,” to borrow Ṭhānissaro’s phrasing. Indeed, in communities including Bitcoin and Ethereum there is widespread desire that the protocol be <a href="https://nakamoto.com/credible-neutrality/">“neutral”</a> and free from all human interpretation and social governance. No human interpretation of a protocol means no compassion, judgement, or forgiveness. It means no adjusting or interpreting the protocol to suit the audience. It means interpreting the protocol itself as the truth, rather than as a “pointer” to the truth.</p>
<p>In <a href="/blockchain/community/governance/2020/03/04/autonocrats-anthropocrats.html">Autonocrats & Anthropocrats</a> I argued that we have a powerful tool at our disposal in blockchain, and while we should use it to augment human judgement, we should not attempt to outsource too much agency to an algorithm or a protocol. If we want blockchain and the things we build on it to be around for a long time, we’d do well to learn the lesson of flexible protocols like the Buddhist canon that leave room for plenty of interpretation, and have stood the test of time and touched the lives of billions of people. Technology alone is never a solution. The Dalai Lama <a href="https://www.dalailama.com/messages/buddhism/science-and-religion">put it best</a>:</p>
<blockquote>
<p>[S]cience, technology, and material development cannot solve all our problems. We need to combine our material development with the inner development of such human values as compassion, tolerance, forgiveness, contentment and self-discipline.</p>
</blockquote>
<p>I’m sure there are many other examples of lessons we can learn from Buddhism and other religions. What can we learn from the relationship among various religious schools, practices, and traditions? What can we learn from their history of conflict and cooperation? How do we avoid the mistakes religious communities have made? What successful examples can we turn to?</p>
<p>I leave it as an exercise to the reader to come up with other examples of lessons we can draw from scholarship, practice, and history in the religious world. I look forward to continuing the conversation in the comments below, on <a href="https://forum.etherean.org/">the forum</a>, and in future articles here.</p>
<h2 id="notes">Notes</h2>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>This is probably a slight simplification. It’s more of a process of feedback loops, combination, and gradual evolution. Technology starts out by making it easier to do something we already wanted to do, but along the way we often discover other things that the technology also enables that we didn’t originally intend (often in combination with another technology). To put it another way, a technology often has second- and third-order effects that were unforeseen. The Internet was famously funded by United States Department of Defense and <a href="https://en.wikipedia.org/wiki/ARPANET">was first used</a> to share research and access to mainframe systems. While its creators could probably have predicted email and instant messaging they could hardly have foreseen smartphones, social media, and sharing economy. We have civilian <a href="https://en.wikipedia.org/wiki/Nuclear_power">nuclear power</a> because of the Manhattan Project and modern <a href="https://en.wikipedia.org/wiki/Jet_aircraft">jet travel</a> because of the German Luftwaffe, both part of World War II. Early <a href="https://en.wikipedia.org/wiki/Photography">photography</a> later enabled film and, of course, also helped lead to social media. The first <a href="https://en.wikipedia.org/wiki/Clock">clocks</a> were used for administrative purposes and to make more precise astronomical measurements, but they also made navigation much easier. Makes you wonder what blockchain might someday be used for! <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>In addition to the following examples from Buddhism, we can also see this process playing out today in living color in <a href="https://en.wikipedia.org/wiki/Catholic_Church#Social_and_cultural_issues">debates in the Roman Catholic Church</a>, which is thousands of years old, on topics such as homosexuality, sexual morality, abortion, and women’s rights. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>If you’re curious to learn more about this incident and the subsequent debate, in addition to this letter and the <a href="http://www.bhikkhuni.net/wp-content/uploads/2013/08/Buddhist-Scholars-Response-to-the-Validity-of-Bhikkhuni-Ordination-071209.pdf">response letters</a> that I quote heavily from below, see the <a href="https://web.archive.org/web/20110726221329/http://www.dhammalight.com/">archived dhammalight website</a> for lots more information. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Note that this mechanism is not without challenge and controversy. Automatically interpreting the silence of stakeholders as tacit agreement may work well for small groups and low stakes decisions but it tends not to work very well in the case of highly contentious decisions, especially when stakeholders are loath to raise concerns in public. One highly contentious issue that the Ethereum community has struggled to conclude through a process of rough consensus is <a href="https://medium.com/@_Checkmatey_/observing-ethereum-governance-during-the-progpow-debate-9bf1aec724ad">progpow</a>. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>The Roman Catholic Church, by contrast, is <a href="https://en.wikipedia.org/wiki/Hierarchy_of_the_Catholic_Church">highly centralized</a>. It’s nearly as old as Buddhism and it, too, has been wildly successful. It has been called “the world’s oldest and largest continuously functioning international institution” (<a href="https://en.wikipedia.org/wiki/Catholic_Church">Wikipedia</a>). So it appears that either approach can work. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:6" role="doc-endnote">
<p>For more on the evolution of the Theravadin canon, see <a href="https://www.google.com/books/edition/The_Selfless_Mind/1azdAAAAQBAJ">The Selfless Mind, Personality, Consciousness and Nirvana in Early Buddhism</a> by Peter Harvey, <a href="https://openphilology.eu/media/pages/publications-jonathan-silk/136649055-1588607424/articles_2015b_canonicity.pdf">Canonicity</a> by Jonathan Silk, and <a href="https://www.edx.org/course/buddhism-through-its-scriptures">Buddhism Through Its Scriptures</a>. <a href="#fnref:6" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigDigital Localism2020-10-31T19:11:00+00:002020-10-31T19:11:00+00:00https://www.etherean.org/society/technology/2020/10/31/digital-localism<p><img src="/assets/vishal-vasnani-0aVsXiFvikg-unsplash.jpg" alt="A street art poster of an artist wearing VR goggles" /></p>
<p style="text-align: center"><sub>For many people, the contrast between our local, analog lives and our global, digital lives is already the source of no small amount of cognitive dissonance. This is only bound to increase as these trends pick up pace. (Photo by <a href="https://unsplash.com/@vishal9950?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Vishal Vasnani</a> on Unsplash)</sub></p>
<p>Humanity faces a number of huge challenges that must be addressed over the next generation. These include increasing inequality, the rise of populism, growing dissatisfaction with democracy and capitalism, climate change, and balancing individual rights and social cohesion. None of these challenges are new. What’s new is the pace and scale of change. Since the first tribe that chopped trees for firewood, humans have had an impact on the environment, but never fast enough or at a large enough scale to cause permanent damage or affect all other humans—until now. Two trends, both the product of modern technology, are to blame for this.</p>
<p>The first trend is globalization: on average people everywhere are paying less attention to the things happening in their local communities and more attention to things happening at the macro level: state, national, and international. The second trend is digitization: on average people everywhere are paying less attention to things happening in the tangible, flesh-and-blood, brick-and-mortar world and more attention to digital worlds. Both of these trends have been exacerbated recently by the Covid-19 pandemic. Even those who tend to ignore global issues and prefer to focus on local ones can’t ignore the pandemic, which is by its very nature a global issue as viruses don’t respect political boundaries. And during the pandemic, of course, most of us have been spending a lot more time online.</p>
<p>Neither globalization nor digitization is necessarily bad, and both have positive aspects. Regarding globalization, a marginal hour spent considering and debating climate change (which also doesn’t respect political boundaries) is arguably of greater global social value than a marginal hour spent thinking about where to build a local park. And regarding digitization, exploring digital worlds can bring a great deal of joy and excitement and can expose one to a wealth of information and new perspectives. Also, digital worlds offer new ways of interacting and communicating, and of entirely new sorts of business and markets that can create a lot of value. But each trend also has a dark side.</p>
<p>The challenge of globalism is that it comes at the expense of local politics. If everyone is focused on big-picture, national and international issues, who makes sure that the roads are paved and the schools are funded? The United States is an especially obvious and disturbing example of what happens when politics becomes nationalized and professionalized. Over the last few decades and the last several generations, the country has seen an unprecedented hollowing out of local, civic institutions, from PTA groups to churches to bowling leagues. Compared to local politics, politics at the national level has always been relatively distant and brutish, and in recent generations it has been captured by large, professionalized interest groups and lobbyists. This used to be balanced by more resilient, friendly, local politics that lent credence, trust, and social capital to national politics and to American institutions and democracy in general, but this trust is evaporating as rapidly as these local institutions are vanishing.</p>
<p>The challenge of digitalism is that we have no clue how to translate the institutions that have served us well in the offline world into online spaces: things like democracy, free speech, property law, and rule of law. We have no clue what digital civic society is supposed to look like. How do netizens vote when they’re pseudonymous or their identities are managed by Facebook and Google, and digital spaces are ill-defined and full of sock puppets and Sybils? How do we ensure freedom of speech and meaningful civic engagement among people who disagree when individuals and communities regularly ban and block one another, when unaccountable private companies regularly engage in <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">arbitrary censorship</a>, and when there is anyway no enforcement mechanism? How does property law work when property is digital, intangible, and not scarce nor excludable? How do we enforce rule of law when digital jurisdictions overlap or don’t exist at all, when identities aren’t known, and when, again, there is no enforcement mechanism? As a result of all of this, online spaces tend to be disorganized, unruly, and chaotic, truly the wild west.</p>
<p>Early Internet pioneers tended to emphasize personal freedom at the expense of ideas such as rule of law and civil engagement, a tradition <a href="/blockchain/culture/values/2020/08/09/crypto-has-a-purpose-problem.html">inherited by the blockchain community</a>. In 2018 at the passing of the visionary founder of the EFF and author of the <a href="https://www.eff.org/cyberspace-independence">Declaration of Independence of Cyberspace</a>, John Perry Barlow, one commentator who had worked with Barlow <a href="https://slate.com/technology/2018/02/john-perry-barlow-gave-internet-activists-only-half-the-mission-they-need.html">described his vision as incomplete</a>:</p>
<blockquote>
<p>I can’t help but ask what might have happened had the pioneers of the open web given us a different vision—one that paired the insistence that we must defend cyberspace with a concern for justice, human rights, and open creativity, and not primarily personal liberty. What kind of internet would we have today?</p>
</blockquote>
<p>Barlow gave cyberspace a Declaration of Independence, but he did not give it a Constitution.</p>
<p>As troubling as each of these trends is independently, it’s their intersection that I find especially disturbing. Like it or not, we’re hurtling towards a global, digital world order, one that we have no clue how to structure or govern. In response I see three possible paths.</p>
<p>The first path is traditionalist. It would mean attempting to slow or stop these trends and instead clinging to a more familiar world order that we have some idea how to manage. Those who choose to walk this path could restrict themselves to only certain technologies and live in certain, sheltered places where they feel safe and in control, largely cut off from modern, digital society. In so doing they would be following in the footsteps of the Amish, who severely restrict their use of modern technologies to those that uphold their traditional family and community values. A more extreme version of this path is reactionary, seeking not only to slow these trends but indeed to reverse them. Those who choose to walk this path are the neo-Luddites, those who eschew connected, digital life entirely. Either of these paths would mean building stronger bridges with local communities and spending less time online. They would mean doubling down on existing institutions, outmoded and fraying as they may be.</p>
<p>Opposing globalization and digitization would entail severe pushback from the wealthy, powerful companies, lobby groups, and others that benefit from the new world order: Google, Amazon, and Facebook, yes, but also Wall Street, venture capitalists, academics, law firms, accountants, consultants, and anyone invested in the global supply chain, including China and other modern industrial countries. In any case, this path does not sound realistic to me because I genuinely don’t think these trends can be reversed or even stopped. Small, insular communities can isolate themselves from technology to some degree but society at large cannot.</p>
<p>The second path is anarchistic. It would mean resigning ourselves to chaos and disorder in digital spaces. It would mean giving up any pretense of trying to enforce existing regimes in digital spaces, and giving up trying to translate existing institutions, such as democracy and rule of law, into the digital realm. Those who find such a future unappealing can take solace in the fact that, by their very nature, chaotic digital worlds aren’t in a position to challenge the existing, offline world order—yet.</p>
<p>The third path is progressive. It’s the most difficult, but also the most exciting. It would mean radically rethinking the current world order, the structure of society, and our existing set of institutions, and building a new digital order, one that is hopefully more just than the existing world order. While it would certainly inherit much of what works well in the offline order—property law (enforceable through cryptography and digital scarcity) and art come to mind—in all likelihood it would resemble the offline world only superficially. Identity, in particular, is a concept that we need to radically rethink in the digital realm, anchored as it is in outmoded ideas like centralized ledgers maintained by governments with jurisdiction over scarce physical territory. Reimagining identity necessarily means reimagining every institution that depends on it, starting with democracy.</p>
<p>Much of the political, social, and economic tension we’re facing today stems directly or indirectly from the challenges of globalization, digitization, and the growing inequalities that these trends are exacerbating. The first path is the one promoted by populists like Donald Trump, who decided to <a href="https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(20)31527-0/fulltext">withdraw from global institutions like the WHO</a> and who promises to “bring back coal” (<a href="https://www.washingtonpost.com/opinions/trump-pledged-to-bring-back-coal-like-everything-under-him-it-collapsed-instead/2020/06/12/1fa8bed6-accd-11ea-9063-e69bd6520940_story.html">he hasn’t</a>). By contrast, the third path is the one favored by elites everywhere for whom digitization and globalization are already second nature. This is the minority that stands to gain the most from these trends, as they’re fortunate enough to have the wherewithal, training, and social capital required to take advantage of them.</p>
<p>Regardless of where you stand, the fact remains that globalization and digitization are probably unstoppable and irreversible. On a local and temporary basis progress can be slowed or possibly even halted, but the long-term, large-scale trends cannot. Even if one nation were to opt out of a digital future, the rest of the world would move forward without them. The potential upside is simply too great, the possibilities too alluring not to try.</p>
<p>Over the years, science fiction authors have given us glimpses of what this future might look like. Whether we end up somewhere that more closely resembles the dystopian, cyberpunk, post-apocalyptic cityscapes of William Gibson, Neal Stephenson, and Ernest Cline, or the utopian, harmonic, post-scarcity paradises of Star Trek or Iain M. Banks’s <a href="https://en.wikipedia.org/wiki/Culture_series">Culture series</a> is entirely up to us. As rapidly as things are changing, we’re still in the early phases of this transition, so we still have some time to figure things out. In terms of importance, however, I’d put this question right up there with climate change, since if we can’t answer it soon we’ll destroy ourselves before Mother Nature does the job for us.</p>
<p>As we look for answers, a good starting point is redefining civic engagement for a more global, more digital future. What does “local” mean in a connected, digital world? If “local” no longer applies, where do we start to structure a new civil society? What do digital constituencies look like, and how do their members find one another and communicate their preferences? What does a digital social contract look like? In a global, digital society, how do disparate groups come together and find shared values and interests? How do they express themselves? How do we ensure freedom of expression and a liberal marketplace of ideas, even if we cannot bring liberal democracy with us whole cloth? How do we collectively avoid a <a href="https://en.wikipedia.org/wiki/State_of_nature#Thomas_Hobbes">Hobbesian state of nature</a> in the digital realm?</p>
<p>All of these questions are deeply important and interesting, and none of them has an easy answer. I intend to think long and hard about them in the coming days and weeks, and to turn to those who have been thinking about them much longer than I have for guidance. I hope to share what I learn here and elsewhere.</p>
<p>I’m curious to hear your thoughts, too! Which path do you think we should pursue? Are there other possibilities I’ve failed to mention? What other questions should we consider? Please share your thoughts and ideas <a href="https://forum.etherean.org/t/digital-localism-etherean-org/352">in the comments</a> and on <a href="https://forum.etherean.org/">the forum</a>.</p>Lane RettigThe key ingredients to a better blockchain, Part VIII: Usability2020-10-17T22:38:00+00:002020-10-17T22:38:00+00:00https://www.etherean.org/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability<p><img src="/assets/poptronics-1975-01.jpg" alt="The Altair 8800 on the cover of Popular Electronics, 1975" /></p>
<p style="text-align: center"><sub>The Altair 8800 didn't have great usability by modern standards. Released in 1975, it arrived as a kit that had to be assembled, and could only be programmed and interacted with via a series of switches and lights on the front panel. Nevertheless, as the first commercially successfully personal computer, it's generally regarded as having kickstarted the microcomputer revolution. Blockchain is roughly as usable today as the personal computer was in 1975, but it's improving by leaps and bounds.</sub></p>
<p>[This is part of a multi-part series on the key ingredients to a better blockchain. I recommend starting with part one, <a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Tech and Protocol</a>. See the <a href="#nav-links">full list of articles</a> in the series.]</p>
<p></p>
<h4>Table of Contents</h4>
<ul id="markdown-toc">
<li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
<li><a href="#layer-zero-the-social-layer" id="markdown-toc-layer-zero-the-social-layer">Layer zero: the social layer</a> <ul>
<li><a href="#recognize-that-brand-and-principles-matter" id="markdown-toc-recognize-that-brand-and-principles-matter">Recognize that brand and principles matter</a></li>
<li><a href="#invest-in-good-documentation" id="markdown-toc-invest-in-good-documentation">Invest in good documentation</a></li>
<li><a href="#hire-a-designer" id="markdown-toc-hire-a-designer">Hire a designer</a></li>
<li><a href="#take-a-product-approach" id="markdown-toc-take-a-product-approach">Take a product approach</a></li>
</ul>
</li>
<li><a href="#layer-one-the-base-layer" id="markdown-toc-layer-one-the-base-layer">Layer one: the base layer</a> <ul>
<li><a href="#ensure-the-software-is-easy-to-run" id="markdown-toc-ensure-the-software-is-easy-to-run">Ensure the software is easy to run</a></li>
<li><a href="#make-onboarding-easy" id="markdown-toc-make-onboarding-easy">Make onboarding easy</a></li>
<li><a href="#facilitate-layer-two" id="markdown-toc-facilitate-layer-two">Facilitate layer two</a></li>
<li><a href="#mobile-support" id="markdown-toc-mobile-support">Mobile support</a></li>
<li><a href="#make-transactions-faster" id="markdown-toc-make-transactions-faster">Make transactions faster</a></li>
<li><a href="#make-key-management-easy" id="markdown-toc-make-key-management-easy">Make key management easy</a></li>
</ul>
</li>
<li><a href="#layer-two-the-application-layer" id="markdown-toc-layer-two-the-application-layer">Layer two: the application layer</a> <ul>
<li><a href="#balance-usability-and-decentralization" id="markdown-toc-balance-usability-and-decentralization">Balance usability and decentralization</a></li>
<li><a href="#invest-in-good-tooling" id="markdown-toc-invest-in-good-tooling">Invest in good tooling</a></li>
<li><a href="#hide-the-details" id="markdown-toc-hide-the-details">Hide the details</a></li>
<li><a href="#promote-ux-best-practices" id="markdown-toc-promote-ux-best-practices">Promote UX best practices</a></li>
</ul>
</li>
<li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
</ul>
<h2 id="introduction">Introduction</h2>
<p>In 1975, at the <a href="https://worldradiohistory.com/Archive-Poptronics/70s/1975/Poptronics-1975-01.pdf">advent of the personal computing revolution</a>, to be a computer user effectively meant that you had to be a software developer. That was okay in the beginning, as all technologies begin this way. Needless to say we’ve come a long way since then. Billions of people now carry supercomputers in their pockets that require no special expertise to use, and many of our daily activities involve using computers without our even realizing.</p>
<p>If you ask me, in terms of the technology lifecycle, blockchain today is about where personal computing was in the mid to late seventies. It’s proven that it is useful and it holds great potential, but it’s still notoriously hard to use. Until recently, this was due mostly to limitations in the base layer: even the best UX can’t make up for severely limited transaction throughput! To put this in terms of personal computing, no application, no matter how fancy, could make up for the need to swap multiple floppy disks in and out in order to overcome the limitations on storage and memory of early personal computers.</p>
<p>However, the blockchain base layer has come a long way the past few years, and many of these initial, technical challenges have been overcome. Usability lags somewhere behind. While the blockchain space has no shortage of brilliant technical minds, in relative terms there has been a lack of focus on product and design. This has begun to change, and modern blockchain platforms and the tooling built on top of them have begun to incorporate many of the same design best practices that have permeated the Web2 world.</p>
<p>A few years ago it was okay if a blockchain platform was not user friendly and had terrible tooling, and if building an application was next to impossible, because the few users of these platforms were technically sophisticated hobbyists with time on their hands. Until quite recently, it was common for even the largest blockchain teams not to have any designers. This is no longer the case. Modern blockchain platforms now need to prioritize usability if they want to stand a chance against competing Web2 and Web3 platforms.</p>
<p>How can a blockchain platform prioritize usability? Here are some ideas to consider now to stay ahead of the game. As these ideas touch every layer of the stack, from the social layer (“Layer zero”) to the blockchain base layer (“Layer one”) up through the application layer (“Layer two”), we’ll examine each in turn.</p>
<p>Note that, while design in this context usually refers to <em>user experience (UX),</em> i.e., things that make it easier for a user to use a platform and the applications built on it, importantly, it also includes <em>developer experience,</em> in the sense that it should be as easy as possible for developers to get started building applications on a platform as well.</p>
<h2 id="layer-zero-the-social-layer">Layer zero: the social layer</h2>
<p>Blockchain technology may be very exciting but, at the end of the day, it needs to serve human needs and use cases. It also relies upon people to come together, form communities, and invest the time and energy to develop not only the base layer but multiple layers of tooling, infrastructure, and applications on top of the base layer. The platform must therefore be approachable and accessible to as many people as possible. The social layer is the true bottom layer of blockchain, because without a healthy community of contributors and users, it doesn’t matter what gets built on top. Usability begins with communicating clearly and concisely using design principles, design proposals, and documentation.</p>
<h3 id="recognize-that-brand-and-principles-matter">Recognize that brand and principles matter</h3>
<p>The best products, experiences, and brands don’t spring into existence by accident. They’re the product of a great deal of careful thinking, planning, and strategizing on the part of marketers, designers, engineers, executives, and other strategists. For top companies and their products, everything is connected and nothing is accidental. What you feel when you see an advertisement serves what you see on a landing page, which serves the experience you get when you download the app, which in turn serves the followup email you receive a few days later, which in turn serves your ongoing experience using an app or service. It’s all part of an intentional, holistic experience. It’s often referred to as the customer journey, the marketing funnel, or simply the “brand.”</p>
<p>Up to now these ideas have been relatively foreign to the blockchain space, but that comes at our detriment. There’s a reason that big, profitable companies spend heaps of money on branding and marketing: like them or not, they work. A user’s decision to try something unfamiliar, to download an app or subscribe to a service, is as much about the initial marketing touchpoints that led them to the product in the first place as it is about the product itself. This is doubly true for a technology as disruptive as blockchain that requires fundamental changes in consumer behavior!</p>
<p>If we want our platforms and the things built on them to feel approachable and familiar to everyday users, we need to give serious thought to how they are branded and marketed. This includes visual branding: logos, colors, typefaces, the visual design of apps, websites, emails, advertisements, and swag (such as the ubiquitous <a href="https://cryptowardrobe.com/collections/bitcoin-ethereum-crypto-t-shirts">crypto T-shirt</a>). But it also includes less obvious things such as copy, messaging, onboarding, and user experience. Jeff Bezos put it best when he said, “Your brand is what people say about you when you’re not in the room.” A brand is the whole bundle of thoughts and feelings that people associate with your organization, platform, product, service, and community.</p>
<p>Branding and marketing are easiest when your product or service speaks for itself: in other words, when you create clear value and have a clear, honest message to deliver. In this respect, blockchain and Web3 have an advantage over incumbents because our message—one of <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">privacy, responsibility, and self-sovereignty</a>—is apropos, modern, and refreshingly honest.</p>
<p>A good starting point is to create a set of design principles. In addition to the sort of visual design guidelines described above—logos, colors, typefaces, etc.—this should include high-level user experience design goals that outline how you’ll make decisions and approach tradeoffs in the design process. For inspiration, see Blockstack’s <a href="https://youtu.be/LbIavBeq5BE">Can’t Be Evil engineering principles</a>, <a href="http://bit.ly/datafesto">The New Tech Manifesto</a>, <a href="https://urbit.org/blog/simple-durable-yours/">Simple, Durable, Yours</a>, and the <a href="https://forum.etherean.org/t/a-web3-bill-of-rights/210?u=lane">Web3 Bill of Rights</a>. The principles laid out by each of these have big implications for usability. For instance, if you prioritize convenience and trust, you may want to manage a new user’s private keys for them, at least for a time. If you instead prioritize safety and self-sovereignty, you’ll need a different approach, one that likely involves educating the user to take more responsibility. By the same token, prioritizing simplicity means rethinking a lot of what we’ve come to expect from a modern computing experience: clutter, notifications, customizability, etc.</p>
<h3 id="invest-in-good-documentation">Invest in good documentation</h3>
<p>All software requires documentation. While in theory simple, elegant, well-designed software should be intuitive and easy to use, and therefore may not require as much documentation, in practice documentation is essential even for well-designed software and should really be thought of as a product itself. Some classes of users tend to rely on documentation and will be discouraged if it doesn’t exist or is poorly written. Some use cases, such as an API or SDK, require developer-friendly documentation to be useful. Its complex, novel nature means that documentation is even more important for a blockchain platform than it is for other types of software.</p>
<p>Every aspect of joining and contributing to the platform should be well documented: downloading, compiling, and running a full node, participating in mining/validating, contributing to infrastructure, tooling, and core development, building applications, and using tooling and applications. The people best positioned to write documentation are often the developers who build the platform and tooling, but many developers don’t enjoy writing and maintaining documentation. Establishing good practices to write and maintain good documentation is beyond the scope of this article, but there are <a href="https://www.writethedocs.org/guide/writing/beginners-guide-to-docs/">ample resources</a> available on this topic. A good starting point is to require that documentation be written or updated to correspond to every code change, and not allowing any code to be committed without the corresponding documentation.</p>
<p>Good documentation can be difficult and expensive to create and maintain, but it’s worth the cost. In addition to relying on developers as the primary authors and maintainers, consider hiring someone whose full time job it is to write and maintain documentation. You may also consider letting community members write and maintain documentation in exchange for grants or bounties.</p>
<p>To see what’s possible with good documentation, see the <a href="https://stripe.com/docs/api">Stripe API docs</a>, which are generally regarded as being among the best in the tech industry.</p>
<h3 id="hire-a-designer">Hire a designer</h3>
<p>Developers can and often do get software from zero to one, i.e., from concept to a workable prototype. However, if you want your software to be usable and approachable, especially to non-technical users, you’ll need to enlist the help of a professional designer.</p>
<p>In spite of this truism, it’s remarkable how many large, well-funded blockchain platforms have few or no designers on the core team. Getting designers involved early in the core design and development process can help avoid pitfalls and result in a much more user-friendly platform. Usability has a surprising number of implications on the design of even the base layer (layer one). As just one example, the fact that Ethereum requires that gas be paid using ETH, and that the transaction processing capacity of the network cannot be scaled up or down, has serious implications on the UX of any application built on the platform. All users of layer two applications must already hold ETH even if those applications use a different token, and the amount they need is unpredictable and varies depending on network load. This is counterintuitive to many users since the status of the overall Ethereum network may have no obvious, direct connection to the application the user is interacting with.</p>
<p>Note that there are many different kinds of design, and you should carefully hire a designer or agency on the basis of your needs and their skills. The two most critical types of design for most digital products are visual design and user experience (UX) design. It’s rare to find a designer that is well-versed and skilled in both, so it’s safest to hire for these separately.</p>
<h3 id="take-a-product-approach">Take a product approach</h3>
<p>There are many different ways to design and build software. The most straightforward way is to just build whatever solves your own problem. This is what most blockchain teams do, and until recently, it sort of made sense because blockchain had very few users and very few use cases.</p>
<p>Successful Web2 companies approach the software they build as a product. Rather than building what the internal team thinks is best, they spend a lot of time and energy on customer discovery, affectionately known in Silicon Valley culture as “get out of the building.” This process can take many forms, but at its simplest, it means explicitly stating the assumptions that you’re making and building into the platform, systematically testing those assumptions by putting your design and product in front of users as much as possible, and, when in doubt, deferring to the user’s needs over your own preferences and inclinations. In other words: listen to your user and observe their actions. This process often involves <a href="https://designthinking.ideo.com/">design thinking</a>, <a href="https://www.futurefounders.com/news-article/what-is-customer-discovery-4-step-guide-to-building-the-right-product-for-the-right-customers/">customer discovery</a> interviews, usability testing, and focus groups. It’s especially important that the process include non-developers (unless of course your product is designed specifically for developers).</p>
<p>The product approach also has implications on the way you think about and communicate about your software. As a concrete example, most blockchain teams tend to communicate primarily or exclusively using GitHub. There’s a “README” and/or a “CONTRIBUTING” file in the main repository that (hopefully) explains how to download, use, and contribute to the software. The software probably only runs on the command line, and may be tricky to configure and run. Development platforms such as Linux and macOS are typically supported, while Windows is often only partially supported, or not supported at all.</p>
<p>By contrast, a product mindset dictates that you put yourself in the shoes of the user, consider the onboarding experience, and make things as easy as possible. Rather than writing documentation on GitHub in markdown format, which is friendly to developers, you’ll want a landing page with documentation that’s accessible to all users. You’ll want a UI that’s as easy as possible to set up and install. You’ll very likely want Windows support, since many potential users run Windows. You may want to brand and market your software less as a command line utility and more as an app that anyone can download and use. You may want a blog and/or a Twitter channel to make release announcements, etc.. These straightforward steps will go a long way towards making your software, platform, and organization approachable and accessible to as many people as possible.</p>
<h2 id="layer-one-the-base-layer">Layer one: the base layer</h2>
<p>With these basic social building blocks in place, we can turn to the base layer infrastructure. In the case of blockchain, this typically includes the full node software itself, all of its subcomponents (database, P2P networking, virtual machine, consensus, etc.), the protocol, and certain low-level tooling. While many blockchain developers tend to regard the base layer as abstracted away “under the hood,” inscrutable, and thus exclusively within the purview of engineers (as opposed to designers), in fact there are myriad design decisions that need to be made at this layer that have big implications for the usability of the entire platform and applications running on it. Given how difficult it can be to change the base layer, to ignore this fact is to condemn a platform to usability headaches down the road.</p>
<h3 id="ensure-the-software-is-easy-to-run">Ensure the software is easy to run</h3>
<p>As described above, good documentation can go a long way towards making your software accessible and approachable, but the software itself should also be packaged and released in such a way that even non-developers can easily download and run it. It should not have outrageous resource requirements: it should run well on consumer-grade hardware without making the system unusable. If you only want a small number of professionals to run nodes, then this probably doesn’t matter, but if <a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">decentralization</a> matters to you, then your software must be extremely easy to download, install, run, maintain, and upgrade.</p>
<p>Sadly, this is still not true for most blockchain platforms. I ran an Ethereum full node on my consumer-grade laptop for a long time, but I gave up last year when it began to consume too much disk space.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup> I try running nodes for many platforms, both in order to learn and to support these projects, but nine times out of ten, I give up after a few hours when I run into undocumented errors, or when the burden of keeping the node running becomes too great.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">2</a></sup></p>
<p>Ideally, running a full node should be as easy as downloading an app and running it on your own device. It should only take a few minutes to set up. It should not require a cloud VM, professional skills, or a huge investment of time and money.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">3</a></sup></p>
<p>Why does this matter so much? In addition to the fact that more nodes means more decentralization and more network security, there’s also a social reason that is even more important.</p>
<p>The hidden strength of platforms like Bitcoin and Ethereum, and a big reason each has been so successful, is accessibility: how easy it is (or, at least, used to be) to run a full node and to become a fully-fledged peer, a first class citizen of the network. In fact, the first blockchain platform to achieve mainstream adoption will likely be the first one that makes it possible to run a node anywhere: on your laptop, mobile phone, VR headset, toaster oven, and automobile. People everywhere are fed up with the unfairness and inequity of the social, political, and economic world order, and one of the most attractive things about blockchain, and one of the ways in which it is the most meaningfully different from the existing order, is the opportunity it gives people to <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">transact as peers</a> without requiring trusted intermediaries such as banks and lawyers. In order to be accessible, a blockchain needs software that’s easy to install, run, and use.</p>
<h3 id="make-onboarding-easy">Make onboarding easy</h3>
<p>Software that’s well documented, marketed, and easy to install and run are great first steps towards base layer usability. However, there may still be other obstacles to joining the network and community.</p>
<p>One such obstacle many users encounter trying to join a network is the chicken-and-egg problem of needing tokens before they can transact. How does a user get their first tokens? Directing users to buy them on an exchange is not a great answer. This generally requires identification (for KYC/AML purposes) and a bank account or a credit card, and it can take a few days for the account to be approved.<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">4</a></sup> What’s more, some users in some jurisdictions may not be able to complete this process at all for various reasons.</p>
<p>Application developers may be tempted to hand users their first few tokens, or make them available through a <a href="https://blocksdecoded.com/what-is-bitcoin-faucet/">faucet</a> as a workaround, but this is not without some challenges as well. For one thing, on many networks, including Ethereum, fees can only be paid in the base currency (ether, in the case of Ethereum), so handing a user an application token alone does not help. For another, without a <a href="https://en.wikipedia.org/wiki/Sybil_attack">Sybil resistance</a> mechanism, a single adversary can drain a faucet and prevent others from using it.</p>
<p>There are a number of creative approaches to work around this friction. Some Ethereum applications now support <a href="https://docs.openzeppelin.com/learn/sending-gasless-transactions">gasless transactions</a>, where someone else pays the fee for a new user’s first few transactions. Why would someone else want to pay the cost of onboarding a new user? Application developers may be able to factor this in to the cost of acquiring a user. However, this solution has become more expensive as Ethereum network congestion has increased.</p>
<p>Another approach is to allow a user to begin interacting with your application, and to create value for them, before requiring them to obtain tokens. Some of the most well-designed applications actually allow users to earn their first tokens (rather than having to buy them). While <a href="https://decentraland.org/">Decentraland</a> requires that you have an Ethereum account to login, it does not actually require that you make any transactions or have any tokens unless and until you decide to visit its <a href="https://market.decentraland.org/">marketplace</a>. <a href="https://beta.cent.co/">Cent</a> does not require tokens to sign up, and lets you earn tokens by posting content. <a href="https://publishers.basicattentiontoken.org/">Brave Rewards</a> works similarly.</p>
<p>The base layer can make onboarding easier by allowing fees to be paid in multiple tokens (although this is not without <a href="https://docs.ethhub.io/questions-about-ethereum/is-ether-needed-for-transaction-fees/">complexity</a>). It can also facilitate layer two solutions like gasless transactions (see next section). Even better, it should be possible for a user to permissionlessly mine their first token <a href="https://spacemesh.io/faq/#lowbarriertoentry">using existing hardware</a>.</p>
<h3 id="facilitate-layer-two">Facilitate layer two</h3>
<p>Running things on the main chain will always come at a premium, both in terms of time and cost, which inevitably has a cost in terms of usability. So one great way to improve usability is to keep as many things off the main chain as possible.</p>
<p>One common approach is sharding: i.e., dividing the blockchain into many smaller logical chains, known as “shards.” Each shard chain can host a cluster of related applications, or, in the extreme case, a single popular application. Polkadot, for instance, is designed to host many application-specific shard chains known as <a href="https://wiki.polkadot.network/docs/en/learn-parachains">parachains</a>. Some protocols allow individual chains to set their own policies with respect to fees, security, and finality.</p>
<p>Another approach involves layer two solutions that are not themselves fully-fledged, highly secure base layer blockchains, such as <a href="https://ethereum.stackexchange.com/questions/379/what-is-a-sidechain">sidechains</a> and <a href="https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/">state channels</a>. The base layer can facilitate these solutions by including certain VM opcodes. As one concrete example, Ethereum’s <a href="https://ethgasstation.info/blog/what-is-create2/">CREATE2 opcode</a>, introduced last year, significantly reduced the cost of opening state channels.</p>
<p>To a large extent, the ability to do interesting things off-chain and at layer two relies upon the existence of robust layer two tooling (on which more in <a href="#layer-two-the-application-layer">the next section</a>).</p>
<h3 id="mobile-support">Mobile support</h3>
<p>Little to no blockchain software today is mobile friendly. The implicit assumption seems to be that most users of blockchain prefer to use a desktop or laptop, and that most Web3 applications work just fine on desktops and laptops. In this respect, blockchain applications contradict the <a href="https://www.ben-evans.com/benedictevans/2019/5/28/the-end-of-mobile">global trend</a> towards mobile, mobile-first, and mobile-only.</p>
<p>This is partly explained by real technical limitations. Blockchain is resource intensive and it’s nearly impossible to run a full node for any major blockchain on a mobile device with constrained resources.<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote">5</a></sup> However, there are things that can be done at the base layer to make things easier for mobile.</p>
<p>One is to make full node software as lightweight as possible. In most existing blockchain platforms, node software is all-or-nothing: you either run a full node or you run nothing (and outsource trust entirely to those that do run nodes). In fact, participating in a blockchain, and in the consensus formation process, is not black and white. There could and should be many shades of gray. The concept of a light client is as old as Bitcoin, but the options for running a light client on mobile are <a href="https://bitcoinmagazine.com/articles/nayuta-launches-hybrid-full-node-spv-mobile-bitcoin-wallet">severely</a> <a href="https://walleth.org/">limited</a> even for the most popular blockchains. It would be interesting to see full node software that would run full-throttle on the most powerful systems, but would degrade gracefully to enable it to run on more resource-constrained devices such as mobile phones. Similarly, node software should consume more resources when they are available—such as using more bandwidth when a phone is connected to wifi, and more energy while it’s charging—and switch into a “power nap” mode when they’re not.</p>
<p>Of course, mobile support doesn’t stop at the base layer. It is arguably even more important that it be as easy as possible to run layer two applications on mobile (on which more in <a href="#layer-two-the-application-layer">the next section</a>).</p>
<h3 id="make-transactions-faster">Make transactions faster</h3>
<p>In every blockchain, there is a fundamental tradeoff between, on the one hand, time to finality (how long it takes a newly-mined transaction to become a canonical, irreversible part of the chain) and security and decentralization on the other. Other things being equal, a lower block time is of course better from a UX perspective, since it means that application responsiveness will be faster and users won’t sit around waiting as long for transactions to be confirmed. However, if the time between each block becomes too short, more miners will start to produce so-called “uncle” blocks that never make it onto the chain, which reduces security. A smaller number of block producers can produce and exchange blocks more quickly, but having a small number of block producers is less decentralized, less secure, and less censorship resistant. Eos, for instance, has a subsecond block time, but only 21 sanctioned block producers at any given time, leading to criticisms of a <a href="https://www.coindesk.com/everyones-worst-fears-about-eos-are-proving-true">lack of decentralization</a> and <a href="https://news.bitcoin.com/report-censorship-prone-eos-needs-to-re-architect-its-infrastructure/">censorship resistance</a>.</p>
<p>Each blockchain community will have to do its own research, parameterization, and simulation to choose a block time that isn’t so fast as to sacrifice too much security, but isn’t so slow as to make applications unusable and frustrate users.</p>
<p>Of course, while block time is a crucial factor, user experience at the application layer depends on a lot more than block time. There are other tricks that can be used to improve user experience. Keeping most transactions off the main chain is one of them. (More on this, too, in <a href="#layer-two-the-application-layer">the next section</a>).</p>
<h3 id="make-key-management-easy">Make key management easy</h3>
<p>As discussed previously in this series, <a href="https://www.etherean.org/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html#encourage-good-account-hygiene">good account hygiene</a> means encouraging users to escape the “one keypair per account” mindset, and making it easy for them to do so. Encouraging users to use a different account for each application is a step in the right direction and improves privacy, but it means the user needs to maintain funds across many accounts, which can be tricky.</p>
<p>Another approach, pioneered in Ethereum and supported by new platforms such as NEAR Protocol, is to eschew keypair-based accounts in favor of smart contract-based accounts, allowing many keypairs to be associated with a single account. This has numerous benefits: a user can have a backup account key that’s stored securely, and keys can be created per-application with various degrees of permission (similar to the familiar Web2 <a href="https://en.wikipedia.org/wiki/OAuth">OAuth flow</a>). It also enables <a href="https://medium.com/nearprotocol/on-usability-of-blockchain-applications-398963798ab3">progressive security</a>: an account can start out inside a <a href="https://wallet.nearprotocol.com/create/">hosted wallet</a> and, later on, the user can take more control, or full control, over the account by updating the keypairs that have access to it.</p>
<p>This can be achieved at layer two—witness the pioneering use of <a href="https://medium.com/universal-ethereum/universal-logins-first-demo-1dc8b17a8de7">Universal Logins</a> in Ethereum—but it may be cheaper and easier if support is enabled at the base layer, <a href="https://docs.near.org/docs/concepts/account#access-keys">as in NEAR protocol</a>.</p>
<h2 id="layer-two-the-application-layer">Layer two: the application layer</h2>
<p>Most of the investment in improving blockchain technology over the past few years has flowed into layer one. This is understandable, since blockchain still faces major hurdles at the base layer including scalability, <a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">decentralization</a>, and <a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">governance</a>. However, as mentioned above, enough progress has been made in overcoming these hurdles at the base layer that the burden of improving usability has begun to shift towards the application layer. The rapid, enormous increase in usability of Web2 applications over the past decade should give us hope that, as blockchain base layer infrastructure continues to mature, we can adopt many of the best practices of Web2, combined with fresh thinking to address challenges unique to Web3, to ensure that Web3 applications are as easy and pleasant to use as their predecessors.</p>
<h3 id="balance-usability-and-decentralization">Balance usability and decentralization</h3>
<p>It can often feel as if it’s impossible to achieve both usability and decentralization. This is one of the biggest dilemmas facing teams that want to build real world applications on blockchains today. On the one hand, what’s the point of building a decentralized, blockchain-based application, if that application won’t be usable by, or accessible to, anyone but the most tech savvy blockchain insiders? On the other hand, what’s the point of building an application on blockchain in the first place if that application is run in a highly centralized fashion and doesn’t make use of unique features of blockchain like censorship resistance?</p>
<p>This dilemma manifests in various ways. The most straightforward example is that loading and interacting with applications running on decentralized platforms can be frustratingly slow. The centralized applications that we’re used to interacting with have been highly tuned and an enormous amount of money, design, and engineering has gone into making them as fast, responsive, and reliable as possible. Few users will have the patience to interact with applications that are slow to load or have slow response times.</p>
<p>Governance is another good example. While decentralized governance is exciting and has great potential, it also introduces a host of challenges. In a centralized Web2 application, fixing bugs or upgrading the software is relatively straightforward, and it’s not uncommon for popular, centralized applications to release updates as often as daily. By contrast, for an application such as a smart contract that’s governed in a decentralized fashion, even a routine upgrade or bugfix becomes a complicated coordination problem. How do you communicate to users about the upgrade? How do they know to trust you? How does everyone switch to a new application at the same time?</p>
<p>A third example is key management. Web3 encourages responsibility, self-sufficiency, and self sovereignty over data and assets including identity and cryptographic tokens. However, most users today expect to be able to ask a trusted third party—their bank, the phone company, or Facebook—to reset their password, or fix problems for them. How do we train users to understand that if they manage their own keys, there is no one who can fix things for them when they break?</p>
<p>In reality, decentralization is not black and white. It’s a sliding scale. Different projects will choose different points on the spectrum, and, even more importantly, the best-designed projects will allow users to gradually accept more sovereignty along with the responsibility that comes with it. One promising, novel approach is <a href="https://a16z.com/2020/01/09/progressive-decentralization-crypto-product-management/">progressive decentralization</a>: in the beginning your product or platform can look and feel more like a traditional, centralized application, but over time, as it develops product market fit and as the community grows, more and more control can be ceded to the community. Projects such as <a href="https://medium.com/compound-finance/expanding-compound-governance-ce13fcd4fe36">Compound</a> are proving that this model works.</p>
<h3 id="invest-in-good-tooling">Invest in good tooling</h3>
<p>Good tooling can make a world of difference in usability. It can hide the complexity of the base layer, make a platform more accessible and approachable to a broader set of users and developers, and foster a rich community and ecosystem of applications and use cases. In the case of blockchain, the simplest example is the “login screen” a user first sees: generally a wallet application such as Metamask. User friendly wallet software can make onboarding much easier and prevent users from abandoning a project out of frustration before fully onboarding.</p>
<p>Tooling also has an enormous impact upon the lives of developers. Compilers, debuggers, version control, and orchestration tools can save programmers many hours and make them more effective. The best tools make developing software for a given platform a joyful experience. This is especially true in the Web3 space, where applications are typically harder to debug and build, harder to deploy, and harder to monitor and maintain than other types of applications. Contrast, for instance, the experience of developing an application using Apple’s integrated Xcode development environment, where a developer can run, debug, and profile an application in a sandbox with one click, to the experience of developing a smart contract application where no such mature, integrated tooling exists. Blockchain developer tooling has improved by leaps and bounds over the past few years, but it still has a way to go before it can approach the experience that most professional developers are used to. There are some technical aspects of blockchain that naturally make development harder, such as virtual machines and the distributed nature of the system, but most of these can be abstracted away with mature tooling.</p>
<p>Developing good tooling isn’t cheap, but it’s a worthwhile investment and can make the difference between a project remaining fringe and successfully appealing to the mainstream, both users and developers.</p>
<h3 id="hide-the-details">Hide the details</h3>
<div style="display: flex; align-items: center; justify-content: center;">
<img src="/assets/metamask1.png" alt="Basic send transactions screen in Metamask" style="max-width: 45%; margin: 5px" />
<img src="/assets/metamask2.png" alt="Advanced transaction settings in Metamask" style="max-width: 45%; margin: 5px" />
</div>
<p style="text-align: center"><sub>Metamask, one of the most popular Ethereum wallets, does a great job of hiding the details: by default it picks a reasonable gas price for you, but you can also customize the gas price when sending a new transaction. Would that gas were always this cheap! (<a href="https://metamask.zendesk.com/hc/en-us/articles/360015488771-How-to-Adjust-Gas-Price-and-Gas-Limit-">Image source</a>)</sub></p>
<p>Blockchain is a complex technology, and one reason that it has failed to achieve mainstream appeal is the way in which that complexity surfaces very quickly during onboarding, when making even basic transactions, and when building and interacting with applications.</p>
<p>However, many of the technologies that modern consumers interact with on a daily basis, from mobile phones to automobiles to airplanes to satellites, are as if not more complex than blockchain. The difference is that these more mature technologies do a better job of hiding complexity from the user. The driver of a modern automobile doesn’t need to know anything about torque, engine size, or catalytic conversion. Similarly, someone using GPS technology doesn’t need to know anything about modulation, multilateration, or orbital inclination. Why should a user of blockchain technology need to understand gas, probabilistic finality, or elliptic curve cryptography?</p>
<p>Well-designed applications and tooling can go a long way towards hiding complexity. Wallet software should make reasonable, default choices about things like fees and time to finality. Applications should be designed so that they automatically select a reasonable set of defaults and “just work” out of the box for most users and most use cases, with an “advanced mode” that allows sophisticated users to fine tune things like fees. This is like using GPS software that makes navigation easy, but allows the user to manually select a set of satellites to track, a feature that most users will never use nor even need be aware of.</p>
<h3 id="promote-ux-best-practices">Promote UX best practices</h3>
<p>Blockchain projects and communities seem to have a penchant for blank slatism, i.e., for rejecting outright many of the principles, ideas, and practices of the Web2 world. This is understandable since <a href="/blockchain/web3/software/2020/08/04/faster-horses-better-software.html">the Web is broken in some important ways</a>. However, there is a lot that we can learn from the Web, broken as it is. It’s important that we not throw the usability baby out with the Web2 bathwater, so to speak! Many smart designers and developers have been iterating on design and UX best practices for a very long time, and it doesn’t make sense to ignore these established principles entirely.</p>
<p>There are several reasons for this. The most obvious is the need to reduce friction, make it as easy as possible for new users to onboard, and shrink the <a href="https://baremetrics.com/academy/time-to-value-ttv">time to value</a> between when a user signs up and when they first experience a “this is amazing!” moment. A second but no less important reason is to give users an experience that feels familiar. Many mainstream users have invested a lot of time and energy in getting familiar with the well-designed, mature tools that they use today and they are not keen to relearn all the basics. This is doubly true for tools that are slower, clumsier, and less user-friendly than the ones they’re used to. A third reason is that good design provably <em>works</em>—not only to make life easier for your users, but to increase conversion rates and user stickiness.</p>
<p>The list of usability best practices from Web2 is too long to cover here, but some low hanging fruit that can make a big difference for Web3 applications today include auto-generating accounts and storing them in browser storage (rather than requiring a wallet application such as Metamask—see <a href="#make-key-management-easy">note above</a> about hosted wallets and progressive security), displaying readable names wherever possible rather than the long hexadecimal numbers that are commonly used to display account addresses, and promoting mobile first. As much as possible, make it possible for users and developers to continue using the tools, applications, and frameworks they’re already familiar with. For a treasure trove of other good ideas, see the excellent <a href="https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1">Web3 Design Principles</a>.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Many blockchain projects and applications have chosen to track vanity metrics such as funds raised or tokens traded rather than more meaningful metrics such as useful applications built or lives touched. Rather than prioritizing the number of unique, active users, standard practice for mainstream Web applications—a metric which <a href="https://www.stateofthedapps.com/rankings/platform/ethereum?sort=dau&order=desc">remains tiny</a> for even the most popular blockchain applications—the overwhelming mindset in blockchain communities has been, “If you build it, they will come.” If the past few years have shown us anything, it’s that this attitude is unhelpful, unrealistic, and hubristic: a lot of seemingly exciting things have been built, but <em>the users still have not come</em>. No one signs up for a platform for the underlying technology. They sign up for applications that solve problems and <a href="https://hbr.org/2016/09/know-your-customers-jobs-to-be-done">do useful jobs</a>. The infrastructure must serve the application, not the other way around.</p>
<p>It’s easy to dismiss these failures when you really feel like you’re changing the world. It’s easy to rationalize and convince yourself that mainstream users may not get blockchain <em>yet,</em> but eventually they <em>will.</em> After all, blockchain is a zero-to-one technology: it makes possible things that simply were not possible before.</p>
<p>All of that may be true. And maybe it’s okay that most existing blockchain platforms and applications are difficult to use for all but the most sophisticated, tech savvy users. Most technologies start this way, after all. But blockchain and the things built on it only stand a chance of having mass appeal if and when design improves, and blockchain applications begin to resemble applications that users are already familiar with.</p>
<p>The base infrastructure of blockchain is finally mature enough to build truly user friendly applications. Now is a great time to invest in better design. Your users will thank you!</p>
<h2 id="notes">Notes</h2>
<hr />
<p></p>
<p><a name="nav-links"></a></p>
<p>This article is part of a multi-part series on the key ingredients to a better blockchain. Check out the other articles in the series:</p>
<ul>
<li><a href="/blockchain/2019/09/09/key-ingredients-better-blockchain-part-i-tech-and-protocol.html">Part I: Tech and protocol</a></li>
<li><a href="/blockchain/2019/09/15/key-ingredients-better-blockchain-part-ii-decentralization.html">Part II: Decentralization</a></li>
<li><a href="/blockchain/community/2019/09/19/key-ingredients-better-blockchain-part-iii-community.html">Part III: Community</a></li>
<li><a href="/blockchain/community/governance/2019/11/18/key-ingredients-better-blockchain-part-iv-constitution.html">Part IV: Constitution</a></li>
<li><a href="/blockchain/governance/2020/01/06/key-ingredients-better-blockchain-part-v-governance.html">Part V: Governance</a></li>
<li><a href="/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html">Part VI: Privacy</a></li>
<li><a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">Part VII: Economics</a></li>
<li><a href="/blockchain/design/ux/2020/10/17/key-ingredients-better-blockchain-part-viii-usability.html">Part VIII: Usability</a></li>
<li><a href="/blockchain/governance/community/2020/11/15/key-ingredients-better-blockchain-part-ix-production-readiness.html">Part IX: Production Readiness</a></li>
<li><a href="/blockchain/economics/governance/2020/12/21/key-ingredients-better-blockchain-part-x-sustainability.html">Part X: Sustainability</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>I was running on a Macbook Pro with a 1TB internal SSD. I gave up when the required space exceeded around 300gb, because this didn’t leave me with enough space to do other things. Since then the required space to run a full node has grown to <a href="https://etherscan.io/chartsync/chaindefault">over 500gb</a>. It <a href="https://geth.ethereum.org/docs/faq">requires a SSD</a>, and can no longer be run on a HDD. It now also takes several weeks to fully sync a new node from scratch, and if your system can’t keep up or you lose your Internet connection, you may never catch up. Here’s a humorous and detailed thread on <a href="https://twitter.com/ercwl/status/1159940020331040770?s=20">a recent attempt</a>. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>And I do this professionally, and have access to powerful infrastructure. If I struggle this much to run a full node, I can only imagine how less experienced, less motivated users might struggle to do so. For a good example of the steps required to run a validator on a production network, check out <a href="https://docs.celo.org/getting-started/mainnet/running-a-validator-in-mainnet">these docs</a> from Celo. I tried to run a validator, and eventually gave up. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>Incidentally, this is our goal at Spacemesh. It only takes a few minutes to download an app and <a href="https://testnet.spacemesh.io/#/">join the testnet</a>. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p><a href="https://youtu.be/eaSZg5nR-N4">This video</a> does a great job of parodying what the onboarding experience feels like. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>This includes battery, compute, and memory, but for blockchain the biggest limiting factors are storage and bandwidth. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigEthereum is a Casino2020-10-04T19:58:00+00:002020-10-04T19:58:00+00:00https://www.etherean.org/blockchain/defi/ethereum/2020/10/04/ethereum-is-a-casino<p><img src="/assets/carl-raw-fzJPPfBhZ38-unsplash.jpg" alt="A man plays slot machines" /></p>
<p style="text-align: center"><sub>A recent explosion of DeFi applications has caused gas prices to soar and made Ethereum all but unusable for anything else. As a result, the network feels more and more like a casino. Remember: at a casino, the house always wins. (Photo by <a href="https://unsplash.com/@carltraw?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Carl Raw</a> on Unsplash.)</sub></p>
<h1 id="the-rise-of-defi">The Rise of DeFi</h1>
<p>I remember clearly when, a year or two ago, the Ethereum community collectively made fun of the fact that most applications built on the nascent Eos and Tron platforms were <a href="https://thenextweb.com/hardfork/2019/03/29/eos-and-trons-most-used-dapps-are-either-gambling-or-high-risk/">gambling applications</a>. By contrast, we took great pride in the “real” things being built on Ethereum, from DAOs to stable coins to <a href="https://spacechain.com/">satellites</a>, <a href="https://www.coindesk.com/blockchain-studio-consensys-acquires-asteroid-mining-space-startup">asteroid mining</a>, and <a href="https://spacedecentral.net/">space exploration</a>. There was an understandable tendency not to take the other platforms seriously because they lacked serious, mature use cases.</p>
<p>Fast forward a couple of years and Ethereum, too, has become a casino, albeit one by a different name: DeFi. Short for Decentralized Finance, DeFi refers to financial applications, from stable coins to exchanges to lending platforms, that are built on smart contracts. As of today, 24 of the top 25 Ethereum dapps are DeFi applications.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup> These applications have <a href="https://insights.glassnode.com/defi-spike-ethereum-gas-price/">driven an explosion</a> in <a href="https://etherscan.io/chart/tx">transaction volume</a> and <a href="https://etherscan.io/chart/gasprice">average gas prices</a> over the past few weeks, making it difficult, slow, and expensive to use the network.</p>
<p>While these applications may someday evolve into more mature, sustainable products and platforms, at the moment nearly all of them feel like gambling. Tokens with no intrinsic value, many without <a href="/blockchain/economics/2020/09/02/key-ingredients-better-blockchain-part-vii-economics.html">sound economic design</a>, are suddenly issued out of nowhere, explode in value overnight, then collapse just as quickly.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">2</a></sup> Those who have a lot of chips on the table, are well-connected, in the know, or just lucky, can make huge sums of money in this market, but there is someone less fortunate on the other side of each of these zero-sum trades. To describe the situation charitably, it’s distasteful and unsustainable.</p>
<p>How did this happen? In retrospect it’s both obvious and predictable. While its advocates make noise about a lot of other potential use cases, blockchain is really, fundamentally only good at <a href="/blockchain/web3/software/2020/07/25/whats-it-good-for.html">asserting ownership of digital assets</a>—and low throughput and high transaction cost means that it’s only really well suited to transactions of high value assets, at that. Billions of dollars of VC money have flowed into blockchain over <a href="https://www.coindesk.com/vc-deals-in-crypto-remain-steady-while-volume-drops-in-2019-report">the past few years</a>. What’s more, finance applications like exchanges and lending platforms are among the only blockchain applications that have a stable and growing user base. Their business models, which allow quick revenue generation and return on investment, are relatively easy for investors to understand. Pioneers like Maker, Compound, and Uniswap laid a lot of the groundwork, from developing tools and standards to educating users and investors.</p>
<p>Finally, there’s the <a href="https://qz.com/1284178/almost-half-of-cryptocurrency-and-bitcoin-bros-identify-as-libertarian/">libertarian bent</a> among many in the Ethereum community, inherited from Bitcoiners and from <a href="https://www.americanscientist.org/article/cypherpunks-write-code">the cypherpunks</a> before them. There’s an admirable desire for Ethereum to be a “big tent” and to act as a neutral, unopinionated platform for all sorts of innovative applications. Unfortunately, this <a href="/blockchain/culture/values/2020/08/09/crypto-has-a-purpose-problem.html">lack of a guiding set of principles or values</a> means that, rather than thinking big and investing in the sort of projects that will create real social value over the long term, the community tends to fund and back low hanging fruit: get-rich-quick schemes (e.g., <a href="https://powh.io/">PoWH</a>), clones of existing projects (e.g., <a href="https://coinmetrics.io/the-defi-fee-explosion-how-yams-collapse-drove-ethereum-fees-to-new-heights/">Yam</a>, <a href="https://www.coindesk.com/sushiswap-block-rewards">SushiSwap</a>), and projects that serve those who are already wealthy, well-connected crypto-insiders (e.g., well, pretty much all of DeFi). These projects have little appeal to mainstream users and are more likely to recycle funds already invested in crypto than to attract outside capital, attention, or interest. The Ethereum community is okay with this because one of its biggest taboos is censorship, and to favor one class of application over another is perceived as censorship.</p>
<p>Even the most influential, well-connected members of the community have gotten involved in the DeFi game. I’ve heard several brag about how much money they’ve already made.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">3</a></sup> In the best case, DeFi may just temporarily distract everyone and make the network more crowded and more expensive. In the worst case, it may be a slow, pernicious form of capture, as influencers themselves benefit from DeFi and, intentionally or unintentionally, act to support it, thus implicitly making it harder to do other things on Ethereum.</p>
<p>The result is a self-fulfilling prophecy. The more we build things for ourselves, the less we try to build things that make sense to other people. As DeFi applications have proliferated, the network has gotten busier and gas has become more expensive. As gas has become more expensive, non-DeFi applications have begun to <a href="https://medium.com/universal-ethereum/out-of-gas-were-shutting-down-unilogin-3b544838df1a">shut down</a> due to high costs. Others have begun to <a href="https://www.coindesk.com/ethereum-gas-fees-drive-gnosis-powered-prediction-market-to-xdais-layer-2">migrate onto side chains</a> or <a href="https://blog.keep.network/tbtc-enables-safe-access-to-celo-extending-opportunities-for-btc-holders-1fd06385e466">other networks entirely</a>. High-value DeFi transactions have rapidly become the only type of transaction worth paying for, since it doesn’t make sense to pay $25 in gas fees to buy a Cryptokitty. Ethereum has become a DeFi network, and DeFi has become a game of whales, aptly described as a process of <a href="https://twitter.com/ameensol/status/1293077109347250176">gentrification</a>.</p>
<p>Even as a casino, we’re failing. A casino can’t survive or succeed by recycling capital among a small group of gamblers. It needs to successfully market itself, attract new participants, and grow capital inflow. DeFi applications, at least in their present form, aren’t up to this task.</p>
<h1 id="two-perspectives">Two Perspectives</h1>
<p>There is no easy way out of this predicament. Eth2 has been <a href="https://decrypt.co/41664/ethereum-2-0-on-track-for-november-launch-says-dev">making</a> <a href="https://eth2.news/">rapid</a> <a href="https://github.com/ethereum/eth2.0-pm/projects/1">progress</a>, but even in the best case scenario it’s still <a href="https://ethereum.org/en/eth2/#roadmap">years away</a> from being able to run the sort of applications that run on Ethereum today. The upgrade path for existing applications is unclear and will likely require major redesign to support new paradigms like sharding and rollups. While other, more scalable networks have already launched, network effects and lack of interoperability have so far kept most applications, developers, and users on Ethereum in spite of the costs.<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">4</a></sup></p>
<p>There are two ways to look at the situation. On the one hand, DeFi has led to a lot of innovation, especially in <a href="https://www.coindesk.com/why-defi-on-ethereum-is-like-algorithmic-trading-in-the-90s">finance</a>, cryptoeconomics and governance. Even if this isn’t the sort of innovation that directly impacts many people today, we will learn a lot and it might conceivably result in products and services for everyday people down the road. Financial primitives being developed today could find a place in useful products such as insurance, remittances, or micropayments in the future. <a href="https://cointelegraph.com/explained/uniswap-and-automated-market-makers-explained">Automated market makers</a>, <a href="https://cointelegraph.com/explained/defi-yield-farming-explained">yield farming</a>, and <a href="https://cointelegraph.com/news/compounds-comp-token-takes-defi-by-storm-now-has-to-hold-top-spot">governance tokens</a> are genuinely interesting building blocks that are likely here to stay, and they could be used to build more sophisticated financial products and services. There’s nothing inherently wrong with speculation or an initial bout of money-grabbing and this is a natural process that plays out with every new, disruptive technology.</p>
<p>On the other hand, it’s unclear how we get from where we are to where we need to be. When and how do the current crop of gambling apps evolve into legitimate products that generate real value for ordinary people? To be frank, I don’t see any DeFi projects today pursuing this sort of value creation and I’m not sure it’s even possible given existing barriers of adoption, usability, scalability, and governance. To me, the novel, exciting thing about blockchain is not its ability to make already-rich, advantaged people even richer and more advantaged, which is what is happening right now. Rather, it’s the possibility of empowering the unempowered, enfranchising the disenfranchised, and giving a voice to ordinary people everywhere. Which teams are building products and services that do this? And what do we still need to do to enable this sort of innovation?</p>
<h1 id="wrong-direction">Wrong Direction</h1>
<p>I left a career in traditional finance because, far from improving things for everyday people, I felt that it was exacerbating existing socio-economic problems. When I discovered blockchain, cryptocurrency, smart contracts, and Ethereum, I thought that they were different. I was awed by their potential to effect positive change in a world sorely needing it. When I joined the Ethereum community a few years ago, I had <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">a clear vision</a> for how it might change the world.</p>
<p>While I still believe blockchain has this potential, I no longer think that, as a community and as an industry, we’re heading in the direction of improving the world. Extrapolating based on present trends, neither Ethereum, nor cryptocurrency, nor blockchain is going to make a dent in the any of the long and growing list of existential crises that humanity faces today, from war to inequality, access to education, climate change, disinformation, toxic politics, and now pandemics.</p>
<p>It would be bad enough if the billions of dollars flowing into blockchain and cryptocurrency were simply wasted building things that don’t work, don’t scale, and/or don’t appeal to everyday users. In fact, the situation is far more precarious than this. The things being built on blockchain <em>are working,</em> but they’re working in precisely the wrong direction. My vision of a better world is not digital casinos where know-nothing retail investors, excited by the allure of cryptocurrency, get picked off by sophisticated investors at games they don’t even fully understand. This sounds way too similar to traditional finance! To date blockchain has mostly entrenched existing power structures on chain, enforced by the <a href="/blockchain/community/governance/2020/03/04/autonocrats-anthropocrats.html">cold, dispassionate logic of infallible smart contracts</a> and immutable ledgers. If this trend continues, the outcome is frightening.</p>
<h1 id="where-do-we-go-from-here">Where Do We Go From Here?</h1>
<p>A few years ago, I found this frustrating. Today I find it deeply troubling because blockchain has matured a lot as a technology and we’ve come a long way as a community, but we’ve still mostly failed to have a real-world impact outside of a few niche use cases. We’re running out of time to change this. Blockchain is of course not a panacea for the complex social, economic, and political challenges we’re facing, but neither is it destined to forever remain a digital casino for the already-wealthy, privileged, and well-connected. There are important things we can do today to turn things around and maximize the chance of having a wide scale, positive impact.</p>
<p>The first thing we must do is to boldly engage with and learn from existing institutions and experts. The tools we’re developing are powerful and have great potential, but they are not a panacea for the ills of the world. In particular, while <a href="https://en.wikipedia.org/wiki/Democratic_backsliding">democracy is in global decline</a>, we’re not going to magically invent something better than democracy anytime soon. Putting people together, face to face, in a room—or, failing that, in a Zoom chat—may seem old-fashioned and may not be an especially sexy technology, but it’s still by far the best tool we’ve got for working out our differences and reaching consensus on important issues. To think otherwise is hubristic and dangerous.</p>
<p>DAOs, conviction voting, and other pseudonymous, on-chain governance tools are novel and fascinating, and we should continue to experiment with them. However, we must recognize that their real potential is as <em>tools that augment existing liberal democratic institutions. They are not and should not be thought of as replacements.</em> One of the big lessons of the past few years is that democracy is more fragile than it looks. If we don’t treat our existing institutions with due reverence, respect, and care, we may lose them forever.</p>
<p>In particular, as we continue to design, build, and test blockchain-based governance tools, platforms, and solutions, we must be careful not to throw the civic baby out with the “broken institutions” bathwater. We can get much further by engaging boldly and confidently with existing institutions and by working to strengthen fraying social and civic institutions than we can by naively attempting to jettison them entirely. The future looks more like <a href="https://www.economist.com/open-future/2019/03/12/inside-taiwans-new-digital-democracy">Taiwan-style e-governance</a> than a hyper-libertarian, techno-utopian, transhumanist, Galt’s Gulch on Mars. (At least, I hope it does!)</p>
<p>Another essential task is to engage much more closely with the rest of the world. We must escape our ivory tower echo chamber, “<a href="https://www.interaction-design.org/literature/article/before-you-start-designing-it-s-time-to-get-out-of-the-building">get out of the building</a>,” engage in design thinking, and make sure we’re building apps and services that the rest of the world cares about. We must design and document our tools well so that they’re accessible, approachable, and legible to as many people as possible.</p>
<p>At the same time, we have to escape the savior mindset long endemic in the blockchain and cryptocurrency space. The goal of cryptocurrency should not be to “bank the unbanked.” It should be to build a powerful, useful toolbox of well-designed, well-documented, permissively-licensed, accessible primitives that anyone, anywhere can use to build better products, services, and institutions. Local communities around the world are far more likely to use these tools to develop their own solutions than we as outsiders are to develop solutions that work for those communities, a colonialist mindset <a href="https://medium.com/cryptolawreview/libra-colonialism-1510dca29ad">exemplified by the Libra project</a>. To this end, it’s essential that we include as diverse a population of voices as early in the design and building process as possible.</p>
<p>We must support the small number of teams and projects that are doing this important work. And we must start more. There’s no doubt that blockchain and related technologies can move the needle for humanity. But that won’t happen automatically. We’re at a crossroads, and we can still steer things in a different, more positive direction—but maybe not for much longer.</p>
<p>Finally, and perhaps most importantly: remember why you started. I’ve written about <a href="/blockchain/web3/values/2020/09/28/a-vision-for-blockchain.html">why I chose to work on blockchain technology</a> (and it had nothing to do with building a casino). Why did you start? What’s your vision for what blockchain, cryptocurrency, and Web3 are capable of? <a href="https://forum.etherean.org/t/ethereum-is-a-casino-etherean-org/347">Leave a comment</a> and share your story!</p>
<h2 id="notes">Notes</h2>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>By both users and volume, past 30 days, including exchanges, DeFi, marketplaces, and applications categorized as “High-Risk.” (<a href="https://dappradar.com/rankings/protocol/eth">source</a>) <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>This is not an exaggeration. One recent example, <a href="https://yam.finance/">YAM</a>, was launched on August 11. By the following day, it had attained a market capitalization of around $60M, with over $400M of token deposits. The developers announced a bug in the unaudited code the same day, and its market capitalization collapsed to zero in 35 minutes. (<a href="https://coinmetrics.io/the-defi-fee-explosion-how-yams-collapse-drove-ethereum-fees-to-new-heights/">source</a>) <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>This might not be so bad if there were clear disclosure of conflicts of interest, but these are vanishingly rare and there does not seem to be a shared ethical code that requires them. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Next generation networks that have launched recently include <a href="https://medium.com/celoorg/its-official-celo-mainnet-is-here-6a3a71763f68">Celo</a>, <a href="https://medium.com/avalabs/avalanche-mainnet-is-live-c2101c82ce10">Avalanche</a>, <a href="https://near.org/blog/near-mainnet-genesis/">NEAR Protocol</a>, <a href="https://cointelegraph.com/news/polkadot-officially-in-mainnet-as-governance-removes-admin-rights">Polkadot</a>, and <a href="https://solana.com/">Solana</a> (still in testing as of publication). While few applications have migrated away from Ethereum thus far, this is clearly not sustainable in the long-term. If gas prices remain as high as they are today, more and more applications will be forced to migrate. However, DeFi applications are more likely to remain, further exacerbating the situation and further cementing Ethereum as a “network for DeFi.” <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane RettigA Vision for Blockchain2020-09-28T00:17:00+00:002020-09-28T00:17:00+00:00https://www.etherean.org/blockchain/web3/values/2020/09/28/a-vision-for-blockchain<p><img src="/assets/jiroe-Z_2iIrPeV7s-unsplash.jpg" alt="A jacket that reads, The future will be different" /></p>
<p style="text-align: center"><sub>I have no doubt that the future will be different. Whether we'll make it a utopian or dystopian future, however, is up to us. Either way, blockchain technology has a role to play. Photo by <a href="https://unsplash.com/@iamjiroe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Jiroe</a> on Unsplash.</sub></p>
<p>I left a career in traditional finance because my work there was not making the world a better place. I later joined the blockchain industry because it really has potential to do enormous good. When I began contributing to Ethereum, I had a vision of what this could look like, and that vision became clearer over the following several years.</p>
<p>I’ve alluded to this vision in <a href="https://spacemesh.io/a-new-human-chain/">other places</a>, but I thought it would be nice to post it here as one clear, concise list.</p>
<p>This is my vision for what blockchain, Web3, cryptography, and decentralized technology in general has the potential to become and the ways in which it has the potential to make the world a better place.</p>
<ol>
<li>
<p><strong>Better institutions.</strong> We live in a world where the companies we do business with, our leaders, and our institutions <a href="https://www.applescotch.com/values/philosophy/society/2020/09/11/institutional-hypocrisy.html">lie to us all the time</a>. There are many reasons for this, but the biggest structural reasons are poor governance, misalignment of incentives, and a lack of transparency and accountability. Blockchain and cryptoeconomics offer a novel set of tools that can be used to address each of these. These tools can be used to build better institutions that are transparent and accountable by design, and that have governance mechanisms that are an order of magnitude more open and participatory than the institutions that exist today.</p>
<p>Concrete example: a DAO that fundraises, manages funds, and allocates resources. Its actions, resources, membership, and spending are all fully transparent, as are the rules for joining, voting, etc.</p>
</li>
<li>
<p><strong>Verifiability.</strong> Blockchain is often referred to as a “trustless” technology because you don’t need to trust intermediaries or institutions such as banks and governments in order to trust the contents of the ledger. The term is somewhat misleading since, in practice, you are really just placing your trust elsewhere: in software, algorithms, and cryptography rather than in institutions. However, the point remains that you can, theoretically, independently verify every bit of data that comes your way in blockchain and Web3 applications. If you read and understand the code underlying the protocol, or are able to rely on someone else that does, you can have a high degree of confidence that what you see is the truth, and the whole truth, something that is impossible with legacy institutions such as firms, banks, and governments. This makes transparency and accountability much easier, and is a critical building block for the better institutions described in the previous bullet point.</p>
<p>Concrete example: a nonprofit organization that holds all of its funds in an on-chain wallet account that is publicly visible. All contributions flowing into the account and all expenses flowing out appear as on-chain transactions and can be reconciled against the organization’s official accounting statements. The same can be done for governance: all voting members hold a vote token, and all votes are recorded and verifiable on-chain.</p>
</li>
<li>
<p><strong>More open data.</strong> The story of consumer apps and the consumer Internet over the past twenty years has been a story of walled gardens and of tech giants accumulating as much data as possible in proprietary data stores. These firms have made it extremely difficult to extricate and share data across apps and services. Since the firms with the most data have the biggest advantage in developing artificial intelligence and machine learning, this trend will only continue. By contrast, Web3 technologies are open by design. Data is structured and hosted in a self-sovereign, user-centric fashion, rather than in a corporate-centric fashion. It can be exchanged using open protocols and common APIs. As a result applications built on Web3 infrastructure are composable: each can permissionlessly build on top of, and access the data of, existing applications, making innovation much easier and rent seeking much harder. This will result in applications with far better functionality, usability, and privacy than their Web2 counterparts.</p>
<p>Concrete example: there will be no need to <a href="https://www.applescotch.com/data/sovereignty/2020/04/26/declaring-digital-independence.html">export your data</a> from the apps and services that you regularly use. You’ll control all of your data by default. You’ll have an encrypted, personal data store with an OAUTH-like API for granting specific, discrete modes of access to specific applications for specific purposes for specific periods of time, revocable at any time.</p>
</li>
<li>
<p><strong>Better privacy.</strong> As data becomes more and more valuable, the importance of giving users control of their data cannot be overstated. While <a href="/blockchain/privacy/2020/03/26/key-ingredients-better-blockchain-part-vi-privacy.html">most blockchain transactions are public</a> today, Web3 offers the promise of a future where participants in the digital ecosystem will have full sovereignty over their data. We’ll be able to choose precisely what to share, how and when it’s shared, and which people, organizations, and applications we want to share with. This will enable novel social and economic ideas such as <a href="https://www.thedataunion.org/">data unions</a> and other forms of participatory value creation, and will help prevent exploitation of consumers and their data by firms and governments.</p>
<p>Concrete example: you’ll have multiple identities and use each for a different purpose. For instance, you’ll communicate with close friends and family using your legal name and actual photo, but you’ll participate in other online communities such as games, and communities that pay you for your work and data, using various identities and pseudonyms. Each of these identities will be totally indistinguishable from a unique, real person. You’ll use a piece of software, an “identity manager” application, to manage, secure, and back up these identities, to maintain a clean separation among them, and to share different sets of data with different applications for different purposes.</p>
</li>
<li>
<p><strong>Easy entry and exit.</strong> Every day each of us participates and transacts as part of many networks, from the organizations we work for and the schools we attend to the places we shop, our financial institutions, and our local and national governments. Accessing and participating in these networks often requires identification, or that we live in a certain place, or that we pay high fees. Because of these and other barriers, it’s often difficult and expensive to join these networks, and as a result, many potential participants are excluded. What’s more, each of these networks is a hierarchy, with a small number of parties entrenched at the “root” of the network collecting rents from everyone else. By contrast, for the first time, cryptographic networks like blockchains and the applications built on them are open, allowing anyone, anywhere with an Internet-enabled device to participate and transact in networks of value creation and exchange as peers rather than as second-class citizens. In these networks, influential actors will be unable to extract unreasonable rents from other participants because, if they try, those participants will fork the network or exit it entirely, at little cost.</p>
<p>Concrete example: a blockchain and cryptocurrency-based financial institution that anyone, anywhere with access to a smartphone or PC can participate in without needing identification or special skills. Participants can not only open accounts and transfer funds, they can launch their own applications and sell services on the platform.</p>
</li>
<li>
<p><strong>Permissionless innovation.</strong> Permissionless innovation means that we are free not only to transact passively, but to participate in a network in more active ways such as designing, building, and launching products, services, and businesses on the network. Because today’s networks of value creation and exchange aren’t open—because they’re controlled by firms, governments, and other closed organizations—building innovative things on top of them is difficult, expensive, and often outright impossible. When it is possible, we are subject to the whims of the organization in charge and have to play by their rules, which are generally one-sided and extractive. If we deviate from these rules, we are likely to be sanctioned or censored.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup> The thing is, no matter how many smart, motivated people work for Apple, Google, or any other firm that controls such a network, there are by definition more smart, motivated people <em>outside</em> the firm, so opening up networks to innovation on the part of anyone, anywhere, without requiring registration or paperwork vastly increases the scope for innovation big and small. Open source, open data, and open, permissionless networks achieve this in a way that the traditional corporations and their shareholders cannot.</p>
<p>Concrete example: an open, permissionless network such as Ethereum where anyone is free to deploy any application at any time, without registration or permission, and all users and applications can interact with all other users, applications, and data.</p>
</li>
<li>
<p><strong>Censorship resistance.</strong> In an era of cancel culture and arbitrary, unilateral censorship on the part of large, unaccountable tech firms, censorship resistance is more important than ever. It’s essential that we have base layer infrastructure that allows both data and value to flow unimpeded and that cannot be captured, controlled, or censored by any individual actor or cartel of colluding actors.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote">2</a></sup> One important effect of censorship resistance is that it prevents incumbents—be they firms, political parties, or simply powerful individuals—from controlling access to the network and what others can see and do. In theory, all humans should have equal access to the network; in practice guaranteeing this is quite hard.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote">3</a></sup> Web3 applications and networks like blockchains enable censorship resistance through decentralization.</p>
<p>Concrete example: A decentralized Twitter with no central operator with the power to censor or ban platform users. Rather than outright bans, communities build and offer robust tools for sorting and filtering content, with many sets of whitelists and blacklists that one can subscribe to in order to see content they wish to see, and to avoid content they wish to avoid.</p>
</li>
<li>
<p><strong>More robust digital communities.</strong> Facebook boasts hundreds of millions of user groups and hundreds of millions of users in groups “that they find meaningful.”<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote">4</a></sup> However, in practice, Facebook enables those groups to do very little beyond messaging, sharing images, and planning events. By contrast, the advent of blockchain, Web3, cryptocurrency, smart contracts, and DAOs enables communities to develop far more robust tools for marketing, communicating, transacting, and governing themselves. As a result, over time the lines between a “community” and a “firm” will begin to dissolve. Communities that form around games and hobbies will more readily evolve into networks that generate and share value, benefiting both their own members and consumers.</p>
<p>Concrete example: A community and discussion forum for rideshare drivers who, fed up with Uber and Lyft, develop a guild and ultimately their own rideshare service to compete with the incumbents.</p>
</li>
<li>
<p><strong>Lower transaction fees.</strong> Many types of transactions today are expensive and cumbersome, such as negotiating legal contracts, establishing a corporate identity, and sending funds internationally. One of the most exciting and powerful things about blockchain and smart contracts is the degree to which they can reduce these transaction costs. Past technologies such as telegraph, telephone, the Internet, the automobile, the highway system, air travel, free trade, and containerization (the <a href="https://en.wikipedia.org/wiki/Containerization">non-digital variety</a>) massively reduced the costs associated with moving goods, people, capital, and information, enabling new sorts of businesses and leading to an explosion in value creation. In much the same fashion, Web3 and its enabling technologies will further reduce costs and lead to even greater value creation over time, making it far easier and cheaper to organize and scale human endeavor.</p>
<p>Concrete example: Several active members in a gaming community establish a DAO to fundraise from the community to launch a new product. They would not have been able to do this without blockchain, as they live in a variety of countries and it would have been too costly and cumbersome to establish a firm in one of them. What’s more, they can use a <a href="https://en.bitcoin.it/wiki/Multisignature">multisig wallet</a> and don’t need to trust any one member with the gathered funds.</p>
</li>
<li>
<p><strong>Better money.</strong> Bitcoin and other cryptocurrencies offer a radical departure from the monetary and fiscal policy regimes of the fiat currencies we use day to day. While most of the world’s central banks are in the midst of issuing an unprecedented amount of new money as a form of economic stimulus in the wake of the Covid-19 pandemic, and heterodox theories of monetary policy such as <a href="https://en.wikipedia.org/wiki/Modern_Monetary_Theory">MMT</a> are gaining currency, the Bitcoin school of thought posits that the world needs a form of “sound money” with rigid monetary policy that’s beyond the reach of any central bank. I remain personally unconvinced by this argument, but there is a case to be made for money that cannot be radically inflated and debased unilaterally by incompetent, corrupt, unaccountable regimes: ask any resident of Zimbabwe, Greece, Argentina, Venezuela, or North Korea if it’s not immediately clear why. Cryptocurrency is unlikely to <em>replace</em> fiat money anytime soon, but it offers a viable alternative, and choice is important, if only because it introduces competition, removes governmental monopoly on issuing currency, and keeps those in power honest.</p>
<p>Concrete example: Many DAOs and other communities choose to issue community currencies with many different forms of monetary and fiscal policy. Major, widely-accepted cryptocurrencies like bitcoin continue to function as a numeraire, but over time, as these communities mature and expand and trade with other communities, trading leagues and currency blocs form, catering to the needs and values of particular communities. Network users are free to store their assets in whichever currency they prefer, or whichever is most convenient for their use cases.</p>
</li>
</ol>
<p>What’s missing from this list? <a href="https://forum.etherean.org/t/a-vision-for-blockchain-etherean-org/346">Leave a comment</a> and let me know.</p>
<p>[I’m very grateful to Shahar Sorek and Tomer Afek for invaluable pre-publication feedback.]</p>
<h2 id="notes">Notes</h2>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>The most illustrative recent example is the feud that several developers, most notably <a href="https://techcrunch.com/2020/08/28/apple-terminates-epic-games/">Epic Games</a>, have been having with Apple over the “substantial cut” that Apple takes when apps use its in-app purchase framework. Epic and other developers believe that Apple is <a href="https://techcrunch.com/2020/08/13/epic-games-launches-a-campaign-and-lawsuit-against-apples-app-store/">exploiting its “monopoly”</a> over the app store and payment processing. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>Note that this does not mean that everyone that uses the network needs to be exposed to everything it contains: individual communities are free to sort and filter base layer content however they like. But they should not be able to prevent others from generating, receiving, or accessing transactions and content. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>This is more of an ideal than something achievable in practice. It’s a bit like universal suffrage. In theory, everyone has the right to vote. In practice, disadvantaged communities always have trouble voting: they may not be able to take time off work, they may not have reliable transportation to the polling place, or they may be disenfranchised for a host of other reasons. Access to a network is no different. In some cases, passively guaranteeing access is not enough; we may need to take more active measures to ensure access. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Sources: <a href="https://www.adweek.com/digital/google-now-indexes-620-million-facebook-groups/">Google Now Indexes 620 Million Facebook Groups</a>, <a href="https://www.cnbc.com/2020/02/16/zuckerbergs-focus-on-facebook-groups-increases-facebook-engagement.html">Mark Zuckerberg shifted Facebook’s focus to groups after the 2016 election, and it’s changed how people use the site</a> <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Lane Rettig