Unblock Tokyo — Dapper Labs — The Flow Blockchain

Norbert Gehrke
Tokyo FinTech
Published in
8 min readOct 17, 2019

The “Unblock Tokyo” conference was held on Saturday, October 5 at BinaryStar in Ginza, Tokyo. Dieter Shirley, CTO at Dapper Labs, presented on “Flow”, their blockchain for open worlds. Here is what he had to say.

Hello, my name is Dieter Shirley. I am the CTO at Dapper Labs and the Co-Creator of Crypto Kitties, which you may remember from the end of 2017. I am also one of the authors of ERC721, which is the standard for non-fungible tokens on the Ethereum blockchain. But today, I want to talk about Flow, the blockchain that has been announced by Dapper Labs, which we call the blockchain for the open worlds. So what do we mean by open worlds?

One of the best examples of open worlds is the project we are working on right now, which is called Cheese Wizards, which is the new game coming out from the same team that built Crypto Kitties. It is a much more competitive game. It is in fact a battle royale, where people find these crazy wizards and they battle them on the blockchain. So it is a completely trustless system mediated by the blockchain, and the wizards are entities that you own. Even if you do not win the battle, you get to keep the wizard. One of the interesting things about Cheese Wizards is that we are experimenting with this notion of open worlds.

When we knew that Cheese Wizards was nearly ready to come out, we decided to sponsor a hackathon. Therefore an early copy of the Cheese Wizards smart contracts is available on one of the Ethereum test networks, and people have been building software on top of Cheese Wizards. So there are two examples of that here today.

  • First, there is a group that built a DAO (Decentralized Autonomous Organization) around Cheese Wizards. Anyone may want to control this DAO, and the DAO controls the wizards that are part of it, but the control of the wizards does not go to the people who contribute the most money, it goes to the people who have the most success in the game. Hence investing in this DAO means investing in people who are the best at the game.
  • Second, someone has built an entire mobile app for Cheese Wizards. Dapper Labs built a web interface to our game, but we did not build a mobile app. Somebody else was able to do so because of the open nature of blockchain.

When we talk about the blockchain for open worlds, it is this type of extensibility and composability that we are talking about. We believe that what makes blockchains interesting is not necessarily that you can put a smart contract on and then people can interact with the smart contract. It is rather that one person can put on a smart contract, and then someone else can write another smart contract to built on top of that, and so on, until you have multiple layers of smart contracts talking to each other. And that innovation building on innovation is what we think is going to unlock a whole new style of software.

So why do we have to build our own blockchain with Flow? Obviously, we are building on Ethereum today. Well, as we discovered with Crypto Kitties, the Ethereum architecture cannot handle the kind of load that games with mass appeal will bring to the network. And so we knew that we needed to find a solution that had better scaling properties. We looked at something called sharding, which is a great way to scale a blockchain. But it also means that it is very hard for smart contracts to talk to each other. We wanted to find a blockchain that was able to scale while having the full composability of smart contracts and being able to talk seamlessly to each other. Sharding does not allow for that. So we designed our own blockchain.

From the outset, we did not want to compromise on a few things. One was the speed and efficiency. Anyone who has interacted with a blockchain knows that it actually takes quite a while before you know whether your transaction has completed. Of course, with Proof-of-Work (PoW) in existing blockchains, there is a lot of wasted effort that goes into running and securing the blockchain. Also, we did not want to compromise on decentralized participation. Blockchain is exciting, because it is a computer that anyone can use, but no one owns. If too few people are running the blockchain, then that second part that “no one owns” goes away. If someone else owns the platform that your property lives in, then they own that property, not you. That is why blockchains need to be decentralized.

The best analogy for understanding how Flow was able to scale without having to resort to sharding is the assembly line. If you have a number of people working on an individual car, only so many of them can work on it at the same time and their effectiveness is very low. Of course, cars are actually built on an assembly line, where lots of people are working on different parts of different cars at the same time. We took that as inspiration for Flow. We pipeline the build of the blockchain. Instead of having a single node type that does everything from collecting all of the transactions, running those transactions, seeing what the output is, and then coming to consensus on the output, we realized that we could break down the roles of the network into five parts.

  • We have a set of notes called Collectors. Their only job is to collect the transactions from the users and to make sure that they are well formed and hold on to them until the Executers, which do the work of performing the transactions, need them.
  • Once the Collectors have those transactions, they can pass on the records of those collections to the Consensus Nodes that run the traditional consensus algorithm. We are using HotStuff BFT, but any Proof-of-Stake (PoS) consensus algorithm will work. The Consensus Nodes come to consensus on which transactions are included in the blockchain, and in what order.
  • Once that consensus has been reached, then the Executers can come along. Those Executers can be very powerful computers, and their job is to perform those computations. Since these are mathematical computations, there is a single correct answer to the output.
  • So the Verifiers can look at their work, and they can confirm that the work was done correctly. A single honest verifiers can point to an error in what the Executers are doing, and ensure that the Executer gets slashed by the consensus nodes if there is any malicious action. This does not require that a majority of the Executors or the Verifiers are aware of the error. If someone tells you that two plus two equals five, you do not need to take a vote in order to be convinced that that is incorrect. You can do the math yourself. That is the same mechanism we leverage in Flow to make sure that those Executers are honest.
  • Then we also have Observers. They provides cryptographic proof of the state that is currently in the blockchain.

At Dapper Labs, we are consumer-focused, we are entertainment focus. When we were thinking about building a blockchain, we wanted to make sure that was something that was easier to use, mostly for users, but also for developers like ourselves. Crypto Kitties is obviously one of the most successful consumer-facing blockchain projects ever. But also, Dapper wallet was the first consumer-oriented smart contract wallet software that was released. And of course, Cheese Wizards is also a big part of our consumer initiatives.

When we were thinking about building a new block chain, we wanted to make sure that we were improving usability. Usability is not something is defined through one or two features. Usability is actually dozens of things. And we have lots of ideas. Today, I wanted to talk about three that that I think are worth highlighting.

  • First, there is this notion of a flexible account model. Our smart contract wallet on something like the Ethereum blockchain allows you to decouple your private keys from your account. So anyone who has lost their private keys at one point or another knows how painful that can be. Anyone who is worried that their key might be compromised and needs to change it knows how painful that can be. With the account model that we use in our smart contract wallet, and Dapper wallet on Ethereum, the account model is baked into Flow. You can change your keys whenever you want, you can have multiple keys associated with your account, for example one for each device. So if you lose one of your devices, you can revoke that key and not have to change anything on the other devices.
  • Human readable security is a really important issue. When you use MetaMask to sign a transaction on a smart contract, for example, you are supposed to know what the MetaMask messages mean and how they could impact your account. Well, of course, you cannot know. So when we are designing a full transaction format, we are making sure that it is something that is easy to be systematically analyzed by wallet software, so that the wallet software can provide very firm guarantees to the user about what is going to happen to the value in their account.
  • We are also bringing support for upgradeable smart contracts. You know that the first time that you release your software, it is never exactly right. When we launched Crypto Kitties, there were several things about that smart contract that in retrospect, I would have changed. But I could not change it because the smart contracts on Ethereum cannot be changed after launch. That is a good thing, that is why we trust those smart contracts. But wouldn’t it be nice if there was a limited window where you could mark your smart contract as being in some sort development state so that users clearly knew that the smart contract that they were interacting with might have some changes that are coming to it? And so they know, “buyer beware”. They know to be careful with putting value into that smart contract. But as a developer, you could still tweak that smart contract. Let us assume the trial period was about three months. About three months after Crypto Kitties launched, we were quite confident that there were not any bugs. I wish we would have been able to tweak some things in those first few months. But I am highly confident that after those first three months, we would have been able to lock that smart contract down.

So that is how Flow works. When you release the smart contract, you can — for a limited time — continue to make changes to it. When as a developer, you feel like the smart contract is solid enough that you can lock it, it turns into an uneditable smart contract like on any other smart contract platform. When we are launching a new product, we are not simply counting on the old phrase “if you build it, they will come.” Those days are past. So we want to provide some flexibility to adapt the product.

You can be sure that when Flow launches, there will be at least one if not more entertainment products from us at Dapper Labs that will be available on Flow on Day One. So if you want a preview of what open worlds look like, I encourage you to go check out Cheese Wizards.

Thank you.

If you found value in this article, please “clap” (up to 50 times).

This article is part of our Tokyo FinTech Publication, please follow us to read more from our writers, like hundreds of readers do every day.

Should you live in Tokyo, or just pass through, please also join our Tokyo FinTech Meetup. In any case, our LinkedIn page, Facebook page and our Instagram account are there for you as well.

--

--

Norbert Gehrke
Tokyo FinTech

Passionate about strategy & innovation across Asia. At home in Japan. Connector of people & ideas.