DFINITY  >  Press & Media  >  Dominic Williams on DFINITY

Dominic Williams on DFINITY

President & Chief Scientist of DFINITY, Dominic Williams, conceived of the project after realizing that a sequence of random numbers could be used to power a consensus algorithm that secured a large scale computing network.

I'm Dominic Williams, president and chief scientist of the Dfinity foundation, the Internet Computer Project. I'm a serial entrepreneur with a sort of interest in computer science theory. What brought me to the US was I created a computer game. It was an interesting project in many ways but it grew to some millions of users and it was sort of supported by all kinds of interesting distributed systems which segued nicely into my work on crypto.

2013, I was sort of looking to move on from the computer game. In April, bitcoin went through one of its early bubbles if you like, and the price rose over $250 and drew a lot of attention to bitcoin. And funnily enough I'd heard about some of the early ideas that lead to bitcoin because I'd been using a C++ library called Crypto++ which was created by a guy called Wei Dai in 1999. And I'd been using this back in 2000 to create my own sort of certificate authority. And so I'd come across this B-money proposal and didn't really understand it. Recognized there were some interesting ideas there, but I was so busy and so involved in other things, I had to sort of just leave it behind. So when my attention was drawn to bitcoin, and I was also looking to leave the Games industry, I thought, "Wow, there's something here." I was kind of primed a little bit and I started buying bitcoin once the price came back down. I bought a whole lot at $80.

I had this idea, our credit coin for the Games industry called gamecoin, which will enable people to carry the value encapsulated in virtual goods between games, right? So you're going to use your game coins to buy virtual goods and then when you want to go to a different game, you might sell those virtual goods on a market inside the game. The game would obviously take some substantial commission on that and you could take your gamecoin to the next game. So I started looking into how that can be done. Obviously bitcoin didn't really have the properties, it was far too slow. There's 10 minute block times instead of ... It's six of them for finality so you're not really going to finalize transactions for now.

I looked around and first I started looking at Nxt, this kind of early proof of state protocol. And I started digging into that. At first I was very excited but I started digging in and I found some really strange things like, the next forger as they called it, the next person who'd be able to create a block was simply selected by taking a hash of the current miner's block, right? And I thought, "Well that's strange, because couldn't you just select the transactions so that the hash selected another minor that was your friend or yourself effectively? And thereby just take control of the network and get all the rewards for yourself. It just seemed obvious. It's such a simple thing, such a simple flaw. And so I went onto the forums and tried to get answers to these questions and I sort of stone-walled.

Then there was this announcement there was going to be a release of something called Transparent Forging, and this was meant to deliver sort of instantaneous consensus. I imagine something like Lightning network and so I sort of stayed in tune with the project, waiting to find out how Transparent Forging worked. And eventually this dude come from beyond appeared on the forum and said, "Sadly, there's no such thing as transparent forging. It's a problem of human nature." So I began in 2014 trying to redesign faster cryptocurrencies from scratch, and initially spent a lot of time studying traditional byzantine fault tolerant consensus. Ended up sort of zeroing in on a fully asynchronous byzantine fault tolerant consensus, which doesn't depend on timing assumptions, and so it's more suitable for decentralized networks.

Dfinity was an evolution of that in some way. So in early 2015 I'd realized that blockchain computer was much more interesting than just a plain old cryptocurrency. So Dfinity was a blockchain computer project. I'd realize that if you could credit block chain computer that had good performance and unbounded capacity, you could just grow its capacity to any level needed, that it could act as an alternative kind of cloud with very special properties that would make it interesting in a number of respects.

And from my work looking into fully asynchronous, byzantine fault tolerant consensus, I'd realized that you can generate random numbers using cryptography. And so I'd seen a novel way of doing that in a decentralized network. You can create consensus like perfect agreement on a sequence of random numbers that's unmanipulatable, unstoppable and incorruptible in a network of almost unlimited size without running a consensus protocol just using cryptography. And I realized that once you've got consensus on the sequence of random numbers, without running a consensus protocol, you can then use this sequence of random numbers to drive other protocols and drive agreements on other things. And that was the beginning of the Dfinity project. So when you build a business system today, you don't just focus on what the business system should do, you focus on how it should do it, right? You're building a machine.

Looks a bit like a Rube Goldberg machine, a mouse trap. You're going to assemble all these components. You're going to say, "Right, we're going to use this for the database. We're going to use this for the web server, and we're going to have a fail over system that involves hot spare node and we're going to have a script that exports the database to this place once a day. And from there I will have another script that uploads it to Amazon S3. And so there's this kind of complex assembly of components which creates the overall system. The business logic and data is kind of distributed throughout this complex system. The result is, even creating a relatively simple system involves a surprising amount of work. And one way of understanding why this would be from outside the industry, it's just to look at the size of technology books.

So I produced a recent deck and showed some of these typical books. Yeah, there's like a book on hardening Linux. This is like configuring your server so that it's less easy to hack. That was like 550 pages. There's a book on SQL, which is the query language for databases. That's 800 pages.

Dfinity takes the view that when you're building a system, a business system, when I say business system it could be a user forum, it could be an ordering system, it could be a CMS, right? It could be pretty much any kind of standard business system. When you're building such a system, you should only be focusing on what the system does, not how it does it. So in Dfinity, there's none of that. All of that complexity is gone. You just describe the what, right? Just pure business logic, no how. And if you want, you can add a user experience and what we call a sort of decentralized process becomes a DAPP, a Decentralized Application. But even within the code of the user experience, there's no notion of distribution. You're just calling into the business logic as though it was running locally in the web browser.

I think the internet computer's interesting for two reasons. On the one hand, it provides an alternative to the traditional technology stack, that is, a better way of building standard business systems. On the other hand, it provides a way of leveraging the power of blockchain, in this case, the tamper proof nature of a blockchain computer that's fast and scalable. So you can use it for blockchain re-engineering for example for creating shared supply chain systems that link up hundreds of different companies that may have formed some kind of consortium.

And you can also use it for creating a new kind of open source business. And this is a business that doesn't involve a backing organization or person. It's implemented entirely in software that runs autonomously on the Internet computer (without being controlled by an individual or an organization) that typically has an inbuilt governance system that allows it to update itself with the help of open source developers. And it can also tokenize it services in such a way that those open source developers get remunerated where it's appropriate. And I think as we go forward, we'll see a lot of these open source businesses emerging to challenge all kinds of technology incumbents. We'll see them in the social media space, we'll see them in the services space challenging organizations like Uber. This is a really, really exciting new development that can only really occur with the help of something like the Internet Computer. A truly decentralized computer that hosts software and data in cyberspace.