{
  "episodeId": "SLP77",
  "speakers": {
    "stephan": {
      "name": "Stephan Livera",
      "role": "host",
      "tag": "STEPHAN"
    },
    "kalle_rosenbaum": {
      "name": "Kalle Rosenbaum",
      "role": "guest",
      "tag": "KALLE"
    }
  },
  "segments": [
    {
      "speaker": "stephan",
      "time": "00:08",
      "start": 8.21,
      "text": "Hi and welcome to the Stephan Livera podcast focused on Bitcoin and Austrian economics. Be a better Bitcoiner by learning about the economics and technology of Bitcoin. Today I've got an interview with Kalle Rosenbaum, author of Grokking Bitcoin. But before we get into the interview, a quick announcement. As I mentioned recently, I'm looking to partner with advertisers for this podcast. To make this a sustainable venture going forward. I wanna make it clear that I'm looking to partner with reputable and ethical businesses that I believe provide a product or service that my listeners can benefit from. So with that said, I'm pleased to announce a new ongoing sponsor for the podcast, Kraken. So a quick word for the sponsor, Kraken. Over my years in Bitcoin, I've been impressed with the way Kraken operate in terms of offering strong security and acting ethically in the space under Jesse Powell's principled leadership. They're one of the longest- standing Bitcoin exchanges and they're consistently rated the best with a high quality platform offering the best liquidity in the industry. They've got high trading volume and low fees, with no minimum or hidden fees. Kraken have twenty four seven support and I found it extremely fast to go through the KYC process and as an individual. On the institutional and business solution side, they're very popular with institutions too, ranging from funds and asset management to trading firms to crypto businesses. They offer the highest available API rate limit And there's a Kraken OTC desk. Kraken offer five fiat currencies and also offer margin and futures trading. So to learn more and sign up, go to the Kraken link in the show notes. So with that said, onto the interview. Kalle, welcome to the show, mate. I've had a chance to read your book and I think it's fantastic. Thank you."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "01:52",
      "start": 111.78,
      "text": "I, I'm very pleased to be here with you on your excellent show. Thank you very much."
    },
    {
      "speaker": "stephan",
      "time": "01:57",
      "start": 116.81,
      "text": "Thank you, thank you. Yeah, so look, I've had the chance to read your book and, you know, so I went and bought it, I saw it, and I also listened to your appearance on Noted with Pierre and Michael as well. And, yeah, so I had a chance to read the book, I thought it was fantastic, and I thought, \"Yeah, I've got to get you on and we can talk about it.\" And, you know, because one thing with this book is it might be seen as like, \"Oh, that's only for developers,\" when really the Users have a duty to try and improve their own knowledge, and your book is fantastic for that. So I guess, just while the-- just for the listeners, I, I would say a few comments here. I think the diagrams in the book are really, really key, they're really good. I think it's well structured in terms of like how you kind of build the book together, and it's quite informative, and it's-- I think it's reasonably concise for the amount of stuff you cover, but that said, it's quite dense. So I've, I've gone through Just because there's a lot of different concepts that you can sort of pull together, even for someone who's been around for, you know, years now. but look, let's, let's talk, let's get a little bit of background on you just for the listeners, those of, those of them who don't know you so well, tell us a little about yourself."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "03:12",
      "start": 191.67,
      "text": "Yeah, I'm 45 years old. I've been working for, as a software developer, a Java developer for 20 plus years now."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "03:24",
      "start": 203.62,
      "text": "and I got into Bitcoin in 2013. I, I always been a fa-fan of, grassroots mo-movements like Linux and stuff like that, BitTorrent, so, So Bitcoin was pretty, interesting to me from the be-- very beginning,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "03:44",
      "start": 224.34,
      "text": "but it took me a while to, to, to understand the technology, because I'm, I'm, I'm, I'm not a cryptographer, I don't-- I didn't know much about distributed systems, or anything like that, so, it was a pretty steep learning curve for me. And the resources, available back then were, well, mostly developer focused, well, I am a developer, but I prefer visual explanations, before diggin- into code. Yeah. So,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "04:18",
      "start": 257.69,
      "text": "and I, I started my, I-- Well, finally, I, I kind of grokked Bitcoin and started my own consultancy. trying to, see if I could make a living off of Bitcoin, and, it worked out pretty well. And about two and a half years ago, I was contacted by, by a publisher called Manning Publications. And they asked me if I wanted to write a book about, blockchain. And, I w-- I answered them back and said I would be delighted to write a book about Bitcoin. 'Cause I, I'm a bit of a maximalist. Very nice. yeah. But, yeah. So we, we talked back and forth a few times and, I also wanted to make the book, available open source. So it's gonna be available open source, it's written in the contract and, it's ready for publish now, the open source version, but it's coming in the next few weeks. So Keep your eyes"
    },
    {
      "speaker": "stephan",
      "time": "05:17",
      "start": 317.49,
      "text": "open. It's a great thing that some of these books have been open sourced. I know Andreas Antonopoulos' famous book, Mastering Bitcoin, was also open sourced. Jimmy Song's Programming Bitcoin book is also open sourced, so that's very much in line with the Bitcoiner ethos. Another point I just wanted to highlight, just for the listeners, I thought this is a great point, I actually tweeted this out recently, it was David Harding's foreword in your book, and he mentioned how Bitcoin needs books like Grokking Bitcoin, but it also needs an active group of users understand the technical principles on which Bitcoin is built. And he, so he's saying those who read this book will understand how the system prevents cheating and will be able to help ensure that future changes preserve that essential feature and its many benefits."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "05:59",
      "start": 359.04,
      "text": "Yeah. I wish I could, make formulations like that myself."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "06:06",
      "start": 366.11,
      "text": "he's, he's a very good writer, David Harding, and, I agree with every word. Bitcoin needs an active group of users who actually understand the system and can raise flags when, bad, bad proposals emerge. It's, it's, it's key bitcoins, for bitcoins, security. Yeah. For example, we wanna, we wanna make sure that, that the supply of Bitcoin doesn't grow more than we Is what we signed up for, and also, all sorts of like, for example, the two X SegWit two X, proposal that floated around. People who don't understand the fundamentals of, of Bitcoin will be easy targets for scammers and deceivers."
    },
    {
      "speaker": "stephan",
      "time": "06:52",
      "start": 411.96,
      "text": "Yeah, they want your Bitcoin. Yeah. And I guess, and I think, later in the book, maybe we can get into this later, you, you talk about the, the way that forks can be activated and that, the, I think the listeners will- You'll appreciate in the, you know, if you listeners go and get the book, you'll see there's a section about how things can be signaled or how a fork can reach a, a, a locked-in state. So that's also really cool. so Kalle, let's, let's talk a little bit about what was your process in making the book?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "07:19",
      "start": 438.67,
      "text": "it was pretty straightforward. the first few rounds of, draft chapters were horrible, of course. I- Writing is- Writing? Yes, it is definitely. So I, It, it usually went like this. I, I wrote a, a draft chapter and I showed it to, to my development editor at Manning, and, they had also one, a pedagogy guru there called Bert, his name was Bert Bates. So I talked to them about each chapter and they gave me feedback. And I, you know, sat down again with it and rewrote it, and then we went on, on to the next chapter. so it's-- and that, that process took about one and a half year. And then after that, we had the, we had this, production phase where we do copy editing and proofreading and... I had an illustrator redoing, redoing all my images because my original images were, pretty ugly, but they were informative but ugly. And the, the illustrator, the illustrator made a terrific job at, improving my images, so I'm very pleased with him."
    },
    {
      "speaker": "stephan",
      "time": "08:31",
      "start": 511.41,
      "text": "Another interesting aspect there is around curation. How did you decide what was important to be included and what do you not include because it's unnecessary technical detail?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "08:43",
      "start": 523.24,
      "text": "yeah, it's good. Question, I, I didn't have a process for it or anything like that, it just, what, what I felt was necessary for the reader to understand. If it's not necessary for the reader to understand, it's, it's not in the book. And I, I also try not to speculate on, on the future of Bitcoin or write about upcoming technologies that, like Taproot, for example, stuff like that, I don't. I don't speculate on, on possible future technologies. I do mention Lightning a few times, but, but that's ac-- that's actual technology live today. What"
    },
    {
      "speaker": "stephan",
      "time": "09:16",
      "start": 555.98,
      "text": "about the process of technical review? Did you have any, like for example, did David Harding review any of it or did any other Bitcoin developers do some technical review?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "09:26",
      "start": 566.09,
      "text": "That's, that's one of the things that I, I regret about the book, that I didn't en-engage a more knowledgeable person than me, early on, because we could have caught some errors, earlier in the process. So it's not, it's not really technically reviewed by, like people like David Harding, but it's, it's reviewed by ordinary readers, but not, not from, not with a, not From technical expertise. Unfortunately, I, I, I regret that, but I, I'm still confident that the book is accurate enough because I ask a lot of questions for-- so, you know, I, I just don't write this by heart. I look everything up thoroughly. So, and, and when I see-- when I'm in doubt, I, I ask questions on Stack Exchange or, or on Twitter or-- Great,"
    },
    {
      "speaker": "stephan",
      "time": "10:19",
      "start": 619.07,
      "text": "yeah. So look, in terms of the split of the book, it might be interesting to just actually talk through a couple of the, the topics as well. So one of them I, I was thinking it would good, would be valuable for my listeners is what is cryptographic hashing and, you know, the different types of, resistance, right? So you've got the pre-image resistance and so on. Could you outline a little bit of that for the listeners?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "10:41",
      "start": 641.2,
      "text": "Yeah, I'll try. Yeah, cryptographic hash functions are, are, you know- A very key component in Bitcoin, I mean, everything in Bitcoin relies on cryptographic hashing being secure. So cryptographic hash, hash, cryptographic hash function is a function that takes one input and gives one output. And, if you If you in-- if the input, input can be anything, it can be any string, so if you input hello, it will output a thirty-two bit, thirty-two byte value, a thirty-two byte string String of data. And each time you input hello, it will output the exact same, output, which is the hash. The output is the hash. so hello will give you the hash A. If you, if you, input, hello world instead, it will output a totally different hash. for example, B. If you modify the input just a little bit, the output will look, look completely different, and you can't run this function backwards. You can't, you can't start with a hash and easily find an input that will produce this hash So it's a one-way function. So the only known way of finding an input that matches a, a, a specific output is trial and error. And since the output is thirty-two bytes, which is two hundred and two hundred and fifty-six bits, you have two to the power of two hundred and two hundred and fifty-six bits Two, two to the power of two hundred and fifty-six tries, trial and error is the only way to, to find a matching input. An input is also co- an input for a specific hash is called a preimage, and there are s-several, different Types of properties. So like resistance,"
    },
    {
      "speaker": "stephan",
      "time": "12:33",
      "start": 752.83,
      "text": "yeah? Yes,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "12:33",
      "start": 753.49,
      "text": "yes. So, so you need, you need pre-image resistance, second pre-image resistance, and collision resistance. And I'll, I'll, if you want to, I can talk a little bit about them."
    },
    {
      "speaker": "stephan",
      "time": "12:45",
      "start": 765.12,
      "text": "Yeah, that would be great. I think the listeners would get from that. Yeah."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "12:48",
      "start": 767.7,
      "text": "Yeah. So, pre-image resistance, that's when you have an-- That's when you have a hash, for example, A, and you wanna find an input that, that produces that hash. A preimage, and then you have second preimage resistance. That's when you actually, you have a hash, and you also know one preimage of that hash. So it, it could be hello, for example. So you know a hash A, and you know the word hello as an input. And then your task is to find another different input that also produces the hash A. So that's second preimage resistance. You need-- you wanna find a second preimage. And then you have collision resistance. collision resistance makes it hard to find two different inputs that produce the same output, regardless of what that output is. So it can be any output, just the, the only, the only thing you look for are two pre-images that will produce the, the same output. So that's, that's our three variants of, of this, pre-image resistance, if you"
    },
    {
      "speaker": "stephan",
      "time": "13:52",
      "start": 832.01,
      "text": "will. Another really cool thing with that is the, pre-image resistance. That's a concept that kind of comes up multiple times, right? So for example, people who are trying to learn about Lightning, they will know that the hash time lock contract there is also dependent on this idea of pre-image resistance. Existence, because what it's saying is, I, I generate this secret and I create the hash, and you aren't allowed to spend it unless you-- unless I give you the pre-image. And obviously for security, it's, it has to be difficult for you to gen-- to, you know, kind of brute force or find that what was my actual pre-image. So that's a quick example there. And I think another cool area that I, I, I found it very fascinating and perhaps a little bit of a mo-- a walk down memory lane of like the different transaction types. So Do you wanna just tell us a little bit about what are some of the common transaction types and what was common back in the early days? You know, say the addresses starting with one, and then through to some of the newer types?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "14:52",
      "start": 891.93,
      "text": "Yeah, yeah, I can talk a bit about that. in the very beginning, people sent each other money To, to, to a public key. So the first, the first transaction sent money to, to an explicit public key. So in the output of a transaction, you said, \"If I wanna send Stephan money, I would, I would get your public key from you, and I will...\" Put the public key in the output, and then, I will publish this transaction, and then you can just spend it by providing your, providing a signature in your input that spends my output. So that's paid to, paid to public key."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "15:36",
      "start": 935.68,
      "text": "there were a few drawbacks with that because, first you reveal your public key early on before, before you actually spend the, the money, and also it Takes quite a bit of space in the output, so the payer has to pay more for"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "15:55",
      "start": 955.38,
      "text": "my transaction has to pay more More for s-your Stefan's, security."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "16:04",
      "start": 964.45,
      "text": "And then, then came, pay to, pay to public key hash. That's another type of payment where you actually, you don't, you don't reveal the public key in the output. Instead of the public key in the output, you put a, a, a hash of the public key in the output. So when I wanna send you money, Stefan, I, I create, a, a Bitcoin transaction with an output, and I put the hash-- you give me the, the, the hash of your public key, and I put that hash into the output. And then what you need to do when you wanna spend that money, you, you, you put your public key in your input and you p- Which matches the hash in my output. So you put your public key there and a signature in your input. That's the most common, commonly seen transaction still today, I think, and that's, that's the addresses that start with a one. That you mentioned,"
    },
    {
      "speaker": "stephan",
      "time": "17:02",
      "start": 1022.38,
      "text": "yeah."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "17:02",
      "start": 1022.48,
      "text": "That's the address everybody is used to. And then I think it was in 2013, a new type of payment emerged called, pay-to-script-hash. So that takes that a bit further. So instead, instead of just taking a hash of a public key, which is pretty Static, it's not very, it's not very, versatile. Instead of that, you can, you can decide how you wanna lock your money. So you create a script that will, secure your money, and you hash that script, and you give that script hash to me, and I take that script hash and put in my output. And I, I, I, and I publish the transaction. So when you wanna spend this later, you need to provide the script and the necessary, credentials for, for satisfying that script. So you-- that could be a, a multi-sig script, for example, that, that requires two out of three signatures, for example. So, and that all of a sudden becomes very, very, flexible."
    },
    {
      "speaker": "stephan",
      "time": "18:04",
      "start": 1084.31,
      "text": "It allows for a lot of different ways that you can set up the transaction. And I think when- What you're also, explaining in the book is how-- Okay, so to the naive person who doesn't really understand Bitcoin, they, they might just think, \"Oh, I just-- It's like sending from my account to your account.\" But in reality, it's more like every time you're sending Bitcoin, it's like you are kind of melting down the gold and recasting those into, you know, different pieces. And each of those little pieces is what we refer to obviously as the UTXO. And each of those outputs, you un-unspent transaction outputs, then form- The inputs to the new transaction, and I suppose one, another thing that you explain in the book, as I understand it, then, is it's that each of those outputs has a certain, like, encumbrance placed upon it, and you-- it's sort of certain conditions that you must satisfy in terms of Bitcoin script before you may spend those UTXOs, or before you may spend those outputs into some, someone else."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "19:02",
      "start": 1142.47,
      "text": "Exactly. Yes. and to continue then, so, so after this, pay to public key. Pay to script hash type, we, we got SegWit in two thousand and seventeen, yay! Excellent. And, yeah, excellent. And that, Seg-Wit provides two new ways, well, nat-two new native ways of, of spending or paying. They, they are called, BECH32 addresses. And so instead of-- There are two versions, two versions. One is pay to witness public key hash. And one is we-pay-to-witness-script-hash, and they are similar to pay-to-public-key-hash and, and pay-to- Script hash, but they are done slightly different. First of all, the addresses look different, they start with B C one Q today. The, the actual, the data in the input that you need to provide to, to spend your money isn't put in, in, in the same area of the transactions anymore. they are put in a struct-- in a different structure besides, beside the, more like an attachment to the transaction. So you move, you move the transaction, you move the credentials to- to, to an external structure, if you will, and that, that solves a few problems, more, most notably with, transaction malleability. Transaction malleability is, is, has been a huge problem in Bitcoin because, transaction malleability basically means that you, you can, you can change A transaction, just a tiny bit, without invalidating it, and you, you can't change the effect of the transaction. You can't change, what money it spends or where the money goes, but you can change-- you can, you can make sub-subtle change, subtle changes to it, and that will cause its transaction ID, its hash, the transaction hash to change, but the transaction effect will be the same, and that causes a lot of problems when, when you, when you build, smart contracts like in Lightning, for example. I think it's depends on this, unman-unmalleability, if you will."
    },
    {
      "speaker": "stephan",
      "time": "21:14",
      "start": 1273.96,
      "text": "Right. And I, as I understand it, the one of the problems is because the TXID changes, and that may basically ruin downstream transactions that are referring to this transaction because you've changed the TXID. Exactly. And that is why mat-transaction malleability was a problem, and that's why SegWit helped, well, that's why we wanted SegWit to help fix that. Yes, exactly. Yeah. So look, I think the other thing we- With the different, so there's different SegWit versions as well. So there is SegWit version zero zero, and then now with Taproot and so on coming, that might go up to z- version zero one. so can you just tell us a little bit about zero zero?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "21:55",
      "start": 1314.77,
      "text": "Yeah. So first of all, s- yeah, one important feature of SegWit is that, the scripts is versioned. So each output, each segwit output contains a version now, and that means that, and the first, the, the, the, the currently existing version is zero zero, as you said. But, with this version, it will be possible to upgrade the script language to another language, with a soft fork. And that's very powerful because new, new, if I'm an old node and I, I only know about, version zero scripts. And I, if I receive a transaction that pays money to or that spends a version one script, I will just accept it, and that makes it, possible to do Script upgrades via soft fork so that we won't, split the, the blockchain when during such upgrades. So, The native SegWit types that we see today and the nested, SegWit, payment types we see today, they are version zero. And then there's a proposal now from Peter Wuille and Some more people that introduces Taproot, and that's, that's, an upgrade to the, to the script system that will make signature aggregation Within, within, within single inputs possible, and it will enable, Schnorr signatures. I, I, I won't go more into detail on, on Schnorr because I'm not, very-- I don't know that too well. Yeah, these are quite, these are quite"
    },
    {
      "speaker": "stephan",
      "time": "23:42",
      "start": 1422.1,
      "text": "technical topics, so, yeah, I totally appreciate that."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "23:45",
      "start": 1424.94,
      "text": "But, but a very, a very important feature of this Taproot system is that it makes, complex scripts indistinguishable from, simple scripts. So every script Every, every script that's, spent in the, in the, in the most normal way, if everybody agrees in a contract, the script The, the, the payment will look just like a, pay to public key hash script. It's very important for, for privacy."
    },
    {
      "speaker": "stephan",
      "time": "24:19",
      "start": 1458.62,
      "text": "Fantastic. And I, I think another interesting thing you chat about in the book is this, When doing upgrades, that, as you mentioned, the, the backwards and forwards compatibility. And so because with Bitcoin, the idea is the network needs to stay in consensus, ideally, and if an old node cannot understand a transaction from a new node it might cause a big problem, right? And so you-- And then in your book, you explain how you sort of need it both ways. We needed both backwards compatibility and forwards compatibility. So can you just explain a little on that?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "25:00",
      "start": 1499.64,
      "text": "Yeah. So, I hear a lot of people saying that, soft fork is a backwards compa-compatible upgrade, but I'm not sh- I don't know why they use that terminology, because when I read about backwards and forwards comp compatibility, forwards compatibility means that old software accepts data from new software. So if, so and that's what happens in, in a soft fork. So if, in a soft fork, for example, when we, when SegWit was in-introduced, if a SegWit node produces a block, a SegWit block An old node needs to understand or accept that block in order to keep everybody on the same chain, chain. And that's what I call as forward, compatibility. And that's, that's the hard part. The easy part in an upgrade is backwards compatibility, which means that New, new software will accept data from old software. So that's just a matter of an if clause in the code, like if not segwit block, do it the legacy way, otherwise do it in this new shiny new way. So that's, forward and backward compatibility, and it's very important for Bitcoin to keep changes forwards compatible,"
    },
    {
      "speaker": "stephan",
      "time": "26:22",
      "start": 1581.63,
      "text": "to"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "26:22",
      "start": 1581.79,
      "text": "not"
    },
    {
      "speaker": "stephan",
      "time": "26:22",
      "start": 1581.99,
      "text": "split the network. In the book, you explain how nodes communicate and they pass on transactions, and I think this is an- Another example of where having, some deeper understanding of what's happening underneath the hood gives people a better idea about what's coming with some of these upgrades and potential ideas of up, of, new ways of doing things. And a quick example is early, right? So there's this new idea of, try to reduce the amount of, network kind of usage by the node, and in order to sort of help understand that, we have to sort of understand, well, what's, what's going on right now? How do nodes communicate right now? And in your book, you actually explain here, there's like a three-step process, right? So you've got INV where it's sort of saying, \"Oh, hey, I've got, you know, this TX, I've got this particular transaction,\" and then, You can request it and say get data, and then they will TX, they'll actually send you that transaction."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "27:16",
      "start": 1635.8,
      "text": "Yeah, it's-- These kind of networks are called gossip networks, and I think it's an excellent name because it actually tells you exactly how this network works, because it's, it's a network of nodes, and each node knows-- Each node new knows a few other nodes, but they don't know all nodes, so it's a network of nodes. A node, maybe we should explain what a node actually is. A no-- A node is a piece of software running on a computer, and it's usually Bitcoin Core. The software is usually Bitcoin Core, and it runs on a computer, and it-- this, this software is connected to other- Nodes. And, as I said, no-- a node doesn't know every, every other node, so, they will just talk to the nodes they know, and those nodes will talk to the nodes that they know, and so on, until information propagates throughout the whole network. So it's called a gossip"
    },
    {
      "speaker": "stephan",
      "time": "28:13",
      "start": 1693.12,
      "text": "network. Excellent. And I think the other thing I was interested to also talk about is how upgrades were done in the past and how they can-- how they signaled, and then what were some of the- History around whether they were kind of signaled or supported and some of the language around that, was, changed. It, it shifted, right? So at one point it was seen as like, \"Oh, it's voting, the miners are voting,\" and then I think the understanding evolved a little more there to say, \"No, no, it's actually they're more like they're signaling readiness.\""
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "28:43",
      "start": 1723.01,
      "text": "Yeah, exactly. So, some early upgrades used, version bumping. They just in-increased the block version, with, with, with one to signal that they, would support this new feature, for example, I think Check Locktime Verify, for example, that's a, that's an, that's an opcode in, in the Bitcoin scripting language. Check Locktime Verify was introduced By in-increasing the block version. And so miners, miners who supported this new feature, this new opcode would, would use this higher version number in their blocks, and pe-people could then count the number of blocks that supported this new feature. And when we have a, had an overwhelming majority of, of the- Of the block supporting a certain feature, we said, \"Okay, it's-- it seems like, most miners are on board,\" or \"It seems like most nodes are on board, actually.\" That's what people Think. so when we had ninety-five percent or so, we started rejecting blocks that doesn't,"
    },
    {
      "speaker": "stephan",
      "time": "29:53",
      "start": 1793.4,
      "text": "That aren't valid, right?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "29:54",
      "start": 1794.48,
      "text": "Yeah, yeah. And, but, but that signaling is just what it is. That's just signaling. That's not-- there's nothing Miners can lie as much as they want, and they can game the system in different ways. I, it's-- so we, we don't really know how, how broad the adoption of a certain feature is in an upgrade. We, we can't really know for sure. We can only guess, and that's why we-- Yeah. So, so and that's, that's also, and, and it, and we can also, we, we can only see how, what is supposed miner,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "30:39",
      "start": 1839.27,
      "text": "we, we, we can only see what the miners signal. We can't see what the users are signaling or what the users want. We can only see what the miners are signaling, and they can lie, and they don't usually don't represent users as-- in general. And that's what happened in SegWit. When we introduced SegWit, we, which wasn't signaled by just, increasing the, increasing the block version, it was signaled by so called version bits, that's another way of signaling. But, what we saw there was that miners only, only thirty percent of the blocks or so were signaling for, for SegWit. so it plateaued somewhere there, and that was quite, quite frustrating because, because it seemed like users wanted this SegWit system, but miners for some reason didn't. And so we had, we had to-- so a few miners could veto, veto, A system upgrade that most users wanted, that the econo-economic majority wanted. of course, we, we couldn't know for sure what the economic majority wanted, but, but It kind of seemed like, users wanted this upgrade."
    },
    {
      "speaker": "stephan",
      "time": "31:54",
      "start": 1913.59,
      "text": "Yeah. So actually, just on that, could you just articulate, just for the listeners, what is the economic majority?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "31:59",
      "start": 1919.11,
      "text": "Yeah. That's, that's the, that's the majority of the Bitcoin economy. The big-- Bitcoin economy, economy is everyone who has, who participates in, in Bitcoin in some way. I have a little Bitcoin, so I, I'm part of, of the, of the economy, and an exchange is a part of the economy, economy, and merchants are part of the economy, and miners are also part of the economy. Everyone involved in Bitcoin some, somehow, are part of the Bitcoin economy. And I'm not sure if there's a, if there's a great, defi-definition of econ-economic majority, but let's say ninety-five percent of all the Bitcoin holdings want something, want something Segwit, for example, that's, that's then, then you can safely say that you have a economic majority for, for this Segwit upgrade."
    },
    {
      "speaker": "stephan",
      "time": "32:50",
      "start": 1969.77,
      "text": "And I think the other interesting aspect that you bring up in the book is also how some of these things can be enforced in a certain way. So maybe before we get to that, it might just be interesting to talk about what powers does a node have versus what powers does a miner have, right? And so in the book, you explain how nodes are the ones who basically verify that a transaction or the block is valid and, you know- Know that there's not more than twenty-one million inflation, all that sort of thing, but whereas miners have the power to either, you know, vary the chronology of the transaction and also the power to try to, you know, an individual miner could try to not broadcast your, or to not include your transaction into the block, but obviously there's a bit of a game theory there that if one miner doesn't, then another miner might have the incentive. And so I think the other way, the other part there is that if- If the nodes don't agree with what the miners do, the miners can be at risk of basically mining on a chain that has no value. And I think that's how the threat got enforced, correct?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "33:54",
      "start": 2034.48,
      "text": "Yeah, exactly. so-"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "33:59",
      "start": 2039.49,
      "text": "I, I have a Bitcoin node at home, in my basement, that, that I trust. So this Bitcoin node will verify all the rules that I agree with. I install that software, and I know that that software, implements a certain set of rules that I-- for example, the, the, the inflation rule that, you know, you can't make more than twelve and a half new bitcoins in each block. That's a, that's, a rule that's very dear to me. so I, I, I make sure that I run the correct software on my, on my computer. And if, in, if a miner violates that rule, I will drop the block. I will not be interested in his block. and if enough people don't agree with that block,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "34:50",
      "start": 2089.95,
      "text": "that miner's block will be, you know, thrown away by the economic majority and And the, the miner will be without reward for it. The miner will lose its reward. So the miner have a strong incentive to, to, obey the rules of the economic majority. And that's, that's something that really,"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "35:21",
      "start": 2120.98,
      "text": "that, that really, That people really got to understand during the SegWit drama, because, yeah, I think Shaolin Fry, published this, Dev list email where he explained how, how users can actually enforce, SegWit to, to, to become adopted. And that, that was an eye opener for, I think a large chunk of, of the Bitcoin community because, there, there was, there was a strong feeling that, that miners could decide, there was a strong, Notion that, that, that miners could decide the rules, but they can't decide the rules. That, that became very clear during the SegWit upgrade."
    },
    {
      "speaker": "stephan",
      "time": "36:09",
      "start": 2169.37,
      "text": "Can you also talk a little bit about the difference then between the soft fork and a hard fork?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "36:15",
      "start": 2174.88,
      "text": "Yeah, yeah, a soft fork is, is like we talked about earlier, forward compatible change in the, in the rules, in the set of consensus rules. That's how I define it, at least. there are several different de-definitions of a fork, for example. I, I try to be, precise in that, about that in the book. So I define a, I define a fork as a, as a change of the consensus rules, and I define the, a soft fork as, forward compatible- Compatible change of the consensus rules, for example, SegWit is s-such a change. And a, a block size increase, for example, would be, Not forwards compatible change, because an old node wouldn't accept a bigger block, so that, that wouldn't be forwards compatible, so that would be a hard fork then. sorry, what was the question here again?"
    },
    {
      "speaker": "stephan",
      "time": "37:08",
      "start": 2228.36,
      "text": "Yeah, no, just to, yeah, just to articulate some of the differences around that. And I think, one clever analogy that I've heard, a-and you use it in the book as well. I think Andreas, I've heard, actually, I think I saw, I think it was Andreas, I saw when he came to Sydney and he gave a talk"
    },
    {
      "speaker": "stephan",
      "time": "37:26",
      "start": 2245.67,
      "text": "The restaurant and there are vegetarians in the restaurant, and every-- it's kind of using that idea that every vegetarian can eat a vegan meal, but not every vegan will eat a vegetarian meal."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "37:36",
      "start": 2256.3,
      "text": "Yeah, exactly. I asked Andreas if I could use that example, so, yeah, so I, I got it from him. So huge thanks. Two hundred reals for that. I thank him in the acknowledgments of, of the book for it."
    },
    {
      "speaker": "stephan",
      "time": "37:50",
      "start": 2269.53,
      "text": "Yeah, no, I think you mentioned it even on the page."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "37:52",
      "start": 2272.01,
      "text": "Yeah, so that, that's a great example. I mean, imagine a, a vegetarian restaurant, and the customers come there, they are usually vegetarian people. And if the vegetarian-- if, if the restaurant starts serving meat, the, the guests won't be able to eat there anymore. They won't accept the, their meals, their blocks. so that would be a hard fork, so they can't, they can't go to that restaurant anymore. While if the restaurant starts serving vegan meals the guests can still go there to have their dinner, because the restaurant, obeys the rules of the guest that's a great analogy with, with how, how, soft forks and hard forks work. And the guests are of, obviously, nodes. And, and, the s-the meals served are blocks, and the restaurant is a miner."
    },
    {
      "speaker": "stephan",
      "time": "38:52",
      "start": 2331.86,
      "text": "Yeah, excellent. a, another interesting idea that you touch on in the book a little bit is, compression of transactions. So There are some savings that come to a person who is using the new type, right, batch thirty-two addresses, as opposed to the old-school addresses. can you chat a little bit about what, what that is, where, where is some of that saving coming from?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "39:15",
      "start": 2355.26,
      "text": "I'm actually not sure what you're referring to because we-- there aren't no, there, there, there's not much savings with SegWit. In fact, in some cases, a, a SegWit spending will, will, take a few more bytes than a, than a legacy spending, but- so, so I'm not sure exactly what you are referring to. Oh, okay, yeah, I think it's,"
    },
    {
      "speaker": "stephan",
      "time": "39:35",
      "start": 2374.73,
      "text": "it's from, when, like, even when I use, say, Blockstream dot info and it'll, it'll show, you know, when you search a certain TX ID and it will show, oh, okay, this transaction could have saved even more by upgrading to the native SegWit. it might be from a context of the, like, v bytes versus normal bytes."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "39:53",
      "start": 2393.16,
      "text": "Oh, yeah, yeah, sorry, sorry, yes. yeah That's correct. so as I said earlier, SegWit moves, the credential data from the actual transaction and puts it into an attachment. And when you, when you pay transaction fees, you pay it, you pay a certain fee per byte usually, but In, in SegWit, we give us-- we give, a discount on, on this, attachment that we call the witness. So witness bytes are cheaper than, base transaction bytes. So, so, you get se- seventy five percent discount on, on the witness bytes. So in or-- in order to lower your transaction fees, you can, you can, you can start using SegWit to move your, credentials, credential data f-from the transaction into the witness in order to get seventy five percent fee discount on those by- on those bytes. So that's, that's how you can save"
    },
    {
      "speaker": "stephan",
      "time": "41:05",
      "start": 2465.32,
      "text": "using- One challenge we find with Bitcoin books and material is that things just quickly go out of date. Do you feel that the, this book will go out of date within a certain period of time, and then you, you know, you'll just have to do updated versions, or what's your sense of it there?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "41:22",
      "start": 2482.07,
      "text": "Yeah, that's, that's a good question. I tried, I act-actively tried to not, refer to specific tools or specific s- pieces of s-software. Well, I can't, I, I- I, I can't, I can't not, mention Bitcoin Core of course and, and use that as, as an example, but, but I, I don't, use actual wallets or screenshots of, of, wallets to explain stuff. I, I make up imaginary wallets instead, that will probably last longer than actual wallets, because if people start installing the, the actual wallet that, if, if I would use an actual wallet in the book and the- They install the same wallet and it will look completely different, that will be very confusing for them. So, I, I try not to, to actually, talk about Talk about ex- existing tools, I talk about concepts instead. Wise choice. Yeah, but I, I have some numbers in there, for example, a little, a little table of numbers for the c-current state of the Bitcoin network, for example, there are two hundred and fifty thousand transactions, blah, blah, blah. But I, I make sure to s- to write out that this is just a snapshot of, of how it looks right now. So as of writing, blah, blah, blah."
    },
    {
      "speaker": "stephan",
      "time": "42:49",
      "start": 2569.02,
      "text": "Excellent. Just generally doing education, have you, have you-- I, I suppose as a Bitcoin, you know, working in Bitcoin for, for a while, have you done other education seminars or things like that? And how, how has that been for you in terms of, you know, the difficulty of teaching Bitcoin?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "43:07",
      "start": 2586.59,
      "text": "I haven't done much of it, I have done some, some educational sessions, which is very fun, I like that very much. I prefer to do it with a whiteboard only, so I- It's me and a whiteboard. And, what was the question again?"
    },
    {
      "speaker": "stephan",
      "time": "43:22",
      "start": 2601.84,
      "text": "Yeah, I was just saying, what's your experience around that? And have you found that difficult compared to writing, where you can sort of sit down and properly lay out your thoughts?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "43:31",
      "start": 2610.58,
      "text": "Yeah, I am, I'm better in writing than in, speaking, as you probably can tell. I, I, I, I need- I need time to, to, to, formulate, formulate myself, properly. And that's why it, that's part of why it took so long to write this book. But, yeah, so I prefer writing in front of, in front of, speaking, but in front of a small group, preferably in Swedish, I'm very-- I, I find it very pleasant to, to, educate."
    },
    {
      "speaker": "stephan",
      "time": "44:12",
      "start": 2651.52,
      "text": "What's next for you? Are you going to be looking at another book to write, or are you gonna be continuing with Bitcoin consulting? What's your feel there?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "44:19",
      "start": 2659.34,
      "text": "I am probably going to continue. I'm working half time today with consulting, and I'm pretty pleased. list with that. And me and my wife are also working on a, on a Bitcoin wallet, as, two or three multisig Bitcoin wallet. And I can't tell you much about it yet because it's still on the, on the drawing board more or less. we don't even have a proof of concept or anything like that. But it's, it's gonna be, we, we try to make a multisig wallet that's super easy to use, single purpose so we only do two or three multisig where you use offline computer, an off-an offline computer and an online computer. so that's That's what we're working on for fun when we have time over. And, as for another book, I'm not sure."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "45:21",
      "start": 2720.6,
      "text": "Maybe, me-- I, I, I'm starting to think about something around Lightning. But, but, I, I don't know anything yet. I, I don't- Right now, I don't feel like writing another book, but maybe after summer or half a year or something like that, maybe I will, get back to writing. I don't, I don't know actually. right now, I just wanna, you know, Kill some time. It's,"
    },
    {
      "speaker": "stephan",
      "time": "45:47",
      "start": 2746.85,
      "text": "it's quite a big endeavor, it must be, like, it just must be a big endeavor to really go and write so much, and yeah, it's fair enough to, wanna focus on something else for a little while. Okay, so look, I think that's, hopefully that's been, enticing for some of my listeners and now they're interested to go and actually get the book and learn more. Can you just tell the listeners where they can find you and where can they buy the book?"
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "46:11",
      "start": 2770.53,
      "text": "Yeah, so, If they wanna talk to me, they can, they can add me at, Kalle Rosenbaum on Twitter. So K A double L E R O S E N B A U M on Twitter. And if they wanna get, get, their hands on this book, they can go to Manning dot com and search for \"Grokking Bitcoin\" or they can go to Amazon dot com or any big, bookstore to get it. It's, it's available pretty much worldwide."
    },
    {
      "speaker": "stephan",
      "time": "46:43",
      "start": 2803.0,
      "text": "Fantastic. Alright, well, I think that's pretty much gonna do it for us today. So thank you for coming on the show today."
    },
    {
      "speaker": "kalle_rosenbaum",
      "time": "46:50",
      "start": 2809.85,
      "text": "Thank you very much, Stefan. It was a pleasure. I enjoyed it very much. Thank you very much."
    },
    {
      "speaker": "stephan",
      "time": "46:55",
      "start": 2815.23,
      "text": "I hope you found that informative, and if you're interested to learn more about how Bitcoin works, definitely go check out Grokking Bitcoin. Also, a reminder to check out my sponsor, Kraken. The links are in my show notes on stefanlivera dot com. This is episode seventy-seven. If you wanna inquire more about advertising or send me any feedback, you can email me at stefanlivera at pm dot me, or you can find me on"
    }
  ]
}
