Bitcoin, Ethereum, Blockchain, Tokens, ICOs: Why should anyone care?
The Crypto market is gaining lots of steam.
…and multi-million dollar token sales are commonplace, as are front-page headlines from traditional news outlets discussing Ethereum, Bitcoin, ICOs, tokens, hard forks, and other technical topics.
Even my 13-year-old brother has been calling me up asking for explanations!
I’ve been personally invested in this space for a while now — most recently as an engineer for Coinbase — but even I’m astonished by how quickly the Crypto space has evolved in the past six months.
ICO vs IPO: The wild west of investment
What the heck is an ICO anyway?
Necessary background skill
You can’t understand ICOs without understanding the underlying digital asset sold in an ICO.
The Cryptocurrency technology stack
Bitcoin is a decentralized digital currency that uses a peer-to-peer technology.
A blockchain is a distributed public database that keeps a permanent record of digital transactions.
A blockchain is collectively maintained by “miners”, who are members within the network that rival to validate Bitcoin transactions in each block by solving the sophisticated algorithmic problem associated with the block.
Blockchain technology isn’t limited to Bitcoin. It can be used to create any other cryptocurrency, such as Ethereum and Litecoin, which utilize their own blockchains.
Next, we have the protocol layer. In general, a protocol is the special set of rules that knots in a network use when they transmit information. These rules specify the interactions inbetween the communicating entities.
One example of a protocol used in telecommunications is Transmission Control Protocol (TCP), which is a set of rules for exchanging messages at the information packet level on the internet. TCP ensures that the data packets will be delivered and that they will be delivered in the same order in which they were sent. Another example of a protocol is Internet Protocol (IP), which is a set of rules to send and receive messages at the Internet address level — it essentially specifies the format of the data packets on the internet and the addressing scheme.
When discussing blockchains, the term “protocol” refers to the “cryptoeconomic rules” that are enforced by a blockchain in order to maintain distributed consensus across the blockchain’s peer-to-peer network.
Cryptoeconomic rules are rules that govern a decentralized digital economy that:
(i) uses public key cryptography for authentication
(Two) has economic incentives to ensure that the rules are followed
For example, in the case of Bitcoin’s blockchain, it has financial incentives that are provided to the miners for validating every Bitcoin transaction and in turn, securing the network.
What exactly are these financial incentives?
The financial incentive for miners comes from the native token built on top of the Bitcoin blockchain — Bitcoin. The coin serves as a “carrot and stick” — miners who use their computing power to validate transactions are rewarded with a certain amount of coin.
In general, when you hear the term “cryptocurrency tokens” or simply “tokens”, they are referring to tokens such as Bitcoin that are built on top of a blockchain and represent a digital asset which you own and can transfer to someone else.
There are various ways to create tokens on top of a blockchain. For example, the simplest tokens to understand are intrinsic tokens like Bitcoin, which is directly built on top of the Bitcoin blockchain. Or you can choose to fork the Bitcoin blockchain and build tokens on top — some examples include ZCash, Litecoin, Monero, and others. Or you can build an entirely fresh blockchain technology and build a token on top of that — which is what Ethereum did. The token on top of Ethereum’s blockchain is “Ether”.
There’s a helpful analogy here with traditional currencies — you can think of tokens as the currency itself (e.g. USD, EUR, etc.) and the blockchain protocol as the monetary policy.
Regardless of the cryptocurrency in question, tokens are valuable because the blockchain provides a backbone for asset manipulation that is immutable, decentralized, and unlikely to counterfeit.
The application layer
So far, we’ve learned about Bitcoin and the underlying blockchain that enables it. We’ve also learned about the protocol that determines the rules of the blockchain, and the tokens built on top of it.
Together, these technologies have made us rethink our definition of money as something that is digital, lightly transferrable, secure, and decentralized.
But the significant part to realize is that money is just one application of the blockchain. Besides money, the reason so many of us in the crypto-world are nerding out about the blockchain is because it has exposed a potential future for (1) protocols and (Two) applications in general.
The ultimate desire of cryptocurrency developers is that we can take advantage of this blockchain technology to build fresh and improved communication protocols from the ground up. Protocols being developed for cryptocurrencies have the potential to solve problems with centralization that have plagued the Internet since the very first dial-up modem whirred and beeped into activity.
Well, they could include protocols for payments, identity, domain name systems, cloud computing, reputation systems, and much more. Many of these systems today are very centralized (e.g. Stripe, Paypal, Google, Amazon) and there’s no such thing as defaults or standards for these things on the Web.
Blockchain enables what we call “decentralized applications”.
Let’s consider the Bitcoin blockchain as an example. Bitcoin uses a scripting system for transactions that occur on the Bitcoin blockchain. A script is a plain list of instructions. So the Bitcoin’s scripting language enables us to write a script that is recorded with every transaction. The purpose of the script is to define the requirements the recipient must meet to build up access to the Bitcoins being transferred.
For a typical Bitcoin transfer, the script will define what the spender must provide:
- a public key that, when hashed, matches the destination address included in the script
- a signature to showcase evidence of the private key corresponding to the public key just provided
But the neat thing is that there’s some plasticity in the parameters we can send with each transaction. For example, we can write a script that says “this transaction is only valid if it has two private keys”. So essentially, this scripting language now lets us encode rules for how to budge money, or more generally, any chunk of information, around, without requiring us to trust some third party to go after a set of rules we care about. We simply trust the code and all is well.
Because Bitcoin has this scripting language, it’s possible to use this language to build certain types applications that transact on the blockchain. In other words, we can build applications that use Bitcoin transactions to communicate.
For example, let’s say we want to build a blockchain-based crowdfunding application. You might have a set of rules for how funds are transferred (or communicated) inbetween one party to another which you encode in the scripting language. Then users of the application can run a crowdfunding event that is governed by the blockchain.
This is the main idea behind dApps: a decentralized set of rules that define a specific application. This set of rules sits on a public and decentralized blockchain (instead of a central server possessed by some large entity, such as Facebook or Amazon). This enables it to governed by autonomy and be resilient to censorship.
“Where are the apps?” dilemma
Many of us in the crypto world were under the impression that developers would instantly hop on the bandwagon and use Bitcoin’s scripting language to build decentralized applications on top.
1. Lack of developer friendliness and tooling
Programming applications using Bitcoin’s scripting language is not effortless. Why?
Compare this to Bitcoin’s scripting language:
Two. Building a decentralized application with strong network effects isn’t effortless
Many of the applications we use in our daily work (marketplaces, exchanges, social networks, etc) derive their value from their strong network effects. A network effect is when a product or service increases in value as more people use it.
Trio. Decentralization alone doesn’t provide a 10x improvement
When we talk about decentralized applications built on top of the blockchain, we might think of transaction-based platforms, such crowdfunding, remittances, payments, coupons, etc. It might be a neat technical feat to have a decentralized version of these types of services, but the reality is, we already have existing apps that work ideally fine for each of these use cases.
The rise of decentralized applications… maybe.
Ethereum is a cryptocurrency launched in two thousand fifteen and built from the ground up using its own blockchain technology. It was designed to be a more generalized protocol than Bitcoin’s blockchain, with the explicit aim of doing more than just creating and recording transfers of a blockchain network’s native tokens.
“The intent of Ethereum is to create an alternative protocol for building decentralized applications, providing a different set of tradeoffs that we believe will be very useful for a large class of decentralized applications, with particular emphasis on situations where rapid development time, security for petite and infrequently used applications, and the capability of different applications to very efficiently interact, are significant. Ethereum does this by building what is essentially the ultimate abstract foundational layer: a blockchain with a built-in Turing-complete programming language, permitting anyone to write wise contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition functions.”
In essence, Ethereum is simply a transaction-based state machine: we begin with a “genesis state” and incrementally execute transactions to convert it into some final state. The final state is what we accept as the canonical version of the current state of the world of Ethereum.
While Bitcoin is the intrinsic token for Bitcoin’s blockchain, Ether is the intrinsic token for Ethereum’s blockchain.
Just like Bitcoin, the Ethereum blockchain contains a log of transaction-like events. Users send Ether to one another using the “log,” and miners are incentivized to verify and secure these transactions within the network.
But it can also go way beyond that — the Ethereum blockchain can be packed with a broader diversity of event information coming from any sort of computer program.
Let’s look at a few of the core concepts that underly the Ethereum blockchain to understand why this is possible:
Very first is accounts. There are two types of accounts: Externally Wielded Accounts and Contracts Accounts. Both account types have an Ether balance.
The main distinction is that contract accounts have some lump of code associated with them, while externally wielded accounts do not. Contract accounts, therefore, have the capability to perform any type of computation when its associated code is executed.
Next we have what are known as transactions, which are cryptographically signed data packages that store a message to be sent from an externally possessed account to another account on the blockchain. When a transaction is sent to a contract account, the code associated with the contract account is executed by the “Ethereum Virtual Machine (EVM)” on each knot (more on that below).
Ultimately, there are messages. Messages permit contract accounts to call one another. When a contract account send a message to another contract account, the code associated with the account is activated. Essentially, a message is like a transaction, except it’s produced by a contract account rather than an outer account.
Let’s quickly explain the concept of the “Ethereum Virtual Machine (EVM)”. Reminisce how we learned that the protocol for the Bitcoin blockchain determines how transactions on the network get verified? Well, in Ethereum’s case, every knot that is participating in the Ethereum network runs the EVM as part of this verification process.
Let’s say we have a set of transactions that were embarked by some outer accounts. These get accumulated into a block, and then the knots in the Ethereum network go through the transactions listed in the block and run the code associated with these transactions within the EVM. It’s significant to note that every knot in the network runs the code and stores the resulting values. As you might guess, this tends to be computationally very expensive. To compensate for this expense and incentivize the knots (or miners) to run these computations, the miners specify a fee for running these transactions. This fee is referred to as “gas” (you can read more on gas here). This is similar to how fees work in Bitcoin, where any fees linked to a bitcoin transaction go to the miner who mined the block that included the transaction.
Note: This is a very high level description of how the Ethereum blockchain works and it certainly skips a lot of details for purposes of brevity. I’ll write more in-depth articles in the future.
The key takeaway from all this is that Ethereum stepped into the crypto-world and provided us with a generalized framework for running any type of code on the blockchain more lightly. Because Ethereum’s language is turing accomplish, stateful, and developer friendly, the hope was to open up the benefits of the blockchain beyond just enforcing one particular ruleset (e.g. how digital money gets transferred) and enable a safe, open, very available, autonomously governed, efficient, trustable and reliable mechanism to build any ruleset on top. This would enable developers to develop any type of application imaginable.
An example of an application that is amazingly plain to build on Ethereum is a “smart contract”. A clever contract is a distributed contract that is represented in code and basically says “if this happens then do that”. They can accept and store Ether and data, and can send that Ether to other accounts or even other wise contracts. Just like regular contracts (e.g. a property lease or an employment agreement), they are used to form agreements with people or entities, but unlike regular contracts, they act like autonomous agents that run entirely on the blockchain and eliminate the human out of the loop, making them automated, open, secure and trustless.
Another example of an application is a decentralized organization. A decentralized organization is a programmatic organization that runs based on rules encoded within brainy contracts. So instead of the typical hierarchical structure of an organization that is managed by humans, a decentralized organization encodes all its rules into a wise contract and then is entirely managed by a blockchain.
Despite the fact that Ethereum has made it effortless for us to now build applications on the blockchain, let’s admit it, most of us, even including us crypto-nerds, are still living in a world where we don’t use decentralized applications in our day to day.
Problem #1: Lack of developer friendliness
As we described above, Ethereum solves this problem by design through its expressive programming language and strong developer tooling.
Problem #Two: Building up network effects is hard
With or without Ethereum, seeding and spinning the network effects is still a enormous roadblock. Substituting existing network businesses who’ve built up enormous networks effects is… as we said before, truly HARD. If someone builds a decentralized Airbnb, they still need to coax both sides of the platform, the users and hosts, to come on board.
Problem #Trio: Doesn’t provide 10x improvement
We learned earlier that most users wouldn’t be willing to switch to a decentralized platform unless it’s 10x better than an existing solution on some dimension.
Just because it’s lighter to build a decentralized application on Ethereum, doesn’t mean it provides the 10x practice we’re looking for. And so, the question we might ask is, are we still right back to square one? still stuck in the trenches?
Well, not indeed.
Because albeit Ethereum doesn’t directly solve the network effects problem, nor the 10x problem, what it does do is enable the creation of a entire fresh set of applications that were never possible before. The clearest way to make a 10x improvement is to invent something fully fresh. I believe Ethereum makes inventing something fully fresh possible by making it effortless to build brainy contracts.
The rise of protocols, tokens, and applications
Why the big deal about being able to build brainy contracts?
Well, the beauty of being able to lightly build brainy contracts on Ethereum is that it enables anyone to lightly build a fresh protocol on top of Ethereum. Recall that a protocol is simply a set of rules that knots in a network use when they to transmit information. Wise contracts permit us to do exactly this — create an automated trustworthy set of rules inbetween two or more parties.
Earlier, we mentioned how blockchain protocols have a intrinsic “token” associated with it, which is a digital asset that can be transferred inbetween two users in the network without requiring the consent of a third party. In the case of Bitcoin’s blockchain, the intrinsic token is Bitcoin and in the case of Ethereum’s blockchain, the intrinsic token is Ether.
But just because the Ethereum and Bitcoin blockchain protocols have intrinsic tokens associated with it to drive the network, doesn’t mean a protocol built on Ethereum using a wise contract must have a token associated with it. Reminisce that the purpose of a protocol is simply to specify rules for communication inbetween knots.
So essentially, there’s two types of protocols:
- Ones which have a intrinsic token associated with it that help create economic incentives that drive a network
- Ones which don’t have a token that drives financial incentives and are simply used as a communication protocol inbetween knots (Note: these types of protocols CAN still have a token associated with it — e.g. to represent membership in the network, shares on an open market, etc. The difference is that they are not used to drive some economic incentive.)
For lack of better names, I’ll call the very first kind “crypto-token-protocols” and the 2nd kind “crypto-protocols”.
Now onto tokens.
Just like Ethereum makes it possible to build fresh protocols on top of its blockchain, it also makes it possible to use clever contracts to build fresh tokens on top of its blockchain. Let’s call these types of tokens “non-intrinsic tokens”.
In this regard, broadly speaking, we can think of a token system as just a database with one operation: subtract X units from A and give X units to B, under the condition that:
(ii) The transaction is approved by A
Ethereum makes it especially effortless to implement such token systems. More specifically, ERC20 token interface provides a standardized way to develop a token that is compatible with the existing Ethereum ecosystem, such as development contraptions, wallets, and exchanges.
What’s more, these non-intrinsic tokens can exist as:
- Standalone tokens built on Ethereum (as shown in the above diagram)
- Be associated with any fresh underlying crypto-token-protocol built on Ethereum
- Be associated with any fresh underlying crypto-protocol built on Ethereum
Protocols? Tokens? Protocols + Tokens? Why does this matter?
Token sale (i.e. “ICO”)
Launching a fresh cryptocurrency blockchain is not effortless — it requires a massive bootstrapping effort in order to assemble the resources needed to get it up and running. But in the case of Ethereum, its intrinsic tokens were used to spin up their blockchains — in order to kickstart a large network of developers, miners, investors, and other stakeholders, Ethereum created some Ether tokens and launched a presale of these tokens to the general public. It then used these funds to develop its blockchain.
Ethereum was not the very first to do this. In 2013, when Ripple embarked to develop it’s Ripple payment system, it created around one hundred billion XRP token, and sold these tokens to fund the development of the Ripple platform.
This concept of fundraising via a token sale is sometimes referred to as an “Initial Coin Offering”, or ICO. But the structure of this token can vary significantly (as we just witnessed in the previous section), whereas the term “ICO” makes it sound a lot more official and like an investment security, so let’s stick to “token sale”.
A token sale is when some party offers investors some units of a fresh cryptocurrency (i.e. token) for a certain price, that can then later be exchanged with other cryptocurrencies (i.e. tokens). The idea is that investors buy into these tokens, and the units of the token are fungible and transferable on cryptocurrency exchanges (e.g. Bitfinex, GDAX, Liqui, etc.) if there is request for them.
While most token sales in the past have been restricted to building a fresh cryptocurrency (e.g. Ethereum, Ripple, etc), the brainy contracts of Ethereum are now enabling startups to also to use token sales to fund development of various protocols and applications built on top of existing blockchains.
Before moving on, one significant distinction to make is the difference inbetween an application and protocol.
An application can be built on one or more protocols. One example is Augur, which is a decentralized prediction markets application that is built on top of two protocols:
- Decentralized oracle protocol
- Exchange protocol
The decentralized oracle protocol is a “crypto-token-protocol” that has financial incentives to drive the network to form consensus around the outcomes of real-world events using Augur’s reputation tokens (REP). The exchange protocol, on the other palm, is a “crypto-protocol” and does not have a token associated with it to drive financial incentives, but instead is a set of rules defined inbetween buyers and sellers in order to budge tokens inbetween each other.
But neither of these protocols need to be tied to a single application. Any application can in theory build on top of these underlying protocols.
Token sales for protocols vs. applications
Earlier, I mentioned how token sales can be used to drive development of a fresh protocol and/or to drive development of a fresh application.
- a blockchain (e.g. Ripple)
- a cryto-token-protocol built on top of an existing blockchain
- a crypto-protocol built on top of an existing blockchain
- an application built on top of a cryto-protocol
- an application built on top of a crypto-token-protocol
- an application built on top of crypto-protocol(s) and non-crypto-token-protocol(s)
- an application
So, pretty much anything 🙂
The last one is interesting, because to do a token sale, the application doesn’t even need to be built under a protocol. I can build non-profit organization and use tokens as a mechanism to fund the project. In this sense, a token sale simply becomes a fresh way to fund a traditional centralized application. A plain old crowdsale.
Okay, so investors buy these tokens and then what happens?
Depends. When a token is tied to a cryto-token-protocol, they look much more like intrinsic tokens like Ether and Bitcoin and are used to drive the development and network of a protocol. But when they are not, tokens simply represent something much more general. In fact, these tokens are pliable enough to represent a lot of different things.
For example, let’s say I want to build a decentralized storage service. I can build a storage protocol using wise contracts which serve as agreements inbetween a storage provider and their client, defining what data will be stored and at what price.
I would then build a token for this protocol and do a token sale. If the protocol becomes widely used, then the protocol becomes more valuable, which in turn could increase the value of the token. Moreover, as a developer of this service, I could choose to make the tokens represent purchase rights to the services provided in the application.
What’s significant to note is that, broadly speaking, the mechanism for creating tokens are so nimble that they can represent lots of different things:
- Paid credits/membership within the decentralized application
- Entitlement to a share of profits and/or losses, or assets and/or liabilities
- Ownership or equity interest in the protocol (or project)
- Voting power in the company
- No function other than mere existence — simply a digital asset that can be loosely traded on cryptocurrency exchanges
There’s a handful of projects which have successfully raise funds via a token sale, including as Augur, Antshares, Melonport, Gnosis, Antshare, Gnosis and many more. I’d suggest you read their respective white papers if you want to learn more.
Protocols, tokens, token sales, now what?
We’re at a point where Ethereum has made it effortless to not only build protocols that can power decentralized applications, but also to help get a network off the ground. Ethereum does this in two ways:
This one is evident. As we already eyed, a token sale now enables developers to lightly release tradable tokens to raise funds for building a protocol and/or application. Using this money, the team could choose to invest in sales, marketing, etc. to drive the network.
This is the more interesting lump of the puzzle. Protocols and decentralized applications can solve the network effects problem by using a token sale as a mechanism to get early contributors and adopters. Early adopters who believe in the protocol or application have an incentive to buy the token because there is potential for that token to be worth more in the future.
So in essence, tokens could help bootstrap a network of early adopters because the incentives of the early adopters and the development team line up flawlessly.
Let’s say you want to build a fresh file sharing protocol. You can launch a token sale through which you build up some early adopters, investors, and entrepreneurs who become interested in “buying in.” They might be simply speculating or they might truly believe in the product. At that point, they become stakeholders in the protocol itself and are financially invested in its success. Then some of these early adopters either become users of the products built on top of the protocol or build products and services around the protocol themselves, with the incentive to drive the success of the protocol further in order to increase the value of their tokens. As the protocol gains adoption, it increases the value of the tokens, which further draws more attention from more investors, application builders and users, which leads to more applications, and so on.
What Ethereum has done is create an amazingly limber system to innovate at the protocol level and application level. We’ll likely see a lot of experimental and innovative protocols and applications being built over the coming years. Many of these will fail, just like a lot of startups fail. But over time, it’s likely that some core set of protocols and associated networks will successfully drive mainstream adoption.
Eventually, once the protocols begin to take form and standardize, we’ll see a entire host of decentralized applications being built on top.
It’s not a blessed ending yet
Token sales are providing the fuel needed to drive development of protocols built on top of the blockchain, and to further drive developer interest in building applications on top of these protocols.
Of course, this isn’t the ideal glad ending.
For one, getting a bunch of early adopters isn’t enough. You also need to work hard to sustain the growth of the network effects, just like traditional businesses do. That means putting in years of hard work to building a useful application and driving adoption.
Secondly, another trend I’ve noticed is that most of the token sales we are eyeing today are being used to drive network effects around specific applications rather than open and decentralized protocols. Since tokens are so pliable, dApp developers are creating tokens that are coupled to the dApp, instead of a standardized underlying protocol that can be collective among applications. This could lead to fragmentation in protocols.
Third, the initial growth of the token value is mostly driven by speculation (since it takes some time for the platform being built to become valuable). Hence, there will likely have high volatility. It’s unclear if and how we can mitigate this, and if we can even figure out a mechanism to get token prices to stabilize over time. Overall, there’s a lot of open questions around the viability of a token’s value over time. Ideally, we want the token’s value to be tied to the value of the protocol or application, similar to how a public company’s stock is tied to the company that issued it, or to represent some valuable digital right to a service. But as of today, the value of these tokens is still mostly speculation.
Fourth, the market for token sales exceptionally foamy right now. Because securities regulations makes it difficult to sell tokens (which are unregistered securities) as equity (reminisce that a token can represent anything, including equity within the protocol or application), developers are not doing it. Instead, they are structuring them as crowdsales. While there are some very respectable projects raising much needed capital in this manner without the hassle of regulation, there’s a long tail projects that are simply taking advantage of the high request in the ICO market to raise millions of dollars in capital with very little to display for it — some of which have even turned out to be outright scams that absconded with the funds collected during the process. We want these crowdsales to benefit the groups of people gathering together to build a common public good, but not the scammers. How do we achieve that?
Besides these issues, there are still lots of unanswered questions that need to be figured out before token sales become a viable form of funding:
- What is the right design and structure for a token sale?
- In what cases does it make sense to structure tokens as an investment security? How should such token sales be regulated?
- What criteria should an individual investor use to evaluate token sales? (team, business model, etc)
- How is an investor assured that the sale process in being managed in a safe and legal manner?
- Does there need to be a mechanism for distributing a portion of the liquidation value of the company among the token holders? Dividends?
- Can the token holders exercise control in the protocol or application via voting rights?
- How will the money be spent after the funds are raised?
- What metrics can an investor use to gauge trust that the team building the protocol or application will execute on the long-term plan and vision?
- Could it be more efficient to port the clever contracts of a token to use Ether directly, instead of creating a fresh token per protocol?
- What are the tax implications for the investor’s gains or losses?
- If selling tokens become a fresh way to raise capital for startups, what happens to traditional Venture Capitalists?
- … and SO MUCH MORE
If these questions interest you, you’re in luck — I’ll write about some of them in upcoming posts!
I’ve attempted my best in this article to articulate my views on token sales and clear up some of the confusion around blockchain development in general.
Talking about cryptocurrency and blockchain development is like attempting to take a picture of a running cheetah. The space is moving at breakneck speed, and any attempt to pin it down results in a blurry picture. Regardless, I still believe it’s significant that we educate the broader community on cryptocurrency topics.
If you feel that I’ve made any overreaching assumptions in this walkthrough, please share commentary below! I’d love to talk more and learn from each other.
We need everyone’s input to figure out the right path towards a healthy and sustainable cryptoeconomic future.