2018년 10월 15일 월요일

Hashed People : Extending the Internet with Blockchain from Dominic Williams, Chief Scientist of Dfinity

Dfinity is a public network of client computers providing a "decentralized world compute cloud" where software can be installed and run with all the usual benefits expected of "smart contract" systems hosted on a traditional blockchain. Hashed Post had a depth interview with the Dfinity's Chief Scientist, Dominic Williams, while he was in Korea. All questions were answered directly by Dominic.

Dominic flew out to Korea for the first time ever to join us for Korea Blockchain Week right after securing $102 million led by Polychain and a16z.






Could you talk a little about your project and what kind of issues in the blockchain space you are trying to solve?

The Dfinity project is working on a thing called the Internet Computer. Essentially we are trying to extend the Internet. The Internet provides a public resource that any two computers can use to connect. It was very successful because it’s an open resource. If you think back to the 1990s, there were a lot of private networks. For example, AOL, CompuServe... in the UK you had this thing called the information superhighway, the British Telecom. But in the end, people prefer the Internet, this open, public, decentralized network.

So we want to extend the Internet to give it more capabilities, so we want to extend the Internet so it can host software and data. So the objective of the Dfinity project is to create the Internet computer that extends the Internet and can host the next generation of the world’s software and data.




 The objective of the Dfinity project is to create the internet computer that extends the internet and can host the next generation of the world's software and data. 








In terms of random number generation and scalability, what things in your project are related to those issues?

First of all, with respect to the random number generation, Dfinity uses a protocol called the threshold relay that can produce a sequence of random numbers in a network of any scale. So we believe the Internet computer will be backed by a network eventually of possibly a hundred million computers. It’d be enormous. So the threshold relay protocol allows us to officially generate a random beacon in a network of any size in a way that is completely non -manipulable--no manipulation is possible--and also unstoppable. In fact, the protocol is able to produce a new random number with only about 22 kilobytes of network traffic. So it’s a very efficient protocol. And yet, through the magic of cryptography, it cannot be manipulated and is almost unstoppable. So threshold relay was invented at the beginning of 2015. At that point I realized I can create a new family of protocols that use the random numbers as a kind of engine, and this shouldn’t be a surprise because all synchronized consensus protocol, and indeed, Nakamoto protocol, the proof of work protocol that bitcoin uses, rely on basic, primitive random number generation. Just very very basic, primitive random number generation. 




Dfinity threshold relay cryptography

In Bitcoin, everybody races to solve a puzzle. It’s a brute force for a hash, which is a number, beneath some threshold. So in bitcoin, you create a block of transactions, and in that block, there’s a node, and you take the hash of the block of transactions, is the hash beneath the target? No? Flip the nodes. Try again. If you’re the first to find the hash beneath the target, you can broadcast a block. Of course, this is really a kind of random number generator. So the problem with proof of work is that it’s not secure. It’s easy to manipulate the random number generation of proof of work, and this creates problems. There are some other issues like it’s difficult to quantify the precise amount of compute capacity in a proof of work network. So the threshold relay has a greater advance over the original Nakamoto consensus system because now we can create random numbers in a way that is completely non-manipulable and in a way that’s extremely efficient and allows us to produce random numbers quickly. 


When I left Palo Alto, the Dfinity testnet was using a 0.65 second blocktime. The network is reaching an agreement using a protocol that is some way inspired by Nakamoto consensus but it’s different. It’s called probabilistic slot consensus. This is a genuine blockchain protocol, not like a Byzantine fault tolerance consensus protocol, which in my view aren’t suitable for the decentralized network setting because they stop working if the network becomes unpredictable if the asynchrony increases. This protocol is extremely quick and can produce finality in a couple of blocks in normal operation. So an optimal operation is producing finality every two seconds in a public network. But it’s not achieved by using a fragile consensus protocol. We’re running threshold related produce random numbers in a way that’s completely non manipulable, unstoppable, and efficient. And we’re using these random numbers to drive the probabilistic slot consensus protocol, which in normal operation can produce finality in a couple of blocks. So we’ve, in the first instance, lent on advanced cryptography to generate these random numbers and then we’ve used these numbers to drive other protocols. And of course, there are other innovations in the probabilistic slot consensus protocol. We’re using these threshold cryptography groups to notarize blocks. We’ve succeeded in achieving a real advance. But that’s only just one piece of it. 



Dfinity Threshold Signing


Back in 2015, I also produced a design for a thing called validation towers, validation trees, which you can drive using the threshold relay and the random beacon. These things will scale out validation. In the original architecture, you have a top-level chain, which uses threshold relay or something like probabilistic slot consensus to create a master blockchain. In the bottom layer, you have shards, and in the middle layer, you have this thing called a validation tree, and they’re driven by the random beacon. It’s funny that there’s been so much work on scaling because this was public since 2015.


 I think Dfinity may use a slightly different mechanism, choosing some different tradeoffs. It’s certainly true that if you want to create a high performance, secure, decentralized network, you need to start with random number generation. Unmanipulable, high performance random number generation. Because that’s how you’re able to create games, for example, that can scale out validation, and select a leader in an unpredictable way so the leader can’t be dossed. My prediction was back in 2015 that in the end all of the major blockchain projects will end up running threshold relay to generate random numbers. Currently, they use an inferior approach because we haven’t released all of the cryptography libraries necessary to create a threshold relay implementation. You need something called a DKG, a distributed key generation protocol, and we have that internally, but we haven’t released them. I know that currently a lot of blockchain projects are using BLS libraries to create random numbers.






The threshold relay has a greater advance over the original Nakamoto consensus system because now we can create random numbers in a way that is completely non-manipulable and in a way that’s extremely efficient and allows us to produce random numbers quickly. 



Dfinity Testnet Block Time 




Many people are comparing your platform to AWS cloud. What different strengths and possibilities does Dfinity offer?


So the Internet computer is a vision of a different kind of computation platform. First of all, it's true that we’re trying to extend the Internet. We think that the Internet should host software and data, not monopolistic companies like Amazon Web Services or Google Cloud or Microsoft Azure. So that’s just a fundamental thing. We believe that everybody should be able to build in an open environment and global society shouldn’t need to rely on a small number of monopolistic providers of cloud services. As a more general point, it’s dangerous.


The Internet was designed so that in the event of nuclear war, communications would continue to be possible. That was why the Internet was originally designed. To make that possible, it had to be an open network without any central coordinator that anybody could connect to. As it happened, that had another strength. That meant that lots and lots of people could independently connect and enormous growth was possible. Because anybody could now extend the Internet and anybody could provide services over the Internet. That’s why it generated such economic growth. And ultimately we believe that the Internet should host software and data. It’s better for humanity generally that we have an open platform. At the moment, most of the cloud Internet services running today reside in a small number of mega data centers. It’s dangerous. A terrorist could fly an airplane into these mega data centers and we would lose all our Internet services. People don’t think about that, but there’s a reason the Internet was designed in a decentralized way. It was so that it could be robust.


So obviously we would like to see the hosting of software and data to be more in line with the original vision of the Internet and that’s the aim of the Internet computer. But in order to get people to adopt the Internet computer, and to build on the Internet computer rather than Google Cloud or AWS, you have to give them very compelling reasons, really substantial advantages. So we also are creating a completely different model for developing software.




Dfinity 'The Internet Computer' Website Landing Page


As you know, we’re using Web Assembly, so WebAssembly is this new standard for universal software. The co-designer of Web Assembly who leads the WebAssembly process is a Dfinity staff engineer. We’re also creating a framework that enables people to create end-to-end WebAssembly based systems. In our vision, it’ll be the WebAssembly inside the browser. As you know, the current version of the WebAssembly standard has already been implemented inside Chrome, Firefox, Safari, and Internet Explorer. And Dfinity wants to provide the back end. We have a framework that’ll enable people to create systems on the Internet computer using WebAssembly


Now, we believe that there’ll be a lot of adoption of WebAssembly but it’s not enough. The framework we provide greatly simplifies software development. So if you look at today's IT infrastructure, and the tech stack people use today, it’s very expensive with respect to human resources and capital. If you take the private IT infra of the business with some government system and look at the total cost of ownership, the cost of the hardware is a very small part. The real costs are the human costs because the technology stack is too complex. And we want to make it much simpler to develop systems so that companies and governments can reduce the total cost of ownership dramatically.


Now actually there’s more hardware involved because the Internet computer performs a lot of cryptography and distributed computing. It uses a lot of replication so that it can make sure your system’s available. The hardware costs increase but the human capital costs come down a lot and they’re much bigger. The Internet computer is a swap. It’s a grand bargain. We say ok, hardware always gets cheaper. For example, you can buy a 1tb SSD for a hundred bucks. Five years ago it was a thousand bucks or something. The price of hardware always comes down, while the price of good developers always goes up. So the Dfinity proposition is that you’re going to spend a bit more installing software and running your computations and storing data, but your really big expense, human capital, is going to come right down because we’re providing a much simpler model for developing software. And so that’s the first part of the proposition--reducing costs. 


The other advantage, of course, is that once you’ve built a new software system, not only did it cost you less, but it’s running on a tamper-proof platform because it’s a blockchain, so it’s much more secure. The platform takes care of availability so your system will always be available. Your data won’t get lost. The developer doesn’t have to worry about that. The organization who owns the system doesn’t have to worry about that anymore. We have technologies that can protect the privacy of data without the developer having to do anything special. And systems on the Internet are more interoperable, it’s much easier to make them work together. There’s a whole raft of really serious benefits that we’ll be offering to give reasons to people to build on the Internet computer rather than on the legacy proprietary stack. 


On the one hand, we’re saying, “Hey, look this is the Internet computer--we’re extending the Internet as a public resource which can host software and data, and you as a company or a government can build on the Internet itself rather than some other company whom you must rely on forevermore. But we’re going to bring your cost down because we put a new software development model which has been made possible by advanced cryptography and new developments in virtual machines and language design and so on”. We got a completely new model for software development that massively simplifies the task of creating new systems and administering and maintaining new systems. So the total cost of ownership falls and the systems you create will be more secure, reliable, interoperable, and preserve the privacy of your data.




As you know, the current version of the WebAssembly standard has already been implemented inside Chrome, Firefox, Safari, and Internet Explorer. And Dfinity wants to provide the back end. We have a framework that’ll enable people to create systems on the Internet computer using WebAssembly.



Domonic Presentation at Hashed Night


So when you put all that together, you have a really compelling argument. Moreover, the Internet computer supports new kinds of software. There’s a thing called autonomous software, which is used to create open source businesses, where you have a governance system in the software and it’s tokenized, and the governance system can update the software and you can reinvent Internet services. For example, you can create an Internet dating app that guarantees the privacy of user chat data. Or you could create an open source sales force and you can reimplement sales force as an open source business to which all of the world’s developers can contribute updates and the governance systems will obviously pay the bounty and adopt the best updates. But this will be like an open version of Salesforce and it's incredible right now. You can see all of the challenges that companies face. I know startups in San Francisco that spend hundreds of thousands of dollars a month on Salesforce licenses. Really expensive. Why do they pay so much money to Salesforce? 


Because it's too complex to develop your own systems. No business wants to get their own database administrator, their own administrator of even Amazon web services. It's all just too complex, too expensive, and too risky. Too difficult to make it secure, to protect all that private data to make it secure. Too difficult to contain the system, too difficult to even build the system in the first place, right? Even if you can download the open-source system, it's too difficult. A lot of people choose instead to pay huge fees to software-as-a-service platforms like Salesforce. Why not reinvent Salesforce as an open business and Internet itself can provide that service in the form of an open system? We think that's the future. We're trying to enable a move away from the traditional legacy technology stack, away from monopolistic private hosting providers, away from traditional software components like databases and web service, to a completely new framework that's based on open-source standards like WebAssembly, and runs on the Internet itself, the Internet computer.


We're trying to cut people's costs and enable people to create systems that are secure, reliable, preserve privacy of data, and interoperable, and to enable a creation as well of a whole new generation of Internet services that are open and people will be more comfortable building on top of. Because it's very dangerous building on top of today's monopolists. Remember when Zynga built on top of Facebook. Zynga was this big game startup in San Francisco. And they created Farmville and had astronomic success, but they were building on top of Facebook. And then Facebook changed the rules. And overnight they couldn't grow anymore. They were kind of screwed. That’s an example of what can happen if you build on top of today's monopolists. We believe that the future of the Internet is open, in the future Internet services will be much more open, foster innovation, provide a much better environment for entrepreneurs and startups. And this will create a kind of mutualized network effect, which really drives adoption once it takes off.





Zynga was this big game startup in San Francisco. And they created Farmville and had astronomic success, but they were building on top of Facebook. And then Facebook changed the rules. And overnight they couldn't grow anymore. 




When it comes to blockchain platforms, we believe that it’s very important for developers to adopt it in order to boost the ecosystem. Do you have any strategy to make more developers use your platform?


There are two parts to the adoption puzzle. The first part is that there is an enormous amount of capital invested in the blockchain industry, an enormous amount of enthusiasts and people who want to create decentralized applications. But today they have a problem: they can produce proof of concept -- DApps. But these DApps never get traction because the underlying platforms aren't sufficiently mature. So there are people out there wanting to create consumer Internet service DApps, there are people out there wanting to create corporate platforms. But all of them are stuck in this kind of limbo because the underlying platforms can't support their needs. And we believe that when the Dfinity network launches, that many of the developers who are creating systems on other blockchains will simply move across because finally, we will provide them with a chance to go into production. So we think a lot of these existing blockchains will serve to bring new people into the market and allow them to develop their ideas, provide an interesting playground, but that eventually people will need Dfinity to actually go into production, so we anticipate a lot of migration into the Dfinity platform when it launches. 



On the other hand, we're not really looking just to the blockchain industry, but rather the whole tech industry. We want to attract developers who don't know anything about blockchain. People that just want to create a private business system. In that case, our strategy is really founded around WebAssembly. The best analogy I can give is Node.js. Node.js is the back end platform for javascript developers, and it’s really a horrible platform. I tried it once as an experiment to build a system and I was horrified. But I think it's the most widely used back-end platform in the world, and the reason was that they recycled JavaScript developers. Like all these new young developers came into the industry and became software engineers and they built stuff inside the web browser, and they didn’t want to use all this old stuff. They wanted to create stuff using Node. I think Node.js has about 20 million users, which I don't know is true, but it's enormous. It’s the world’s most used platform. So we believe there will be mass adoption of WebAssembly in the browser. And people will start creating very sophisticated browser-based user experiences using WebAssembly. And Dfinity is actually developing languages and tools to help them do that. And we're going to create a very seamless experience so that you can create a system with a front-end user experience and a back end that persists data on the Internet computer that’s very seamless. It's end to end WebAssembly so if you’ve learned WebAssembly and you're using these tools to create your own user experience inside the browser, you won't have to learn anything at all to extend that and to put some of this WebAssembly code on the Internet computer. It's going to be a end to end and very seamless to the extent that you can write code in the same language and you won’t really need to know much additional information at all if you’re a WebAssembly developer using these tools to extend it to. So in the same way that JavaScript developers drove the adoption of Node.js and made it the most widely used platform in the world, we believe that the WebAssembly developers will also drive the adoption of the Internet computer.


On the one hand I think there will be a lot of migration from the other blockchains, from developers who really want to build production systems and actually hopefully get to the point where they can gain market traction and adoption. On the other hand we will be targeting the mass market of developers who don't have any blockchain skills and have become introduced to WebAssembly and suddenly find that now they can create with great efficiency these complete systems with a back-end, with much less work, without needing to know about all these legacy tools, and that their systems are secure and reliable, and interoperable with each other, can even preserve the privacy of data. So we're of course looking at the blockchain industry but we're also looking at the mass-market, thinking about where software development is going, and laying the groundwork for mass-market developers to come onto Dfinity.




We're not really looking just to the blockchain industry, but rather the whole tech industry. We want to attract developers who don't know anything about blockchain. People that just want to create a private business system. 



Dfinity Logo



To inspire traditional developers who aren't jumping into the blockchain industry, do you have any new user cases or advantages of Dfinity that can inspire them?


We're trying to create a platform that’s future-proofed. We haven’t released it yet, but we have a framework for WebAssembly called WebCanisters and we're going to push that live at some point. There is a lot of work still to go but we're going to try to create a new open standard. Potentially people can even take this WebCanister framework and run it on other blockchain. So the first recommendation is that developers invest in skills that rely on open platforms. Because there are hundreds of blockchains. How are you going to determine which one is going to be the dominant? And by the way, the history of technology shows that there will always be enormous consolidation. Once blockchains can actually provide the features that people want--the speed, the reliability, the development environment ,and so on--there will be rapid consolidation. So the danger is you choose a blockchain that sounded good, but unfortunately when something like Dfinity launches and the market begins to consolidate, you chose the wrong blockchain. Now you invested all your time in learning about some crazy proprietary wacky thing.So we're going to try to help people by pushing open WebAssembly standards that even other blockchain can adopt too to try to reduce the risk that developers face--getting caught on the wrong platform. At the moment I think it's a pretty tough call for developers. The safest bet for developers right now is to build on Ethereum.


Ethereum has a huge developer community. The problem is that Ethereum only supports a very narrow band of use cases. It's really a smart-contract-only platform. You can use it for things like ico's and it has a cypherpunk kind of application. But you can't create a business service on Ethereum because the network is unreliable. And of course it's for example, sometimes a big ICO runs on Ethereum, but then the network runs out of capacity and it doesn't work for a day or something. Business systems have to be constantly available and also provide good performance. Currently, Ethereum takes about 600 seconds to finalize a computation. It's very difficult to create a good user experience when finality takes that long. So there's a lot of things you can do with Ethereum but it's a very narrow band of use cases. But I don't think Ethereum is going away--it will remain as a kind of “cypherpunk” smart contract platform. I think Ethereum is the best way to invest your time in at the moment. But the next generation of systems will be WebAssembly based. But it's not just WebAssembly. It’s the framework that you use to develop your WebAssembly System and Dfinity is trying to enable standards that will enable you to create portable systems. That means you’ll be able to hopefully run them on lots of different chains. The risk that your investment in learning these technologies is wasted will be reduced





Do you have anything to share with Korean public audiences?


Firstly, I hope that anyone interested in the project participated in the airdrop. I believe we’ve almost air dropped to about 75,000 users now. Watch the Dfinity project. It's amazing because we didn't do a big ICO. We haven't had big visibility but people should watch the Dfinity project. We’re constantly trying to find a balance between protecting our work until it’s time to release, and telling people about what we’re doing. But we do release updates. And we're very interested in collaborating with people who want to build on top of a platform like the Internet computer. We're working on ways of giving people this WebAssembly framework before the network launches so people can start building the portable systems in advance. Please stay in touch with the project. Watch the project, watch the Dfinity team page. The Dfinity team page will be updated in a few days with even more people. 


We're succeeding in hiring the world's top research scientists and engineers, and there’s a reason for that. It’s because the core science is very strong. And the reason Dfinity didn't run a big ICO is that we were concerned about the opportunities of other projects, and we didn't want to be in the same category. So we’re well-intentioned, and you can see why people are attracted to the project. And watch the team page grow. The team page tells a lot about what’s happening inside the project. I think there's a lot of projects out there that don't even have team pages. And people should be very careful. I understand that there is a lot of enthusiasm in Korea to invest in ICO's, but I think people should be a little more careful and ask a few more questions. Ask to see the team page, look at the resumes of the people involved, and remember that this market is going to consolidate very dramatically. It may consolidate much earlier than people think because there's a lot of work happening behind the scenes to develop the next generation of system.

Drop here!




Please follow our page, if you like us!



댓글 없음

댓글 쓰기

Powered by Blogger.