字幕列表 影片播放 列印英文字幕 The following content is provided under a Creative Commons license. Your support will help MIT Open CourseWare continue to offer high-quality educational resources for free. To make a donation or to view additional materials from hundreds of MIT courses, visit MIT Open CourseWare at ocw.mit.edu. I'm going to talk about alternate consensus mechanisms. And there's a bunch of them. And some of them are variants on proof of work. Some of them are proof of stake-- all these different things. So unique node lists-- this is something that Ripple and Stellar use. I'm not sure if there's others. Proof of stake is this huge research topic that lots of things fall under. There's lots of variance. One of them I'll talk about is delegated proof of stake. Proof of space is an interesting thing that is basically a form of proof of work that doesn't use CPU as much. There's the idea of directed acyclic graphs, which IOTA is a great example of. And then one that I came up with a few years ago and is kind of fun-- proof of idol, which is sort of silly but some of these others are silly, too. OK. And so disclaimer-- I'm OK with proof of work. So I think if you were at the class on Monday, it's a great segue into this, where, clearly, proof of work has, I don't know if you want to call it problems, but it's kind of crazy, right, all the stuff David was saying on Monday. It's not an egalitarian-- and I think in the Satoshi White Paper, he says one CPU, one vote. Well, that's not really how it works. Define CPU. Maybe you have your own CPU. Someone else has a different view. And there's that huge industry of building all these chips. So there's a lot of issues with proof of work. It's certainly not ideal. That's probably not why most people don't like it. So I, generally, in academia, in a lot of business places, people don't like the Bitcoin proof of work mechanism-- not everyone, but it's a pretty widespread. Oh, Bitcoin is bad because it uses as much electricity as Denmark or something. And I think that's a sort of early, I don't like it because it uses electricity. There's other reasons not to like it, which I think you have to go into much more depth. Like with David's talk yesterday, sure, it uses a lot of electricity. But it also uses a lot of fabrication plants, and it uses all these other distribution networks. So anyway, I get that there's a lot of-- one of the first things with Bitcoin is, OK, how can we improve upon this? How can we get rid of this huge energy sink? On the other hand, I'm sort of OK with it, right? The first thing that I thought with Bitcoin is, wow, this is going to be huge. This is going to take a lot of electricity. But it's kind of cool that it works that way. So I'm sort of OK with people-- to me, you can't really get mad at people doing things you think are stupid because you'll just get mad all the time. People mine gold. People spend billions of dollars on diamonds. I think diamonds are really stupid. But hey, if you want to dig up diamonds, oh, whatever. Yeah. There's entire cultural areas that I just have no interest in. But hey. OK. So I'll try to explain these other methods in a neutral way. But I do have my own biases, where I think like, hey, proof of work pretty much works. I think it's a cool system. And I'm somewhat skeptical of various different algorithms and mechanisms here. And also, I'm most familiar with the proof of work system and all the intricacies of it. So like with David's talk yesterday, there was some new stuff, but I sort of knew because I've talked to these people for a long time, and this is how this system works. Proof of stake-- I've seen it implemented in altcoins. But I haven't followed them that closely. So I don't know as intimately what goes wrong and all the weird details. Anyway. OK. So the first one, UNL, or unique node list. This is, essentially, the consensus mechanism used by Ripple and Stellar. For history, Ripple started in 2013? No, 2011. I don't know. It was a while ago. AUDIENCE: [? Dennis ?] says [INAUDIBLE] January 1, 2013. TADGE DRYJA: 2013, OK. So actually, the name Ripple and the idea of these debt obligations through this network actually predates Bitcoin. And then Jed McCaleb started the company. He's also the guy who started Mt. Gox. So he started Mt. Gox, I believe, in 2011 or '10-- late 2010, sold it to the Mark Karpelés, started Ripple, hired a bunch of people, sort of got fired from Ripple. There's a lot of bad-- everyone fighting. Because it was all these people who used to play Magic-- the Gathering and were friends. And now they're not friends anymore. And then, he started Stellar, which he called "Secret Bitcoin Project." And I was thinking of joining it, but he wouldn't tell me what it was. And also, I knew that other people knew what it was, like my friends, and if they weren't telling me because they're not supposed to, it was like, well, it must not be that cool. Because nobody can actually keep a secret if it's really cool. [LAUGHING] So that was my, mm, I'll just go work somewhere else. And Stellar was, more or less, a copy of the Ripple code, which was open source, so it was totally fine to do this. And then it diverged, and they added their own different parts of the consensus algorithm than Ripple did. So it's account-based, somewhat like Ethereum. Transactions have senders, receivers. What's interesting is in the Stellar case, and possibly Ripple, there's a minimum balance. So I actually had some Stellar last year, or up until last year, because I went to the initial release party, and they gave out Stellar. And I had some. And then, it wasn't much. But then, last year, I looked, and it was like, oh, this is like $200 worth. I'll sell it. And I sold it and got some bitcoins. But it was weird because they enforced a minimum balance, which seems weird to me. Because you had to retain some number of stellar units in every account, which, to me, seems sort of weird. Because that means those stellars, they're gone, in a way, in that if you open a new account and it must have 50 stellar in it forever. Well, so Stellar effectively destroyed, it just seemed-- which is a fine thing to do. It's sort of a transaction fee. But from a computer science database standpoint, it's like, why not just have it cost money to create a new account instead of have a minimum balance? So just interacting with it, it was like, huh. So there's no work. But the idea is that nodes sign transactions that they've seen. Everyone makes blocks. And you sign them, so you've got some kind of identity. Your node has a key. When you start a new node, you've got a public key/private key pair. You can sign off on transactions. This is not the case in Bitcoin, right? In Bitcoin, you have a full node. Your full node might have a wallet associated with it with public keys and private keys, but the node itself does not. Possibly in the future, there's BIP 150, I believe, which the idea is to have encrypted communications between nodes, which would have some kind of authentication. There's BIP and BIP 151. I might have them backwards. 151, I believe, is just encryption, so for privacy, confidentiality. And then, BIT 150 is for authenticity. So you connect to a node. You're like, oh, this is the same node at the same IP address that I connected to before. They're not implemented yet that I'm aware of. So right now, in Bitcoin, when you connect to people, you just use their IP address. You don't really know who they are. There's no authentication there. But in these, in Ripple and Stellar, you do know. OK. I'm connecting to this node. It's got a key. It's got an identity. So to sync, instead of verifying all the work, you verify the signatures on blocks. And the question is, whose signatures, right? So if you assume, OK, well, if we have a majority that's honest and is not trying to create transactions that are invalidated or something like that, then it might work. But majority is hard to define when you're subject to civil attacks, right? The obvious attack is I just make thousands of nodes, or maybe these nodes don't even really exist. I just make thousands of key pairs, have them pretend to be nodes in my own subnetwork, and they all endorse blocks that are different than the rest of the network is endorsing. So majority is the tricky part. How do you know who's the majority if you don't know who these people are? You need some kind of way to identify humans or computers, even. And this is a problem akin to certificate authorities. So a lot of the problems that you see in blockchain, bitcoin, these kind of things, are not exactly new problems and have sort of already been, quote unquote, "solved." So does everyone know how CAs work, or do people have some idea? Or who's like, what's a CA? OK. So it's kind of interesting. I can give a little demo. AUDIENCE: Did you say CA stands for certificate authority? TADGE DRYJA: Yes. Uh-oh. This doesn't work. Hold on. OK. So if you have a computer, I don't know where it is in Windows, but I think in Mac and Linux, it's in the same place. You go to etc and then-- shoot, I forget where it is. Yeah. Where's the certificates? Cert-- tru-- AUDIENCE: CA certificates right under the mouse. TADGE DRYJA: There it is. OK. So in your computer, and whether you have Linux or Mac, you've got a folder somewhere, etc/ca-certificates. It's something like that in Mac, as well. And, oh, no, that's not it. Where are they? Shoot. Wait, wait, wait-- what is in update.dn? And there's nothing there. Hold on. I need to find this. Because this is kind of cool. Where are X? Ah, SSL-- is that-- there we go. OK. So sorry. etc/ssl, and then you've got certs. And this folder has a bunch of certs. I trust all of these entities. Well, my computer does and, by extension, my browsers and my computer, which is crazy because I have no idea who these people are. TURKTRUST? I don't really trust Turkey. Swisscom-- Swiss people seem nice, I guess. I don't know. OK. Staat-- they're in Netherlands somewhere. There's a bunch of, just things you've never heard of. Hellenic Academic and Research Institute, Hong Kong Post. Well, Hong Kong Post Office seems trustworthy. Yeah? AUDIENCE: On the TURKTRUST one, you pointed out they have [INAUDIBLE] certificates with google.com when they're not supposed to. [INAUDIBLE]. TADGE DRYJA: And then, CNNIC is one which is like-- is that still in here? Maybe they got rid of it. And then some of them just have these numbers, and you don't even know. You have to go in. AUDIENCE: [INAUDIBLE] TADGE DRYJA: Yeah. China Internet Network Information Center EB certificates root. I actually really don't trust them to endorse-- pseudo arm-- there we go. OK, it's gone-- solved it, solved the distributed internet trust problem. AUDIENCE: Now part of the internet doesn't work for you. TADGE DRYJA: Yeah, well, I might get invalid certificate errors for some Chinese sites now. I don't go to many Chinese sites. Anyway, so that's the basic idea of certificate authorities. And this started in mid-'90s, when they wanted to make public key infrastructure for secure websites. One of the problems is how do you know-- so you've got-- oh, we didn't talk about Diffie-Hellman, or maybe I mentioned it. But you've got public keys, private keys. You've got ways to do signatures. Diffie-Hellman is a way to do key exchange. So if I know you're a public key, and I give you my public key, we can form a third, basically, key that we can then use for encryption and secure messaging. This works, but how do you know, given a key, who is on the other end? So that's the idea of certificate authorities. You have this sort of root of trust. And these certificate authorities sign certificates in websites and let you know, oh, this is the person who you think it is. So for example, Google-- secure connection. Really? How do I know? Verified by Google Trust. Well, Google has verified that Google is trustworthy, which is somewhat circular. But no, that's sort of how it works. Yeah, so Google Trust Services is a certificate authority. And they signed off their own certificate for their own website. That's maybe not the best example. OK, The New York Times, they are certified by Comodo CA, who also has had-- Comodo has gotten in a lot of trouble for signing the wrong things. So yeah. New York Times does not have an EB cert. I think Washington Post does. So there's also EB certs where-- you've got now The Washington Post, WP Company LLC. That's like an extended validation cert, which, then, the CA is saying, we didn't just check that they had an IP address and a domain name. We actually checked that they had some kind of legal corporate entity. And they sent it on their letterhead, and we, I don't know, emailed someone in Delaware to make sure they actually had a company. And this is verified by Entrust. OK. So Entrust, Comodo, those are all going to be in here. Yeah, there's Comodo. So you've got these companies called CAs that have some kind of agreement with each other. There's these standards where you make some kind of standards where, OK, don't sign the wrong thing. If you do, we're going to delete you. And then they all endorse entities' identity, usually for companies. There's also stuff now-- Let's Encrypt, which does it for free and without really endorsing anything. This whole thing, it sort of felt like it was like the big scam of the late '90s because they made billions of dollars. But then again, we got Ubuntu out of it, right? So yeah, Ubuntu was funded by Mark Shuttleworth, who started this one, I believe, and made a couple hundred million, went on the spaceship, went into orbit, had some fun. Eccentric billionaires are what fund a lot of technology development. And this is how we get them. A lot of the people who work on Bitcoin and these systems feel that the current-- it's called X.509 is the name of this whole system with these certificate authorities-- and I also sort of feel that this is a suboptimal solution in that there's a lot of problems with certificates being signed inappropriately. It works, in a way. But it's not great. So this is a problem. So the problem that these systems like Ripple and Stellar have to deal with are, in some ways, similar to the problem that is solved by CAs. So what they do is they say, we have a unique node list. We're not actually endorsing an identity from, here's a public key, here's a human name or a company name or something like that. It's we're just saying that they're unique. So it's more limited than a certificate authority. It's just saying we're certifying that these two keys belong to different people or different companies, which seems easier than the job of a CA, right? The CA has to verify that The Washington Post is actually-- whoever's presenting a public key is actually The Washington Post. So the actual certificate is just, basically, here's a pubkey, here's a name, and then the CA sign. And you can look at those and stuff. OK. So for synchronization, you wait for a majority of nodes in your unique node list to sign and, if they've signed, accept. So there's some recent papers from Ripple. And in order to really get consensus, you need, basically, a 90% overlap in your own unique node list. So if I have a unique node list of Alice and Bob and Carol, and you have a unique node list of Carol and Dave and Edna-- I don't know-- we might diverge. We might not agree on the same chain of transactions because we've got different people that were looking at their signatures. They may all be unique. But if we have different unique people we're looking to, it might not converge. So they have a newer paper that reduces that to 60%-ish, where the overlap of what unique nodes everyone needs to look at is not as large but still quite large. And then, the real question is, OK, well, who provides the unique node list? Because that's not really a job I can do. Maybe it is, in a way. If I know you, and we do some kind of web of trust thing where I'm like, oh, what's your Ripple nodes pubkey? OK. Cool, I know you. And what's your Ripple nodes pubkey? We meet in person. We sign each other's pubkeys. We do the whole PGP kind of thing, which I do. And the Bitcoin people actually do this. So if I go to-- hold on. So I've got a bunch of keys, and everyone signed them. And there's Andrew Chow and Suhas and [INAUDIBLE] and all these Bitcoin people. And I've signed their keys and they've signed my keys because we meet in person and do that kind of thing. So we've established not just a unique node list, but we've done a CA-free validation of each other's keys. We just meet in person, read each other's keys off. So you can do that, in practice. It's really nerdy, and no one does that. And it would be cool if we could get it to be easier and maybe cooler somehow. But it's been an uphill battle. So who provides the UNL? It's probably kind of obvious. Well, the Ripple company provides the UNL, right? So when you download Ripple, it has a list of unique nodes. Those are essentially de facto, the nodes that run Ripple. And at the current time, those nodes are run by the Ripple corporation, or Ripple apps. Stellar, similarly, it comes with a default UNL. It sort of acts like the CAs, right? It's sort of how when you start your computer, you've got this. This comes with your OS. And you don't really have a choice. I just deleted the CNNIC one. But nobody looks at this stuff. Everyone just goes with the defaults. So that's the problem centralization-wise. Yes? AUDIENCE: You said Ripple or Stellar actually run the nodes? Because I understand that they might sign off on the UNL if you're saying that-- TADGE DRYJA: In Ripple's-- at least a year or two ago, and they may have changed that, I think they're trying to-- but in Ripple's case, yeah. They ran their own Ripple nodes. AUDIENCE: So it's not these bank partners or anything? TADGE DRYJA: They may have some. They may now. But I know that two years ago, it was just Ripple, or majority Ripple. Because they also put in things like they can freeze funds. Because Ripple got in trouble with FinCEN. And part of the thing is they modified their code to be able to freeze people's funds if they did something bad. That's definitely not something that the Bitcoin developers, or even the Ethereum Foundation-- it's not as direct, anyway. The Ethereum Foundation did freeze funds and move them against the rules of the system in the case of the Dow. But that was, in a lot of ways, with support of a lot of the people running Ethereum. With Ripple, they can do it without much brouhaha. They just freeze these funds. So it's fast. There's no work involved. There's no worry about propagating blocks and miners getting advantages. But there's also known identities, and so it's more susceptible to subpoenas and things like that. In these cases, all the coins existed at the genesis block. So in the case of Ripple, I think it was 100 billion or something. And they just started with all the coins and distributed them as they saw fit. Same with Stellar. Stellar had this thing where they had this party, and they would give them away if you signed up on Facebook. A really interesting article about people in Manila getting thousands of used SIM cards from the US, registering for new Facebook accounts, selling those Facebook accounts to people in China, the people in China then registering with Stellar as unique people to get more stellars. When you incentivize things, weird things happen, be it either giant warehouses full of SHA256 chips or giant warehouses full of 20-year-old girls in Manila putting SIM cards in cell phones all day. Yeah. I should link to that article. It's really interesting. So anyway, this is the Stellar one. And Stellar also had this thing where they were going to give 20% of the stellar to people who held bitcoin, sort of an airdrop. I didn't get any from that. I was sort of hoping. I'm like, hey, cool-- air drop. I have bitcoin. I'll get some stellar. I didn't because you basically had to KYC with them. They said, OK, send in your-- I don't know if it was the social security number-- but send in your documents and prove that you have these bitcoins, and we will credit some stellar to the same keys. And I'm not going to do that. Yeah. Some people did. Some people got some stellar that way. Yeah. So anyway. Yeah? AUDIENCE: If Stellar's just freezing coins-- TADGE DRYJA: No. I don't know if Stellar has that capability. Ripple does. Ripple put that in. Stellar is a different-- it's similar software. They certainly argue about how different they are. Stellar had a bug in 2015, I believe, where the consensus broke. And then they said, oh, it's Ripple's code's fault. This is a fault with all this code base. And then Ripple said, no, no, no. It's because you changed it. And you don't know what you're doing. AUDIENCE: I was talking about, I guess, the minimums. You said there was a minimum. TADGE DRYJA: Yeah, there's a minimum account balance. AUDIENCE: And if there's a set number of coins, then eventually, accounts will just get-- TADGE DRYJA: Yeah. It's a lot, though. Also, there's enough forever. There's a lot of coins. But yeah. But the idea is not that you have UTXOs, like in Bitcoin, and you make new addresses each time. The idea is you have an address. You keep that forever. So why would you have multiple different addresses, that kind of thing. Anyway. So it's a pretty different system. In some ways, you could argue it's one of the first ICOs-- Ripple-- because it was pretty early. They just came up with all their coins and gave them out and then started selling them. And they continue to do that to this day. Stellar is a nonprofit, which is also sort of weird. Because if you make a billion dollars off of something, is it really a nonprofit? I don't know. The organization didn't directly make the money and then pay it to the employees or anything. But the people who have all the stellar tokens made a lot of money. Interesting sort of ways to do it. So I think both Ripple and Stellar argue that it's decentralized, distributed. But I think a lot of people say, well, maybe to some extent. But on the spectrum of completely decentralized versus one server handles it all, it's a lot further on the centralized side. And Bitcoin is also kind of centralized, too, like we were talking about on Monday. But I would argue these are more so. So anyway. Any questions about Ripple, Stellar? Pretty fun. OK. Next, the big one-- proof of stake. So this we've mentioned a little bit. It's a popular alternative where people really don't like the proof of work stuff. So instead of proving work, have the people who hold coins sign the blocks. So that bootstraps, in a way, your unique node list or your list of who's who. Well, you don't really care who they are. But if they have coins, if you already have a set of who owns what coins, you can use that to say, OK, well, the people who own coins now signed. And they, presumably, have incentives not to destroy the network they have coins in. So if you have a given genesis block with some kind of initial distribution, you can make it deterministic. You can say, I'm just going to go with whatever has the most stake, whoever has the most coins, signing off on the next block. And given two or three different histories, you can see, OK, from the start, which has the most total stakes signing off on these things? So that seems pretty cool. Here's some issues. Stake grinding-- so for example, let's say you have a system where the signer of the next block is determined by the public key nearest to the previous block hash. So for example, OK, I'm looking at the current block hash. Who gets to sign next? Well, whoever's key is closest. Use X or just treat the hash as a number and treat the pubkey as a number and see which is closest. You can do that. But the problem is if the next hash is determined by the current signer, that current signer can make a new signature each time and try to make sure that the block after is also going to be one where they are, again, the next signer. And they can make a couple hundred different accounts with their keys and then keep grinding stake. And this basically means that it turns into proof of work. Because if you can influence who's going to be the next block signer-- yourself-- keep trying different ways to sign, OK, that's basically proof of work, but instead of hashing, you're signing. And this has happened in many altcoins. One that I think was kind of interesting was Nxt, which is the people who later went on to make IOTA. They said, OK, well, we have a deterministic signature scheme, and so this can't happen, right? Given a message and a private key, there's only one signature that can be produced. And this is true. So Bitcoin uses this. It's called rfc6979. Basically, the random nonce can be deterministically created from your private key and message. The problem is-- I don't know if they realized, probably not-- but you can't enforce this. It's a policy that says, OK, I'm going to make a deterministic signature. But given a signature, you can't tell if someone did this or not, right? So it's up to you to obey this rule. But you can't verify that anyone did it. So that one also quickly devolved into proof of work and in a tricky way because a lot of people read the documentation and said, OK, well, there is no way to keep signing. Their function that they wrote, there's only one way to sign. When you sign a message with a public key, you get a single signature. But people who knew how it worked under the hood said, oh, I can change this code. It will still be accepted as a valid signature even though I'm using a different signing scheme. So this is one issue, stake grinding. There's ways to get around it. So let's say you make it deterministic. You have some way to enforce that a signer can only create one message. There are certain signature schemes where you can verifiably make sure that a single key can only make a single signature on a message. Other ways to do it is to, say, have this big lead time, where the people who are signing the next block are determined by entropy created days or weeks ago. So it's hard to know what's going to happen in a week because it's a long period of time's worth of entropy going into it. OK. There's another issue with proof of stake called nothing at stake. So rehash-- rehash-- ha ha. So in proof of work, this happens, right? This happens just by accident, where OK, there's a block. And then two people are mining on top of it. Oh, they both got this and then sometimes even this. That almost never happens in Bitcoin, but sometimes, where you just randomly get two split chains coming out at the same time. But then this happens, right? Someone builds on this one. OK, you get rid of those two. And that's just because this is a random process. You can mine on whichever you want. One of them is going to happen first. You can mine on both. You can split your hash bar. If you have a billion hashes per second, you can say, well, I'll do 500 million here and 500 million here. You can equivocate. It's sort of equivocation that way. But one of them will finish first, with very high probability. So eventually, this happens. And then everyone just starts building off this 00a3. Proof of stake-- so this happens. Also, notice that the hashes don't-- they don't start with zeros. So this happens. But then this happens. And then this happens. And then it just keeps going. Because why not sign both, right? I don't know which one's going to win, right? As a proof of stake miner or staker, I don't really know which one's going to win, which is the same case and proof of work. In proof of work, I just flip a coin and pick, right? I don't know what's going to win. I think in bitcoin, the default is go with the one I saw first. Because whatever. It doesn't matter who wins, right? Basically, I win, whichever I pick. If I'm the next one making the block, I win. But what I don't want is I don't want to be this this-- wait a sec. What I don't want to be in proof of work is I don't want to be 008a, right? I don't want to be the last one to make a block, and then something else comes out here. So I'd rather be 00f2. But you don't know here, right? So you just pick one. OK. Well, we lost. In proof of stake, you don't have to worry about that. I'll just build both, right? It takes me no work to sign. So I just sign off on both of them and make parallel chain. And then everyone just keeps doing that. Because if I pick one, I might be wrong. If I pick both, I can't be wrong. So this is a problem called nothing at stake. You have no risk here. You're not actually doing any work. You might as well just keep going. So yeah. Faced with two blocks, why not sign both? So the mitigations-- one of the ideas early in Ethereum was, OK, this thing called Slasher, where if you can prove that a signature from a different chain-- so the idea is on chain 00a3-- oh, wait-- oops. Sorry. On this chain, you say, hey, look. This guy equivocated. He signed off on two blocks, one of which exists in my history that I can point to, one of which doesn't exist in my history, but I can provide that signature. I can say, look, here's two signatures at the same block height from the same person, but they're signing different things. Let's not invalidate this block, but let's take all the rewards from the person who signed. OK. So yeah. This is called Slasher. I believe in Ethereum, like, 2014, they were saying, hey, we're going to do proof of stake. And then they tried all these things and sort of, oh, it's non-trivial. Let's start with proof of work, and then we'll move to proof of stake later. And that's currently their plan. So this was one of their early algorithms, their early ideas. There's also issues with the mitigation because maybe it's hard to get this proof into the blockchain. Because the miners, or the stakers, are the ones who determine what gets in and what doesn't. And so they certainly could say, look, if the person who created this block then sees in this block that there's a Slasher proof where, hey, I just now proved that you equivocated and destroy your account, well, the person who signed this doesn't build on this and instead forks off and builds their own, right? Why would I continue to mine on a chain where I just lost all my money? So there's all sorts of weird-- and there's mitigations for that. So it's a little bit whack-a-mole, where there's all these weird problems, and you have to try to fix them. And then fixing them introduces new weird things. So there's a lot of people working on it. Yeah. Long-range attacks is another big one. Let's say you go back to the genesis block, and you rewrite history. In Bitcoin, you can also do this. It's just really hard, right? You could say, I'm going to get a bunch of miners, rewrite all nine years of Bitcoin's blocks, and we know exactly how long that will take. sipa has a nice graph of it, I think. And sometimes it's not very long. Sometimes it's actually pretty easy to do that. Yeah, that's the other site. Hash rate-- this-- wait-- yes. Bitcoin network proof of work equivalent days. That's this year. This is since the beginning. What this means is, OK, given the current hash rate in Bitcoin, how long would it take to rewrite the entire history of Bitcoin? Because the hash rate goes up, right? And sometimes it goes up in-- so this is the all-time hash rate. It basically always looks like this because it's exponential. So if you looked at it three years ago, it would look pretty much the same. And then this is a log chart. So this actually does show some interesting detail, where, OK, this is when the GPUs came out. This is when nothing much happened in 2012. This is when ASICs came out. And then it just keeps going up. And this is log scale, where each number is 100 or 1,000 times. So it's big. So when you have these really sharp upticks, like in mid-2010, the current power of the network is so high-- that probably corresponds to this, the lowest point there, because that's the steepest slope, where I don't know what this is, a week?-- you could rewrite the entire history of Bitcoin in a week and destroy everyone's currency and have all the coins yourself if you had enough power under your control, which you could probably do. And today, it sits at around 200, a little less than 200, so a little over six months where, if you devoted all the current hash power, you could rewrite all the previous history. Still, six months-- it's a lot. And it's interesting how this changes. This is, I guess, when the ASICs first came out, and then the slope [INAUDIBLE]. So that is an issue in proof of work that can happen. It's not clear what would happen. The software, at least in theory, the idea is if something like that happens, where there's a reorg that spans nine years, well, extend this out to 500,000 and say, OK, all the stuff you've been dealing with the last nine years, it's out. We've got this new history now with one person owning all the money, presumably. The software will do that, probably, or it'll just crash or something. It's sort of seen as like, well, if there's a reorg that spans weeks or months, the whole system's broken, kind of. But probably. So this is an issue for Bitcoin. But it's a big issue in proof of stake because it seems possibly more feasible, right? In Bitcoin, there have been times when it's like, whoa, a week, yeah, that's feasible, whereas right now, it's like, OK, it would take all the hash power in existence maybe seven or eight months. So that means that Bitcoin would just halt for seven months, and then you'd see this reorg happen. And also, it assumes 51% of the miners are doing this. However, proof of stake, it might not be that expensive, especially if you can get old keys. So if you've got the keys from the genesis block in this proof of stake currency, you can rewrite a history from those with different transactions. So yeah. So a lot of the times, the solution is, OK, well, delete old keys and assume 50% honest. That's tricky. Because old keys can be sold. And I know that people have asked, hey, can I buy your old Ethereum keys? Why do you want these? Well, if proof of stake happens, they might be worth something. Currently, if you have keys that are for addresses or accounts that don't have any money anymore, it's not very useful but possibly can be sold. Yeah? AUDIENCE: Most proof of work schemes that I'm aware of use a [INAUDIBLE]. TADGE DRYJA: A proof of stake? AUDIENCE: Yeah. TADGE DRYJA: Yeah. So you checkpoint it. So basically, to prevent long-range attacks, the developers, usually, in GitHub, will just say, OK, well, the block hash here is this. And so you can't reorg before that. But then, what's the mechanism for that? If it's the developers just sticking in a checkpoint, that's not really decentralized. AUDIENCE: In the example of Aircoin, there's actually a checkpointing [? software ?] that, every few hours, forces a [INAUDIBLE]. TADGE DRYJA: OK. Well, that's even more not very decentralized. You've now got a pubkey hardcoded into the code, which then calls out to somewhere and says, OK, what's the correct block to be on? And then that key signs something, says, oh, go here. OK. Yeah. That's pretty centralized. So this is one that I think is-- it's hard, right? Because before these things happen, it's easy to dismiss as like, this is crazy. That's never going to happen. Who's going to go back and buy up all these old keys that people were supposed to have deleted? People probably did delete them. You can't assume that they haven't. And even if they did and you made this big reorg, well, everyone would know in practice that that's not the right chain, similar to if there's a nine-year block reorg in Bitcoin, everyone would know, OK, come on. We all knew what the blocks were yesterday. You can't just tell me there's this entirely new history today. And in practice, that's probably true, right? If there was a nine-year block reorg in Bitcoin, probably, people would just ignore it. Similarly, in these systems, probably, they would ignore it. But it's harder to reason about in these systems, I think. But anyway. So proof of stake, there is a bunch of coins that use it. In a lot of cases, they have centralization that's hidden in certain ways. I like the term Greg Maxwell came up called trust laundering. It's not money laundering. It's trust laundering. You sort of move where you're trusting and try to hide it. Yeah. So very common. But this also deals with, OK, who gets the initial coins? Because they have an enormous power over the system. So very common for altcoins-- less so now, I think-- was start with proof of work, then transition to proof of stake. Do they still? Not as much. AUDIENCE: Now you don't need to do that because you [INAUDIBLE]. TADGE DRYJA: Right. So you just do ERC-20. Yeah. But it used to be, like 2014, 2015, a lot of the coins would be, OK, proof of work for the first month, two months, whatever it was, with some weird algorithm and Comodo gravity well and all sorts of weird stuff. And then it would switch at a certain point to proof of stake. So that proof of work period builds out the list of who owns what in a sort of provable way. And then, from there, you can use proof of stake. Because you've got a, hopefully, fairly well distributed set of who owns what. Yeah. Some things still do this. And some things have hybrid, where you still have to do work each block. But depending on how much stake you have, depending on how many coins you have, you have to do less work. I think decred is something like that. That actually can make sense. Because you've still got work, and you can mix them in ways that negate some of the downsides of both. Delegated proof of stake. Well, signing requires you to actually do something and be online. So in a lot of proof of stake currencies, very few people actually stake because they don't care. And they leave money on the table, sure. But they don't want to run their own node. They don't want to deal with this stuff. They just buy it, keep it on exchange, or maybe keep it on their own computer. So instead, you can endorse a leader by signing with your coins and saying, hey, I'm not going to actually sign off on blocks, but I'll sign off on a different key, who now can sign on my behalf. And so this can be called supernodes, masternodes. And then is it peer-to-peer, or is it client server is what it becomes. So the current one that's pretty popular is called EOS, where I think they're doing this kind of thing. And they're like, well, there's 20 computers that run the network. And you can endorse one of them, and they'll give you some kind of profit back or something. And you need a million dollars to run one of these computers. Because it's going to be super powerful, and you can do free transactions that way. So this gets pretty far into client server territory, where you're not up here. You're just the client, and you ask them what is going on, which, in many cases, works, right? But then again, it's not quite as interesting because that's sort of the system we already have with banks. So meh. But in a lot of cases, yeah, that's what people want. I sort of joke that I should just make one called Central Coin, where there's just a nice server, and it just keeps track of who owns what, and then have an ICO. And people would use it. It's like, hey. So I think people would be into it. Anyway, so that's distributed proof of stake. OK. So proof of stake, in general, it's hard to resolve conflicts using only the system itself. Proof of work has this really nice property where it's taking something from the external world, be it CPU time, be it chips, and using that to get a dead reckoning on the system itself. That's nice. Proof of stake, the really difficult part is it's a closed system. You're trying to resolve conflicts within the system using no external data. That's really hard. Another problem people complain about is that the rich get richer. I agree it's a problem. It kind of sucks. But proof of work is the same. I don't feel like any of these systems will change the inherent Pareto distribution of wealth in the universe. That just seems to be how things work. It'd be cool if everyone had the same amount of money, I guess, maybe. But I don't think it's going to happen. Yeah. And then it relies on different assumptions. So the assumption in Bitcoin is 51% of miners can destroy the system. So in some cases, people say, well, you assume 51% honest in Bitcoin. Kind of. It's more like 51% rational. In Bitcoin, you could have miners with 51% attack the system, but they make more money by doing the right thing. So there are certain cases in proof of stake where honesty is not as profitable. And if honesty is not profitable, well, maybe there's a lot more incentive to be not honest in the terms of the system, whereas in Bitcoin, it's like you've got this nice system where it seems like the honesty is not just enforced by people trying to be nice. It's enforced by people being greedy, which seems more common than being nice in the world. So there's tons of research in proof of stake. Some of it's pretty interesting, pretty clever. I'm not super hopeful. But the thing is it works until it doesn't. And so it's really hard to show security under different attacks. So what I would worry about is you've got this proof of stake system. It seems to be working. And then something weird happens. And it's revealed as, oh, actually, this was a lot more centralized than it seemed to be, which is also a worry in proof of work. OK. Any questions, proof of stake? Yes? AUDIENCE: A quick one on the economics. Is the stake the nodes have. Yeah, right. So in essence, if it was on EOS, it's how many eos coins you have. TADGE DRYJA: Yes, yes. AUDIENCE: So then there's probably some economics where people who are not miners will lend their stake to get a return. TADGE DRYJA: Basically, yeah. And a lot of coins, the majority of the coins, are held on different exchanges. And so that means the exchanges would possibly be able to then stake and get some kind of revenue. AUDIENCE: Right. So they would be taking their customer funds that are in wallets-- they would have to be, probably, hot wallets-- and then the exchanges would have a leg up to be the miners. TADGE DRYJA: Yes. AUDIENCE: Or a [INAUDIBLE]. TADGE DRYJA: Yeah. And so that's also an issue, that there's all different ways to mitigate. And you can say, oh, I'm in an exchange, but I get to sign and delegate my stake to someone else. And then I get some kind of revenue sharing from that. But yeah. It's also tricky, how do you incentivize it in terms of how much new coins get issued to the people staking? If it's zero, then there's no real incentive to do it. You could have a lot of different chain ports. If it's very high, then it's very, I don't know, Gini net curve goes way crazy because the rich really get richer. Because the more coins you have, you have an enormous amount of revenue. So you need a balance there that's also a bit difficult, economically. That's also a problem in proof of work. I feel like one of the big issues with Bitcoin is half the coins came out in the first four years, where hardly anyone was aware of it. And that makes people not want to adopt the system. Because it's like, well, wait. You guys just got all this coin for, basically, free. You were just running your computer in 2011. I'm not going to be part of that system. So I feel like it would have been nicer if it was more of an S curve and less of a log curve. Because then, maybe it would ramp up to 2015, and then lots of coins were coming out. But anyway. So Ripple or Stellar are sort of an extreme case of that, where all the coins were initially made by one entity. And so to me, I'm like, I don't want these. That's your money. You just made it up yourself. I don't know. It just feels like kids being like, I have a bazillion dollars, and I write a bazillion dollars. It's like, OK. Well, you just wrote that. I'm not going to honor that. Anyway. OK. So proof of stake, kind of interesting. Proof of space, there's a bunch of ideas here. Some of them-- SpaceMint was some people here. I know Bram Cohen, who is the author of BitTorrent, right-- he made BitTorrent whatever 10, almost 15 years ago now-- he's now working on some of these kind of things. He's working on a proof of space coin called Chia. And the idea, it's still similar to proof of work. But you're using some kind of memory or storage space, rather than your CPU. And the idea is the benefit is, well, maybe it doesn't use as much electricity. And also, from talking to Bram with his, he's saying there's much more dead storage space than dead CPU. So every computer has a CPU, but the CPU here is not that powerful. It can't really compete with ASICs. But lots of people have empty hard drive space. And you might have a terabyte of empty hard drive space, and one terabyte's as good as another. And it's also empty is what you need. Because you need to fill in space for these systems. And so if you're like, well, I'm AWS, I've got tons of hard drives-- right, but people are using them. So you're not able to then just fill it in for these kinds of systems-- well, to some extent. They do have a lot of slack, and they can probably do it. But several ideas. Some are pretty cool. So one example-- this is sort of an example idea. It's not fully fleshed out, but to give you an idea. So you buy a 10-terabyte drive, OK? You precompute 100 billion key pairs. And this takes a long time. And this is work, right? You're doing 100 billion computations of coming up with the random private key, multiplying by G, getting the pubkey. And you store it in a key-value store, like a database-- LevelDB or something-- on your hard drive. And the key is the pubkey. And the value is the private key. So you remember your key pairs. But you've sorted it in a way so that you can quickly go through the pubkeys, right? So you have logins, search time, some kind of binary tree-- whatever it is-- in your database. And so then, the idea is, to create the next block, you want the key closest to the current block hash can sign. So a valid proof of work-- you have some threshold, maybe-- a valid proof of work is whoever's got a key that's very close to this, they're able to sign. And those keys do not exist on the network prior to the signing procedure. They exist just hidden on people's hard drives. And so the idea is you could just try to keep computing keys till you find one and then sign with it. And that would just make it completely proof of work. So it is proof of work. But the idea is you can precompute. You can do all the work beforehand. And then you can use that precomputed proof of work later on and possibly multiple times. In practice, it's not going to be multiple times. Because you've got 100 billion, and you're never going to use the same key twice. The idea is everyone does this, right? So you have trillions, quadrillions, however many keys out there that everyone's generated. And every block that comes out, someone will say, ah, I was lucky, and I made a key that can now sign the next block. So it's work, but it's amortized over weeks, months, years. And it's basically how big is your storage. If you have a lot of storage, you can precompute a lot of this stuff and then use it. So it's kind of a cool system. There's other asterisks that actually get a little more complex because you need some timing mechanisms, as well. But I think it's a cool idea. Hard drives then maybe get more expensive instead of graphics cards getting more expensive. I don't know. But the idea is like, yeah. You use the work but later on. So I don't know. Any questions about that one? Kind of cool. There's a SpaceMint-- it's a cool paper-- about how to do this cryptographically. And then Chia is another one doing this kind of idea. I like it because it doesn't really change the assumptions of proof of work, right? It is still a form of proof of work. But instead of burning electricity, you're using hard drives. Kind of cool. AUDIENCE: Wouldn't you still have the same issues, like you'd have to have ASICs just filling racks and racks and racks of hard drives for keys. Is it different? TADGE DRYJA: You already have that, right? There's server farms where they're just storage farms, and they just have tons of hard drives. So that's already a thing. AUDIENCE: But I'm saying it isn't any different. You'd still be-- it would be [INAUDIBLE]-- TADGE DRYJA: I guess the idea is the economies of scale are not quite as bad in that hard drives are already, basically, optimal at doing this. And if you can make a system that's better at doing this, you've just made a better hard drive, which, hey, great. You made a better hard drive. Everyone can use it. So I guess the idea is it's not as specific because it's just, hey, store a bunch of data and then [? seq ?] quickly through it. AUDIENCE: It still seems CPU-bound, right, compute-bound. TADGE DRYJA: No. Once you generate this-- OK, generating this is compute-bound, right? You need to populate your 10 terabyte drive. But that might only take a few hours, right? To make 100 billion key pairs, I'm guessing less than a day, right? Yeah. And you can do that in parallel. So you make it. And then once you've made it, you leave it there. And then you're going to be able to mine with that forever. AUDIENCE: But see, the winner would be whoever can fill the most number of keys per second going forward. TADGE DRYJA: But you need something to fill. I think the hard drive cost is much higher than the cost to fill it, right? Because a 10 terabyte hard drive is going to be, like, $200. And with a cheap CPU, you can fill a 10 terabyte hard drive every few hours. So yeah, the CPU is a factor, but I think it's going to be smaller. Yeah? AUDIENCE: At least from what I understand about SpaceMint, the idea is to make it not I/O bound [INAUDIBLE]. So if I have a better or faster hard drive, that's not [INAUDIBLE]. It's just [? another ?] space. TADGE DRYJA: Because yeah. This is just a seq, right? And even a crummy hard drive, you just read through your binary trainer. You're like, oh, found it. AUDIENCE: I think the point is that you're only supposed to do one with those pub [INAUDIBLE]. AUDIENCE: Yes. [INAUDIBLE]. TADGE DRYJA: So you look at, OK, here's the current block hash. What do I have that's close? Seq to that on my drive. Nope. I'm not going to win this one. OK. Let someone else do it. Or you seq, and you find it. You're like, hey, cool. I can sign. Yeah? AUDIENCE: Is this also known as proof of space and time? TADGE DRYJA: Yeah. So in Chia, they add this time component, which I'm not 100% clear on how it works. It's changed a little bit. But the idea of a time beacon is you want some function that cannot be parallelized so that if you have 100 computers doing it, it's not going to be any faster than one computer doing it. So basically, whoever's got the fastest single CPU will always win this. And that can be a time beacon for these space things. Yeah? AUDIENCE: Once you start to have a lot of storage, if you're in a search will find [INAUDIBLE], do you kind of go back to-- you're almost getting hurt. [INAUDIBLE] So what I'm saying, you're just doing the same thing again? TADGE DRYJA: I think that's a [INAUDIBLE]. If you have tons of hard drives, and you want tons of key values, and you just want to find one or find the closest match, you can do that in log n time, even over a whole data center. Google, you just search, and it's like, hey. It comes up in a fraction of a second. So that's doable. You need good software, and you need a good infrastructure to do it. But I think it's doable. It scales pretty well, I think. But yeah, it has the same issues where you just end up with people buying a whole bunch of hard drives. And what are the economies of scale there? There's arguments that it might be better than the economies of scale with, like, ASICs, that we heard about on Monday. Maybe not. I don't know. We'll see if this takes off. It's fairly new. It's an idea that's been talked about for a few years. AUDIENCE: It's [INAUDIBLE] space. And they've been around for years in this [INAUDIBLE]. TADGE DRYJA: OK. Well, so there's different ideas. I don't know. It seems like one of the more interesting. There's cool math and cool crypto involved. OK. So it'll work but amortized. So and perennial MIT favorite, IOTA, they use a directed acyclic graph. And now, a chain is also a DAG. Because it's directed. There's no cycles. It's a graph. But it's a pretty simple one. But the ideas have multiple parents, right? So if you have a block, instead of just pointing to one, you could say, well, now, this can happen in Bitcoin, right, where you've got two blocks, both supporting the same thing. But this cannot happen in Bitcoin, where you say, oh, I'm coming off, and I'm referring to both of these. But in a directed acyclic graph, you can do that. So Ethereum actually does it. I think Joe Bonneau was mentioning that. And so what happens is you endorse one as the correct one and one as the uncle. So you're saying, no, this is the real one. But I also saw this one. And give this one a little bit of money, right, maybe not the whole reward they were hoping for. But they get something. And so then, something like IOTA says, OK, we have lots. And every node points to two previous. And so you get this whole map. They could even point to different heights. So I can point to here and here. I don't really know why you'd do this. So there's some ways it could reduce latency, right? So one of the trade-offs in Bitcoin is 10-minute block time seems fairly arbitrary. It's kind of slow. Latency-- people don't like latency because they have to wait. Fine. The more important metric, I think, is that it leads to miner centralization and miner pools. Because if there's only 144 blocks a day, like in Bitcoin, if you have a millionth of the hash power of the network, you're just never going to find anything, right? If you're just mining on your own, over the course of a year, you're probably not going to find a single block, and you'll have wasted all of that effort. So instead, you join a pool and try to pool with other people to distribute those rewards. However, if there's, like in Ethereum, a block every 15 seconds, and there's millions of blocks that come out, if you have a millionth of the hash power, you might find a block. The blocks have smaller rewards, but chopping it up more finely is a nice way to do it. So like P2Pool, which you were gone, is a way to try to make that. And it's important to get it more decentralized. But it's hard. Yeah? AUDIENCE: P2Pool does that? TADGE DRYJA: Yeah. Yeah. P2Pool sort of does this as a layer on top. So it could help latency. And then, it could help reduce the amount of orphans in the blockchain, which then helps miner centralization. So there are interesting ideas for it. But it doesn't help scalability at all, right? It actually hurts scalability. Because now I have to keep track of all these things instead of just one chain. And I'm going to have to keep track of all the data, anyway, if I've got the UTXO set. I can't just ignore parts of it. So it doesn't help scalability at all. And in the case of IOTA, their custom ternary hash functions also don't help much, either. So that was what we wrote about last year. They made all their own weird stuff. I don't know. So there are interesting ideas between directly acyclic graphs. But it feels like when they say, hey, this is more scalable, I get very suspicious. Because it doesn't seem to help scalability. It does possibly help some other things. Yeah? AUDIENCE: Is, effectively, Bitcoin refreshing [? test? ?] They've made it so every block has min difficulty. And so the transactions are instant because, right, it doesn't change-- TADGE DRYJA: What, in IOTA, or in-- AUDIENCE: In any of these stack coins. So it doesn't cost much to make a new block and make a transaction. And if everyone's competing to do that, then they're just another ton of orphans, and [INAUDIBLE]. TADGE DRYJA: Yeah, yeah. So also, in the case of IOTA, the idea is-- well, they don't call it this-- but it's the equivalent of saying every block must have one and only one transaction. The transactions themselves have proof of work on them, and they point to each other, which, basically, is the same as blocks have one transaction, and you do the work yourself instead of paying a miner to do it. I think that's not a great deal. And they say that that means there's no fees. I think there's still fees. Because you're just doing the work yourself. I think that's equivalent to saying, there is a refrigerator at Home Depot that doesn't use electricity. So hey, it's electricity-free. But there's a crank on the back, and you have to crank it to make the refrigerator cold. Yeah, you could make a refrigerator that way. I don't think people would want it. You're still doing the work. You just have to crank it instead of plugging in it. So the idea of you don't have to pay miners a fee to get into a block because you just mine the block yourself or, in this case, you mine the transaction yourself. Doesn't seem that useful. Anyway, so IOTA's fun. We talked about them a while ago. OK. Last one, and it's fun-- proof of idle. It's an old idea that I wrote up four years ago, almost. It probably doesn't actually work that well. But a lot of these things don't work that well. Even if it works, it would just move the costs from opex to capex. But what you do is you prove that you're not mining, and you get paid. And the other fun thing about this is it led to some of the ideas in Lightning Network. So the idea is, in Bitcoin, the difficulty adjusts so that blocks come out every 10 minutes, right? Every 2016 blocks, you look at the timestamps, adjust the difficulty. So new miners coming in make it harder for the existing miners. So if you're a miner, you really don't want anyone else to start joining this network and mining. You really like it as it is. So if you have the first ASICs, you're good, and you don't want everyone to come in. And this is why so many people buy mining equipment and lose money. Because they look at the current difficulty, and they say, hey, here's this device. Here's how much electricity it uses, how many coins it generates. This is profitable. I'm going to buy this thing. And what they don't realize is that by the time they actually get it, or maybe a few weeks later, the difficulty is doubled. And now it's making half as many coins for the exact same amount of electricity. So yeah. And that's a fairly unique property of bitcoin that's not the case in, say, gold mining or other extractive industries. There's some kind of curve in gold mining where if you pay twice as much money to have twice as many people dig holes and mine gold, you won't get twice as much gold. Maybe you'll only get 10% more gold. But you will get some more, right? And if you drill for oil, you pay twice as much, you'll get some more. But yeah? AUDIENCE: And it's worse than that. Because you're still obligated to mine. Because making $0.50, they're making half as much as they're going to make, it's still better than making nothing. TADGE DRYJA: Yeah. So that happens, too. So yeah, in Bitcoin, two times the mining leads to 1X the coins mined, right? There is zero marginal product of labor in this system, which is weird and counterintuitive and doesn't really exist in normal life. Most things have some kind of sublinear curve, where, yeah, the first low-hanging fruit-- if you're mining coal, and you start in Pittsburgh, and it's just sitting there on the hill, and you're like, hey, that was easy. And then, eventually, you have to start open pit mines and digging holes. And it's expensive, and you don't get as good. But you still, if you double your effort, you're going to get some extra stuff out. Then again, there might be cases, I'm sure, in economics, where eventually, it goes negative, where if you continue adding members to an organization, eventually, they're just like deadweight, and they make it less efficient or something. But in Bitcoin, it doesn't matter how much you mine. You always get the same number of coins. So the obvious thing there is, well, we should all just stop mining. And then we'll have zero electricity usage, and we'll still get the same amount of coins. AUDIENCE: The example is Nobel prizes. It doesn't matter how many academics chase them, there's a unique number [INAUDIBLE]. TADGE DRYJA: OK, yeah. Yeah, that's another. Yeah. However good the science is, you just get one Nobel Prize. So OK. So let's say there's two miners. And there's, obviously, more. And they're each mining with 2 gigawatts. And they both think, well, wait. If we both turned our mining down 5%, we'd still get the same amount of coins, but we'd be using 5% less electricity. We should have a meeting, maybe some kind of cartel. So this is sort of OPEC, right? This is a classic cartel. If we all restrict our output, we can raise prices and reduce our costs. In Bitcoin, it's the perfect cartel environment. Because if we all reduce our output, we get the same output, sort of, right? If we all turned down mining 50%, we all still get the same number of coins. The network still works fine. Maybe nobody even knows we're doing this. This is ideal cartel scenario. Problem for cartels, generally, is that cartels are hard to maintain, especially when there's not a lot of trust. Because there's so much profit in defecting and going against the rules of the cartel. And OPEC has this all the time, where one of the OPEC countries says, we're just going to pump a bunch of oil and sell it. Because everyone else reducing their output raises the prices. And now we can sell more with higher prices. So in this kind of system, if all the miners said, hey, let's all turn down 50%, the one miner who then mines at full blast is going to make a lot of coins. So this is the problem. In Bitcoin, nobody trusts anyone, right? So the solution here is trustless collusion. And in the papers, I was like, well, is it collusion or cooperation? They both sort of mean the same thing. And collusion is just a bad word for cooperation. Cooperation's good. It's on Sesame Street. OK. So the basic system is Alice pays Bob not to mine. So first thing, Alice needs to prove that Bob can mine. Because she doesn't want to pay Bob if Bob doesn't have any mining capacity that he's taking offline. She only wants to pay Bob for having the ability to mine and then not doing. So A posts a block header at a specified time and says, OK, B, mine for 10 seconds, and give me your 100 best shots, right? So in Bitcoin, you have this fixed difficulty. And you just say, OK, anything below this block hash is valid. But you could make one where you say, hey, give me your best 100, and I can then extrapolate, or interpolate, from that what your hash rate is. And you can get pretty accurate. So they have to do some work, right? Bob does some work but for a brief period-- I don't know, 10 seconds. You don't want latency to be an issue, so maybe 10 seconds, maybe a minute-- whatever-- some small amount of work to prove that they have the capability to do the work. They respond with that. And Alice validates it and says, OK, you've got X amount of work capacity. Alice then creates a 2 of 2 multisig transaction and sends one bitcoin to this address and builds two transactions with Bob. This is sort of like, how Lightning Network looks, Lightning Channels. But this predates it by a year or two. So the idea is you've got this funding, and then you've got two transactions. They're both signed by both parties and held by both parties, although in practice the one that pays out to Alice, Bob doesn't really need to store. He doesn't like it. And the one that pays out to Bob, Alice doesn't need to store. But the idea is they have conflicting locktimes. So in the transaction header, you can have a locktime, say, OK, this transaction is only valid after this point. So the one that pays Alice is height plus 144. So the current height of the blockchain plus 144, well, that should take about a day, right? If blocks come out every 10 minutes, 144 blocks is one day. For Bob, Bob gets a coin with the current locktime plus 24 hours. So in Bitcoin, you can specify either Unix time or block height. And I think everything above 500 million is a time. Everything below 500 million is interpreted as a height, which means this whole system runs out in a couple thousand years. So this is a race, right? There's two transactions. One of them can be broadcast first, depending on how fast blocks come up. So if blocks come out very quickly, this will be valid first-- 144 blocks. Maybe it only takes 20 hours, and these 144 blocks have come out. And Alice can post this transaction and get all of her money back, get her one coin back. However, if blocks come out slowly and, after 24 hours, only 120 blocks have come out, Bob can post this transaction first. And it will be valid and confirmed, and Bob gets the coin. So now Bob's incentives are, well, I'd like 144 blocks to take longer than 24 hours. Because then I'll get this coin. And Bob has the means to influence this, right? Bob's a miner. So Bob can say, well, I'll just mine less. And if I mine such that, in 24 hours, only 130 blocks come out, I get the coin. Cool, right? If blocks come out fast, on the other hand, Alice gets her money back. So Alice has no real risk here that Bob will run away with the money without doing his part of the job. So Bob can slow down his mining in order to get the bounty coins. If Alice estimates incorrectly how much profitability Bob has, Bob just keeps mining. Alice gets her money back. This collusion didn't occur, at very little cost, right? Bob had to prove a little bit. There's some coordination costs. But basically, nobody loses the money. So Alice can put whatever bounty she thinks is beneficial to her. OK, I'll pay you three coins not to mine as much. And you can chop this up. You can have a lot of different, smaller transactions and make a curve. If you mine a lot less, I'll pay you more-- things like that. Yeah. So that's the idea behind proof of idle. It feels like it might happen, to some extent, long-term. It feels sort of like nuclear weapons, where everyone's got them, but they don't really use them. They just threaten. So it feels like mining could be that kind of thing, where, well, we've all got all this mining capacity, but we just threaten each other with it, and we don't really mine. Because the mining's actually really expensive, and it's just the threat of mining that you need. And if someone tries to do, say, a 51% attack and reorg, the existing mining infrastructure can spin up and say, oh, no. You thought you were 51%. You were actually 5.1%. And we're 90% offline. And we all come back online and reorg you out. It's an interesting-- I think it's a fun idea. In practice, it doesn't work now because it's mostly capex. So this doesn't help if your main constraint is building the chips, which it sounds like it still is, from David's talk on Monday, right? Yeah, you need to get electricity, sure. But also, the really big problem is getting a supply of all these chips. And this would just exacerbate that. This would make it so that I don't even need electricity. I just get the chips. I don't really care how much I'm paying in electricity because most of the time, my chips sit off. I just need to occasionally prove I have them and have the ability to mine with them. So it wouldn't solve the problem of proof of work in terms of people spending tons of money on it. But it would move it towards less electricity usage, more fabrication plant usage. Is that a good thing? Is that a bad? I don't know. And in certain cases, it may be that it saves people money. It may be that, hey, if we can collude in this way, actually, we save money. And then we can use it to build more hash power. So this might happen. I was sort of convinced in 2014. I'm like, oh, I think this is going to happen. I also thought that it would become predominantly opex in 2015 or '16. And it just didn't-- not even close. So who knows? But it's, I don't know, kind of a fun idea. OK. So in general, lots of new ideas out there. Proof of work does seem to work. But I think one of the big issues is it's not really compatible with the Kurzweil/Roddenberry future idea. Has anyone read Ray Kurzweil, like, Age of Spiritual Machines? It's sort of this futurey AI is going to make everything great, and we're all going to live forever, and computers are going to be our best friends, and we're going to take over the universe. And Gene Roddenberry of Star Trek is sort of a popular, not quite as crazy-- maybe just as crazy-- view of that. In Star Trek, they don't have money. They just sort of explore the universe and make the world a better place and stuff like that. And it's like, cool. And there's a lot of people who are into technology and research who are, maybe not consciously, but identify with these ideas, like, yeah, we're making the world a better place. Computers are going to help people, and it's going to be great. And I think one of the issues with Bitcoin and proof of work is it doesn't fit into that, right? It's sort of dystopian, in a way. And then, it's like, wait. We're going to have giant server farms performing SHA256 for the next 50 years? Like how? How does the benevolent AI fit into this system? So that's one of the reasons people-- the proof of idle idea was-- I was at University of Virginia, and Avi Shalot, who's now at Northeastern, he was like, I hate Bitcoin. Because the whole point of SHA256 is that you can't find collisions. That was the design-- collision-resistant hash function. And now, you've built this giant system, which the whole point of the system is to find collisions. Like, ah. That's the opposite of what it was supposed to be. And so it was just sort of inelegant and ugly. And that was where I'm like, well, maybe you don't really have to mine that much. And so I wrote this thing about proof of idle. But anyway, that's one of the issues that people have with proof of work. And that's, I think, one of the big motivating factors for all this other research into different consensus algorithms. And further research is required, maybe. The interesting thing is a lot of the people doing proof of work are fine with it, right? So like David, Monday, he's not interested in proof of stake. Despite the proof of work ecosystem being so crazy, he's just like, nope, this is what I'm doing. So none of the miners are interested-- I mean, miners, their job is to mine. So they're usually not interested in proof of stake. And then Bitcoin, in general, a lot of it's like, no, this seems to work. We're OK with it. This is the cost we're willing to bear. But other people want to do other systems. So further research is required, or not. But it's happening. There's tons of research into different consensus mechanisms. I would say in academic research, that's the biggest thing. What I would like to see more of is more academic research in proof of work. Because there's a little bit, but there's all sorts of interesting things with proof of work where it's like, oh, something like proof of idle or something like the stuff David was talking about on Monday. There's not much economics research into this. And I think it's a really interesting question, where you've got, hey, I've got a device that prints money, and I want to sell it to you. What? How does that work in terms of economics? How much should I sell it for? How much should I buy it for-- things like that. So there's a lot of new research into new proof of stake, different consensus mechanisms, economics that way and not as much into new forms or how proof of work works, which I think is, actually, really interesting.
B1 中級 22.22. 替代性共識機制 (22. Alternative Consensus Mechanisms) 1 0 林宜悉 發佈於 2021 年 01 月 14 日 更多分享 分享 收藏 回報 影片單字