back to indexEthereum Basics (Vitalik Buterin) | AI Podcast Clips
Chapters
0:0 Intro
5:0 What is Smart Contracts
6:51 How hard was it to build Ethereum
11:32 Proof of Stake
12:46 Virtual Miner
15:42 Sharding
18:19 Software Engineering
20:24 Timelines
23:53 Future of sharing ideas
26:34 Ethereum composability
00:00:00.000 |
So then what is the origin story, maybe the human side, but also the technical side of 00:00:09.720 |
So, I joined the Bitcoin community in 2011, and I started by just writing. 00:00:16.680 |
I first wrote for this sort of online thing called Bitcoin Weekly, then I started writing 00:00:23.200 |
Sorry to interrupt, you have this funny kind of story, true or not, is that you were disillusioned 00:00:32.720 |
by the downsides of centralized control from your experience with WoW, World of Warcraft. 00:00:41.480 |
I mean, the event is true, the fact that that's the reason I do decentralization is witty. 00:00:47.520 |
Maybe just a small tangent, have you always had a skepticism of centralized control? 00:00:57.740 |
Has that feeling evolved over time or has that just always been a core feeling that 00:01:01.400 |
decentralized control is the future of human society? 00:01:06.240 |
It's definitely been something that felt very attractive to me ever since I could have learned 00:01:13.760 |
So great, so you joined the Bitcoin community in 2011, you said you began writing. 00:01:21.160 |
Started writing, moved from high school to university halfway in between that, spent 00:01:30.480 |
Then at the end of that year, I dropped out to do Bitcoin things full time. 00:01:37.120 |
And this was a combination of continuing to write Bitcoin Magazine, but also increasingly 00:01:44.000 |
And I traveled around the world for about six months and just going to different Bitcoin 00:01:49.600 |
I went to first in New Hampshire, then Spain, other European places, Israel, then San Francisco. 00:01:56.640 |
And along the way, I've met a lot of other people that are working on different Bitcoin 00:02:01.640 |
And when I was in Israel, there were some very smart teams there that were working on 00:02:06.960 |
ideas that people were starting to call Bitcoin 2.0. 00:02:11.320 |
So one of these was covered coins, which is basically saying that, hey, let's not just 00:02:16.640 |
use the blockchain for Bitcoin, but let's also issue other kinds of assets on it. 00:02:21.360 |
And then there was a protocol called MasterCoin that supported issuing assets, but also supported 00:02:26.240 |
many other things like financial contracts, like domain name registration, a lot of different 00:02:34.400 |
And I spent some time working with these teams, and I quickly kind of realized that this MasterCoin 00:02:44.280 |
protocol could be improved by kind of generalizing it more. 00:02:47.760 |
So the analogy I use is that the MasterCoin protocol was like the Swiss Army knife. 00:02:51.920 |
You have 25 different transaction types for 25 different applications. 00:02:57.280 |
But what I realized is that you could replace a bunch of them with things that are more 00:03:03.860 |
So one of them was that you could replace like three transaction types for three types 00:03:09.120 |
of financial contracts with a generic transaction type for a financial contract that just lets 00:03:14.840 |
you specify a mathematical formula for kind of how much money each side gets. 00:03:21.960 |
What's you say financial contract, just the terminology, what is a contract? 00:03:28.580 |
So this is just generally an agreement where kind of either one or two parties kind of 00:03:35.360 |
put collateral kind of in, and then they, depending on kind of certain conditions, like 00:03:42.600 |
this could involve prices of assets, this could involve the actions of the two parties, 00:03:49.760 |
They kind of get different amounts of assets out that just depend on things that happened. 00:03:55.720 |
So a contract is really a financial contract is at the core, it's the core interactive 00:04:04.160 |
Yeah, there's, there's many different kinds of financial contracts. 00:04:07.680 |
Like there's things like options where you kind of give someone the right to buy a thing 00:04:12.060 |
that you have for some specific price for some period of time. 00:04:15.000 |
There's contracts for difference where you basically are kind of making a bet that says 00:04:22.080 |
like, for every dollar this thing goes up, I'll give you $7 or for every dollar that 00:04:26.360 |
thing goes down, you give me $7 or something like that. 00:04:30.640 |
But the main idea that these contracts have to be enforced and trusted. 00:04:36.120 |
You have to trust that they will work out in a system where nobody can be trusted. 00:04:44.680 |
Okay, so you were seeking to kind of generalize this basic framework of contracts. 00:04:55.160 |
So what technically are the steps to creating Ethereum? 00:05:00.520 |
So I guess just to kind of continue a bit with this MasterCoin story. 00:05:04.240 |
So started by kind of giving ideas for how to generalize the thing. 00:05:08.760 |
And eventually this turned into a much more kind of fully fledged proposal that just says, 00:05:14.280 |
"Hey, how about you scrap all your futures and instead you just put in this programming 00:05:19.840 |
And I gave this idea to them and their response was something like, "Hey, this is great, but 00:05:26.080 |
this seems complicated and this seems like something that we're not going to be able 00:05:31.520 |
And my response to this was like, "Wait, do you not realize how revolutionary this 00:05:38.080 |
What was the name of the programming language? 00:05:43.480 |
So then I kind of went through a couple more rounds of iteration and then the idea for 00:05:54.880 |
And the idea here is that you just have a blockchain where the core unit of the thing 00:06:03.600 |
It's these kind of accounts that can hold assets and they have their own internal memory, 00:06:13.220 |
And so if I send some Ether to a contract, the only thing that can determine where that 00:06:18.760 |
Ether, the currency inside Ethereum, goes after that is the code of that contract itself. 00:06:27.520 |
And so basically you're kind of sending assets to computer programs becomes this kind of 00:06:34.720 |
paradigm for creating these sort of self-executing agreements. 00:06:40.800 |
It's so cool that code is sort of part of this contract. 00:06:48.060 |
So how hard was it to build this kind of thing? 00:06:52.180 |
I mean, originally I actually thought that this would be a thing that I would kind of 00:06:56.660 |
casually work on for a couple of months, publish, and then go back to university. 00:07:10.940 |
A whole bunch of people came in offering to help, a huge number of people have expressed 00:07:16.180 |
And this was something I was totally not expecting. 00:07:19.420 |
And then I realized that this would be something that's kind of much bigger than I had ever 00:07:28.300 |
And then we started on this kind of much longer development log of making something that lives 00:07:35.620 |
up to this much higher level of expectations. 00:07:41.020 |
Is it fundamentally like software engineering challenges? 00:07:47.980 |
So what are the biggest interesting challenges that you've learned about human civilization 00:07:53.460 |
and software engineering through this process? 00:07:57.940 |
So I guess one of the challenges for me is that I'm one of the kind of apparently unusual 00:08:04.860 |
geeks who was never treated with anything but kindness in school. 00:08:09.660 |
And so when I got into crypto, I kind of expected everyone would just kind of be the same kind 00:08:20.780 |
But the algorithm that I used for finding co-founders for this thing was not very good. 00:08:27.620 |
It was literally what computer scientists call the greedy algorithm. 00:08:31.060 |
It's the first 15 people who replied back offering to help are the co-founders. 00:08:35.380 |
Oh, you mean like literally the people that will form to be the co-founders of the community. 00:08:53.660 |
Especially as the project got really big, there started to be a lot of this kind of 00:08:59.100 |
Like I wanted the thing to be a non-profit and some of them wanted to be a for-profit. 00:09:04.740 |
And then there started to be people who were just kind of totally unable to work with each 00:09:09.860 |
There were people that were kind of trying to get an advantage for themselves in a lot 00:09:17.100 |
And this just about six months later led to this big governance crisis. 00:09:22.620 |
And then we kind of reshuffled leadership a bit. 00:09:28.500 |
Then nine months later, there was another governance crisis. 00:09:31.220 |
And then there was a third governance crisis. 00:09:35.500 |
If you're looking at the human side of things, is there a way to optimize this aspect of 00:09:42.700 |
It seems that there is, from my perspective, there's a lot of different characters and 00:09:53.780 |
I also like to think that most of the people in the world are well-intentioned, but the 00:10:01.020 |
way those intentions are realized may perhaps come off as negative. 00:10:10.100 |
Is there a hopeful message here about creating a governance structure for cryptocurrency 00:10:17.980 |
After about four rounds of reshuffling, I think we've actually come up with something 00:10:27.940 |
I mean, I definitely do think that most people are well-intentioned. 00:10:33.900 |
I just think that one of the reasons why I like decentralization is just because there's 00:10:40.340 |
this thing about power where power attracts people with egos. 00:10:43.620 |
And so that just allows a very small percentage of people to just ruin so many things. 00:10:56.420 |
Within the Ethereum research team, I feel like we've found also a lot of very good people 00:11:04.020 |
that are just primarily just interested in things for the technology. 00:11:10.940 |
And things seem to just generally be going quite well. 00:11:17.100 |
Yeah, when the focus and the passion is in the tech. 00:11:22.580 |
But the technology side, what have you learned? 00:11:25.700 |
What have been the biggest challenges of bringing Ethereum to life on the technology side? 00:11:31.980 |
So I think, first of all, just there's the first law of software development, which is 00:11:39.300 |
that when someone gives you a timetable, switch the unit of time to the next largest unit 00:11:50.540 |
So instead of taking three months, it ended up taking 20 months to launch the thing. 00:11:57.780 |
And that was just, I think, underestimating the sheer technical complexity of the thing. 00:12:05.900 |
So for example, one of the things that we've been saying from the start that we would do, 00:12:10.820 |
one is a switch from a proof of work to a proof of stake. 00:12:14.620 |
More proof of stake is this alternative consensus mechanism where instead of having to waste 00:12:20.620 |
a lot of computing power on solving these mathematical puzzles that don't mean anything, 00:12:24.780 |
you kind of prove that you have access to coins inside of the system. 00:12:29.460 |
And this gives you some level of participation in the consensus. 00:12:33.460 |
Can you maybe elaborate on that a little bit? 00:12:38.940 |
I know that a lot of people say that the idea of proof of stake is really appealing. 00:12:42.540 |
Can you maybe linger on it a little longer, explain what it is? 00:12:47.060 |
So basically the idea is like, if I kind of lock up a hundred coins, then I turn that 00:12:55.260 |
into a kind of quote virtual miner and the system itself kind of automatically and randomly 00:13:02.740 |
assigns that in a virtual miner the right to create blocks at particular intervals. 00:13:08.780 |
And then if someone else has 200 coins and they lock and lock those 200 coins, then they 00:13:13.780 |
get a kind of twice as big virtual miner, they'll be able to create blocks twice as 00:13:18.740 |
And so it tries to do similar things to proof of work, except instead of the thing and rate 00:13:26.820 |
limiting your participation being your ability to crank out solutions to hash challenges, 00:13:33.900 |
the thing that really limits your participation is kind of how much coins you're locking into 00:13:40.580 |
So that limited participation doesn't require you to run a lot of compute. 00:13:52.260 |
So rich people are more like their identities more stable, verifiable or whatever the right 00:14:07.940 |
I think my usual answer to this is that proof of work is even more of that kind of system. 00:14:14.660 |
I didn't mean it in that statement as a criticism. 00:14:17.900 |
It's equivalent to proof of work is the same kind of thing. 00:14:21.660 |
But in the proof of work, you have to also use physical resources. 00:14:26.660 |
And burn computers and burn trees and all of that stuff. 00:14:29.900 |
Is there a way to mess with the system over the proof of stake? 00:14:35.700 |
There is, but you will once again need to have a very large portion of all the coins 00:14:40.060 |
that are locked in the system to do anything bad. 00:14:44.500 |
And just to that, maybe take a small tangent, one of the criticisms of cryptocurrencies, 00:14:48.940 |
the fact that I guess for the proof of work mechanism, you have to use so much energy 00:14:55.840 |
Is one of the motivations of proof of stake is to move away from this? 00:15:04.860 |
Is there like legitimately environmental impact from this? 00:15:09.820 |
I mean, I know the latest thing was that Bitcoin consumed as much energy as the country 00:15:17.180 |
And then Ethereum is like right now, maybe only like half an order of magnitude smaller 00:15:29.020 |
What's the status of proof of stake as the mechanism that Ethereum moves towards? 00:15:34.900 |
And also, how do you move to a different mechanism of consensus within a cryptocurrency? 00:15:42.300 |
So Ethereum 2.0 is a collection of major upgrades that we've wanted to do to Ethereum for quite 00:15:49.460 |
The two big ones, one is a proof of stake and the other is what we call sharding. 00:15:55.180 |
Sharding solves another problem with blockchains, which is a scalability. 00:15:59.400 |
And what sharding does is it basically says instead of every participant in the network 00:16:04.980 |
having to personally download and verify every transaction, every participant in the network 00:16:09.580 |
only downloads and verifies a small portion of transactions. 00:16:13.260 |
And then you kind of randomly distribute who gets how much work. 00:16:17.680 |
And because of how the distribution is random, it still has the property that you need a 00:16:23.060 |
large portion of the entire network to corrupt what's going on inside of any shard. 00:16:28.340 |
But the system is still very redundant and very secure. 00:16:34.100 |
How hard is that to implement and how hard is proof of stake to implement? 00:16:42.620 |
Proof of stake and sharding are both challenging. 00:16:47.780 |
The reason is that proof of stake is kind of just a change to how the consensus layer 00:16:53.540 |
Sharding does both that, but it's also a change to the networking layer. 00:16:57.760 |
The reason is that sharding is kind of pointless if at the networking layer, you still do what 00:17:01.860 |
you do today, which is you kind of gossip everything, which means that if someone publishes 00:17:06.420 |
something, every other node in the client hears it from on the networking layer. 00:17:11.580 |
And so instead, we have to have kind of subnetworks and the ability to quickly switch between subnetworks 00:17:18.300 |
And this is all doable, but it's a more complex architecture. 00:17:22.420 |
It's definitely the sort of thing that has not yet been done in cryptocurrency. 00:17:25.660 |
So most of the networking layer in cryptocurrency is you're shouting, you're like broadcasting 00:17:32.380 |
messages and this is more like ad hoc networks. 00:17:35.740 |
Like yeah, you're shouting within smaller groups, smaller group, but you have like a 00:17:45.580 |
So it's a beautiful idea from a graph theoretic perspective, but just the software, like who's 00:17:53.860 |
Like if this was a theorem project, like the people involved, would they be implementing 00:17:58.100 |
like what's the actual, you know, this is like legit software engineering. 00:18:06.260 |
How do people collaborate, build that kind of project? 00:18:08.860 |
Is this like almost like, is there a software engineering lead? 00:18:14.260 |
Is there, is it a legit, almost like large scale open source project? 00:18:20.140 |
So we have someone named Danny Ryan on our team who has just been brilliant and great 00:18:25.940 |
And he is a kind of de facto kind of development coordinator, I guess. 00:18:32.860 |
It's like you have to invent job titles for this stuff. 00:18:35.540 |
The reason is that like we also have this unique kind of organizational structure where 00:18:40.740 |
the Ethereum Foundation itself kind of does research in-house, but then the actual implementation 00:18:45.780 |
is done by independent teams that are separate companies and they're located all around the 00:18:54.780 |
And so, you know, you kind of just need a bunch of kind of almost nonstop cat herding 00:19:01.860 |
to just keep getting these people to kind of talk to each other and kind of implement 00:19:07.460 |
the spec, make sure that everyone agrees on kind of what's going on and kind of how to 00:19:13.600 |
So how far into the future are we from these two mechanisms in Ethereum 2.0? 00:19:17.940 |
Like what's your sense of the timeline, keeping in mind the previous comment you made about 00:19:24.140 |
the sort of general curse of software projects? 00:19:34.020 |
So phase zero just creates a proof of stake network and it's actually separate from kind 00:19:39.060 |
of proof of the proof of work network at the beginning, just to kind of give it time to 00:19:45.660 |
Do people get to choose, sorry to interrupt, do people get to choose, I guess? 00:19:48.900 |
Yes, they get to choose to move over if they want to. 00:19:52.860 |
Then phase one adds sharding, but it only adds sharding of data storage and not sharding 00:19:59.660 |
And then after that, there is kind of the merger phase, which is where the accounts 00:20:06.340 |
and smart contracts, like all of the activity on the existing ETH1 system just kind of gets 00:20:14.560 |
And then the proof of work chain gets forgotten and then all the things that were living there 00:20:19.400 |
before just kind of continue living inside of the proof of stake system. 00:20:24.040 |
So for timelines, phase zero has been kind of almost fully implemented. 00:20:34.440 |
Because now it's just a matter of a whole bunch of security auditing and testing. 00:20:40.240 |
My own experience is that right now it feels like we're at about a phase comparable to 00:20:47.160 |
when we were doing the original Ethereum launch when we were maybe about four months away 00:20:57.160 |
So how, you know, it took like over a decade for people to move from Python 2 to Python 00:21:03.640 |
How do you see the move from like this phase zero for different consensus mechanisms? 00:21:11.640 |
Do you see there being a drastic phase shift in people just kind of jumping to this better 00:21:19.180 |
So in phase zero, I don't expect too many people to do much because in phase zero and 00:21:24.800 |
phase one, the new chain, they get it deliberately and it doesn't have too much functionality 00:21:29.960 |
It's there just like if you want to be a proof of stake validator, you can get things started. 00:21:33.880 |
If you want to store data for other blockchain applications, you can get started. 00:21:38.920 |
But existing applications will largely keep living on each one. 00:21:43.040 |
And then when the merger happens, then the merger is a operation that happens all at 00:21:50.800 |
So that's kind of one of the benefits of a consensus system that like on the one hand, 00:21:54.560 |
you have to coordinate the upgrade, but on the other hand, the upgrade can be coordinated. 00:22:02.720 |
Casper FFG is the consensus algorithm that we are using for the proof of stake. 00:22:08.320 |
Is there something interesting, specific about Casper FFG, like some beautiful aspect of 00:22:15.280 |
So Casper FFG combines together kind of two different schools of consensus algorithm design. 00:22:23.240 |
So the general two different schools of the design are, right? 00:22:27.480 |
One is a 50% fault tolerant, but dependent on network synchrony. 00:22:33.760 |
So 50% fault tolerant, but it can tolerate up to 50% of faults, but not more. 00:22:39.360 |
But it depends on an assumption that all of the nodes can talk to each other within some 00:22:47.200 |
Like if I send the message, you'll receive it within a few seconds. 00:22:51.120 |
And the second school is 33% fault tolerant, but safe under asynchrony, which means that 00:22:58.760 |
if we agree on something, then that thing is finalized. 00:23:02.400 |
And even if the network goes horribly wonky, the second after that thing is finalized, 00:23:08.520 |
That's fascinating how you would make that happen. 00:23:16.360 |
I'd recommend the Casper FFG paper if you just search like archive as in like ARXIV 00:23:34.120 |
This idea of just putting out white papers and papers and putting them on archive and 00:23:37.720 |
just putting them publicly, is that at the core? 00:23:42.560 |
Is that a necessary component of cryptocurrencies? 00:23:44.960 |
Is that the tradition started with Satoshi Nakamoto? 00:23:50.800 |
What do you make of the future of that kind of sharing of ideas? 00:23:55.280 |
And it's definitely something that's kind of mandatory for crypto because crypto is 00:24:01.760 |
all about making systems where you don't have to trust the operators to trust that the thing 00:24:08.680 |
And so if anything behind our system works as closed source, then that kind of kills 00:24:15.200 |
And so there is a sense in which the fundamental properties of the category of the thing we're 00:24:22.080 |
trying to build just kind of forces openness. 00:24:25.420 |
But also openness just has proven to be a really great way to collaborate. 00:24:29.640 |
And then there's actually a lot of innovation and academic collaboration that's just kind 00:24:34.080 |
of happened ad hoc in the crypto space the last few years. 00:24:38.400 |
So for example, we have this forum called ETH Research, that's like E-T-H-R-E-S-E-A-R 00:24:47.320 |
And there we publish just ideas in a form that's kind of half formal, like it's halfway 00:24:56.720 |
It's a kind of a text write up and you can have math in it, but it's often much shorter 00:25:03.560 |
And it turns out that the great majority of new ideas, they're just kind of fairly small 00:25:09.360 |
nuggets that you can explain in like five to 10 lines. 00:25:12.000 |
And they don't really need the whole formality of a paper. 00:25:16.600 |
They don't require the kind of like 10 pages of filler. 00:25:19.040 |
And so introduction and conclusion is not needed. 00:25:22.920 |
And so instead you just kind of publish the idea and then people can go comment on it. 00:25:34.400 |
No, so Casper FFG is just kind of combines together these two schools. 00:25:39.720 |
And so basically it creates this system where if you have more than 50% that are honest 00:25:51.440 |
and you have a network synchrony, then the thing kind of goes as a chain. 00:25:55.680 |
But then if network synchrony fails, then kind of the last few blocks in the chain might 00:25:59.440 |
get replaced, but anything that was finalized by this more asynchronous process can't be 00:26:10.160 |
And so you essentially get a kind of best of both worlds between those two models. 00:26:16.560 |
I'm going to be reading the Casper FFG paper. 00:26:20.080 |
Apologize for the romanticized question, but what to you are some or the most beautiful 00:26:29.680 |
Just something surprising, something beautiful, something powerful. 00:26:33.680 |
Yeah, I mean, I think the fact that money can just emerge out of a database if enough 00:26:38.760 |
people believe in it, I think is definitely one of those things that's up there. 00:26:44.400 |
I think one of the things that I really love about Ethereum is also this concept of composability. 00:26:50.220 |
So this is the idea that if I build an application on top of Ethereum, then you can build an 00:26:56.160 |
application that talks to my application and you don't even need my permission. 00:27:03.160 |
So one really fun example of this is there was this game on Ethereum called CryptoKitties, 00:27:08.760 |
the just involvement of breeding digital cats. 00:27:11.520 |
And someone else created a game called CryptoDragons, where the way you play CryptoDragons is you 00:27:17.800 |
have a dragon and you have to feed it CryptoKitties. 00:27:22.160 |
And they just created the whole thing just like as an Ethereum contract that you would 00:27:29.120 |
send these tokens that are defined by this other Ethereum contract. 00:27:34.780 |
And for the interoperability to happen, like the projects don't really need to, like the 00:27:39.920 |
teams don't really need to talk to each other. 00:27:41.720 |
You just kind of interface with the existing program. 00:27:45.760 |
So it's arbitrarily composable in this kind of way. 00:27:48.200 |
So you have different groups that could be working. 00:27:50.960 |
So you could see it scaling to just outside of dragons and kitties. 00:27:55.400 |
It could be you build like entire ecosystems of software. 00:28:00.080 |
And I mean, especially in the decentralized finance space that's been popping up in the 00:28:05.920 |
last two years, there has been a huge amount of really interesting things happen as a result 00:28:11.680 |
Is it a particular kind of like financial applications kind of thing? 00:28:18.300 |
So this is a kind of tokens retain value equal to one dollar, but they're kind of backed 00:28:30.800 |
So as far as decentralized exchanges goes, there's this really interesting construction 00:28:38.040 |
that has existed for about one and a half years now called Uniswap. 00:28:43.140 |
So what Uniswap is, it's a smart contract that holds the balances of two tokens. 00:28:49.440 |
We'll call them token A and token B. And it maintains an invariance that the balance of 00:28:53.960 |
token A multiplied by the balance of token B has to equal the same value. 00:28:58.240 |
And so the way that you trade against the thing is basically like you have this kind 00:29:02.720 |
of curve, you know, like X times Y equals K. And before you trade, it's at some points 00:29:09.340 |
And then after you trade, you just like pick some different, any other points on the curve. 00:29:12.880 |
And then whatever the delta X is, that's the amount of A tokens you provide. 00:29:16.440 |
Whatever the delta Y is, that's the amount of B tokens you get or vice versa. 00:29:20.400 |
And that's just, and then kind of the slope at the current points on the curve kind of 00:29:30.760 |
And that just allows you to have this exchange for tokens. 00:29:36.720 |
And even if there's very few participants and the whole thing is just like so simple 00:29:42.700 |
and it's just very easy to set up, very easy to participate in. 00:29:46.640 |
And it just provides so much value to people. 00:29:52.340 |
And the fundamental, the distributed application infrastructure allows that somehow. 00:30:02.860 |
This is all a computer program that's just running on Ethereum.