Madrona Venture Labs (MVL) is a startup studio in sunny Seattle, WA. We are housed inside Madrona Venture Group and are tasked with developing new companies from the ground up.
It is October and our team at Madrona Venture Labs is busy getting ready for our first blockchain workshop which we are co-hosting with TiE Seattle. It is is going to be a fun time of pumpkins, coffee, and distributed databases. We hope you can make it on October 12! In preparation for our workshop we are learning all we can about blockchain, which is no easy task because a new blockchain technology seems to pop up every day.
After some investigation, we decided to support both Ethereum and Hyperledger blockchain platforms at our workshop event. If you’re interested in enterprise blockchain applications, check out our blog post on Hyperledger.
I am focusing my time on the Ethereum blockchain. Ethereum is the brainchild of Vitalik Buterin, an eccentric genius who likes to eat whole lemons. Ethereum works a lot like the Bitcoin blockchain with one big addition, it can store and execute code called Smart Contracts. Smart Contracts provide a layer of logic that enables developers to manage how assets are exchanged and stored. With a Smart Contract you can write rules to govern a decentralized autonomous organization (DAOs) or to manage property rights for digital goods. The possibilities are endless.
I started experimenting writing apps with Ethereum a couple months ago and wanted to share my experience. I am far from being an expert at this point, so you should take everything I say with a large grain of salt.
Getting up and going
People who snowboard like to say that it is easy to get started but hard to master. That has been my experience with Ethereum. There is plenty of good documentation out there to get you started and I was able to create my own private Ethereum blockchain network and start writing contracts in under an hour. You can read my guide here.
The complicated part comes when you start to move from a toy app to something real. I decided to build an app called Rollcall, which would enable high school students to use tokens to take classes at other high schools. It is a pretty straightforward idea but it starts to bring up a lot of questions. How will users access my blockchain app? How will users authenticate? If my app is private, will the community need to mine transactions to add them to the blockchain?
It is in trying to answer these questions that you start to realize Ethereum’s newness. You can spend a lot of time digging for answers (I did) and often times you find yourself stumbling inadvertently into the middle of a heated debate around the utility of smart contracts and private blockchain networks.
The right mental model
For me one of the hardest parts of learning Ethereum was understanding how users would interact with my app. In a traditional app model you would have a central server that all users would connect to. So how does this work in a decentralized world?
As you can see in the diagram below (all credit to Mahesh Murthy), there is no central server. Rather, every client (browser) communicates with its own instance of the application.
Does this mean that every user has to have a full copy of the blockchain running on their machine to interact with your app? In an ideal world the answer is probably yes but the Ethereum community has come up with practical solutions ranging from hosted blockchain servers to a browser plugin called metamask that enable your app to be accessible and still decentralized.
One of the first questions I wrote down when learning about Ethereum was what is gas and how is it calculated?
My favorite answer comes from Matt Condon:
Smart Contracts (again, just blobs of code) are executed by every single full node in the network, which is a lot of redundancy (good) but this costs a lot of energy and time (bad). Because it costs money to perform computations, the cost of performing computations is directly tied to which computations your code performs. To say that another way, each low level opcode in the EVM costs a certain amount of “gas” to perform.
In other words, gas is a unit that measures the price for performing a computation on the blockchain. The actual price of gas is determined by the market, similar to Bitcoin transaction fees.
Accounts vs wallets
A lot of articles treat accounts and wallets as the same thing. It turns out they are different!
An Ethereum account is a private key and address pair that stores Ether and doesn’t cost any gas to create. All transactions on the Ethereum network originate from an account; contracts don’t have the ability to initiate a transaction.
A wallet is a smart contract that manages Ether.
My relationship with Ethereum is just getting started and I am excited to see where we end up. If you are interested in learning more about building Ethereum apps, I encourage you to go to our Ethereum resources page.
Hope to see you at our upcoming blockchain workshop!
Ben and the Madrona Labs Team