Jan. 1, 2025

CD148: OPEN SOURCE AND UNCHAINED WITH BUCK PERLEY

The player is loading ...
Citadel Dispatch

Buck Perley is one of the co-hosts of Austin BitDevs and an engineer at Unchained. We discuss his work improving Unchained's open source sovereign multi sig app Caravan.

Buck on Nostr: https://primal.net/p/npub15gaw9fpcwrleq332pl95xndencvwgwdtfee6ejlngp7waeh0e35sg8r670
Blog Post: https://unchained.com/blog/unchained-2024-open-source/
Caravan Repo: https://github.com/caravan-bitcoin/caravan
Caravan Website: https://www.caravanmultisig.com/
Unchained Website: https://unchained.com/

EPISODE: 148
BLOCK: 877362
PRICE: 1062 sats per dollar


support dispatch: https://citadeldispatch.com/donate
nostr live chat: https://citadeldispatch.com/stream
odell nostr account: https://primal.net/odell
dispatch nostr account: https://primal.net/citadel
youtube: https://www.youtube.com/@CitadelDispatch
podcast: https://serve.podhome.fm/CitadelDispatch
stream sats to the show: https://www.fountain.fm/
join the chat: https://citadeldispatch.com/chat
learn more about me: https://odell.xyz

(00:00:00) Fox Intro: Bitcoin as a Sanctions Hedge

(00:01:12) Show Introduction and Feedback

(00:02:09) Guest Introduction: Buck Perley

(00:06:06) BitDevs Meetup and Community

(00:07:30) Unchained's Open Source Contributions

(00:09:02) Caravan: History and Evolution

(00:13:10) Caravan's Recent Updates

(00:19:05) Caravan vs. Sparrow: User Preferences

(00:22:32) Blinded xpubs: Privacy in Collaborative Custody

(00:38:14) Collaborative Custody Models

(00:52:02) Summer of Bitcoin and Open Source Contributions

(01:00:15) Fee Health and Privacy in Bitcoin Transactions

(01:07:03) Encouraging Open Source Contributions

Chapters

00:00 - Fox Intro: Bitcoin as a Sanctions Hedge

01:12 - Show Introduction and Feedback

02:09 - Guest Introduction: Buck Perley

06:06 - BitDevs Meetup and Community

07:30 - Unchained's Open Source Contributions

09:02 - Caravan: History and Evolution

13:10 - Caravan's Recent Updates

19:05 - Caravan vs. Sparrow: User Preferences

22:32 - Blinded xpubs: Privacy in Collaborative Custody

38:14 - Collaborative Custody Models

52:02 - Summer of Bitcoin and Open Source Contributions

01:00:15 - Fee Health and Privacy in Bitcoin Transactions

01:07:03 - Encouraging Open Source Contributions

Transcript
WEBVTT

NOTE
Transcription provided by Podhome.fm
Created: 01/01/2025 20:54:41
Duration: 4182.549
Channels: 1

1
00:00:00.080 --> 00:00:30.955
Sanctions that they went after individuals, country and also took some of the Russian assets and said, hey, we're gonna give to Ukrainian people. When that happened, bitcoiners came out and they said, you are actually going to further accelerate the demise of the US dollar because now you have introduced this sanctions risk. There's a paper that came out of the Harvard Economics Department where they talked about, will countries now start to buy Bitcoin not for price, not for the sovereignty, but actually as a sanctions hedge. Russia. And so Russia is actually doing that. Do you think they're the only one? No. I wouldn't bet on it.

2
00:01:12.415 --> 00:01:13.795
Happy New Year, freaks,

3
00:01:14.814 --> 00:01:23.475
and happy Bitcoin Wednesday. It's the 1st day of 2025. It should shape up to be a massive year for us, and I have a great conversation lined up.

4
00:01:24.575 --> 00:01:25.314
Per my

5
00:01:25.695 --> 00:01:26.674
last episode,

6
00:01:29.420 --> 00:01:37.840
I asked you all if I should include these mainstream news media clips as I have in the past as a time capsule. It seems like the consensus is keep the clips.

7
00:01:38.300 --> 00:01:44.995
Don't make them 12 minute sailor clips, which is what I did 2 episodes ago. So keep them on the shorter end, and,

8
00:01:46.175 --> 00:01:55.315
get rid of the music at the end. So that's where we're going so far. If you have any comments or feedback on that path forward, because you guys are a huge part of the show. That's why I come in

9
00:01:55.960 --> 00:01:59.100
so often, with dispatch. That's why dispatch keeps going.

10
00:01:59.640 --> 00:02:07.740
Feel free to give me feedback on Noster or through Fountain Podcast App, which has got Noster integrated. So if you put it there, I get tagged on Noster and I can see.

11
00:02:08.440 --> 00:02:09.420
So that's awesome.

12
00:02:09.735 --> 00:02:17.194
This is obviously, Citadel Dispatch, the interactive live show focused on actionable Bitcoin and Freedom Tech discussion. I'm your host, Odell.

13
00:02:17.575 --> 00:02:19.595
And today, I am joined by Buck Perley,

14
00:02:20.534 --> 00:02:23.034
who focuses on a lot of the open source

15
00:02:23.400 --> 00:02:31.020
work that is done over at Unchained Capital. How's it going, Buck? It's going good. Excited for, New Year.

16
00:02:31.720 --> 00:02:37.180
Happy New Year. Yeah. Another year in the bucket. That's right. Keep on pushing.

17
00:02:39.795 --> 00:02:41.495
I guess before we get started,

18
00:02:44.675 --> 00:02:46.775
I know you mostly as one

19
00:02:48.115 --> 00:02:49.575
of the foundational elements

20
00:02:50.115 --> 00:02:50.855
of BitDevs

21
00:02:51.370 --> 00:02:53.630
Austin. Do you still run BitDevs in Austin?

22
00:02:54.330 --> 00:02:56.510
I cohost. I don't know. It's

23
00:02:57.370 --> 00:03:00.090
a it's a it's a group effort to to run it,

24
00:03:00.490 --> 00:03:01.950
but I've been cohosting

25
00:03:03.130 --> 00:03:06.430
it yeah. It's funny. I I when I first moved to Austin

26
00:03:06.885 --> 00:03:07.625
back in

27
00:03:08.405 --> 00:03:11.685
2018, I was I just reached out to Justin Moon on Twitter and,

28
00:03:12.245 --> 00:03:14.424
said, like, hey. I'm new here. I don't know anybody.

29
00:03:14.724 --> 00:03:21.230
You're a Bitcoiner. Can we get lunch? And so we're chatting. I was telling him some of the stuff I was working on at the time, and he was having,

30
00:03:21.850 --> 00:03:23.950
trouble just filling out topics,

31
00:03:24.490 --> 00:03:26.970
during bit devs. He's like, do you wanna just come and talk?

32
00:03:27.450 --> 00:03:39.925
Because he didn't he didn't wanna keep on trying to come up with topics. That was before he did Socratic seminar. And so I did a couple talks about products I was working on, And then when we moved to Socratic seminar, it kinda brought me in,

33
00:03:40.785 --> 00:03:51.340
to to host, from time to time. And then and then Ben Carmen kinda joined in as well. And then since then, Justin Moon has kind of, like, walked off stage a bit,

34
00:03:52.060 --> 00:03:52.720
into the

35
00:03:53.340 --> 00:03:54.300
twilight, I guess. And,

36
00:03:55.100 --> 00:03:59.840
and, Carmen and I have been mostly Carmen. He's the most consistent of us. But yeah.

37
00:04:00.940 --> 00:04:02.000
Yeah. You outlasted

38
00:04:02.380 --> 00:04:03.840
Moon. That's an accomplishment.

39
00:04:05.785 --> 00:04:08.925
Yeah. Freaks, as always, the Nostril live chat is at zap.stream/odell

40
00:04:09.864 --> 00:04:10.605
or cildispatch.com/stream.

41
00:04:13.145 --> 00:04:14.444
All the links for cildispatch

42
00:04:14.825 --> 00:04:15.805
are at cildispatch.com.

43
00:04:17.030 --> 00:04:22.570
I might remove that live chat if it's not active right now and everyone's nursing off their hangover.

44
00:04:23.110 --> 00:04:25.050
But we'll keep it open for a little bit longer.

45
00:04:26.950 --> 00:04:27.690
So, BitDevs

46
00:04:28.070 --> 00:04:28.965
is every month

47
00:04:29.445 --> 00:04:34.105
in Austin at Bitcoin Commons. It's modeled off of BitDevs in New York. It's focused on,

48
00:04:35.205 --> 00:04:38.824
technical developments that happen with the developer focus every month.

49
00:04:39.125 --> 00:04:41.945
It's my favorite style of meetup. It's a Socratic meetup.

50
00:04:42.720 --> 00:04:46.900
So so did have you done all 12 months this year, or did you miss any?

51
00:04:48.080 --> 00:04:54.705
I did miss. I had to I was I was home for the December 1. So this this one, I might have missed one other.

52
00:04:56.224 --> 00:04:58.485
So you got, like, 1010 of 12?

53
00:04:59.425 --> 00:05:07.125
Yeah. At that's pretty good. Yeah. 10 or 11, I think I got. Yeah. It's pretty good. It's a grind. The meetup the meetup life is a grind, so that's impressive.

54
00:05:07.520 --> 00:05:08.020
Yeah.

55
00:05:08.800 --> 00:05:15.140
Carmen made everyone. Did Carmen make everyone? No. He met he broke his, like, 2 year streak this year.

56
00:05:15.520 --> 00:05:16.980
Oh, wow. Yeah. Okay.

57
00:05:17.760 --> 00:05:20.820
So Moon is out. Carmen's getting flaky.

58
00:05:21.245 --> 00:05:26.465
You're not hitting everyone. I mean, do you have do you have Youngblood that's ready to carry the torch or?

59
00:05:29.085 --> 00:05:30.305
Vivek has has,

60
00:05:31.645 --> 00:05:35.265
seared salmon has been stepping in a couple times, has been helping.

61
00:05:35.940 --> 00:05:40.680
Ryan Gentry is is local and from, Lightning Labs. He'll come in from time to time.

62
00:05:41.220 --> 00:05:48.135
So, so, yeah, we have we have subs that we can we can tag in. And Justin Moon is is, you know, sometime often still around. So,

63
00:05:48.615 --> 00:05:56.155
he just doesn't wanna be at the front of the room. He just wants to still heckle. Right? He literally has done that a couple of times. He'll be heckling from the audience. It's like Yeah.

64
00:05:56.695 --> 00:06:05.100
The the best place the best place to sit in BitDevs is, like, the first two rows so you can heckle but not be actually the cohost. That's like the ideal situation.

65
00:06:06.200 --> 00:06:08.940
Okay. Awesome. Yeah. We have BitDevs here in Nashville

66
00:06:09.560 --> 00:06:11.420
as well. Ours is run by

67
00:06:11.880 --> 00:06:12.780
Steve Myers,

68
00:06:13.320 --> 00:06:14.940
Matthew Ramsden, and Pee.

69
00:06:15.240 --> 00:06:18.140
And I think they haven't missed a single one,

70
00:06:18.975 --> 00:06:26.355
this year. None of out of the 3 of them haven't missed a single one. Now, I deserve 0 credit. I maybe have been to 2 or 3. This was a

71
00:06:26.735 --> 00:06:42.909
very busy year for me. But, anyway, enough with BitDevs. I wasn't expecting the BitDevs inquisition, but it's my favorite thing to do in Austin. Like, if I do go to Austin, I try and plan it around to BitDevs, so I wanted to Yeah. Follow it out. For anyone watching or listening, it's easy to plan because it's always the 3rd Thursday of every month.

72
00:06:43.610 --> 00:06:48.565
I think the we we missed we moved it around once, and I was that for TabConf

73
00:06:49.025 --> 00:06:57.685
maybe? There's one that I think we we did it for the first time since Parker had been starting to organize it. So it's easy to plan around, which is kind of a fun aspect of it, that consistency.

74
00:06:59.905 --> 00:07:01.445
Okay. So I pulled out

75
00:07:01.930 --> 00:07:11.629
the ZapStream live chat for now. I am watching it on another screen freak. So if you comment there, I will bring it back. But until then, you get to see our beautiful mugs in full picture view.

76
00:07:12.169 --> 00:07:16.275
I had a feeling that New Year's rip was kind of

77
00:07:17.315 --> 00:07:19.735
aggressive in terms of live chat viewership,

78
00:07:20.755 --> 00:07:29.014
but, Buck and I did early nights with our families, and we're ready to rock and roll for 2025. So it seemed like a great way to start the year.

79
00:07:30.610 --> 00:07:32.710
So, Buck, what are we talking about today?

80
00:07:34.210 --> 00:07:40.389
Well, I mean, we can talk about anything. There's always lots to talk about. But, yeah, we've just published this morning,

81
00:07:41.810 --> 00:07:46.515
in the past week. We Unchained has published 2 blog posts, kinda like year end reviews. And,

82
00:07:47.695 --> 00:07:55.875
one, was on the Unchained side, but I thought it would be worthwhile. We kind of had a low key, very active year on the open source side of Unchained.

83
00:07:57.215 --> 00:07:59.795
And so I thought it would be just a nice exercise

84
00:08:00.175 --> 00:08:00.735
to to

85
00:08:01.380 --> 00:08:07.320
I kinda just started off as a bullet list. I was like, oh, we could we could actually, you know, turn this into a blog post and let people know what's going on.

86
00:08:08.420 --> 00:08:17.605
And one reason to to do that, to talk about it, is a lot of what we did this year was focused on developer experience, DX, and, you know, instead of UX, to

87
00:08:18.065 --> 00:08:19.845
make it, more inviting,

88
00:08:20.385 --> 00:08:21.365
easier to contribute,

89
00:08:22.625 --> 00:08:24.485
because I think there's a lot of useful tools,

90
00:08:24.945 --> 00:08:26.805
that we have there that we basically

91
00:08:27.360 --> 00:08:32.980
we public we we write some of our libraries open source that we can also use in our own closed source

92
00:08:37.279 --> 00:08:53.235
and to to put that stuff out in the in the ecosystem when we can. So a lot of work going in this year for that and kinda just want to share it out. And, also, incidentally, as a byproduct of that, some new user facing features that, I think some people should be pretty excited about.

93
00:08:54.015 --> 00:08:56.910
Awesome. So, I mean, I'll link the blog post in the show notes.

94
00:08:57.389 --> 00:09:01.170
If you're watching on YouTube, it's already in the description if you wanna follow along.

95
00:09:02.029 --> 00:09:03.810
So, the main focus has been

96
00:09:05.709 --> 00:09:14.264
this project called Caravan, this open source project called Caravan. When was it create I feel like it was created maybe 4 years ago or something like that. It's been a while.

97
00:09:14.885 --> 00:09:24.584
Yeah. I think the first iteration of it, came out a year or so before I even joined Unchained, so it's been 5 over 5 years, I think, since the very first version. And it was

98
00:09:25.240 --> 00:09:26.700
originally released as,

99
00:09:27.480 --> 00:09:33.340
just a sovereign recovery tool, kinda once we came out especially once we came out with our Vault product.

100
00:09:33.800 --> 00:09:38.060
So Unchained started with loans, and then we kind of forked that to have Vaults that,

101
00:09:38.985 --> 00:09:43.485
clients could control control the the the majority of the quorum of keys.

102
00:09:44.025 --> 00:09:44.605
And then,

103
00:09:45.145 --> 00:09:51.200
we wanted to, you know, kinda prove to people that it was safe such that even if we went away for whatever

104
00:09:51.660 --> 00:09:54.240
reason, your funds could still be recovered. And

105
00:09:54.780 --> 00:09:57.120
the options for doing that weren't super user friendly,

106
00:09:57.500 --> 00:10:00.560
typically had to be connected to a full node. You know, Electrum

107
00:10:00.940 --> 00:10:13.535
is very difficult for nontechnical users, and Unchained is primarily geared to people that, you know, care about self sovereignty, but, you know, maybe don't have enough time to be playing around with Electrum and, you know, Redeem scripts and and,

108
00:10:13.995 --> 00:10:15.055
all of that. So,

109
00:10:15.675 --> 00:10:20.735
yeah, it came out about 5 or 6 years ago as just, we call it a stateless coordinator. So,

110
00:10:21.195 --> 00:10:29.990
you know, not thinking of it as a wallet because the wallet is kind of it's this ephemeral thing that exists to the relationship between keys. It's not a node.

111
00:10:30.690 --> 00:10:40.725
Coordinator is really just an interface for coordinating between the keys that are involved in in a wallet or even just an address. Our first version really was just a single redeem script for recovery.

112
00:10:41.585 --> 00:10:50.005
Yeah. So, I mean, when Caravan first came out I guess the first context is if for some reason you're not aware, Unchained is a financial services business.

113
00:10:50.310 --> 00:10:53.130
Their whole business is based around this idea of collaborative custody.

114
00:10:54.070 --> 00:11:03.370
Their Vault product you hold 2 keys. So you hold, like, basically 2 hardware wallets. And they hold one key. If you lose 1 hardware wallet, they will help you spend

115
00:11:03.975 --> 00:11:07.595
in that situation. And they basically, like, hold your hand during the whole process.

116
00:11:07.895 --> 00:11:13.195
The trade off being, first of all, it costs money. And then the second being KYC and privacy.

117
00:11:14.135 --> 00:11:18.714
And then they have their loan product. And in the loan product, you hold one key instead of 2 keys.

118
00:11:19.040 --> 00:11:21.860
They hold one key, and then an institutional

119
00:11:22.319 --> 00:11:27.060
partner holds the 3rd key. So, in that situation, the 2 institutions have to come together

120
00:11:27.600 --> 00:11:34.420
to liquidate you or steal your money. So you can watch it on chain. You can see it's not rehypotheticated. It's just a strictly better situation,

121
00:11:35.255 --> 00:11:39.595
if you're doing a Bitcoin collateralized loan. And then Caravan came out.

122
00:11:40.215 --> 00:11:42.155
And when Caravan came out, it was Presparrow.

123
00:11:42.935 --> 00:11:51.490
Right? And so this whole idea of if you're holding 2 of the 3 keys, the reason you're doing it is not only to make sure that Unchained doesn't steal your money,

124
00:11:51.870 --> 00:11:54.769
but in a worst case scenario where Unchained

125
00:11:55.470 --> 00:11:58.450
goes out of business or something bad happens

126
00:11:59.070 --> 00:12:23.230
and Unchained can't, you know, service their customers, that you can still spend your money. And that process was a very complicated, convoluted process, which was not good to tell users. So, Caravan was created. This open source project that was independent of Unchained to allow you to easily spend. Now, one of the first ways I ever actually used Multisig with hardware wallets was with Caravan in the early days. Because, like I said, it was pre Sparrow. It was pre Spectre.

127
00:12:24.730 --> 00:12:27.949
And basically the only other option you had was with Electrum.

128
00:12:28.810 --> 00:12:33.525
And as Buck mentioned, it is stateless. So, if you think about it from like a practical sense,

129
00:12:34.005 --> 00:12:37.145
like, the way you're interacting with it is you run Caravan,

130
00:12:37.605 --> 00:12:41.225
and then you basically every time, you're, like, adding every hardware wallet.

131
00:12:41.765 --> 00:12:48.265
I guess you can save a, like, a config file. But, you add each hardware wallet, and then it generates your,

132
00:12:48.670 --> 00:12:54.290
like, this multisig coordinator thing where you can see how much funds you have, create spends, create receives.

133
00:12:55.630 --> 00:12:57.730
Okay. So with all that context in,

134
00:12:58.190 --> 00:13:05.685
this is interesting. The YouTube chat is actually more active than Nostra chat right now. Well, that's why we stream everywhere, and YouTube does have 2 and a half 1000000000 users.

135
00:13:07.745 --> 00:13:08.245
The

136
00:13:08.785 --> 00:13:14.965
so what what's new with Caravan? What have you changed? So Caravan felt like the ugly stepchild for a while. It was, like, way ahead of the game,

137
00:13:15.830 --> 00:13:17.050
and then kind of

138
00:13:17.670 --> 00:13:23.290
everyone stopped using it. And it was just like, if if Unchained goes away, you could just use Sparrow. It wasn't really

139
00:13:23.750 --> 00:13:33.795
it just it seemed unloved. And I feel like this year, that changed. Right? This year, it became it became loved again. So so what what has changed? What improvements have been made, and how you think about it?

140
00:13:36.495 --> 00:13:40.435
Yeah. I think that this the Sparrow piece of it is important. Like, we

141
00:13:40.895 --> 00:13:43.520
we're we work closely with with Craig.

142
00:13:43.980 --> 00:13:46.880
You know, he's added support for our our configuration

143
00:13:47.260 --> 00:13:47.760
file.

144
00:13:48.780 --> 00:13:49.680
We we collaborate,

145
00:13:50.300 --> 00:13:53.840
pretty closely just to make sure things keep working, and and I think it's like

146
00:13:54.220 --> 00:13:57.904
it goes to the ethos of kind of an open source ecosystem

147
00:13:58.285 --> 00:13:58.785
where

148
00:13:59.404 --> 00:14:01.264
you can have you can have competitors

149
00:14:01.565 --> 00:14:02.464
that are

150
00:14:03.165 --> 00:14:06.464
not, like, still friendly and and work together. Right? And so

151
00:14:06.845 --> 00:14:11.345
it's really great that our users can go to Sparrow as well and have a better,

152
00:14:11.940 --> 00:14:15.560
a platform that gets more regular love, like a full time developer type of thing.

153
00:14:16.820 --> 00:14:22.600
And Caravan still serves a different niche, just the the fact that it is stateless. You know, you can use mempool.space.

154
00:14:23.220 --> 00:14:25.000
Again, for for people that are our customers,

155
00:14:26.105 --> 00:14:35.165
where privacy isn't your top concern, it is really nice to just be able to spin up this, you know, pure JavaScript only thing to interact with your wallet.

156
00:14:35.545 --> 00:14:42.000
Nice thing too is that that makes it way more portable. So So another kind of neat thing that I I think is kind of underappreciated

157
00:14:42.700 --> 00:14:49.440
is that you can enter now this we we had to make some change to our back end, in Unchained, but now you can fully interact with your vault,

158
00:14:49.980 --> 00:14:54.255
your Unchained vault without ever logging into Unchained, and, like, everything will continue to work.

159
00:14:54.975 --> 00:14:58.195
So you you can and you can do that from anywhere with with Karavan.

160
00:14:59.215 --> 00:15:01.155
So so that's that's pretty neat.

161
00:15:01.855 --> 00:15:04.995
And then another another piece of it that's important for us is

162
00:15:05.615 --> 00:15:08.675
for anything that does have to do well,

163
00:15:10.330 --> 00:15:11.950
with well, we have 2 primary,

164
00:15:12.810 --> 00:15:21.310
libraries. 1 is now called caravan wallets and the other is caravan bitcoin. So a lot of anything in our code base, even though we do it on chain, that is interacting with hardware devices

165
00:15:21.735 --> 00:15:22.875
or that is interacting,

166
00:15:23.735 --> 00:15:24.795
kind of with, like,

167
00:15:26.695 --> 00:15:29.755
like, the Bitcoin side of stuff. Just kind of like client side,

168
00:15:31.815 --> 00:15:36.075
code, whether you're estimating size and fees or or whatever.

169
00:15:36.579 --> 00:15:43.639
We do that in our open source code, and then we use that at Unchained. There's lots of benefits for that, whether it's, you know, there's security, you know, just

170
00:15:43.940 --> 00:15:47.399
the, fresh air, sunlight being the best disinfectant type of thing,

171
00:15:47.779 --> 00:15:48.279
open,

172
00:15:48.899 --> 00:15:54.675
to outside contributors. So there's a lot of reasons to continue showing love to that ecosystem

173
00:15:55.055 --> 00:15:57.795
even outside of, like, well, now there's alternatives.

174
00:15:59.135 --> 00:16:07.699
And this year, we kind of I there's a few things that I kinda wanted to do. It was it was pretty clunky to to develop on it, especially if you were new to the code base.

175
00:16:09.040 --> 00:16:11.459
The code itself had not gotten a lot of love,

176
00:16:12.160 --> 00:16:17.380
and so it you know, like like we were saying, it's 5 or 6 years old. So there's a lot of kind of, like,

177
00:16:18.285 --> 00:16:21.745
older libraries that needed to be updated, older kind of coding practices,

178
00:16:22.285 --> 00:16:27.265
no typescript, things like that that we kind of wanted to just bring into the year 2024.

179
00:16:28.685 --> 00:16:29.985
So that was a big focus.

180
00:16:31.005 --> 00:16:32.465
One big thing too is

181
00:16:32.930 --> 00:16:35.910
to make it more friendly to an open source

182
00:16:36.449 --> 00:16:36.949
contributing

183
00:16:37.490 --> 00:16:37.990
ecosystem.

184
00:16:38.850 --> 00:16:47.269
We we kind of rebranded it away from being, you know, an Unchained thing, and instead be Caravan, which is maintained by Unchained,

185
00:16:48.315 --> 00:16:50.334
kind of like a Red Hat style model.

186
00:16:51.435 --> 00:16:56.095
And there's a lot of advantages to this. I think one, it's just, you know, people,

187
00:16:56.875 --> 00:17:06.030
open source developers, I think, are just gonna feel more comfortable contributing something that is its own kind of open source brand rather than, like, feeling like they're doing free work for a company.

188
00:17:06.570 --> 00:17:18.765
And we do want this to be something like, there are other wallets and coordinators that do use our, our libraries, and that's we wanna encourage that, and I think that's a good thing. So we wanna bring more people in. One of the things that actually kind of spurred this was,

189
00:17:19.485 --> 00:17:28.950
when the when Ledger came out with their version 2 app, the that Salvatore was, doing for Ledger to bring in mini script and a lot of the major upgrades that he brought over there,

190
00:17:30.789 --> 00:17:33.929
He he he wrote it to be PSVT version 2 to

191
00:17:34.549 --> 00:17:42.010
native. Like, you needed to interact with that. And it turned out there was no client side JavaScript libraries that could interact with PSVT version 2,

192
00:17:42.765 --> 00:17:45.985
And Casa needed to upgrade to support, we needed to upgrade to support,

193
00:17:46.925 --> 00:17:48.625
and there was kinda, like,

194
00:17:49.485 --> 00:18:10.845
gist and stuff being handed around or, like, to add this code, just copy and paste it in. And and to me, it just seemed like crazy that, you know, it's not, like, the the benefits of open source that kind of everybody can benefit from upgrades and things like that. And I also was thinking, like, of course, Casa is not gonna contribute to a library that's called Unchained Bitcoin. Right? I and I totally understand that.

195
00:18:11.804 --> 00:18:16.385
And I thought it would be better to have some you know, they still might be hesitant to contribute something that's that's Caravan,

196
00:18:18.525 --> 00:18:21.345
maintained by Unchained, but still I think it makes it a little bit easier.

197
00:18:21.645 --> 00:18:22.145
So

198
00:18:22.605 --> 00:18:24.625
we wrote this p s p t version 2 library,

199
00:18:25.485 --> 00:18:33.830
and I kinda wanted to move things towards this this caravan branding. And and that was a big first step. And before moving things over,

200
00:18:34.850 --> 00:18:41.825
kinda wanted to make a lot of large architectural decisions as we were as we were migrating. Like, that's the opportunity to make big changes.

201
00:18:42.205 --> 00:18:49.505
So that's what a lot of the things that were going on this year, from a high level. And then along with that, we were able to get a much more velocity,

202
00:18:50.365 --> 00:18:51.265
outside contributors,

203
00:18:51.565 --> 00:18:52.225
more features,

204
00:18:52.925 --> 00:18:55.309
and, yeah, it's been it's been good. Awesome.

205
00:18:55.850 --> 00:18:58.429
Yeah, that makes that makes a lot of sense to me. So,

206
00:19:00.490 --> 00:19:01.630
from from

207
00:19:02.090 --> 00:19:05.130
you you mentioned, I guess, where do we go from here? I

208
00:19:06.490 --> 00:19:10.110
for for a user, a lot of this seems developer focused.

209
00:19:11.174 --> 00:19:12.475
From a user perspective,

210
00:19:13.174 --> 00:19:16.395
or like I guess like a client perspective, when do you think,

211
00:19:17.335 --> 00:19:18.475
people will be

212
00:19:19.174 --> 00:19:21.914
When should they use Sparrow versus when should they use,

213
00:19:22.760 --> 00:19:28.860
like, because that's the big thing for me. Like, I I used Caravan early days, but now, I mean, Sparrow's just so

214
00:19:29.880 --> 00:19:31.340
so good. I don't know.

215
00:19:31.720 --> 00:19:34.220
It's like hard. Like, you could even have a Sparrow.

216
00:19:34.934 --> 00:19:46.154
A lot of Unchained I've heard this. A lot of Unchained customers actively have Sparrow just open with their same vault on their same vaults on Sparrow, so they can watch it there and they can interact with it there.

217
00:19:48.840 --> 00:19:49.900
Yeah. And, I mean,

218
00:19:50.600 --> 00:19:55.800
we are happy to encourage that. I like, honestly, I kinda think of it as a personal preference thing.

219
00:19:56.520 --> 00:20:01.740
And, again, Craig can kind of he can he can move a lot faster because it's kind of his full time project,

220
00:20:02.155 --> 00:20:05.295
And so they get more features out. It's certainly more featureful.

221
00:20:06.555 --> 00:20:11.535
And a lot of you know, I think the the big advantage with Kravan is the stateless aspect of it.

222
00:20:12.315 --> 00:20:13.135
And so,

223
00:20:13.595 --> 00:20:19.800
you know, the a big reason to use Kravan is if maybe you're away from your node, you don't have a way to SSH into it or whatever it is,

224
00:20:20.420 --> 00:20:27.160
it's a good way to you can use caravan. You can still point it to your your node if you want to, or if you don't care about,

225
00:20:27.860 --> 00:20:30.815
you know, it's pseudo doxing your addresses,

226
00:20:31.515 --> 00:20:33.054
you can use it against mempool

227
00:20:33.515 --> 00:20:33.755
or or,

228
00:20:35.035 --> 00:20:36.015
the block stream

229
00:20:37.434 --> 00:20:38.495
back ends. So

230
00:20:39.035 --> 00:20:43.855
a big part of it though is is actually, like, this is a caravan, the coordinator

231
00:20:44.350 --> 00:20:45.169
is kind of a

232
00:20:45.950 --> 00:21:01.705
testing ground and approving ground for some of the underlying code that anybody else can use, in in their spaces as well. So, you know, one one reason to maybe use it, or contribute to it is to kind of encourage that ecosystem. Whereas the Sparrow ecosystem is a little bit more self contained,

233
00:21:02.485 --> 00:21:03.285
and they push

234
00:21:03.845 --> 00:21:19.550
I think Sparrow does a great job kinda like pushing the the UX ecosystem forward. Does a fantastic job in supporting that. I think being able to have tools and, you know, Bitcoin JS Lib is is is a version of this as well. We the caravan libraries now are are similar to those.

235
00:21:20.730 --> 00:21:26.030
Actually, some of them are wrappers around it that are a little bit more user friendly for building multisig wallets. So,

236
00:21:26.645 --> 00:21:27.784
otherwise, you know,

237
00:21:28.245 --> 00:21:31.705
we love to hear that people are using Sparrow, and I think it's just a great,

238
00:21:32.965 --> 00:21:49.730
it's a it's a great kind of, like, case for collaborative custody as the model for, you know, the future of, Bitcoin custody in the fact that you can collaborate you collaborate with us, you get a key from us, you can use your wallet wherever you want outside of that. Right?

239
00:21:50.370 --> 00:22:01.885
And in the future, that's gonna open up even more models of collaboration. So, you know, this year, we also you had talked about how we have, you know, you hold 2 keys, and now Jane holds 1 key, but now we have connections

240
00:22:02.425 --> 00:22:02.925
where,

241
00:22:03.705 --> 00:22:06.045
when you can hold a key for your family member.

242
00:22:06.825 --> 00:22:08.905
And, you know, maybe you don't want to be,

243
00:22:09.710 --> 00:22:23.410
you know, you don't want your funds to be KYC, but your family member doesn't care about the KYC because they care more about security. They don't trust themselves as much, but they also don't wanna hold 2 keys. Now you can be a part of that. You know, your your funds aren't KYC, but you're helping your friend or family member,

244
00:22:24.030 --> 00:22:30.184
to to manage their funds. You can now interact with that Vault as well in Caravan or Sparrow,

245
00:22:31.285 --> 00:22:48.770
and and anywhere. Right? And so I think or Electrum. Right? So I think that aspect of it, to me, is just super cool. So, you know, which one you use is kind of irrelevant. The fact that you can use multiple and be using an Unchained Vault is is the real magic. Okay. So, I mean, so what I hear is, first of all, it's incredibly lightweight,

246
00:22:50.029 --> 00:22:51.570
and you and by default,

247
00:22:52.495 --> 00:22:54.195
the whole setup is you don't use

248
00:22:54.495 --> 00:22:56.755
your own node for it. So if you're not running a node,

249
00:22:57.655 --> 00:22:58.515
and you

250
00:22:59.455 --> 00:23:04.195
can use it with your own node. But most people probably don't and they just hook it up to mempool or

251
00:23:05.180 --> 00:23:05.680
Blockstream.

252
00:23:07.260 --> 00:23:09.760
Obviously, there's trust involved there from a privacy

253
00:23:10.540 --> 00:23:16.080
and a sovereignty perspective. Like, you have to trust that they're verifying the blocks and that they're not logging your addresses.

254
00:23:16.380 --> 00:23:20.615
I will say that Adam from Blockstream and Wiz from mempool have said that they don't

255
00:23:21.075 --> 00:23:22.575
log and aren't taking

256
00:23:22.915 --> 00:23:27.495
aren't tracking that, but you can never verify. The only way you can be sure is if you use your own node.

257
00:23:27.875 --> 00:23:32.455
And then the second piece is that it allows you to give back to the ecosystem and actually

258
00:23:32.970 --> 00:23:41.390
there there there could be competing companies in the collaborative custody space that then borrow some of that code and use some of that code to build their own product suites.

259
00:23:42.410 --> 00:23:43.870
And you guys are kind of,

260
00:23:44.730 --> 00:23:51.115
nurturing that ecosystem, being happy that there are competitors in the collaborative custody space because it's such a strong fundamental

261
00:23:53.095 --> 00:23:58.554
of Bitcoin's value prop. This idea that you're not trusting someone else with your money.

262
00:24:00.054 --> 00:24:03.340
Okay. So, it sounds like more and more

263
00:24:03.880 --> 00:24:09.820
is the case that that actually, like, on the way Unchained works, like, if you're using Unchained is

264
00:24:10.440 --> 00:24:11.340
kind of built

265
00:24:11.960 --> 00:24:16.620
on on top of Caravan. Is that what you're insinuating? Or is it kind of a parallel thing?

266
00:24:16.985 --> 00:24:24.045
You you mentioned, like, some new features that are not unchained that exist because of the improvements to caravan. Like, what kind of features would that be?

267
00:24:25.705 --> 00:24:27.225
Well, there's definitely shared code.

268
00:24:28.105 --> 00:24:31.485
And so as my anytime we can write

269
00:24:31.890 --> 00:24:33.910
code in the open source realm,

270
00:24:34.210 --> 00:24:36.550
and then bring in, like, that's gonna be our preference.

271
00:24:37.090 --> 00:24:41.350
One example was to get, spend to Taproot support in this year.

272
00:24:42.130 --> 00:24:46.070
It might seem like a trivial thing, but the upgrade process was grueling.

273
00:24:46.985 --> 00:24:55.245
It it took many months of of work to kind of because we had to upgrade from Bitcoin JS version 5, version 6, which was had

274
00:24:55.705 --> 00:25:01.005
different dependencies, different, build system that that we had to build in before we get it to work.

275
00:25:02.340 --> 00:25:05.480
Caravan had spent a taproot support first, and then,

276
00:25:05.940 --> 00:25:07.559
we could upgrade the code

277
00:25:07.860 --> 00:25:12.040
in the on chain platform so that we could support it, there too.

278
00:25:12.740 --> 00:25:13.880
So that's one example,

279
00:25:14.340 --> 00:25:15.495
that that came in.

280
00:25:16.055 --> 00:25:16.955
Another example

281
00:25:17.335 --> 00:25:19.275
it's actually a few kinda new features.

282
00:25:19.735 --> 00:25:23.755
Nice thing about Karavan too is we like, Karavan supports more than Unchained does,

283
00:25:24.135 --> 00:25:34.080
and that's just because the nature of, like, if you're hosting your own wallet, we don't, like, it doesn't even have a back end. The back end is your wallet configuration file and the blockchain. That's the database for Karavan.

284
00:25:34.780 --> 00:25:42.720
Whereas on chain has a lot more moving pieces. So you can have, you know, 7 of 7 wallet if you want Karavan. We don't really care about that. But,

285
00:25:43.285 --> 00:25:43.945
so that

286
00:25:44.485 --> 00:25:45.465
said, some other,

287
00:25:46.005 --> 00:25:47.465
things that we brought to Caravan

288
00:25:47.765 --> 00:25:52.745
that we could see come into Unchained or Unchained kinda like family of products.

289
00:25:53.125 --> 00:25:54.085
One is,

290
00:25:54.405 --> 00:26:05.300
this is a cool thing that I we wanted to add descriptor support. It was something I was curious about, interested in, and, but I didn't want us to build our own descriptor library, basically, like, a mini script parser.

291
00:26:07.200 --> 00:26:16.575
And, so instead, since BDK is written in Rust, then you can compile Rust to WASM, and you can use WASM in a browser or node in in in, you know, JavaScript environments.

292
00:26:17.515 --> 00:26:20.894
I worked with Steve from the BDK team. We built

293
00:26:21.274 --> 00:26:22.414
some WASM bindings

294
00:26:23.080 --> 00:26:23.820
that could,

295
00:26:24.440 --> 00:26:24.920
turn,

296
00:26:25.480 --> 00:26:31.820
turn a multi sig wallet or the JSON that, caravan works in, convert that into a descriptor,

297
00:26:32.440 --> 00:26:40.345
and and then vice versa as well. Now on the surface, like, a multisig descriptor is pretty simple. You can just parse it easily if you want with,

298
00:26:40.825 --> 00:26:48.905
just pure JavaScript. But by using BDK under the hood, first of all, it means that we are using the standard pretty much, BDK, which is written on top of,

299
00:26:50.340 --> 00:26:58.760
Rust Rust Mini Script. It means that, like, that code is pretty well vetted. It's used in a lot of wallets, so we don't really have to care about, you know, maintaining

300
00:26:59.460 --> 00:27:00.919
bugs or anything like that.

301
00:27:01.700 --> 00:27:09.095
And it also means that we're basically supporting Mini Script under the hood. Descriptors are basically just, you know, layer on top of mini script. So in the future,

302
00:27:09.395 --> 00:27:11.175
even if we don't support this in Caravan,

303
00:27:12.035 --> 00:27:15.795
you know, that library can, and then you could use that elsewhere. So,

304
00:27:16.595 --> 00:27:25.910
so that was a nice advantage. Now we don't have descriptors directly yet in Unchained itself. It would be trivial to do. We just wanna figure out a good UX for it. It's not huge amount of demand,

305
00:27:26.290 --> 00:27:42.845
but you can convert your caravan your Unchained wallet into the descriptors and then import them directly into your Bitcoin note if you want, which is a neat thing. But, really, it was about having a playground, a proof of concept. And the other thing that we added this year, and like all of the developer experience things,

306
00:27:44.184 --> 00:27:45.725
that I was talking about earlier

307
00:27:46.090 --> 00:27:52.350
allowed us to play around with this was and this, I don't think there's any support for in Sparrow is blinded x pubs,

308
00:27:53.050 --> 00:27:59.255
which is something that Michael Flaxman proposed years ago now. And there haven't really been very many kind of production

309
00:27:59.555 --> 00:28:02.455
implementations of this aside from Flaxman's library,

310
00:28:02.835 --> 00:28:04.375
multi wallet, and then,

311
00:28:07.715 --> 00:28:10.615
Ashsheen wrote the SIG Bash, I think it was called.

312
00:28:12.450 --> 00:28:14.950
And, I mean, x blinded XPubs

313
00:28:15.330 --> 00:28:20.390
are pretty simple conceptually, just adding kind of random pass on the end of an existing one.

314
00:28:21.090 --> 00:28:27.414
So I first wrote a library that could be imported to any JavaScript project, npm install, caravan bit 32.

315
00:28:27.794 --> 00:28:30.934
And then there's tools that will give you the blinded XPub.

316
00:28:31.955 --> 00:28:39.575
And then from there, it's pretty easy. Just build an interface. I put a lot of, you know, scary warnings because if you don't keep track of that bit 32 path,

317
00:28:40.320 --> 00:28:44.740
or expect to use it with a some devices don't support random paths like that,

318
00:28:46.080 --> 00:28:49.380
you could be in trouble. But kind of proof of concept in there, and

319
00:28:50.960 --> 00:29:05.655
that incidentally came from a project that we are working on internally in Unchained. We don't have it officially on the road map anywhere yet, but it is something that we've been interested in for a while, and that would help with kind of KYC concern. Okay. So let's set 2 things here. First of all, explain

320
00:29:06.195 --> 00:29:07.655
to we have

321
00:29:07.955 --> 00:29:09.495
a wide variety of listeners

322
00:29:09.795 --> 00:29:10.535
of dispatch

323
00:29:12.090 --> 00:29:13.470
from the technical curious

324
00:29:14.330 --> 00:29:15.630
to the more technical.

325
00:29:16.410 --> 00:29:19.950
And by the way, no pressure here. Steve Myers is listening. He

326
00:29:20.330 --> 00:29:20.830
zapped,

327
00:29:21.290 --> 00:29:21.790
21100

328
00:29:22.410 --> 00:29:22.910
sets.

329
00:29:23.415 --> 00:29:28.795
Steve Myers is BDK. And also, as a callback, he's the guy one of the 3 guys that runs our bit devs,

330
00:29:30.055 --> 00:29:32.555
in Nashville. We also have zaps from Musahi

331
00:29:33.335 --> 00:29:33.835
718

332
00:29:34.295 --> 00:29:34.955
and NoGood.

333
00:29:35.415 --> 00:29:37.515
All 3 of them zapped 21100

334
00:29:38.130 --> 00:29:42.950
sats. I'm gonna keep an eye on the ZapStream. If it gets more active, I'll pull it up on screen.

335
00:29:44.103 --> 00:29:44.603
The

336
00:29:45.250 --> 00:29:46.230
so two things.

337
00:29:46.530 --> 00:29:46.930
Just,

338
00:29:47.410 --> 00:29:50.790
descriptors. Why would a user want descriptor support?

339
00:29:54.875 --> 00:29:58.895
It's not the most important thing in the world, but descriptors are a kind of

340
00:29:59.275 --> 00:30:00.735
it's a it's a more,

341
00:30:02.635 --> 00:30:03.135
transportable,

342
00:30:05.515 --> 00:30:07.375
way to describe your wallet.

343
00:30:07.679 --> 00:30:09.299
So once you have a descriptor,

344
00:30:10.639 --> 00:30:12.019
you know, you can

345
00:30:12.720 --> 00:30:16.019
Sparrow already supports our the caravan JSON.

346
00:30:16.639 --> 00:30:17.700
But if we had

347
00:30:18.240 --> 00:30:29.245
supported descriptors earlier on, Craig wouldn't have had to write that, and you could have just exported the descriptors and imported the descriptor exported the descriptors from Caravan and import them directly into Sparrow.

348
00:30:30.105 --> 00:30:30.765
And then,

349
00:30:31.625 --> 00:30:36.050
Bitcoin Core, that's how their, wallets are now just described,

350
00:30:36.430 --> 00:30:37.490
is using descriptors.

351
00:30:38.590 --> 00:30:40.370
So you kind of need to,

352
00:30:40.910 --> 00:30:43.010
the the the descriptors are just like that,

353
00:30:43.870 --> 00:30:49.215
ability to be compatible across anything that's that's real standard with, with

354
00:30:49.615 --> 00:30:55.554
in within the ecosystem. And this is comes down to the age of caravan too. Like, caravan was written before PSVT

355
00:30:55.855 --> 00:30:57.155
was really widely adopted.

356
00:30:57.695 --> 00:30:59.875
It was still kind of just like in the early days.

357
00:31:00.335 --> 00:31:09.490
There's no descriptors. We're pretty early then as well. So a lot of this stuff, again, like, we have our own, you know, company priorities to try to make money and and whatever.

358
00:31:09.950 --> 00:31:15.255
So we have to shift those things. So this is a lot of it, it seems trivial and, like, we're just catching up,

359
00:31:15.735 --> 00:31:23.435
but I think it's important. Awesome. Alright. Yeah. It makes it much easier to interact with multisig wallets from a user perspective. Like, much more straightforward.

360
00:31:23.815 --> 00:31:31.430
And they have air they have error correcting and stuff as well. Like, they have check sums that are that are built in. They're easier to parse and and whatnot.

361
00:31:31.970 --> 00:31:36.230
Okay. Blinded xPubs. This is something that I've been excited about since Flaxman

362
00:31:36.850 --> 00:31:39.430
mentioned it to me at a bar. Yeah. Probably,

363
00:31:39.730 --> 00:31:43.110
like, 5 years ago. I don't know when it it was, like, early days of Unchained.

364
00:31:44.845 --> 00:31:45.345
Yep.

365
00:31:46.925 --> 00:31:49.745
Why why would a user care about blinded x pubs?

366
00:31:50.205 --> 00:31:50.945
Big picture.

367
00:31:52.685 --> 00:31:57.745
Sure. So let me start explaining how it works, and I think that that helps understand why you would care. So,

368
00:31:58.490 --> 00:32:00.590
if you if you think about it when you

369
00:32:01.930 --> 00:32:10.350
if you go, like, early days of Multisig and why there wasn't anything like even Sparrow before and why Caravan was important, Multisig was pretty much something that individuals

370
00:32:10.730 --> 00:32:15.355
did on their own with their own keys. You weren't collaborating as much. So you take your 3

371
00:32:15.815 --> 00:32:20.554
or to 5 seeds or whatever, you export xpubs from them, create your wallet,

372
00:32:20.855 --> 00:32:27.275
geographically distribute your keys, and you have your wallet, you can get your address, you can deposit, and, you know, you're relatively secure.

373
00:32:27.970 --> 00:32:28.470
Unchained,

374
00:32:29.250 --> 00:32:38.309
and, you know, places like Casa kinda start introducing this idea of collaborative custody where you have multiple participants in a quorum, peep different people that hold different keys.

375
00:32:39.169 --> 00:32:41.895
The advantages of that are it distributes risk,

376
00:32:42.455 --> 00:32:43.015
you know,

377
00:32:43.495 --> 00:32:48.315
you don't have to know where some of the participants keep their keys. You don't have to trust yourself entirely

378
00:32:48.775 --> 00:32:49.755
with the security

379
00:32:50.055 --> 00:32:53.995
of the wallet, you know, with your funds. So that's really, really important.

380
00:32:55.049 --> 00:32:58.750
So in that scenario, rather than you bringing in your devices and exporting XPUBs,

381
00:32:59.210 --> 00:33:01.309
you get an XPUB from every participant,

382
00:33:01.690 --> 00:33:07.850
you contribute your own XPUBs, and now you have a wallet, and you can do you we've been able to do this in Caravan forever. I think,

383
00:33:08.855 --> 00:33:09.335
Phil,

384
00:33:09.655 --> 00:33:26.230
from Unchained, he did this, you know, famous bet years ago using caravan between different collaborators to basically put it into an escrow using caravan with everybody contributing their own keys. And then based off who won the bet, they signed and I think I participated in that.

385
00:33:27.250 --> 00:33:35.750
I think I got in trouble because I did it drunk. I was trying to show that it's so easy to do that you could do it drunk, and, I got a little bit of a lecture from, Unchained Leadership.

386
00:33:37.525 --> 00:33:41.785
Uh-oh. But you were able to do that. Yeah. It was very straightforward. That was the whole point.

387
00:33:42.165 --> 00:33:42.905
That easy.

388
00:33:44.965 --> 00:33:54.470
So, like, that that shows the strength and beauty of Calabrio custody. Now, however, you still have this kind of problem of privacy because everybody that contributes a key

389
00:33:56.690 --> 00:33:57.190
if

390
00:33:57.650 --> 00:34:03.350
when when you've given an XPUB, you know all of the public keys of yours that will be used

391
00:34:03.695 --> 00:34:05.635
in the redeem script for all the addresses.

392
00:34:06.255 --> 00:34:10.915
So you can get an initial level of privacy where if you don't share the wallet config,

393
00:34:12.415 --> 00:34:14.835
with one of the participants, that participant

394
00:34:15.295 --> 00:34:18.515
can't know the addresses that have been deposited to.

395
00:34:19.059 --> 00:34:19.559
However,

396
00:34:19.940 --> 00:34:26.740
they can know once those average addresses have been spent from. So because they check the chain data. The the way it fit

397
00:34:27.539 --> 00:34:34.925
Yeah. Right. Exactly. So you look you can you can look at the chain data and see because once you spend from a a p2sh or p2wsh,

398
00:34:35.385 --> 00:34:46.170
the redeem script has to be revealed, and the redeem script has all of the public keys, even the ones that are not signed for. That's you have to include that because that's the preimage for the hash in the pay of script hash.

399
00:34:47.450 --> 00:34:52.670
So in the example, if it's like me, you, and Phil in a bet, and you give me an XPUB,

400
00:34:53.210 --> 00:35:02.575
and Phil gives me an XPUB, and then I create a wallet, and then I start depositing funds to it. You guys don't know the addresses And we don't know how much money is in it until you spend from it. Right.

401
00:35:02.875 --> 00:35:06.575
Yeah. But then once you spend, then that privacy starts to get lost.

402
00:35:08.154 --> 00:35:15.434
So blinded XPUB is the idea of rather than you just giving me an XPUB and then me using that XPUB to generate the,

403
00:35:16.510 --> 00:35:20.050
the receive and change addresses and just plug it into to caravan,

404
00:35:22.030 --> 00:35:22.930
I can then

405
00:35:23.470 --> 00:35:24.530
randomly generate,

406
00:35:24.990 --> 00:35:26.610
in in in the proposal,

407
00:35:28.670 --> 00:35:29.170
Flaxman

408
00:35:29.470 --> 00:35:31.330
suggests a 128 bits of entropy.

409
00:35:31.745 --> 00:35:36.245
So what that means in BIP 32 path terms is basically adding

410
00:35:36.705 --> 00:35:40.005
4 new depths to the HD path.

411
00:35:40.545 --> 00:35:44.245
So if you think about you have an XPub and it's typically

412
00:35:44.799 --> 00:35:46.339
was, I think, depth 4,

413
00:35:47.200 --> 00:35:47.859
and then

414
00:35:48.400 --> 00:35:49.299
you just generate

415
00:35:49.920 --> 00:35:54.579
your, like, 0 for receive, 0, and then, indexes for address. Right?

416
00:35:55.519 --> 00:36:09.145
What this is, it says before you start generating your addresses, you add 4 more depths. And the reason for that is the only way that you can what you're doing if you in the previous example, when you're watching the blockchain, you're basically taking your xPub,

417
00:36:09.765 --> 00:36:11.225
generating the standard,

418
00:36:12.325 --> 00:36:12.825
indexes

419
00:36:13.285 --> 00:36:15.840
for your xPub to look up the public keys.

420
00:36:16.800 --> 00:36:18.260
But if I'm generating

421
00:36:18.800 --> 00:36:20.820
4 depths of randomness,

422
00:36:21.840 --> 00:36:25.140
for for numbers, basically, the sequence numbers in there,

423
00:36:26.080 --> 00:36:27.460
you would have to generate,

424
00:36:27.840 --> 00:36:37.675
you know, however many addresses for each one of the possible depths with a 128 bits of entropy and then watch the blockchain for any of those possible public keys.

425
00:36:38.055 --> 00:36:39.835
That becomes completely infeasible,

426
00:36:40.775 --> 00:36:41.835
to to monitor.

427
00:36:42.295 --> 00:36:59.520
So what this means is now instead of you giving me an XPO and I'm just using that directly to create a wallet, you give me an XPUB. I generate a 128 bits of entropy to to create a new XPUB. That XPUB is what's called a blinded XPUB because it's you don't know that XPUB. Only I know that XPUB.

428
00:37:00.135 --> 00:37:04.315
And the cool thing about the BIP 32 is that it you can generate unhardened,

429
00:37:05.175 --> 00:37:10.555
PAS without private key information. So you give me, an XPub, and I can generate

430
00:37:11.095 --> 00:37:11.595
whatever,

431
00:37:12.055 --> 00:37:13.595
unhardened public keys. Awesome.

432
00:37:14.390 --> 00:37:24.650
And once once you've done that, then you don't know the balances. You can't keep track of anything until I ask you to sign, and then I have to give you that blinding Right. So, I mean, the

433
00:37:25.270 --> 00:37:30.045
the bet example is actually not a great example for this. If you wanna think about it from practical

434
00:37:31.005 --> 00:37:32.224
terms, first of all,

435
00:37:33.565 --> 00:37:36.545
Multisig is particularly really great in organizations.

436
00:37:37.565 --> 00:37:39.184
Right? In an organization,

437
00:37:39.885 --> 00:37:47.500
you don't want just one person in leadership holding the Treasury to the Bitcoin. Right? And, with Open Sats, Open Sats has,

438
00:37:48.440 --> 00:37:50.220
our entire treasuries in Bitcoin.

439
00:37:50.599 --> 00:37:52.380
We keep no balances in bank accounts.

440
00:37:52.839 --> 00:37:55.900
Literally, the entire operation of the organization relies

441
00:37:56.359 --> 00:37:57.339
on that Bitcoin,

442
00:37:58.040 --> 00:38:00.859
being secure and being able to be spent from in the future.

443
00:38:01.315 --> 00:38:03.415
And so you want multiple people in the organization

444
00:38:04.275 --> 00:38:04.935
to have

445
00:38:05.395 --> 00:38:08.295
shared control where none of them can spend individually,

446
00:38:08.675 --> 00:38:14.295
but they need to come together to spend. It's very, very great for organizations in that particular scenario.

447
00:38:14.730 --> 00:38:21.310
But it does mean in the current setup, without blinded XPubs, that every person in your organization you

448
00:38:21.690 --> 00:38:26.030
bring in knows full balance history, knows full transaction history,

449
00:38:26.585 --> 00:38:30.525
and sees all the intimate financial details of the organization.

450
00:38:31.065 --> 00:38:32.684
Now, you can imagine situations

451
00:38:33.384 --> 00:38:35.565
where what you really want is you want

452
00:38:36.744 --> 00:38:43.630
a couple individuals in the organizations to effectively have what you could think of as, like, backup keys. If, for some reason, the main operators

453
00:38:44.410 --> 00:38:46.590
die or lose access to funds or

454
00:38:46.970 --> 00:38:57.655
something bad happens, you want these backup key operators to come into play, but you don't want them to see the intimate financial details of every transaction in the balance history unless that actually happens.

455
00:38:57.955 --> 00:39:01.095
Now, from an individual perspective, you can also imagine a situation

456
00:39:01.555 --> 00:39:03.015
where I, a family member,

457
00:39:03.315 --> 00:39:08.935
want to help my uncle hold his Bitcoin, but I do not want to know how much Bitcoin he has or when he transacts.

458
00:39:09.280 --> 00:39:15.060
But if, god forbid, something happens to him and I need to help, you know, my aunt recover the funds,

459
00:39:15.600 --> 00:39:23.655
I could come into play and I can help recover the funds. And, at that point, I'll know balance and transaction history, but that's fine because she needs me to help her

460
00:39:24.135 --> 00:39:27.035
recover the money. And so this is a major breakthrough

461
00:39:27.495 --> 00:39:28.315
or a major,

462
00:39:29.575 --> 00:39:33.355
this has been a major goal for a long time in terms of collaborative custody

463
00:39:34.455 --> 00:39:34.955
capability.

464
00:39:37.410 --> 00:39:53.605
Yeah. It's it's really powerful in those kinda, like, emergency recovery positions. So I I the the the best way I think about it is is for, like, a lawyer who's managing kind of your inheritance scheme. Right? Like, you don't want your lawyer to have to to know the balances that you have. But in case of an emergency,

465
00:39:54.225 --> 00:39:58.325
you know, time of your untimely passing or whatever and your family needs to recover,

466
00:39:59.185 --> 00:40:13.740
they can take the blinded blinding factor, those random bits, take it to the the the lawyer is basically giving you their x pub. You generate a random x pub from that, and then if you need them to recover, then you say, hey. Like, we need help distributing these funds.

467
00:40:14.405 --> 00:40:22.165
Can you please sign? And then if you never need them, then they never need to know your balances. So you kind of opt in. It's like opting into the,

468
00:40:22.565 --> 00:40:25.385
KYC. So this is supported in Caravan today.

469
00:40:27.240 --> 00:40:39.435
Yeah. So if you were to if you get that XPUB from your lawyer, you can paste in that XPUB, and then there's a button that says blind the XPUB, and then it'll generate if you if you trust the code and it's auditable, so you, you know, if if you wanna, you can look at it.

470
00:40:39.995 --> 00:40:42.895
You can turn off your Wi Fi so you make sure it's not sent anywhere,

471
00:40:43.595 --> 00:40:50.175
and then it'll give you the path, and it'll give you a new x pub, and it'll use that in the new wallet. But it's very important

472
00:40:50.555 --> 00:40:54.175
to back that up because if you don't have that x pub, because it's not a standard,

473
00:40:54.520 --> 00:41:01.580
it's just as hard for you to recover it as it is for So you're basically you're backing up the config file which keeps all the data,

474
00:41:02.600 --> 00:41:04.440
and that config file

475
00:41:05.080 --> 00:41:09.260
And you need that path. You need that path. But the config file is keeping the path. Right?

476
00:41:10.855 --> 00:41:18.635
Yes. And but that config file is a privacy risk if it gets leaked. It's not a security risk because you still need the private keys on the hardware wallets.

477
00:41:20.055 --> 00:41:27.150
Right. So I think, like, using cloud backup for things like this, you know, especially if it's, like, you know, some encrypted cloud backup is perfectly reasonable,

478
00:41:27.690 --> 00:41:32.910
because you're not giving up, you know, access to your funds, but it means it's recoverable in case Or redundant

479
00:41:33.210 --> 00:41:35.070
USB backup or Yeah.

480
00:41:35.450 --> 00:41:36.030
And and

481
00:41:36.410 --> 00:41:37.790
you should side on

482
00:41:38.330 --> 00:41:38.830
redundancy

483
00:41:39.770 --> 00:41:40.510
and perseverance

484
00:41:40.810 --> 00:41:41.550
of the data

485
00:41:42.115 --> 00:42:04.980
rather than going, like, full paranoid because it's if it does leak, yes, it sucks because it's a privacy leak, but you don't lose access to your funds. But, if you lose it, you lose access to your funds. So, you gotta keep that in mind. Okay. So Yeah. Yeah. Go on. I I think about it like there's there's no difference between somebody stealing your funds and you being unable to recover it. Like, your your access to your funds is still the same,

486
00:42:05.359 --> 00:42:09.724
and so you just gotta always keep in mind that, you know, complexity is the enemy of security.

487
00:42:10.105 --> 00:42:13.724
Most Bitcoin is lost by mistakes, not by theft.

488
00:42:15.385 --> 00:42:19.244
The okay. So the dream here so it's available today in Caravan.

489
00:42:19.830 --> 00:42:22.570
I think you're correct that it's not available in Sparro yet,

490
00:42:23.110 --> 00:42:26.890
but if Craig listens to this episode it might be available in Sparro soon.

491
00:42:27.910 --> 00:42:28.410
The

492
00:42:30.390 --> 00:42:31.130
the dream

493
00:42:31.830 --> 00:42:33.770
the dream has always been that Unchained,

494
00:42:35.345 --> 00:42:39.285
is the blinded ex pub. Right? The dream is, like, you have an organization like Unchained.

495
00:42:39.665 --> 00:42:42.724
They hold your hand. They come in in a backup scenario,

496
00:42:43.184 --> 00:42:48.165
an emergency scenario, or an inheritance scenario. But in the meantime, they don't know.

497
00:42:49.100 --> 00:42:52.000
They don't know your your addresses or your balances.

498
00:42:53.580 --> 00:42:58.400
Yep. Is that on is that in the road map? Is that ever gonna happen? Is that just a,

499
00:42:59.180 --> 00:43:00.800
like, a pet unicorn dream?

500
00:43:03.965 --> 00:43:08.785
I'd say it is a it's a pet unicorn dream that is on the road map, if I could say that.

501
00:43:10.525 --> 00:43:16.225
Yeah. I mean, I I I guess I can't promise anything, but it is something that's actively being worked on and considered.

502
00:43:16.765 --> 00:43:17.665
You know, we

503
00:43:19.400 --> 00:43:22.859
we recognize there's just there's a lot of different types of Bitcoiners,

504
00:43:23.960 --> 00:43:24.460
that

505
00:43:25.000 --> 00:43:27.180
value the type of service that we provide,

506
00:43:27.559 --> 00:43:34.924
even those that are are very private privacy focused. Right? So most recently, I think in the expansion that we added to connections,

507
00:43:35.785 --> 00:43:40.204
we are addressing some of that, which is people that are like yourself that are privacy focused,

508
00:43:40.505 --> 00:43:41.005
but

509
00:43:41.545 --> 00:43:46.765
still have family members that, you know, it's more important for them to have the hand holding than to have the privacy.

510
00:43:47.200 --> 00:43:51.540
But the ability for you to help them, I think, is super powerful. So just like through,

511
00:43:51.840 --> 00:43:53.700
you know, expanding collaborative custody,

512
00:43:54.640 --> 00:43:55.380
kind of

513
00:43:55.760 --> 00:44:00.020
having more opportunities for uncle Jim. But then there is, like, we also think that

514
00:44:00.474 --> 00:44:01.535
a user like you

515
00:44:01.835 --> 00:44:08.494
values the security that our key itself has. But you don't want to KYC yourself. You don't wanna onboard into our platform.

516
00:44:08.795 --> 00:44:09.295
But,

517
00:44:10.155 --> 00:44:12.815
the bet is you would still pay

518
00:44:13.210 --> 00:44:15.710
for access to our key because of the security

519
00:44:16.010 --> 00:44:18.270
that's involved there and the reliability of it.

520
00:44:18.570 --> 00:44:31.335
And so giving more people access to that key in these different models is something that we recognize there is some demand for, that there's utility for in the space. And so we we definitely want to address that.

521
00:44:31.954 --> 00:44:38.694
And, like, the code that was written into caravan the caravan bit 32 library that was then used in the caravan coordinator

522
00:44:38.994 --> 00:44:41.974
is something that came out of some of this work that we're doing internally

523
00:44:42.290 --> 00:44:47.270
to try and explore some of this. I mean, I think particularly it could be very valuable to power users

524
00:44:47.970 --> 00:44:52.470
that want some kind of tooling for inheritance. Because inheritance is Yep.

525
00:44:53.410 --> 00:45:00.755
A is a is a difficult problem to solve and is has to be treated on a case by case basis based on your strat model.

526
00:45:02.015 --> 00:45:02.335
And,

527
00:45:03.935 --> 00:45:10.435
Yeah, it's mostly it's an unsolved problem that people have to work very hard on in terms of if they care about freedom and privacy.

528
00:45:10.869 --> 00:45:13.690
It's much easier if you're using it in

529
00:45:14.630 --> 00:45:21.210
a more hand holdy way. I'm kinda curious because I wasn't aware, and maybe you seem more familiar with it, this new,

530
00:45:23.349 --> 00:45:27.025
like Uncle Jim style collaborative custody model where

531
00:45:27.964 --> 00:45:32.305
where someone like myself or someone who's listening to the show is holding one key in their

532
00:45:33.005 --> 00:45:34.145
family's quorum.

533
00:45:35.484 --> 00:45:40.090
That's live and Unchained right now. And how does that work, like, how does that work in in

534
00:45:40.390 --> 00:45:43.050
practice, like, if the user was actually going to do that?

535
00:45:45.270 --> 00:45:50.330
Yes. So my my normal day job is actually, like, I I primarily work on the the internal

536
00:45:51.075 --> 00:45:52.515
tools and code. And and,

537
00:45:52.915 --> 00:45:57.494
most of my time in unchained, I've been working on the wallet infrastructure team. So I was actively,

538
00:45:58.035 --> 00:46:00.775
part of building this this tooling out

539
00:46:01.714 --> 00:46:02.855
over the past year.

540
00:46:03.470 --> 00:46:04.615
And yeah. So

541
00:46:05.200 --> 00:46:07.520
the way it works is when you are

542
00:46:07.920 --> 00:46:08.420
so

543
00:46:08.800 --> 00:46:12.420
when you kind of onboard into unchained, you plug in your devices or,

544
00:46:13.280 --> 00:46:16.500
you know, pass in your your cold card configuration file,

545
00:46:17.360 --> 00:46:20.325
and then your kinda your keys at a hard depth

546
00:46:20.885 --> 00:46:22.665
are available on the platform.

547
00:46:23.525 --> 00:46:28.585
You can now and you've always kind of been able to do this, but we've been making the the infrastructure a lot more robust.

548
00:46:28.964 --> 00:46:30.984
Share that key with somebody else.

549
00:46:32.165 --> 00:46:33.865
Dhruv, our technical cofounder,

550
00:46:34.420 --> 00:46:36.360
he he came out with this report,

551
00:46:36.740 --> 00:46:54.085
not too long ago called the network of keys. And the the idea is that, like, the dream of collaborative custody shouldn't just be you come into our platform and you're using our key or you're using partners that we vet, but it's really just like, we just want to be another participant. We wanna be another option for a participant in your form. We think we'll be one of the best,

552
00:46:55.744 --> 00:47:11.220
participants, but we want people to, you know, really be able to make that choice and have to, you know, we earn that trust type of thing. So if we build the platform in that way, you should be able to choose other people, including what we're calling connections, people that you know yourself. And, honestly,

553
00:47:11.600 --> 00:47:15.540
the people you're gonna trust the most aren't a company even that's you know, has

554
00:47:15.855 --> 00:47:16.175
long,

555
00:47:16.655 --> 00:47:19.715
track record of trust in this space, but it's gonna be your friends and family.

556
00:47:20.494 --> 00:47:31.279
We recognize that you should be more trusted to your family than we will be. So we just wanna be one of the partners. So yeah. So once your keys are uploaded, those XPUBs can be shared and then child,

557
00:47:32.619 --> 00:47:33.119
derivations

558
00:47:34.220 --> 00:47:34.720
generated

559
00:47:35.420 --> 00:47:47.455
to create wallets from that. So you don't need to plug in your device every time you're gonna create a new wallet with your your friends or family. You have that XPOD that's already up there, and then we derive ChildPass from that,

560
00:47:47.835 --> 00:47:53.295
and they can create as many vaults as they, we can't use any loans at the moment. But yeah. And,

561
00:47:53.750 --> 00:48:00.730
you know, eventually we want that to be a model for other companies too. We we think that this network of keys should be more than just Unchained

562
00:48:01.190 --> 00:48:02.250
and your connections,

563
00:48:02.630 --> 00:48:06.809
but companies that kinda like vie for for your business there too. Okay. So

564
00:48:09.085 --> 00:48:11.745
I I mean, I could see this being very helpful for, like,

565
00:48:12.605 --> 00:48:16.625
wealth advisors or technically proficient lawyers too. Yep.

566
00:48:17.645 --> 00:48:25.820
So but in The DAX stuff, that this was that was built by the founder of advised funds. So if you remember, Freaks, I had Phil Geiger on from Unchained,

567
00:48:26.440 --> 00:48:28.859
a little bit ago about their donor advised funds,

568
00:48:29.800 --> 00:48:33.740
which is a way to put Bitcoin towards charitable causes like OpenSats

569
00:48:34.695 --> 00:48:36.875
for the future and keep it in Bitcoin

570
00:48:37.415 --> 00:48:38.715
in the meantime before

571
00:48:39.015 --> 00:48:41.995
you send the funds out. You get immediate tax benefits

572
00:48:42.695 --> 00:48:43.835
charitably wise,

573
00:48:44.455 --> 00:48:45.195
but you

574
00:48:45.975 --> 00:48:47.195
can keep it in Bitcoin.

575
00:48:48.420 --> 00:48:48.920
The

576
00:48:50.099 --> 00:48:57.559
but in practice, so Unchained is still has a so your your usual vault is 2 of 3. I imagine that isn't changing anytime soon.

577
00:48:58.180 --> 00:49:02.915
Usually Unchained holds one key, the users holds 2 keys. Unless it's an organization

578
00:49:03.215 --> 00:49:04.275
which was already

579
00:49:04.815 --> 00:49:06.435
set up in a way that

580
00:49:07.215 --> 00:49:19.730
you could have, like, 2 different members of the organization each hold one key, and then Unchained holds a key. So does it look it looks like that, like how it works with organizations? Or can you actually can you replace the Unchained key? Can you still use the Unchained platform

581
00:49:20.590 --> 00:49:21.090
and

582
00:49:21.630 --> 00:49:24.930
have 2 family members have the key and you have a key? Okay.

583
00:49:26.345 --> 00:49:31.644
Not yet. But we we do wanna get to that. Got it. You know, kind of like being the platform for collaborative custody,

584
00:49:32.025 --> 00:49:51.849
as well. And then if you want to purchase eventually, you know, if you wanna purchase access to the Unchained key without even being on our platform, you know, that's the blinded xpub side, you can also do that. So really, like, a lot of Right. In the blinded xpub side, it's like I'm a power user. I don't even onboard to the platform. You're just giving me the xpub. I'm blinding it. I'm paying you for,

585
00:49:52.710 --> 00:50:02.785
backup recovery in a worst case scenario situation. That makes sense to me too. Yeah. And then if yeah. If you need us to sign, you're basically gonna create a PSVT on your own and send us a PSVT and say, please Right. So, I'm,

586
00:50:05.425 --> 00:50:06.805
but but just just

587
00:50:07.105 --> 00:50:12.529
currently as it currently as it currently stands, the idea, the functionality that exists right now in Unchained

588
00:50:12.990 --> 00:50:14.769
is I'm onboarding my uncle.

589
00:50:15.230 --> 00:50:23.835
By the way, Uncle Jim, when I came up with the term Uncle Jim, I was the uncle. My uncles are actually all no prequiners. They're not prequiners yet.

590
00:50:24.714 --> 00:50:29.214
So, I need my siblings to have kids so I can actually become an uncle, Jim.

591
00:50:29.994 --> 00:50:33.455
But my uncle, I'm onboarding my uncle. He's finally like, I'm gonna buy Bitcoin.

592
00:50:34.635 --> 00:50:38.815
And I'm gonna do it the right way. He holds a key. I hold the key.

593
00:50:39.510 --> 00:50:40.890
Unchained holds a key.

594
00:50:41.350 --> 00:50:42.010
And then

595
00:50:42.390 --> 00:50:47.690
if he screws something up, as long as I don't lose my key, Unchained still has their key, and we're good to go.

596
00:50:48.470 --> 00:50:51.530
Yeah. It's a great model. And the other the the

597
00:50:52.155 --> 00:50:57.135
the reverse is also true in the sense where, like, you know, I see I think about it this way too with my family.

598
00:50:57.675 --> 00:51:21.145
If you were managing first of all, you don't you also don't wanna be the technical support for your family. I see that as another yeah. It sucks. But Unchained is the best at the business. Like, our frontline teams are as good as it gets for giving that type of support. And a lot of people, even family members, are willing to pay for that, and you're just offering the security now. You're not No. You give them the white glove. They have they have a question, and you're like, just talk to talk to Unchained support.

599
00:51:22.485 --> 00:51:28.985
Yeah. And then the other thing that's an advantage of it is not just if if your if your uncle lost their key,

600
00:51:29.445 --> 00:51:37.510
but if something happened to you and that family member is like, crap. Like, what what the hell do I do? They can contact Unchained,

601
00:51:37.890 --> 00:51:49.705
and they still have 2 keys. Right? So this is something I I constantly worry about. Like, if I'm managing all of my family's Bitcoin, if something happens to me, I'm still the single point of failure. You really don't want that. So it gives you peace of mind,

602
00:51:50.245 --> 00:51:53.865
on You don't wanna get hit by a bus and then have your uncle lose his key.

603
00:51:54.245 --> 00:51:56.265
Have his uncle lose his his Bitcoin.

604
00:51:57.045 --> 00:52:01.305
Okay. That makes sense. This is all awesome. I love this direction that that you guys are going in.

605
00:52:02.540 --> 00:52:04.220
What so what else are we covering here?

606
00:52:04.859 --> 00:52:07.920
I see Summer Bitcoin in the blog post. Where does Summer Bitcoin

607
00:52:08.380 --> 00:52:09.440
where are they involved?

608
00:52:11.260 --> 00:52:20.915
Yeah. So, I mean, a common thread through the whole blog post was just kind of, you know, wanting to make our open source code more open source ecosystem friendly,

609
00:52:21.295 --> 00:52:24.435
easier to build on, more inviting for outside contributors.

610
00:52:25.695 --> 00:52:26.195
And

611
00:52:26.735 --> 00:52:35.130
the summer Bitcoin program kind of fit into that. I think the as I was getting more active in that library in summer Bitcoin was kind of shopping around for projects,

612
00:52:35.510 --> 00:52:45.165
that they could pair with I I guess I should practice just for people who don't know that summer Bitcoin, this program has been running for a few years now. I think they started out just in India, but now they're all over,

613
00:52:45.885 --> 00:52:46.385
taking,

614
00:52:47.565 --> 00:52:48.385
you know, technically,

615
00:52:49.405 --> 00:52:53.105
minded high school and college students, so a lot of, you know, CS,

616
00:52:53.885 --> 00:52:55.185
majors and and whatnot

617
00:52:55.645 --> 00:53:00.705
that are interested in Bitcoin, but, you know, might not have a big a technical Bitcoin course at their school.

618
00:53:01.210 --> 00:53:02.590
They they basically do,

619
00:53:03.130 --> 00:53:04.670
like, a boot camp style

620
00:53:05.050 --> 00:53:21.505
ramping up on Bitcoin fundamentals, technical fundamentals, understand how that works. They have, a vetting program. They have some, like, tests to evaluate their skills, and then they reach out to open source projects that would be open to taking contributors that we and then so I was reached out to,

621
00:53:23.005 --> 00:53:26.224
and they asked for for project proposals. So I put up a few,

622
00:53:26.925 --> 00:53:30.850
and we had we had some really great contributions. And I I

623
00:53:31.150 --> 00:53:33.070
think, like, the again, the point,

624
00:53:33.550 --> 00:53:34.450
you know, while,

625
00:53:34.750 --> 00:53:45.505
you know, maybe a lot of the people are listening to this or read the blog posts aren't developers or don't really care about a lot of this sort of stuff, I think the key takeaway is is you have to do a lot of kinda, like, foundational work,

626
00:53:45.805 --> 00:53:51.744
especially in open source to to create something that can thrive, get other contributors that bring,

627
00:53:52.925 --> 00:53:55.025
more user facing features. And we kinda

628
00:53:55.359 --> 00:53:57.619
got some of that out of the summer of Bitcoin. So

629
00:53:57.920 --> 00:54:07.575
we had, 2 technical we had one design intern and then 2 technical interns that that were working on projects that landed code that are now available in caravan for anybody to use.

630
00:54:08.535 --> 00:54:11.435
We don't have user facing aspects of that yet, but,

631
00:54:11.974 --> 00:54:16.234
it's being it's being worked on and other people can use it too. So one was a library

632
00:54:17.575 --> 00:54:20.714
that we call caravan health, and it's basically a,

633
00:54:22.018 --> 00:54:25.750
the this intern did a lot of kind of prerequisite work of just researching,

634
00:54:27.010 --> 00:54:33.270
like, statistical analysis of of what would contribute to a wallet's health, like, if we were gonna talk about health metrics.

635
00:54:34.484 --> 00:54:38.664
And the interesting thing there too is that there's 2 we we kind of narrowed it down to 2

636
00:54:39.045 --> 00:54:43.305
elements of health. 1 is fee health long term and the other is privacy.

637
00:54:43.605 --> 00:54:47.785
And really interesting about that for a wallet is oftentimes those 2 things are in conflict.

638
00:54:48.090 --> 00:54:56.110
If you want really good privacy, you're gonna have really bad fee health. And if you want really good fee health, you know, by consolidating UTXOs and whatnot, you're gonna have very bad privacy.

639
00:54:56.570 --> 00:54:57.070
And

640
00:54:58.010 --> 00:54:58.510
so

641
00:54:59.290 --> 00:55:05.245
all of the work during the summer went into building out these models and then writing out the code that could take in

642
00:55:05.625 --> 00:55:07.325
transaction history, UTXO,

643
00:55:08.665 --> 00:55:12.285
UTXO set for a wallet, or analyzing a specific transaction

644
00:55:12.985 --> 00:55:13.485
to

645
00:55:13.785 --> 00:55:17.085
give you a rating about the health of that wallet.

646
00:55:17.609 --> 00:55:20.029
It's a big project to then turn that into a dashboard,

647
00:55:20.490 --> 00:55:31.150
but, this is the advantage of of how we're building out Qaravan now though is you have an individual library that anybody can use, ingest that code, and build out their own dashboard,

648
00:55:31.685 --> 00:55:33.865
including in the caravan coordinator itself.

649
00:55:34.405 --> 00:55:38.105
And I think, you know, when we have something like this, it would be something relatively new.

650
00:55:38.645 --> 00:55:40.825
I should also just say, like, a lot of credit,

651
00:55:41.445 --> 00:55:45.705
for this type of work goes to to Merck who did, you know, from the

652
00:55:46.400 --> 00:55:49.040
Bitcoin core contributor, he's been at Chaincode Labs, and,

653
00:55:49.640 --> 00:55:51.600
I forget where he's moved to now, but,

654
00:55:53.600 --> 00:55:54.100
he

655
00:55:54.400 --> 00:55:57.300
he did a coin selection research for his dissertation

656
00:55:57.600 --> 00:55:58.820
and then built in

657
00:55:59.244 --> 00:56:09.185
new code for this in Bitcoin Core. And so we we take some of that work into account in terms of the waste metrics, which kind of analyzes the UTXO size,

658
00:56:10.045 --> 00:56:11.505
that people have. So,

659
00:56:13.650 --> 00:56:14.050
Yeah.

660
00:56:14.450 --> 00:56:19.910
So we still have all this code that we wanna kinda, like, build dashboards out of d three maps that,

661
00:56:20.210 --> 00:56:25.830
you or d three JS to build out actually like like this, you know, the mempool space type of visualize visualizations.

662
00:56:27.245 --> 00:56:30.305
And then the second project is really exciting in

663
00:56:30.685 --> 00:56:36.385
is another library. Again, you can use in any code base that you want, but we're also working on building a

664
00:56:37.245 --> 00:56:39.505
a UX for it within the caravan coordinator

665
00:56:39.810 --> 00:56:40.550
is caravan

666
00:56:41.010 --> 00:56:44.790
fees. And the idea for this is is fee bumping utilities.

667
00:56:45.170 --> 00:56:45.990
And so,

668
00:56:47.250 --> 00:56:51.590
we haven't had RBF in caravan, again, another way in which Sparrow is is pretty far ahead.

669
00:56:52.130 --> 00:56:53.750
But we wanted to build out

670
00:56:54.425 --> 00:57:01.625
both RBF tools as well as CP, FP. I think that is also kind of there's not a lot of really good tooling for that,

671
00:57:02.665 --> 00:57:04.925
in the space, and it can still be a beneficial

672
00:57:05.305 --> 00:57:06.360
way to fee bump.

673
00:57:07.000 --> 00:57:17.500
Obviously, there's a lot more attention in this in general around, like, all the package relay work and ephemeral anchors and all this sort of stuff, and I think the code that was written by this summer Bitcoin intern

674
00:57:17.880 --> 00:57:25.815
could be easily leveraged into that. And the way that he wrote the code, I think, is really nice, really modular in a way that's basically

675
00:57:26.195 --> 00:57:27.335
you put in a transaction,

676
00:57:27.795 --> 00:57:34.215
and then you can set this function to tell you, okay, which is the most economical fee bump strategy, whether it's CPFP

677
00:57:34.675 --> 00:57:35.494
or RBF.

678
00:57:36.010 --> 00:57:42.750
But for those who don't know, CPFP is child pays for parents. You basically have a child transaction that fee bumps a parent transaction that got stuck in the mempool.

679
00:57:44.490 --> 00:58:08.070
And then based off of that, you can then say, okay. Take this transaction and build an RBF transaction that accelerates it or build the child transaction that will spend one of the outputs to fee bump it based off of this target fee. And then it'll just spit out a PSVT that you can then take and drop it in anywhere, whether it's in your own UX or or put it somewhere else. I think that's really neat, and it includes code also for,

680
00:58:09.010 --> 00:58:12.470
cancellation. So a lot of people think about RBF as just an accelerating,

681
00:58:13.170 --> 00:58:23.735
feature, but you can also use RBF to cancel a transaction that just sends back to yourself if it's been stuck in the mempool and you no longer wanna send it, and RBF supports that too. So all that code is there.

682
00:58:24.195 --> 00:58:35.190
It works in theory, and, we're gonna be starting to build out tooling in the next couple months. So the intern another cool thing about this program is it creates kind of long term Bitcoin developers. So

683
00:58:35.569 --> 00:58:36.630
there's other projects,

684
00:58:37.329 --> 00:58:45.030
people I think BDK, if you see this on the chat, he can confirm. Yeah. They have a a a summer Bitcoin intern that turned into a full time developer.

685
00:58:46.244 --> 00:58:55.065
This, the guy who's writing the caravan fees package is continuing to to contribute, which has been just really cool to see. Just like, you know, very young,

686
00:58:55.765 --> 00:58:56.265
new,

687
00:58:56.964 --> 00:58:58.905
developers that are just super hungry,

688
00:58:59.380 --> 00:59:10.160
you know, contributing to the space, which, I appreciate as well because, like, the open source stuff in Unchained, it's more of a passion. It's not, like, the priority, but I I want us to keep on moving it forward. So it's really

689
00:59:10.540 --> 00:59:15.454
gratifying to have other people that kind of, like, share in that. Yeah. I mean, summer Bitcoin is

690
00:59:15.755 --> 00:59:16.255
awesome,

691
00:59:16.635 --> 00:59:17.775
is an awesome project.

692
00:59:18.154 --> 00:59:18.654
They

693
00:59:18.954 --> 00:59:26.974
have there's so much demand for summer Bitcoin and not enough internships that they're often oversubscribed at this point by a lot. It's, like, 95%

694
00:59:27.434 --> 00:59:27.934
oversubscribed,

695
00:59:29.000 --> 00:59:31.180
maybe even higher we actually had

696
00:59:31.720 --> 00:59:36.300
a Vanderbilt student named Will who always hangs out around Bitcoin Park

697
00:59:38.200 --> 00:59:38.700
who

698
00:59:39.000 --> 00:59:42.859
who got into summer of Bitcoin and it was a really great experience for him

699
00:59:43.455 --> 00:59:49.555
and now he's he's going into bitcoin development in a big way it was pretty cool because we we when we first met him he was

700
00:59:50.015 --> 00:59:57.795
you know leadership at his at his blockchain club at Vanderbilt and he was like a fresh fresh eyed crypto curious guy and now he's

701
00:59:58.790 --> 01:00:03.050
laser focused on Bitcoin development and specifically Bitcoin development not

702
01:00:03.990 --> 01:00:06.890
you know the the many many shit coins out there

703
01:00:07.350 --> 01:00:11.210
okay so there's a lot to unpack there I'm pretty excited about all those developments

704
01:00:11.985 --> 01:00:14.485
The fee health, privacy health is really cool.

705
01:00:15.585 --> 01:00:20.005
And just to put a little context out there for the listeners who might not be aware of

706
01:00:20.465 --> 01:00:24.565
the of the trade off of the back and forth, when you when you do an on chain Bitcoin transaction,

707
01:00:25.900 --> 01:00:28.000
it's not your fee is not based

708
01:00:28.460 --> 01:00:32.000
on on the amount of money you're sending. It's based on the actual

709
01:00:32.780 --> 01:00:43.305
size in in terms of data that that is gonna be on chain. And so what happens there is is the biggest contributor to that is how many inputs you have in a transaction.

710
01:00:44.085 --> 01:00:50.400
So when when you might see a wallet and you're like, oh, this wallet says I have 10,000,000 sats in it, It doesn't actually

711
01:00:50.700 --> 01:00:58.480
the the wallet doesn't have a a a set amount. It's there's a bunch of you can think of it like bills in your wallet. There's a bunch of UTXOs that add up to that.

712
01:00:59.260 --> 01:01:10.475
And if you have a bunch of small ones in there and they're all being combined to send a larger amount, you will pay a higher fee. The lowest fee burden you will possibly pay is if everything's in a single UTXO.

713
01:01:11.335 --> 01:01:17.835
And that's obviously horrible for privacy because you've consolidated all of your UTXOs in there. So there's always been this back and forth

714
01:01:18.260 --> 01:01:18.760
between

715
01:01:19.060 --> 01:01:19.560
automatic

716
01:01:20.020 --> 01:01:21.240
UTXO selection,

717
01:01:22.099 --> 01:01:23.480
whether or not it should

718
01:01:24.020 --> 01:01:24.520
prioritize

719
01:01:25.540 --> 01:01:29.240
fees or should prioritize privacy. And really, I think what

720
01:01:30.285 --> 01:01:34.065
has has become obvious for a lot of people is you gotta have to give users,

721
01:01:34.924 --> 01:01:39.665
very intuitive controls so that they can kind of make the decision as best as possible.

722
01:01:41.005 --> 01:01:45.740
And so this idea of, like, a fee health, privacy health dashboard, or visualization,

723
01:01:46.840 --> 01:01:58.705
I would it seems to me like the holy grail. That would be awesome to see. And just for some context, by the way, Freaks, there's a lot of people saying that, like, we need to rush quote, unquote scaling solutions to Bitcoin and whatnot.

724
01:01:59.405 --> 01:01:59.905
CoinMetrics

725
01:02:00.205 --> 01:02:00.945
did math.

726
01:02:01.485 --> 01:02:03.825
For this year, Bitcoin sent $6,600,000,000,000

727
01:02:05.245 --> 01:02:05.745
worth

728
01:02:06.125 --> 01:02:07.985
of Bitcoin on on chain.

729
01:02:08.365 --> 01:02:09.870
This year, Bitcoiners have sent.

730
01:02:10.430 --> 01:02:15.090
And meanwhile, if you look at our live mempool dashboard, you can get into the next block at 4 sets,

731
01:02:15.470 --> 01:02:16.210
per byte.

732
01:02:17.150 --> 01:02:25.695
So it's pretty amazing how much value the Bitcoin network continues to clear. I I don't you know, I I think people aren't gonna start thinking about these few things unless

733
01:02:26.175 --> 01:02:27.555
we start to see more

734
01:02:27.935 --> 01:02:32.595
it is scarce. Block space is scarce. And and as we start to see more demand on the demand side,

735
01:02:32.975 --> 01:02:40.115
and fees hit a more sustained high fee type of environment than people this becomes way more important to people. But the problem is

736
01:02:40.660 --> 01:02:47.960
is if you're not thinking about fee health ahead of time, it could it could you could get into a really bad situation. I remember in 2017,

737
01:02:48.740 --> 01:02:49.860
there was a lot of,

738
01:02:50.740 --> 01:02:52.120
congestion and a lot of,

739
01:02:52.660 --> 01:02:58.714
Bitcoin chain usage. A lot of people think it was spam related, But Coinbase, for instance, had a bunch of small inputs,

740
01:02:59.095 --> 01:03:00.954
and there was rumors that were circulating

741
01:03:01.575 --> 01:03:02.075
that

742
01:03:02.375 --> 01:03:07.755
fees ended up going down. But if fees hadn't gone down, that they would be in a situation where all these UTXOs

743
01:03:08.055 --> 01:03:08.555
were

744
01:03:08.859 --> 01:03:12.640
prohibitively expensive to spend. Where you can imagine a situation where,

745
01:03:13.339 --> 01:03:15.280
they they think they have $7,000,000,000

746
01:03:15.900 --> 01:03:17.200
but it costs them $4,000,000,000

747
01:03:17.660 --> 01:03:18.640
to send the $7,000,000,000.

748
01:03:18.940 --> 01:03:21.359
And then all of a sudden, you have a really bad situation.

749
01:03:22.425 --> 01:03:26.605
So that's the context there. RBF versus child pays for parent.

750
01:03:27.225 --> 01:03:32.045
You can think of RBF kind of like you're replacing the original transaction and child pays for parent.

751
01:03:33.545 --> 01:03:34.045
You're

752
01:03:34.809 --> 01:03:40.589
the the outputs from the original transaction, you're spending those with a higher fee, so then all the

753
01:03:41.369 --> 01:03:48.270
transactions together. So the cool thing about child pays for parent is you could be on the receiving end of a transaction, and you can increase your fees.

754
01:03:48.695 --> 01:03:51.275
With RBF, you have to be on the sender side.

755
01:03:52.695 --> 01:04:04.155
And I do think that's interesting that you mentioned the cancel aspect. That's been kinda controversial calling it cancel, but I think it's very intuitive to users, particularly in a high fee environment. BlueWallet most famously added a big

756
01:04:04.510 --> 01:04:07.650
cancel button that effectively is just an RBF to yourself,

757
01:04:08.990 --> 01:04:12.290
which people go back and forth on. But I think that makes sense for users,

758
01:04:12.750 --> 01:04:15.010
who have a transaction stuck, and they just

759
01:04:15.950 --> 01:04:18.125
want it back in their wallet. But

760
01:04:19.225 --> 01:04:23.325
what else have we what else haven't we covered that you're excited about? Is there anything else?

761
01:04:26.905 --> 01:04:30.285
I mean, I'm I'm trying to say, you know, still on the this

762
01:04:30.940 --> 01:04:34.560
the summer Bitcoin thing, I think it's interesting that you say that now

763
01:04:35.100 --> 01:04:37.840
there is a scarcity of,

764
01:04:38.300 --> 01:04:40.480
of projects. And I will say, like,

765
01:04:41.180 --> 01:04:42.320
it's a lot of work,

766
01:04:42.940 --> 01:04:43.180
to

767
01:04:43.775 --> 01:04:46.035
basically, you're adding more people that you're managing.

768
01:04:46.815 --> 01:04:48.115
And they are

769
01:04:48.415 --> 01:04:50.675
young developers, so you really have to be careful.

770
01:04:51.535 --> 01:04:57.715
You already have to, like, give an extra amount of scrutiny to open source code because this is code that anybody can see and judge you on.

771
01:04:58.480 --> 01:05:03.780
And so it's a reflection of our whole project, anything that goes in. So there's a lot of work on that side.

772
01:05:04.480 --> 01:05:06.080
There's a lot of work on the,

773
01:05:07.520 --> 01:05:09.940
yeah, just kinda like guiding them, like, you know,

774
01:05:11.280 --> 01:05:12.180
what you're expecting.

775
01:05:12.695 --> 01:05:17.994
But, you know, one aspect of making caravan easier to contribute to and then also,

776
01:05:18.935 --> 01:05:19.435
for,

777
01:05:19.895 --> 01:05:21.435
Summer Bitcoin in particular,

778
01:05:21.735 --> 01:05:22.795
I guess, is, like,

779
01:05:24.215 --> 01:05:30.890
it's it's selfishly, it's also like a pipeline for hiring. So anybody that's out there that's listening that's a developer or wants to be a developer,

780
01:05:31.670 --> 01:05:34.170
finding open source projects to contribute to,

781
01:05:34.630 --> 01:05:39.769
just to learn about, you know, find a we try and tag issues as, like, good first problem.

782
01:05:40.095 --> 01:05:41.234
Like, I got started

783
01:05:41.535 --> 01:05:42.755
in Bitcoin development

784
01:05:43.215 --> 01:05:44.035
by just,

785
01:05:44.494 --> 01:05:44.994
answering,

786
01:05:45.855 --> 01:05:50.435
issues that people had in the Bitcoin project, which is a JavaScript implementation of Bitcoin.

787
01:05:51.455 --> 01:05:54.035
And it was such a approachable library.

788
01:05:54.600 --> 01:06:03.180
It was so well written, cleanly written that I could learn a lot about how Bitcoin worked, whereas the c plus plus Bitcoin Core was just far more intimidating and harder to understand.

789
01:06:03.640 --> 01:06:08.300
So people that are interested in it, like, I heard you, like, come over to the Caravan repo,

790
01:06:08.732 --> 01:06:11.765
you you know, find a problem that you wanna fix, test things out,

791
01:06:12.545 --> 01:06:17.525
as it even just small stuff, like, continuing to help with the refactors and adding TypeScript. You'll learn a lot.

792
01:06:17.905 --> 01:06:21.685
If there's a feature that you wish Karavan supported and doesn't,

793
01:06:23.130 --> 01:06:26.089
add it in. Put up a PR, and we'll test it out and,

794
01:06:26.410 --> 01:06:34.750
you know, eventually get it in, which, I think is a great aspect of open source. It's a, you know, big goal that I had in terms of the work that we did this year.

795
01:06:35.315 --> 01:06:40.035
And for people, like, if you don't get into the summer Bitcoin program for whatever reason or,

796
01:06:40.434 --> 01:06:40.934
your

797
01:06:41.234 --> 01:06:56.060
proposal because you also like, you submit a proposal to the teams and then you get accepted. So I had to reject some people that wanted to work on caravan stuff because time is the scarcest resource. So, yeah. And but if you still wanna contribute, like, put up PRs. And if they're if they're valuable, if they're helpful,

798
01:06:56.600 --> 01:06:59.740
people you know, we will look at them. So I I highly recommend,

799
01:07:01.160 --> 01:07:02.300
getting into that.

800
01:07:03.285 --> 01:07:03.785
Awesome.

801
01:07:05.845 --> 01:07:11.704
I just wanna do a quick shout out to the freaks who did join us in the live chat and, supported the show via Zaps.

802
01:07:12.244 --> 01:07:14.025
As always, CIL dispatch,

803
01:07:14.405 --> 01:07:18.260
is free of advertising and is funded purely from Bitcoin

804
01:07:18.800 --> 01:07:19.300
donations

805
01:07:19.840 --> 01:07:20.820
from our audience.

806
01:07:22.800 --> 01:07:26.660
You can support, basically, 2 ways. If you're in the live chat, you can support with Zaps,

807
01:07:27.280 --> 01:07:31.380
or you could support through podcasting 2.0 apps, like Fountain Podcasts.

808
01:07:31.845 --> 01:07:33.065
The top 3 supporters

809
01:07:33.685 --> 01:07:39.225
of the last episode was Lincoln with 10,000 sets, 8 Myth Ranir with 7,777

810
01:07:40.484 --> 01:07:40.984
sets,

811
01:07:41.445 --> 01:07:43.785
and Sean with 5,000 sets.

812
01:07:44.260 --> 01:07:49.640
Thank you for your support, and thank you for all the comments that you leave on fountain. Like I said, it is NOSR enabled.

813
01:07:50.500 --> 01:07:55.400
It looks like Mav 21 just came in and zapped 10,000 sets. Happy New Year. Thank you, Mav.

814
01:07:56.260 --> 01:08:00.945
What else? Citadel Dispatch. I don't know when the next one's gonna be. Rabbit hole recaps tomorrow.

815
01:08:01.245 --> 01:08:03.265
So this week was Money Matters,

816
01:08:04.445 --> 01:08:04.945
Dispatch,

817
01:08:07.165 --> 01:08:08.225
New Year's Eve,

818
01:08:08.685 --> 01:08:09.185
Dispatch,

819
01:08:09.645 --> 01:08:10.785
rabbit hole recap.

820
01:08:11.250 --> 01:08:21.750
But there should be one next week. I think there'll be one next week. You can follow me at primal.net/odell. I'll keep you guys updated, or you can subscribe on YouTube. Subscribe on your podcast app, and you get notified that way.

821
01:08:22.290 --> 01:08:24.790
Buck, thank you for joining us. Do you have any final thoughts?

822
01:08:27.245 --> 01:08:30.605
Uh-huh. Stay humble. Stay curious. You know, I think there's,

823
01:08:31.085 --> 01:08:33.405
we need more curiosity in the Bitcoin space.

824
01:08:34.284 --> 01:08:37.585
I think that's an important thing. That's that's the last thing I'd say, I guess.

825
01:08:38.560 --> 01:08:41.460
I love it. Thank you, Buck, for all your contributions.

826
01:08:41.760 --> 01:08:53.795
And, maybe, you know, some of these things will get added to Caravan and get added to Unchained, and we'll follow-up before the end of the year. It'd be a big year. That'd be awesome. I think so. Yeah. We're gonna keep building on top of this momentum for sure.

827
01:08:56.255 --> 01:09:00.515
I will link Bucks and Pub in the show notes. I see someone asking.

828
01:09:01.535 --> 01:09:04.995
Make sure you give him lots of love on Noster so he uses it more.

829
01:09:06.200 --> 01:09:10.460
Huge shout out to Buck, huge shout out to the freaks. Love you all. Stay on the stack sets. Peace.

830
01:09:13.960 --> 01:09:14.460
Thanks.