TFTC: A Bitcoin Podcast - #154: Amiti Uttarwar

Episode Date: April 28, 2020

Join Marty and Matt as they sit down with Amiti Uttarwar, Bitcoin Core contributor at Xapo, to discuss: - How Amiti came to find Bitcoin - Getting into Bitcoin Core development - Learning C++ - Amiti'...s work on rebroadcasting - Protecting privacy at the P2P level - Nuance of mempools - Current state of Bitcoin - much more Follow Amiti on Twitter Check out her post, Onboarding to Bitcoin Core Shoutout to this week's sponsors. Cash App. Start #stackingsats today. Use the promo code: "stackingsats" to receive $10 and contribute $10 to OWLS Lacrosse you download the app.

Transcript
Discussion (0)
Starting point is 00:00:00 What is up freaks, it's your boy Marty here to introduce this episode of Tales from the Crypt. It's an immense pleasure of sitting down with Amiti Uttarwar, Bitcoin Core contributor working at Zappo. Matt joined us for this one to jump into what Amiti is working on in terms of rebroadcasting transactions to help privacy at the P2P level of Bitcoin. We talked about a bunch of other things. Amiti started contributing to Bitcoin Core in February of last year and she's been on quite the journey she's done the chain code residency worked at coinbase she's done a bunch of things and now she's head down building some dope stuff for the p2p layer of bitcoin we also jumped into her piece onboarding to bitcoin core which she wrote in february of
Starting point is 00:00:50 this year basically explaining the journey she took the resources she um used used utilized to uh basically get up to speed with what's going on in the code base how she interacted with other developers and and gave some advice for anybody on the sidelines who's looking in and thinking about jumping in to contribute to bitcoin core highly recommend you guys go check out that piece as well as this episode obviously if you're already here listening to it you're going to check it out this episode of tales from the crypts is brought to you by good friends at the cash app freaks already know all about them they're helping us do many things they're helping us stack sats they're helping us stack slivers of stocks if you want to and they have their boost program
Starting point is 00:01:29 let's go back to the stacks sat stacking god every time uh if you freaks haven't noticed on twitter they started rolling out their dca function uh i've been teasing it for weeks maybe a month now I don't have to say soon TM anymore. It seems that they're rolling out the dollar cost average function for stacking sats as we speak. I've seen many screenshots, so you'll be able to set a cadence for a go-to sat stack. If you want to do it daily, weekly, monthly, you can set an amount, set it, and forget it. Again, adding to the buy pressure from the retail investors. It was an incredible, incredible announcement.
Starting point is 00:02:16 And again, the product team at Cash App is crushing it, specifically on the Bitcoin side. So you can stack sats, send sats, receive sats, sell sats, if you so please. And now you can DCA sats as well. And sats are the standard, again, via Cash App investing. You can stack slivers of stonks if you want to. You don't have to.
Starting point is 00:02:37 The option is there. If you have a favorite stonk and it's too expensive, if Cash App investing is letting you buy as little as $1 because Cash App is directly connected to your bank account or even if it is your bank account because now they're offering account numbers and routing numbers. So Cash App can be your bank account. You can get your paychecks direct deposited to the Cash App. You don't have to wait four to five days to start stacking stats or investing. You can start doing that today. Cash App investing is a subsidiary of Square remember SIPC as always when you download the cash app if you haven't done so yet make sure
Starting point is 00:03:12 you use the code stacking sats that's one word S-T-A-C-K-I-N-G-S-A-T-S you're gonna get $10 and $10 gonna go to our good friends at Owls of the Cross in Chicago doing great things uh not that dirtbag Al he's doing all these happy hours and stuff he's really I hopped on his happy hour on Friday just to see what was going on and he had a picture of me in the background like a true creep and he gave me a hitler stash it's he's a disgusting human being a scumbag all right he's not owls lacrosse which is a very very good charity very near and dear to our hearts they're doing incredible work for the youth in chicago use the code stacking sats download it now owls lacrosse is going to get ten dollars
Starting point is 00:03:54 enjoy this episode with a meaty i think you guys are really gonna like it she's a breath of fresh air somebody's incredible person incredible person working on bitcoin core enjoy it you've had a dynamic where money's become freer than free if you talk about a fed just gone nuts all all the central banks going nuts so it's all acting like safe haven i believe that in a world where central bankers are tripping over themselves to devalue their currency bitcoin wins in the world of fiat currencies bitcoin is the victor i mean that's part of the bull case for bitcoin if you're not paying attention you probably should be what is up freaks welcome back to tales from the crypt it's your boy marty bent here
Starting point is 00:05:00 on a wednesday evening it's five o'clock long day for your boy been working all day very happy to finally be sitting down and about to enjoy a nice conversation about bitcoin Bitcoin Core specifically. I'm joined by Matt O'Dell for this interview. Matt, how are we? What's up, freaks? And we're sitting down with Amiti. I got your first name. I said it right before we hit record. I want to get your name mixed up. Amiti Uttarwar, Bitcoin Core contributor at Zappo. Amiti, how are you doing today? Hi, I'm good. Thanks for having me.
Starting point is 00:05:32 Thanks for coming on. Really appreciate you taking some time to sit down with us and talk about your journey to Bitcoin Core. We just had like a 20 minute pre-recording conversation and it's been fascinating to me doing research on you and what you've worked on to date that you've only been contributing to Bitcoin Core for a little over a year now. So that's one thing we want to jump into during this conversation as you wrote a very good piece about getting introduced to Bitcoin Core and how one might approach contributing to Bitcoin Core if they're new for your year anniversary of contributing. But before we get into that and the work you've been doing at 4Core, what were you doing before Bitcoin? How'd you find Bitcoin?
Starting point is 00:06:24 What brought you to this weird rabbit hole that we're in? so i don't remember exactly how i found bitcoin uh one of two of my earliest memories are one watching a ted talk on what is a blockchain and two uh after a day of scuba diving in monterey reading the bitcoin white paper very very different levels of exposure but prior to prior to working on bitcoin full-time i was working at coinbase clearly after i fell down the rabbit hole and prior to that when i didn't know what the words crypto or blockchain meant i was working at a company called simbi which is a online marketplace for bartering services so really awesome community never quite took off as a platform but had a great niche community on
Starting point is 00:07:20 it and i did a lot of exchanges and trades with random people of services like i would teach them yoga and get a free massage or somebody would teach me how to cook their uh i learned how to poached chicken, which was actually delicious. Lots of lots of random services. And I think fundamentally, at that time, I started, I was a couple years into working, and I started really questioning our monetary system and what wealth is. Because I think for me, it's a lot more than having a big number in my bank account, it has more to do with being able to invest that in my wellness whether that is services like I love getting massages for example or or if I have a health issue or like eating well etc etc as well as like having fun
Starting point is 00:08:20 indulging traveling so I realized that money is supposed to serve this but has become so convoluted and via sim be I was able to receive a lot of these things in these really enriching interactions with other people. So I think that was where my ideas of how our economic system is supposed to serve us, but isn't quite started to seed. And so I was primed for when I learned about Bitcoin, I was pretty much immediately hooked. I read the white paper and then I was spending my nights and weekends. And this was the first time that i did something remotely professional in my free time otherwise i'm an outdoor enthusiast who like okay it's the weekend let's go backpacking
Starting point is 00:09:10 um so i i knew i knew something was up yeah no i want to go back to one thing you read the white paper for the first time after scuba diving in monterey yeah yeah what uh good day what are what are the scuba scenes like in monterey there's no reefs there it's there's no um it's not coral reefs but it's incredible it's there's a lot oh my gosh it's been so long since i've been but between the bitcoin habit and the lockdown but there's a lot of different animals there's otters and seals and tiny little nudie branches and um all sorts of random sea slugs sorts of things and I've seen jellyfish and octopus so there's quite a lot going on but it's a very different it's not the classic tropical color palette it's more like dark purples dark greens
Starting point is 00:10:10 and that sort of stuff but it's it's quite challenging you have it's really cold so you have to wear a dry suit and there's mostly only shore diving and it's low visibility so if you know much about scuba diving that sounds not ideal but i promise you it's so worth it and it's i've been to a bunch of tropical places but monterey is up there in one of my all-time favorite places i've ever died and dovin what did you do yeah dived dove dovin um i don't know i don't know i'm not uh i'm not a professional diver but would you have an epiphany underwater like how i should read this white paper i really i can't explain i have no idea just remember that seems like the best way to get introduced to the white papers when you have a clear mind after
Starting point is 00:11:02 scuba diving seeing that that beautiful landscape yeah it's definitely it was a great evening activity yeah and then i saw on your twitter you uh go to the sierras to hike as well yes i love backpacking and i love the sierras yeah i um my sister lives in colorado and she's been doing a ton of hiking in the mountains and just makes me jealous uh crazy jealous seeing the scenes on her instagram um but so you worked at coinbase what are you doing for them before you started contributing to core i was on the crypto operations team so we were the team that integrated with different assets ah is that uh you you happier to be focused on one asset at uh at this point um i really loved the people i work with at coinbase i met a lot of wonderful
Starting point is 00:11:56 nerdy sociable people but i definitely am happier with the work that i'm doing now it's really cool to be diving into the bitcoin protocol and trying to understand it and improve it yeah so let's dive into that like what was it like first approaching it uh contributing to core i mean you wrote a piece on it and how daunting was it for you personally was it daunting at all oh my god of course i don't even know if we can talk in past tense maybe it's it's still kind of terrifying but probably different levels of terror um yeah i i think it was really shocking to me that i could contribute something valuable and get any changes merged and a huge learning experience to even do some of the basics like i got feedback around my git commits or that my
Starting point is 00:12:55 email associated was my coinbase email instead of my personal email and um just getting familiar with the git repo at all but i think it's it's always different levels of scary but really important to find ways to create something along where your learning curve is and i think that was kind of the fundamental idea i was trying to convey in the onboarding piece it's so easy to get overwhelmed um in all of the different developments and uh constant ideation that's occurring to think that you have to understand everything in order to start at all and i don't think that um i mean i definitely wouldn't be already contributing to bitcoin because there's so much i still don't get i think it's it's been really surprising to me how the the repo has
Starting point is 00:13:54 really a great need for more attention more critical minds and you could probably find a way to add value regardless of what level you're at yeah so did you find that uh you were sort of starting your journey in bitcoin core with anybody else like do you have any any coding buddies that that you turn to or have learned with along the way um i i mean no like specific buddies but i've definitely learned so much from a lot of different people uh john newberry and marco falc were definitely the main core contributors that were giving me feedback and helping me figure out tasks to do and um all over reviewing my prs which is super helpful and again terrifying but there was also some people at coinbase that i would um try to talk about fundamental concepts with or
Starting point is 00:15:01 someone who knew c++ and i'd ask really dumb questions too and then i think i've also found a lot of online communities along the way to ask those basic Git, basic C++ questions so I can direct my Bitcoin questions towards anyone who's willing to be a resource to me and not utilize their attention and their time span for the things I can figure out elsewhere. I was just thinking about that today. It's kind of shocking that I found the internet filled with kind strangers because I feel like that's not that's not the general uh rap of strangers on the internet but just today someone
Starting point is 00:15:45 on a discord channel was explaining um how like variables are assigned in the underlying c++ in a very specific way and i was just like wow thank you so much kind stranger let's all right it is interesting how the internet works that way it's it's certainly easy to find uh find hate and vitriol on the internet specifically on twitter um but uh i find at least like the more uh focused uh in internet sort of community is the more the more willing people are to help out and then with bitcoin particularly it's like hey we're we're all trying to build out a distributed peer-to-peer cash system uh we're gonna need all the help we can get so it's probably advantageous to be nice along the way even though there is uh some
Starting point is 00:16:36 strong opinions and strong voices in the in the space that i found at least in the developer community everybody's been willing uh to answer my dumb questions with with a smile on their face yeah definitely um a huge difference in the tone of the twitter bitcoin community versus the bitcoin core developer community i've been wonderfully surprised to see how open and receptive and welcoming to questions and skepticism and willing to share like learning and knowledge with me that almost every single bitcoin core developer i've met has been so that was a great surprise yeah and back to your onboarding piece so there's some books like grokking bitcoin mastering bitcoin and then you've mentioned already learning c++ like how
Starting point is 00:17:30 how important is it to do that stuff before you get into this uh or while you're doing it uh how much did that help you learn like i've read i can see mastering book bitcoin right behind you right now um it's uh it actually helped me out a lot somebody's not a developer just understanding the the mechanics of the peer-to-peer network works how utxo works as an input and yada yada yada all that stuff yeah um i think it's important to have some conceptual fundamentals but it's really hard because you don't know how much versus what's missing or um at what point you're like that's enough let's let's go do something um but i mean in all honesty i've read parts and of mastering bitcoin and programming bitcoin and i've learned a ton from them but i've never read them cover to
Starting point is 00:18:23 cover i've always intended to but i'm just much more of a hands-on tinkery kind of person so i've it's been a really nice direction for my learning to have something useful that i'm working on in bitcoin that's like actually valuable because then i'll go and i'll do all the detail-oriented learning in order to serve what my goal is and it helps like create focus it helps keep me motivated so i still i still open up these books sometimes and like like refresh my memory or if there's an area that i just i'm trying to get the high level understanding before looking at exactly the code like they're great resources and i think um they're they're wonderfully written in the way they are accessible to a wide audience but i also think that i mean it's different personality types
Starting point is 00:19:20 but sometimes it's easy to say like oh i haven't finished that book so why bother looking at the repo but actually you could you could be doing both yeah i'd be interested to see like how much has the repo changed since mastering bitcoin was uh or at least the latest version was published um that's just me thinking aloud though uh let's get into what you've been working on on the p2p network um specifically around rebroadcasting and other things and then uh really working to help educate people uh around the ways that bitcoin can be attacked at the p2p level and how privacy can be attacked and other types of attacks why did you decide to focus on on this area particularly this is again one of those i'm not quite sure i think early summer i was looking for a project
Starting point is 00:20:15 and i had oh okay actually so so the when applying to the chain code residency they had given us a code challenge and it was independent of bitcoin core but um founded in bitcoin concepts and that sparked some curiosity of how does bitcoin core solve this problem and i started digging into the mempool specifically and um and so so after that and i had like formed some questions asked some things so when i was at chain code over the summer looking for a project I was asking around and John Newberry gave me the idea of this rebroadcast, pulling it out from wallet functionality into the node slash mempool level and trying to help the privacy guarantees.
Starting point is 00:21:16 So that kind of got me launched on this direction. And as I dug into that project, I've been learning more about P2P. And now I'm just like, hopelessly fascinated. It's so it's such a cool area. It's deeply nuanced, but also all of the goals of it are really easy to understand. and so I think that level of being able to zoom out to the high level what are we trying to do here and zoom into the detailed okay now we've got a two second delay versus what would it happen if we had a four second delay but like the nitty-gritty is quite a challenging thing to be zooming in and out so much but that's what makes it so fun and it feels like this intellectual play space and i i think i'm going to be hanging out here for a while so let's do it let's zoom
Starting point is 00:22:15 out what are what are the different layers of the p2p network and how they interact and why are they important um so so i know you watched the attacking bitcoin core talk so i'll touch on the framework that i shared in that talk as well it's something that i've come up with mostly to help myself, but now I'm using it as a tool for communication, is a framework of five different goals that we strive for in the peer-to-peer network. And so here they are. One is reliability. So if a node or if someone submits a valid message to the network, that message should make it out to all of the nodes eventually two is timeliness that message should get there in a reasonable amount of time and reasonable is pretty arbitrary and it's different for the type of user or the
Starting point is 00:23:11 type of message the amount of time that's okay for a miner to get a block is very different than a user to get a transaction and then three is accessibility in that it's great if there's this network that works but you can't get on to it then that's pointless so we want to make everybody who's interested um able to access the network and so in bitcoin like you can run a node on a raspberry pi we're trying to keep the resource cost quite low and another aspect is that an adversarial entity can't keep a victim off of the network so it's not just the investment of hardware, but also that you are in control of your participation. So those are three ideas that I think are probably important for any successful peer-to-peer network. But in Bitcoin,
Starting point is 00:24:09 we have two more. One is the fact that it's private because it's the money. So this is fundamental to what we're trying to do here. And number five is that it's upgradable. And that stems from the ethos of trying to serve all of the different historic software versions. So generally, the upgradable thing is a consensus concern, but there are aspects of it that we have to be conscious of in the peer-to-peer. Right, and that's an important point to make too, right?
Starting point is 00:24:45 Like we don't need a soft fork or a hard fork to change anything at the P2P network particularly, right? It's usually upgradable without that. Sure. Yeah. So maybe I can hash out more why I think of upgradability as a P2P concern. So the idea is if there is a soft fork and we have a new version of software running, then if we had a piece of logic that says, okay, peers are now going to prioritize people, the other nodes that are on this newer version of the software, then that could have bad unintended side effects for the nodes that haven't upgraded, because they might not be getting the messages as
Starting point is 00:25:36 fast, they might not be getting the messages as a whole. So that needs to be carefully done to make sure that there's compatibility. So an example of this that I'll try to do justice to is WTX ID Relay, where we have nodes that talk using the transaction ID hashes. But now that we have SegWit transaction IDs as well, it's hard to basically remember failures accurately to ensure that you're not re-downloading the same transactions. Maybe if they have different witnesses or the same witnesses or like basically it's hard for all of the different software versions
Starting point is 00:26:26 to traverse that. And so how we design in the P2P for even the newest is impacted. Yeah, so older versions of the software, just being aware of the new types of witnesses that exist. Is that correct? Well, it's basically that the new versions of the software still have to be doing TXID relay because the old versions don't know about the Segwit transaction IDs.
Starting point is 00:26:59 Yeah, so you can't just like forget about like, okay, we have this new better way. Let's just do that because you are still supporting the older versions. But this is like a P2P concern. It needs to be backwards compatible. Yeah. Yeah, yeah. So it's like consensus adjacent.
Starting point is 00:27:17 yeah adjacent or intertwined fair enough it seems like most things are intertwined right over there yes it does seem that way yeah um no i mean now we're getting down to like granularities of the p2p network um a few that fascinate me and her a couple at least and we were mentioning it before we hit record too is like early so early will help out um significantly with bandwidth so the ability to to share the the full state of the blockchain or download the transactions receive and send transactions um and this is something matt and i were actually talking about last week um i'm interested to get your thoughts on so you you tree xo which would help uh if implemented would help download the blockchain faster um but the trade-off there is
Starting point is 00:28:20 bandwidth so it takes more bandwidth to do that if we got early first and then utreexo would that sort of diminish the bandwidth trade-offs that exist now with utreexo that was a question i threw out there last week that we didn't know if we could answer maybe you can help us um i don't know the answer offhand i'm not familiar enough with honestly either of the uh implementations or uh how they work but i can i can look into it yeah yeah no don't don't mean to put you on the spot there but no just an example of uh the intertwined nature of all this stuff again that's so that's another thing that we could touch on now is uh just working on this code base you could be working on something uh in your lane and then you have somebody working
Starting point is 00:29:16 on something in another lane and if that gets merged like how how does that throw a wrench in what you're working on have you experienced uh something where you where you've sunk a lot of time into something and something else got merged that sort of uh forced you to to change what you're working on in a way yeah um i think usually if you're working on something for a long period of time you have an idea of other like prs or open concepts that might be conflicting at a more fundamental level because if they're trivial that's no big deal um but i did have an example like with the segwit transaction id relay with my work on rebroadcasting i am having an additional patch that i've been working on just in a side branch because i don't know
Starting point is 00:30:15 which one will get merged first and so but the the two together even though neither of them is currently there the two together uh need a little bit of additional logic so i had to design to incorporate that and then that's currently on a side branch but whatever whatever branch doesn't get merged can add this patch sort of yeah the uh the amount of thinking that you guys need to do is is incredible um so let's talk about your rebroadcasting work what what uh what would this uh solve and why do you think it's important yeah fundamentally i think the biggest improvement is around better privacy of mempool transactions so starting with what is currently on master
Starting point is 00:31:12 well wallet has a behavior where you broadcast a transaction for the first time and that's great hopefully it makes it into mempools hopefully it gets mined but there's a possibility that it didn't actually make it to the network or if we had a more competitive fee rate situation or like if it was 2017 for example transactions might have made it into the mempool and then gotten been forgotten so you might not be seeing your transaction mind after some amount of time be like what's up with that all right let me tell the network again so the idea of telling them again is rebroadcasting and it's there for a good reason there's a lot of unexpected things that can happen however the way it's currently implemented is really bad for privacy because
Starting point is 00:32:09 because only the wallet that created the transaction is the one that, or sorry, not necessarily created, probably created, but basically the only the wallet that was the source of the transaction would be the one to broadcast it again. So if an adversary has a couple connections open to you and sees that, hey, you told me about this a while ago, you've told me about this again they can know that you are the source and further that the wallet tries to rebroadcast it fairly frequently so um actually it's been a while so i don't
Starting point is 00:32:51 remember but i think maybe every 30 minutes or so so if if there's been another block in the past 30 minutes it'll try again so you could create a low fee rate transaction that you don't actually expect to go out that soon and then you keep telling the network about it and you give away that you are the source so that's that's not great so i'm trying to make it better so is this rebroadcasting the same exact transaction or something like a replaced by fee situation same same yeah um so how are you how are you attempting to solve this and how would it help privacy so i'm trying to bring it into the node instead of in the wallet so an element of this is that all nodes will rebroadcast some transactions and so you could you could have
Starting point is 00:33:50 an idea of all nodes will rebroadcast all transactions and that way nothing's ever uh Missed, but then we come up against bandwidth. And that's obviously a very limited resource. So in trying to have nodes rebroadcast transactions that are not just theirs, but also of others that might have been missed or not mined by now. there's logic in trying to have that be a set of transactions that is reasonable so ones that have a high fee rate but have been around for a really long time something that you think maybe should have been mined by now and yet hasn't showed up in a block so rebroadcast those so doing this via the node would this be like a particular node setup that is looking for these types of transactions or would every node with the software
Starting point is 00:34:47 be looking for these rebroadcasts? I think in the long-term vision, if it's done correctly, we could have every node attempting rebroadcast. It's pretty much like, if you think of a wallet and a mempool as different components, the mempool is one of the big responsibilities
Starting point is 00:35:11 vulnerabilities that it has is trying to relay transactions so that they can be mined, right? If you're a miner, then your mempool serves you, so you can mine them. But if you're an ordinary node that is running with a mempool, and a lot of what you're doing, there's some things that serve you, like with fee estimation, for example. But there's an aspect where you're also serving the network and trying to help transactions propagate. So it kind of makes sense from looking at it that way that, hey, I have this transaction. I don't know where it came from, but it doesn't seem to be getting mined. And it's been around for a really long time. It's the highest fee rate. Maybe it got missed, but I have it. So let me tell the network about it again.
Starting point is 00:35:59 okay all right yeah initially i'm gonna put it behind a uh basically kill switch so people can like enable the behavior just so we can kind of roll out more cautiously but i think in the long-term vision it makes sense all right so i think this makes a lot more sense to me now that you just described it that way so it's not the end user who is rebroadcast or who may have sent the transaction originally it's the nodes looking out for these and they're doing it on behalf of them so that they don't have to do it again so that their privacy is helped a little bit yeah and so if you're a spy you wouldn't know maybe it's the end user maybe it's a random user etc yeah and i guess we should get into the nature of mempools here too right because each node
Starting point is 00:36:45 has a different mempool and how how does that sort of come into play um yeah there's it's a interesting concept to initially wrap your head around of what it actually means like we we love referring to it as the mempool and you can easily google and be like what is in the mempool uh but every single node that's running bitcoin has a different mempool you can disable your mempool if you want or you can have a ginormous one that saves all of the transactions which if I were a minor is definitely what I would do and most people have some something somewhere in between but there are a lot of configurations that you can have for your mempool and so keeping those consistent but also independent and slightly different is something that creates a lot of
Starting point is 00:37:42 nuance to peer-to-peer behavior and interactions and there's also elements of privacy because you don't want ideally if you could have every single person's mempool have a transaction show up at exactly the same time that would be ideal for privacy but that's not how computers work so we add a lot of these random time delays in propagation or sometimes even until recently we had a mechanism that after transactions were 15 approximately 15 minutes old you would no longer serve them so there are all of these different kinds of bounds but we got rid of that upper limit but you still you might have a transaction in your mempool and somebody asks it for you but it's too new and so you don't want to reveal that you have it so you don't give it to them yet
Starting point is 00:38:42 so there's a lot of different components there's the difference between just like network delay and propagation lags there's the element of configuration of the end users and there's elements of privacy so not immediately revealing what you have and what you don't have and so we have to design with all of these different things in mind and software versions why would you why would you not want to share a transaction because it may be too early you may have not had it for long enough because that could help if if you are an adversary and you are trying to figure out who the source was that initially broadcast the transaction.
Starting point is 00:39:27 You could just connect to as many peers on the network. And if you could find out exactly when the transaction showed up in their mempool, then that would give you a lot of data that over time you could probably use to like triangulate the source. Or you could basically say,
Starting point is 00:39:43 okay, it's in these five mempools, but nobody else. That's clearly one in five of those is the source. that's fascinating so i have a question um sorry marty uh you're good so with all these intricacies of of the p2p layer um you know at tales from the crypt we're big advocates of people using their own node i think it's unquestionably better for privacy on the receiving side looking up your balances receiving transactions but when it comes to sending um for the time being like if it's a if you really want to take the the best privacy precautions wouldn't using like a third
Starting point is 00:40:26 party transaction broadcaster something like blockstream.infos with like connected through tor what don't you do is that is that's a better privacy option right would you not agree um so i'm not fully familiar with um like that float so i can't make any like super strong claims but i think there's a lot of options for how private you are for example you could have a uh offline computer running a bitcoin node form a transaction and sign it and then you could send that transaction via carrier pigeon to your friend right that's then broadcast it something like that like broadcasting intentionally not broadcasting from your own node because yeah you can you can create a signed transaction and you can broadcast that from from anybody else's node
Starting point is 00:41:28 if you wanted to is that is that what txt cast would do or tx cast that 6102 is working on or is that still coming from your own node just trying to mess with you might have linked in because blockstream.info has an api for a transaction broadcaster where they do it from their node so you might have linked it in but i know the main premise is that it tries to defeat timing analysis by staggering the transactions when they they eventually get broadcast it might use your own node though i'm not sure or maybe it's an option of the two interesting that's crazy the intricacies you have to think of when sending and receiving bitcoin transaction especially if you're trying to remain private yeah yeah and i think that as
Starting point is 00:42:14 a user i mean there's so many layers of privacy um and i think that as a user both how you broadcast a transaction as well as how you create the transaction using your UTXO set and trying to not do the most obvious behavior is probably two of the most impactful aspects that you could focus on. Yeah, that's why I think coin selection is huge and PSBT is huge as well. Those are two things that I really want to see in a wallet, like the ability to choose which UTXOs I'm sending and then and the ability to to uh to form a transaction offline just broadcast it um and sign it yeah i think it'd be cool if a wallet had like really beautiful visual interface for coin selection that'd be awesome yeah we're not there yet and we're still really young we got time
Starting point is 00:43:13 andrew chow who i think is younger than all of us said that it's never going to happen there's no such thing as user-friendly uh coin coin control all right andrew let's be more optimistic yeah let's let's let's get him on here right now i'll disagree that's we're just because we're not there yet doesn't mean we can't have it this is this is the mentality i like immediately this is the mentality i try to have it's like like you said like we're still so young to me it's crazy that we've gotten this far that we've gotten people like you interested in actually contributing to the protocol and spending your life doing it now at this point you're getting paid to do it um i think people hate on how far bitcoin's come to
Starting point is 00:44:00 this point so how early are we and how far have we come just in the year that you've been been working uh on the core code base i mean it's really diving into the github project and seeing the repo has time and time again shown me, wow, this is a really young project. And we were talking a little bit before we started recording about how it was really surprising when I learned how bad the rebroadcast behavior currently is, how much of a leak that is, because that's not something I ever knew about till I was asking around and at the Chaincode residency, etc. and but then i've had a really warm reception uh from people who have been excited to review my pr or help me implement etc because they also like like in terms of core contributors they also agree
Starting point is 00:44:52 um and that's felt very disjointed from some of the academic research that we have like dandelion that's looking for initial broadcast being entirely private and not able to de-anonymize that if you're an adversary. And I think that there's actually quite a bit of low-hanging fruit in the Bitcoin Core repo in terms of things like better commenting and documentation for some of the behaviors or there are so many areas where our automated tests are can be improved and it's definitely hard as an individual to identify exactly what those areas are and do them yourself but it's been surprising that over just a year and I literally never looked at C++ before Bitcoin Core so it was very intimidating and that too I've never
Starting point is 00:46:00 professionally worked in a low-level programming language it's all been like high-level application software stuff and so it's constantly amazing to me to see that I'm able to make changes that are helpful and i see the fact that my timeline has been pretty quick as more of a product of the fact that it is a very young project and reviews thoughtful interaction is highly highly desirable yeah no and i think over the last two to three years particularly has been very encouraging to me to see companies like zappo like square crypto like chain code i mean obviously chain code blockstream a couple others digital garage uh been around for a while but it seems like more and more companies are starting to realize like hey this protocol's been around
Starting point is 00:46:57 for more than a decade it'll probably be around for a little bit longer at least so if we're going to be using it it's probably important to to reinvest uh in it by supporting it with with developers who are looking to work on a full-time and this is just me ranting and commenting right now like i just think we're about or we are hitting a sort of inflection point of reinvestment in the protocol by companies that are leveraging it and i don't think we've seen the full benefits of that yet and they're only going to get stronger from here on out yeah totally it's definitely exciting to see more and more organizations get involved with sponsoring core development and i think it's really important because it is so complex like
Starting point is 00:47:42 uh as an individual you need a long long amount of constant time to be able to really engage in it you know yeah now you were uh you were mentioning like the low-level testing on uh for the core protocol and it's just reminding me of our conversation with uh valerie maccarallo about fuzzing test um can you explain what a fuzzing test is again for the freaks out there um and they've been approving too haven't they yeah absolutely definitely fuzzing has been an area that's gotten more attention and improvements recently the idea basically is that you i mean there's two ways to okay probably more than two ways but the normal way that you test
Starting point is 00:48:35 edge cases is you say oh well this could go wrong let me mimic that and ensure that if it were to go wrong uh it would handle it in a sane sort of behavior fuzzing is a different approach and it pretty much says, hey, computer, do random stuff and throw it at the code. And let's see what happens. And so and so that can reveal things that people didn't think about, because it's more of a kind of brute forcey way. And I think it has been revealing like, some edge cases. And so I think it's a i think it's a sign of a maturing project as well i think that most um bigger projects at some point incorporate this and so it's awesome that we're now doing that yeah and uh val wallace i want to be apologized for calling you valerie not valentine i'm sorry about that um
Starting point is 00:49:35 brain fart there um so going back to your rebroadcasting work like what what needs to be done to to get this implemented obviously it's getting reviewed right now um what uh what are like the next steps you you said you you have two other uh prs that are out there that could affect it are you waiting on those are you just going to go without waiting on those well okay so so i had a big pr that was like here's rebroadcast and i got some awesome reviews and And I got some feedback as well, and Gmax had left a review that gave an idea of how I could break out one of the pieces of functionality from the main PR. And so that's what my current PR is.
Starting point is 00:50:30 So basically it's a subset of the rebroadcast, but that just makes it easier to review, easier to get merged. Hopefully, I've gotten a few acts on that. So I hope that it's getting pretty close to being merged. And then I'll go back to the main one to see out the rest of the project. But along the way, I've been, you know, experiencing some scenic routes, a lot of learning. There was one element where I was basically just trying to make a behavior testable from the functional tests, and that was in relation to how things are scheduled.
Starting point is 00:51:17 And that led to its own PR that went through different iterations and eventually led to a bug in a Boost library being discovered. so yeah that was that was kind of beyond my depth but luckily i had a lot of really smart and focused uh bitcoin core contributors just jump on it and debug and investigate so is that a library that's not related to bitcoin directly or is bitcoin just leveraging uh yeah so it's a it's a dependency so we have the boost library in bitcoin we're trying to move away from it um but it's currently like a dependency that's the uh that's the crazy thing you have so many smart people working on bitcoin they're fixing other people's code too
Starting point is 00:52:06 oh yeah i felt very grateful because i was like i have no clue what's happening here that is um no that's why i mean another tangent here so i'm happy carl dong's working on the geeks containers and trying to mitigate the dependencies that go into all this again yeah there's so many cool projects that are working um that are being worked on and i like i think that's another aspect where that's really important work but there's a different sort of time scale and it's a sign of the project maturing yeah so what um if everything goes well with your rebroadcasting prs what uh what are you going to move on to next do you think i mean i still have a a fairly long way to go um once i do that i get the subset merged there is
Starting point is 00:53:02 more work that has been brought up um for the main project so there's some time before i exactly identify but i think in general i'm just deeply captivated by the peer-to-peer space And it's a very complex, nuanced area that very few people are actually familiar with. So I think continuing down that road and trying to understand all the different behaviors and do thoughtful reviews, which is just like leaving a good review is so, so valuable. it's the singular most valuable thing that you could do to advance like the Bitcoin core project
Starting point is 00:53:45 but it takes a lot of just work behind the scenes of familiarizing with the code base and so I feel like that's a lot of what I spend my time on I'm looking at people's PRs I'm often looking even at historic PRs that have changed the behavior even if they've been merged to try to understand different iterations
Starting point is 00:54:13 and reasoning behind behaviors. So like a peer that was merged a couple versions ago was having an in-transaction download was preferring downloading a transaction from an outbound peer over an inbound peer because it's harder for an adversary to have been running a node and then when you start your node, you happen to request them to form the connection.
Starting point is 00:54:47 It's a lot easier for them to just say, hey, you accept incoming, let me connect to you. And so for specifically privacy, but also different sorts of guarantees, East, we prefer downloading transactions from outbound peers. So there's, there was a rework that was done a couple versions ago that added that discrepancy between the two groups. So that's something that I've really dug into and been looking very closely at recently, but doesn't actually lead to necessarily leaving a review or making a PR, but I think does help pour the
Starting point is 00:55:30 foundation for me to be able to do those things better yeah and this may sound like a stupid question but does like port forwarding or 8333 for port excuse me like if more and more people do that does that reduce the overall risk of of getting fed fed bad information from from another node are getting attacked like partition attack I don't know something because I
Starting point is 00:56:00 mean because it's not it's not straightforward most people don't have that port forwarded and so you're saying something I'm accepting inbound connections if more nodes accepted
Starting point is 00:56:10 inbound connections yes oh I see I mean I think it's different like if more nodes accepted inbound connections then i think that it's in certain ways making you more robust for example you have more peers that you're interacting with getting transactions from there's probably more honest peers but then in other ways it makes you more vulnerable for example if a node is uh able to figure out a vulnerable ability that involves
Starting point is 00:56:50 rapidly disconnecting and reconnecting they wouldn't be able to do that if you only accepted or if you didn't accept inbound peers um so it's as with everything kind of a trade-off it's nuance yeah now it's just something i'm curious about but um one thing i want to talk to you about is like so beyond the development aspect of it like what are your what are your thoughts on bitcoin just the the i don't want to say movement but like the project overall the asset um like do you do you think it's an imperative technology today or you just sort of more interested in it because of the development aspect yeah i don't really think bitcoin matters that's um obviously i think that i've had i've had developers come on here just like i just
Starting point is 00:57:40 like it as an engineering project really yeah yeah wow that's fascinating um no i think that i mean part of what makes me so excited to work on it every day like there's there's the two sides of it one is just this as an engineer nerding out intellectually is challenging but the other side of it is that i think the work has so much impact or like so much potential for impact i I think that it's like, I think it's only a matter of time that our world has a global currency and the world that I'd like to live in has a sound global currency. And I think Bitcoin is the only experiment that I've seen that's even moving in that direction.
Starting point is 00:58:28 And so hopefully, like, I'd really, really like it if we were able to succeed and see through this vision of you know censorship resistance I think is one of the really fundamental ones but also yeah just the ability for everybody to participate in it and so I think that really compels me to work on the project because it feels like the small actions I'm doing are bigger than those actions themselves and so that's very exciting to work on on a daily basis yeah it's i can't imagine how fulfilling that is and so what are you talking about you you do it too i just i mean yeah i do love doing this this is it's a labor of love the podcast and the uh and the newsletter but um i don't know right writing the code and act that actually makes
Starting point is 00:59:22 it work seems like it's it's uh it's got to be a certain type of feeling a certain type of feel there when you get something merged it's like ah the software people downloading that is bitcoin I help that like that's pretty dope yeah definitely is rewarding but I also find educational initiatives and communicating about it rewarding because I think that there's a software component but for Bitcoin to be successful it's really just about ubiquitousness because it's money at the end of the day if people use it it succeeds and so I think that a really really crucial component is getting that message out and having people understand why it's valuable or how it works or how to interact with it and when we're talking about
Starting point is 01:00:14 how early the project is i think that's a huge sign of it there's a lot of constant like like oh my gosh i don't understand everything so i must not understand anything um i don't i don't know what's going on here and i think a lot of people disengage because of that and so i think for those of us who do know a little bit or are curious i think we have a lot of work to do to spread the fundamentals spread the enthusiasm etc i agree i agree there i think it's happening at least uh i think more minds are getting infected with the bitcoin virus the virus is spreading yeah bad timing to to talk about spreading viruses but whatever the meme's been around for a while um when it comes to the network and uh like do you think uh we're we're on a good
Starting point is 01:01:11 trajectory for it to to be successful in the long run like do you think we're um being as efficient enough with the chain state with uh making sure that full nodes uh are going to be able to be downloaded in areas with with worse internet um do you think uh the uh the necessities of which make this protocol successful in the long run are are there right now and they're they're being sort of focused on enough that is such a hard question to answer um who knows i mean i think part of what is really crucial for bitcoin to succeed is not just the robustness of the base layer but also layer two and possibly in the long-term future more layers on top because I think that like that really helps with usability and so the fact that there
Starting point is 01:02:08 is so much development in the lightning space and there's so much excitement in the lightning space is really promising as well but it's so hard to know like what is sufficient you know to achieve what we're striving for and it's also because it's a moving target right like the development of infrastructure is constantly changing so five years from now our chain might be bigger but also maybe um our bandwidth like expectations are larger as well i don't know um i don't i don't really i didn't really spend too much time thinking about that i really just try to look at what we have and how to make it as good as possible um but i think that there's a lot of development that's iterative but there's also a lot of like stair steps like what we were talking
Starting point is 01:03:00 about earlier with early or utxl like if we're able to get something like one of those merged those have huge impact on whether it be block download time or reconciliation and bandwidth usage or whatever different dimensions but then those come off with a whole set of trade-offs as well so there's like so many branches to the thought tree of possibilities it's hard to play them out no no i mean that's why i always love talking to developers because it it um bitcoin just as an engineering problem everybody's like i just saw you like running to your mind of like scenarios that could play out if all this stuff happens it's it's never boring it seems um it's but and on the content side it's never boring boring there's always always something to write
Starting point is 01:03:51 about and that's honestly i'd be more curious about to hear your take on that same question because i feel like i because i am quite new and i don't feel like i have a very big volume of understanding like i've just really dug into one one area uh but i you know you've you've been at it for a while you've talked to so many different people what do you what do you think i mean like you i'm i'm an optimist i think we're i think i don't think people get bitcoin enough credit i think it's incredibly uh amazing how far it's come to date and if you like i've been reading about and studying bitcoin since like 2013 and the strides it's made since then have been enormous like if just the the those wallet software the fact that the lightning network exists
Starting point is 01:04:42 most importantly to me it's uh the fact that uh more and more developers are coming and being intrigued by the protocol uh year in and year out whereas like 2014 2015 when there was a bunch of rage quits and it seemed like uh interest in in bitcoin was dying like 2015 matt like the summer fall of 2015 was a pretty dire time like well like december 2015 yeah yeah that was pretty bad interesting and to see where it is now and it's i mean i think it's on i think it's part of the culture now yeah people know what bitcoin is yeah what do you think matt i'm bullish as fuck i wouldn't be here i wouldn't be here if i didn't think we could do it yeah be a waste of time yeah yeah i agree um no yeah i'm like i think people
Starting point is 01:05:43 are too hard on bitcoin it's amazing that's still producing blocks and people are still coming uh to learn about it and to buy some of it and to download full nodes and to and that's what But Matt, mainly, I just try to help out in being a sort of platform to push this stuff, like privacy stuff, like CoinJoin, see more people CoinJoin, especially during this quarantine. We've seen the number of Lightning Nodes go up, so it seems like people who... Tour Lightning Nodes, too. Yeah. That's really good. so actually i think if this quarantine is good for anything it's that people who may have been
Starting point is 01:06:29 a little bit apprehensive to to get into the the dirty side of downloading a full node and trying to figure out how to do bitcoin the right way or start an experiment with that that's very encouraging to me um that's super cool yeah and so i guess question i have the the uh the roundout question we're gonna have here is like if there's any freak listening to this who's may have been or may be apprehensive to sort of jumping into the fray of bitcoin core development like what type of encouragement or advice would you give them i know we've talked about some of it but is there anything we missed um that that you think uh anybody looking to jump into this should know yeah um well for my full brain download that's the blog post that i wrote
Starting point is 01:07:19 about onboarding and I think that's just like packed with different things that I found helpful but overall I think it's mostly the mentality it's definitely terrifying but if you're truly willing to and interested then you can do it and if you can believe you can do it then taking small steps and finding a focus so the first one is to download the repo and build it and run tests and after that like start familiarizing yourself with what issues are being opened and what prs are being made and finding excuses to look in the code um at whatever interests you because i think that's part of what's so cool i am able to use my own excitement as a guide and i think a lot of people have a lot of excitement for great reasons and so just follow what compels you and dig deep
Starting point is 01:08:19 and ask questions along the way and i think that i think that you'd be surprised at how that could play out incredible advice you're such a and you're such a pleasant person to have in this this like just thinking about like the twitter i mean i'm part of the twitter uh noise sometimes but uh somebody who's just optimistic and humble and uh sort of took the bull by the horns and jumped into this it's this has been a pleasure oh thanks matt do you have anything else you want to add before we wrap here well i mean i wish we were doing this in person i would i would love a follow-up in person when this all clears definitely that sounds good we have a lot more to chat about you definitely will definitely um i'm gonna keep a look out on your rebroadcasting prs
Starting point is 01:09:15 and very very much looking forward to seeing that thank you for working on that stuff because we're big on privacy here at cftc so anybody who's working to make the privacy of individual bitcoiners better is a-okay in my book me meaty thank you for coming on yeah thank you so much for having me it's been fun all right peace and love freaks

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.