CD185: ROB AND ANDREAS - BETTER BITCOIN WALLETS
Rob is the creator of Kyoto, an implementation of compact block filters making it easier for developers to build more private bitcoin wallets. Andreas is the creator of Bitcoin Safe, an app designed to make it easier to use hardware wallets securely.
Andreas on Nostr: https://primal.net/p/nprofile1qqsqd0y6klqxew4glwggn63jvumrgprnl32tw7hpuzfhv6msgf7y3agm756qu
Bitcoin Safe on Nostr: https://primal.net/p/nprofile1qqsyz7tjgwuarktk88qvlnkzue3ja52c3e64s7pcdwj52egphdfll0cq9934g
Bitcoin Safe on X: https://x.com/BitcoinSafeOrg
Kyoto on Github: https://github.com/rustaceanrob/kyoto
2140: https://2140.dev
EPISODE: 185
BLOCK: 926163
PRICE: 1099 sats per dollar
(00:03:04) Bitcoin Dev Kit
(00:04:39) Andreas (Bitcoin Safe) and Rob (Kyoto)
(00:05:58) What is BDK? Goals, safety, and language bindings
(00:09:27) Why BDK matters for UX, testing, and reliability
(00:09:50) Kyoto origin story and compact block filters vision
(00:13:21) Privacy model: servers vs. compact block filters
(00:19:39) Do compact block filters work on mobile? Performance tradeoffs
(00:23:55) Kyoto as a Rust reference client for BIP157/158
(00:24:35) Bitcoin Safe overview: desktop cold storage with hardware signers
(00:25:40) Using compact block filters in Bitcoin Safe: initial sync vs. daily speed
(00:28:27) Why connect your own node and peer pools for CBF
(00:33:14) Design choice: hardware-only wallets and setup wizard
(00:36:29) Differentiating from Sparrow: private sync and Nostr-based multisig coordination
(00:39:08) Will Sparrow adopt compact block filters? Considerations and UX
(00:48:49) Developer ecosystems: 2140, OpenSats, and in-person collaboration
(00:50:38) Making CBF the default: UX, education, and recovery flow
(00:52:56) Electrum server defaults and operational notes
(00:53:50) Birth heights, segwit/taproot start points, and future optimizations
(00:56:17) Address reuse, scanning guarantees, and performance benchmarks
(01:00:13) Bandwidth vs. compute: where the real bottlenecks are
(01:00:19) Closing discussion, calls to action, and advice for new devs
more info on the show: https://citadeldispatch.com
learn more about me: https://odell.xyz
nostr: https://primal.net/odell
03:04 - Bitcoin Dev Kit
04:39 - Andreas (Bitcoin Safe) and Rob (Kyoto)
05:58 - What is BDK? Goals, safety, and language bindings
09:27 - Why BDK matters for UX, testing, and reliability
09:50 - Kyoto origin story and compact block filters vision
13:21 - Privacy model: servers vs. compact block filters
19:39 - Do compact block filters work on mobile? Performance tradeoffs
23:55 - Kyoto as a Rust reference client for BIP157/158
24:35 - Bitcoin Safe overview: desktop cold storage with hardware signers
25:40 - Using compact block filters in Bitcoin Safe: initial sync vs. daily speed
28:27 - Why connect your own node and peer pools for CBF
33:14 - Design choice: hardware-only wallets and setup wizard
36:29 - Differentiating from Sparrow: private sync and Nostr-based multisig coordination
39:08 - Will Sparrow adopt compact block filters? Considerations and UX
48:49 - Developer ecosystems: 2140, OpenSats, and in-person collaboration
50:38 - Making CBF the default: UX, education, and recovery flow
52:56 - Electrum server defaults and operational notes
53:50 - Birth heights, segwit/taproot start points, and future optimizations
56:17 - Address reuse, scanning guarantees, and performance benchmarks
01:00:13 - Bandwidth vs. compute: where the real bottlenecks are
01:00:19 - Closing discussion, calls to action, and advice for new devs
NOTE
Transcription provided by Podhome.fm
Created: 12/02/2025 20:16:45
Duration: 4140.669
Channels: 1
1
00:00:32.160 --> 00:00:34.100
Happy Bitcoin Tuesday, freaks.
2
00:00:34.640 --> 00:00:37.219
It's your host Odell here for another digital dispatch.
3
00:00:38.480 --> 00:00:43.300
The show focused on actual Bitcoin and Freedom Tech discussion.
4
00:00:46.735 --> 00:00:50.835
Since I've been running non live shows, I think it's important to mention
5
00:00:51.535 --> 00:00:56.835
what's the current block height. Right now, it's block height nine two six one six three.
6
00:00:59.550 --> 00:01:01.810
Tuesday morning, my time, December 2,
7
00:01:02.270 --> 00:01:05.330
we will be posting this later today.
8
00:01:05.790 --> 00:01:07.650
The current sats per dollar is
9
00:01:08.190 --> 00:01:09.550
thousand 99
10
00:01:09.550 --> 00:01:10.050
sats.
11
00:01:10.590 --> 00:01:12.830
So we're a little over $90,000
12
00:01:12.830 --> 00:01:13.570
per Bitcoin.
13
00:01:15.424 --> 00:01:16.165
As always,
14
00:01:16.705 --> 00:01:19.445
dispatch is funded by viewers like you.
15
00:01:19.985 --> 00:01:22.884
Our audience funds the show with Bitcoin donations.
16
00:01:24.065 --> 00:01:31.760
And Cali, our last guest, put out a call out for you guys to support the show, and you guys came out really hard. So I just wanted to thank everyone
17
00:01:32.460 --> 00:01:34.240
who supported the show last week.
18
00:01:35.820 --> 00:01:39.280
As always, I'll shout out the highest zaps we got.
19
00:01:40.354 --> 00:01:44.195
We had rider die freak Brian zapped 250,000
20
00:01:44.195 --> 00:01:46.215
zaps, which might be the largest boost
21
00:01:47.155 --> 00:01:52.055
largest zap we've ever gotten on the show. He said, don't be gay. Send fat zaps for Cali.
22
00:01:53.075 --> 00:01:53.895
Great message.
23
00:01:54.280 --> 00:01:59.100
Cosign it. Thank you, Brian. You can find him at primal.net/brianwithay.
24
00:01:59.160 --> 00:02:02.380
Ride or die freak map 21 zapped 30,000 zaps.
25
00:02:02.840 --> 00:02:05.980
Cali called my 10 k zap a good zap. I'll do better.
26
00:02:06.680 --> 00:02:07.180
And
27
00:02:07.634 --> 00:02:10.595
notable mention for Andy who zapped 25,000
28
00:02:10.595 --> 00:02:15.575
sats in all caps. He asked for the demand he demanded the return of the intro music.
29
00:02:15.875 --> 00:02:18.455
So that's why you got the intro music today.
30
00:02:19.795 --> 00:02:24.159
I'll I'll add it. I'll add it to all future episodes. Sats speak louder than words.
31
00:02:24.780 --> 00:02:27.440
And then on podcasting two point o apps like Fountain,
32
00:02:27.900 --> 00:02:35.360
our biggest boost was ride or die freak, Sawzall with 50,000 sats. He said great rip. Always appreciate the still dispatch, freedom tech signal,
33
00:02:35.705 --> 00:02:39.805
and ride or die freak, Eric nine 9, zapped 42,000
34
00:02:39.865 --> 00:02:44.205
sets as well. Thank you guys for your support. Easiest way to support the show.
35
00:02:44.745 --> 00:02:48.125
Is your favorite Nostra app or podcasting two point o app? I like primal.
36
00:02:48.505 --> 00:02:49.965
For Nostra, I like
37
00:02:50.310 --> 00:02:51.130
fountain podcasts
38
00:02:51.670 --> 00:02:57.930
for podcasting two point o, but there's a bunch of different apps out there you can try. All links are still dispatch.com.
39
00:02:58.390 --> 00:03:04.410
We're available on every podcast app. If you don't have sass to spare, sharing with friends and family really does help.
40
00:03:04.710 --> 00:03:05.210
Okay.
41
00:03:05.615 --> 00:03:08.595
With all that said, we got a great conversation planned for today.
42
00:03:09.935 --> 00:03:11.715
We will be talking about,
43
00:03:13.455 --> 00:03:17.315
I guess I guess the common denominator is Bitcoin development kit, BDK.
44
00:03:18.335 --> 00:03:19.395
My good friend,
45
00:03:20.630 --> 00:03:22.810
a Nashville neighbor at Bitcoin Park,
46
00:03:23.830 --> 00:03:28.650
Steve Myers, who runs our BitDevs, also runs the Bitcoin dev kit project,
47
00:03:29.190 --> 00:03:30.170
and he suggested
48
00:03:30.710 --> 00:03:33.050
that I have a conversation with these two gentlemen.
49
00:03:34.355 --> 00:03:37.015
So I'm looking forward to it. Basically, whenever Steve,
50
00:03:38.194 --> 00:03:40.694
suggests something or asks something, I
51
00:03:40.995 --> 00:03:43.334
just say yes because he is an awesome dude.
52
00:03:44.034 --> 00:03:45.814
We have Andreas here,
53
00:03:46.194 --> 00:03:48.215
from Bitcoin Safe. How's it going, Andreas?
54
00:03:49.040 --> 00:03:50.340
Yeah. Great. Hi.
55
00:03:52.319 --> 00:03:53.780
Did I pronounce your name correctly?
56
00:03:54.400 --> 00:03:55.379
Yes. Absolutely.
57
00:03:56.000 --> 00:03:59.620
Okay. Awesome. And then the easier to pronounce name, we have Rob,
58
00:04:00.000 --> 00:04:01.940
from Kyoto. How's it going, Rob?
59
00:04:02.480 --> 00:04:04.099
Yo. How's it going?
60
00:04:04.775 --> 00:04:06.475
It's, Great to have you here.
61
00:04:06.935 --> 00:04:07.435
Thanks.
62
00:04:07.815 --> 00:04:09.275
It's the evening for us.
63
00:04:09.575 --> 00:04:11.355
It's, 6PM for me.
64
00:04:11.895 --> 00:04:14.075
6PM for you. U t UTC
65
00:04:14.455 --> 00:04:15.515
seventeen hundred.
66
00:04:16.215 --> 00:04:16.715
Yep.
67
00:04:17.639 --> 00:04:19.340
Actually, you're you're close to UTC.
68
00:04:20.040 --> 00:04:25.900
Yeah. I'm enjoying a, a nice beer here. So we're on different, different wavelengths maybe.
69
00:04:26.840 --> 00:04:28.940
There we go. Well, I like to hear that.
70
00:04:29.645 --> 00:04:31.825
A show is always better with, like, good beer.
71
00:04:32.445 --> 00:04:33.665
So how do you guys,
72
00:04:35.085 --> 00:04:37.825
have you guys, do you guys know each other in person already?
73
00:04:39.485 --> 00:04:41.105
Yep. Yeah. We we met
74
00:04:41.725 --> 00:04:44.250
at, last week, last year,
75
00:04:45.210 --> 00:04:47.710
and we've stayed in contact quite a lot.
76
00:04:49.210 --> 00:04:53.710
Yeah. And Was that was that at Bitcoin Park? That was at Bitcoin Park? Yeah.
77
00:04:55.290 --> 00:04:59.230
And that was specifically it was like a BDK summit that we hosted. Right?
78
00:04:59.905 --> 00:05:05.285
Yeah. It was all all up and down the stack. The rest of Bitcoin guys, Polstra and,
79
00:05:05.985 --> 00:05:14.165
Tobin Harding as well. Those guys are killing it. Yeah. Tobin's great. And then Martin, I forget his last name, but he's also a prolific
80
00:05:14.465 --> 00:05:14.965
dev.
81
00:05:16.350 --> 00:05:23.169
So did one of you wanna give just a quick primer on, like, what is BDK, and what is the goal of that project specifically?
82
00:05:25.870 --> 00:05:27.009
Yeah. I can Rob.
83
00:05:27.645 --> 00:05:31.425
From the perspective of a developer, I can kinda take it over, and then
84
00:05:31.805 --> 00:05:33.425
I think Andreas as a user,
85
00:05:34.845 --> 00:05:37.105
can tell us how it's used in action. But
86
00:05:37.645 --> 00:05:39.745
how I see BDK is the
87
00:05:41.430 --> 00:05:46.810
software development kit to rule all software development kits for building a Bitcoin wallet.
88
00:05:47.350 --> 00:05:49.130
So covers all platforms,
89
00:05:50.470 --> 00:05:52.650
you know, as many languages as possible,
90
00:05:53.830 --> 00:05:55.210
very thoroughly tested,
91
00:05:55.755 --> 00:05:56.815
thoroughly reviewed.
92
00:05:58.875 --> 00:06:02.015
And yeah. So instead of reinventing the wheel,
93
00:06:02.555 --> 00:06:05.855
every single time someone wants to, build a Bitcoin wallet,
94
00:06:06.475 --> 00:06:08.895
they can just pull an off the shelf solution
95
00:06:09.275 --> 00:06:09.595
that,
96
00:06:10.260 --> 00:06:12.280
we have people working around the clock on.
97
00:06:12.740 --> 00:06:13.240
And,
98
00:06:13.700 --> 00:06:16.900
yeah, I'll let Andreas take over how it's how he's using it.
99
00:06:17.780 --> 00:06:20.360
But from a development point of view, that's how I see it.
100
00:06:21.460 --> 00:06:21.960
Yeah.
101
00:06:23.140 --> 00:06:25.395
Yeah. That's exactly it. It's it's a
102
00:06:25.794 --> 00:06:27.974
really good foundation to build a wallet
103
00:06:28.435 --> 00:06:30.294
on. So it it comes with
104
00:06:30.835 --> 00:06:33.815
all kinds of you could think of modules you can plug together.
105
00:06:34.675 --> 00:06:35.254
It has
106
00:06:35.794 --> 00:06:37.335
it has, a way
107
00:06:37.715 --> 00:06:43.889
to manage transactions, like, in in or build a a whole wallet. It has a way to synchronize the blockchain.
108
00:06:44.509 --> 00:06:46.530
It has a way to construct PSBTs.
109
00:06:47.070 --> 00:06:49.970
All of these things that you need for a Bitcoin wallet,
110
00:06:50.509 --> 00:06:51.250
it provides.
111
00:06:52.205 --> 00:06:56.705
And it's being actively developed, so, like, new features are added every three months.
112
00:06:58.125 --> 00:07:01.824
And, one of the one of the really cool features that that Rob,
113
00:07:02.444 --> 00:07:04.145
worked on is compact block filters,
114
00:07:04.845 --> 00:07:05.345
and
115
00:07:06.470 --> 00:07:09.690
that's that's a really awesome way to synchronize the blockchain,
116
00:07:10.310 --> 00:07:11.050
and it's
117
00:07:11.670 --> 00:07:13.930
also now available in Bitcoin safe.
118
00:07:14.870 --> 00:07:17.290
So, basically, there's all those complicated
119
00:07:19.764 --> 00:07:20.725
aspects that,
120
00:07:21.445 --> 00:07:25.305
that developers historically have had to deal with when building out Bitcoin apps.
121
00:07:25.845 --> 00:07:30.345
And a lot of them involve things that if you mess up would result in fund loss
122
00:07:30.690 --> 00:07:31.410
or just,
123
00:07:31.810 --> 00:07:33.590
incredibly bad time for users.
124
00:07:34.370 --> 00:07:46.425
So BDK kind of just takes that out of the box, provides that to developers, and then developers can then build on top of that in a safe and relatively easy way so we can see more Bitcoin apps that are secure out there. Right?
125
00:07:46.985 --> 00:07:47.485
Yes.
126
00:07:48.104 --> 00:07:55.724
And it's not only available in one language. I mean, it's it's written in Rust, but, there are language bindings for all kinds of languages.
127
00:07:56.345 --> 00:08:02.205
And, for example, I'm not using Rust. I'm developing Python, so I use the Python bindings
128
00:08:02.880 --> 00:08:04.900
of BDK, and it works great.
129
00:08:06.560 --> 00:08:07.300
That's cool.
130
00:08:08.080 --> 00:08:09.780
Yeah. I like how you mentioned,
131
00:08:10.880 --> 00:08:12.820
security because I think it even goes
132
00:08:13.440 --> 00:08:19.104
a bit deeper than that, like reinventing the wheel. If you imagine a user using a a UI
133
00:08:19.965 --> 00:08:20.465
and,
134
00:08:21.645 --> 00:08:23.745
maybe there's just some Internet problem.
135
00:08:24.205 --> 00:08:25.264
If you have some,
136
00:08:25.965 --> 00:08:27.425
you know, hand rolled solution
137
00:08:27.805 --> 00:08:28.305
that's,
138
00:08:29.080 --> 00:08:34.460
you know, not very prime to, report errors back or what have you back to the user.
139
00:08:35.399 --> 00:08:41.000
Sometimes just not updating or not showing progress is just as bad as as,
140
00:08:41.915 --> 00:08:43.535
you know, some sort of irrecoverable
141
00:08:44.075 --> 00:08:45.215
error. So I think
142
00:08:45.915 --> 00:08:46.415
BDK
143
00:08:47.355 --> 00:08:49.355
offers, like, a really high level of,
144
00:08:50.395 --> 00:08:50.895
development,
145
00:08:51.595 --> 00:08:53.375
and and testing coverage.
146
00:08:55.010 --> 00:08:55.910
So you don't get
147
00:08:56.770 --> 00:08:59.910
these, situations where the user is confused,
148
00:09:00.370 --> 00:09:02.390
even if there's nothing necessarily wrong,
149
00:09:03.089 --> 00:09:06.310
just that they're they're confused as as to what the error is,
150
00:09:07.330 --> 00:09:09.250
or what's going on with their wallet. So,
151
00:09:10.764 --> 00:09:15.904
Yeah. I I think there's there's many levels. Of course, security, irrecoverable, fund loss, that's
152
00:09:16.285 --> 00:09:18.785
horrible, and we hope it doesn't happen. But,
153
00:09:19.485 --> 00:09:25.584
the Bitcoin experience, you know, has a lot of a lot of layers. So I think it it tries to check all of those boxes.
154
00:09:27.220 --> 00:09:28.520
That makes sense to me.
155
00:09:30.020 --> 00:09:34.040
Awesome. Okay. So let's jump into your project specifically.
156
00:09:36.420 --> 00:09:38.260
I guess let's start with you, Rob,
157
00:09:38.660 --> 00:09:42.040
since I it seems like Kyoto's a bit more high level.
158
00:09:42.415 --> 00:09:43.235
What what is
159
00:09:43.935 --> 00:09:46.035
what is Kyoto? Why should people care?
160
00:09:46.575 --> 00:09:48.835
Where where's the value that it brings?
161
00:09:50.895 --> 00:09:53.555
So going all the way back to when
162
00:09:54.095 --> 00:09:55.775
I was first, like, poking around,
163
00:09:57.350 --> 00:09:58.490
projects in Bitcoin.
164
00:09:59.190 --> 00:10:01.449
Laalu from Lightning Labs gave this,
165
00:10:02.470 --> 00:10:06.649
this talk on compact block filters, like, a long a long time ago at SFBitDevs.
166
00:10:07.029 --> 00:10:09.290
It's it's on YouTube somewhere. You can find it.
167
00:10:11.004 --> 00:10:12.785
And he sold this vision of, like,
168
00:10:13.644 --> 00:10:14.384
a node
169
00:10:14.845 --> 00:10:16.384
in your, like, home router
170
00:10:16.685 --> 00:10:21.425
or, like, these little mini nodes that are just sort of everywhere. Super lightweight,
171
00:10:22.444 --> 00:10:23.504
but very private
172
00:10:24.045 --> 00:10:24.285
and,
173
00:10:25.790 --> 00:10:30.449
a bit more trustless than, than maybe a server model. So I was really sold on that.
174
00:10:31.149 --> 00:10:34.690
But then when I went to research, it's pretty much only used in
175
00:10:35.070 --> 00:10:35.570
Golang,
176
00:10:36.670 --> 00:10:38.175
for L and D stuff,
177
00:10:38.894 --> 00:10:41.635
which is perfectly fine. I think Zeus uses it.
178
00:10:42.575 --> 00:10:44.515
Of course, you could use it with LND,
179
00:10:45.455 --> 00:10:50.435
but Doesn't Wasabi use it as well? Wasabi does use it. They use,
180
00:10:52.500 --> 00:10:55.800
so I guess there's there's actually two specification or
181
00:10:56.100 --> 00:11:00.440
there's two bips that comprise compact block filters. There's client side,
182
00:11:01.460 --> 00:11:04.280
like, how do we sync them? And then there's the actual
183
00:11:05.165 --> 00:11:06.704
technology itself, like,
184
00:11:07.485 --> 00:11:08.865
what are the filters?
185
00:11:09.324 --> 00:11:12.704
So these are two separate write ups. So they use the filters,
186
00:11:13.245 --> 00:11:14.464
which are quite private,
187
00:11:14.845 --> 00:11:17.425
but they just download them from, like, an HTTP,
188
00:11:18.910 --> 00:11:19.410
server.
189
00:11:19.870 --> 00:11:35.595
Well, of course, with TLS. So, you know, like, a secure server. But it's, yeah, it's not directly from the peer to peer network. So I as I understand, they're they're migrating over to using the peer to peer network. And just the reason was it was just practicality. Like the peer to peer network wasn't actually broadcasting
190
00:11:36.375 --> 00:11:48.810
compact block filters for them to use yet. Right? Yeah. I think at the time that they deployed it, because yeah, that was quite a a long time ago. I remember using it using Like, 2019, 2020 or something even.
191
00:11:49.350 --> 00:11:50.330
Yeah. Yeah.
192
00:11:51.430 --> 00:11:51.930
So
193
00:11:52.550 --> 00:12:01.584
way back when, yeah, when the when the spec first rolled out, there probably wasn't a lot of of nodes surfing these these filters, but I think the story has, changed a bit.
194
00:12:01.885 --> 00:12:02.385
Yeah.
195
00:12:03.725 --> 00:12:05.264
Yeah. So Wasabi, Zeus,
196
00:12:06.125 --> 00:12:07.745
Nutreno backend with LND.
197
00:12:08.365 --> 00:12:09.665
Those were the options. But,
198
00:12:10.764 --> 00:12:12.464
you know, as we covered with BDK,
199
00:12:14.040 --> 00:12:14.540
BDK,
200
00:12:14.920 --> 00:12:17.340
I think the approach is to just offer
201
00:12:17.880 --> 00:12:22.300
to as many devs as possible the complete, you know, Bitcoin development experience.
202
00:12:22.600 --> 00:12:26.700
So that's what popped out to me, and I decided to write a client in Rust,
203
00:12:27.960 --> 00:12:32.035
that could reach as many developers as possible. Because I I think
204
00:12:32.575 --> 00:12:33.875
it should at least be,
205
00:12:35.455 --> 00:12:40.195
an option in in every drop down menu. Like, this is how you can sync with the blockchain.
206
00:12:40.655 --> 00:12:42.095
And it just didn't seem that,
207
00:12:43.540 --> 00:12:44.760
that was gonna be the case,
208
00:12:45.380 --> 00:12:47.320
with the current state of things,
209
00:12:48.740 --> 00:12:49.640
in in going.
210
00:12:50.500 --> 00:12:52.520
So that's that's kinda the origin of the project.
211
00:12:53.700 --> 00:12:54.440
Got it.
212
00:12:56.774 --> 00:12:58.555
So, I mean, just real quick,
213
00:12:59.975 --> 00:13:00.475
why,
214
00:13:03.095 --> 00:13:12.235
to someone who might have gotten to this point, to just heard you say all that stuff and got a bit confused, why would someone white wanna use compact block filters as opposed to
215
00:13:14.270 --> 00:13:16.690
connecting to an Electrum server or
216
00:13:17.230 --> 00:13:25.615
doing it another way, doing it a more traditional way that we've done in Bitcoin if you're not running. So, like, if just I'll just set up I'll set it up better. If
217
00:13:26.075 --> 00:13:44.020
if the best way to use Bitcoin in a trust minimized way is to use it with your own node. Because no matter what, to use the to interact with the greater Bitcoin network, you have to use a node. And if you're not using your own node, you're using someone else's node, and you have to trust them with enforcing the rules of the network and with your privacy.
218
00:13:44.560 --> 00:13:48.580
So, historically, people have had two choices. They've had the choice of,
219
00:13:49.760 --> 00:13:55.060
using their own node or connecting to someone else's node where they're basically sending,
220
00:13:55.865 --> 00:13:59.485
their addresses and being like, look up how much Bitcoin is at these addresses.
221
00:14:00.904 --> 00:14:05.005
But now we have compact black filters, which presents a different option. Correct?
222
00:14:05.385 --> 00:14:11.005
Exact exactly right. So I'm gonna do a quick detour because I feel like maybe my background
223
00:14:11.920 --> 00:14:14.740
might shed a little light onto this. So I out of college,
224
00:14:15.600 --> 00:14:16.740
I got a job
225
00:14:17.040 --> 00:14:29.925
for what was essentially an advertisement technology company, and I was doing, like, basically predictive modeling for them. And pretty much instantly from joining the company, I got very disillusioned and that, you know, that's kind of a part of my,
226
00:14:30.465 --> 00:14:35.685
my Bitcoin sort of background. But these advertisement technology companies will use
227
00:14:37.040 --> 00:14:40.100
anything and everything to try and, you know,
228
00:14:40.800 --> 00:14:42.740
give you dynamic pricing. So
229
00:14:43.199 --> 00:14:44.819
a great example is Target.
230
00:14:45.199 --> 00:14:52.500
If you if you wanna buy a TV from Target, there was there was some story or something. You know? Hopefully, this isn't just hearsay, but,
231
00:14:53.495 --> 00:14:56.475
the price of the TV was higher because the IP,
232
00:14:57.495 --> 00:15:01.355
or or the the person's device showed that they're in the target parking lot.
233
00:15:01.975 --> 00:15:02.475
So
234
00:15:02.935 --> 00:15:03.995
dynamic pricing,
235
00:15:05.660 --> 00:15:07.760
you can have different opinions on it,
236
00:15:08.140 --> 00:15:09.040
but advertisement
237
00:15:09.420 --> 00:15:11.360
companies will use anything and everything.
238
00:15:13.260 --> 00:15:15.760
So that's where I come from,
239
00:15:16.300 --> 00:15:17.440
which is really bad.
240
00:15:19.095 --> 00:15:20.714
And so why you should care about
241
00:15:21.735 --> 00:15:23.355
your privacy in this,
242
00:15:23.894 --> 00:15:25.435
in in the context of Bitcoin.
243
00:15:26.135 --> 00:15:33.355
I think I've heard you or somebody else say something very similar. Like, you don't want your butcher knowing your entire life's, you know, savings.
244
00:15:34.055 --> 00:15:34.555
And,
245
00:15:35.630 --> 00:15:43.250
I completely agree with that, and I would go as far as to say you don't want anyone knowing your life savings, you know, maybe Right. Less your wife or something.
246
00:15:44.990 --> 00:15:45.490
So
247
00:15:46.830 --> 00:15:47.650
the the
248
00:15:48.135 --> 00:15:50.875
caveat with using a a server based model
249
00:15:51.175 --> 00:15:57.915
is, as you said, you go through all of your addresses, and you say, just tell me the balance of all these addresses. So what you've done there is you've grouped
250
00:15:58.375 --> 00:16:00.955
a a set of addresses to to an identity.
251
00:16:02.055 --> 00:16:02.555
It
252
00:16:02.980 --> 00:16:03.720
it doesn't
253
00:16:04.100 --> 00:16:10.200
you know, it only takes one slip up. So let's say you're doing this over Tor. It only takes one slip up to to associate
254
00:16:10.580 --> 00:16:11.960
a handful of these together,
255
00:16:12.740 --> 00:16:18.055
and then some sort of chain analysis company knows, like, okay. This group of addresses belongs to,
256
00:16:18.755 --> 00:16:19.495
this IP.
257
00:16:20.355 --> 00:16:20.855
And
258
00:16:21.235 --> 00:16:29.415
I don't think it's the state of affairs now, but, like, my biggest fear is that this stuff is sold to advertisement technology companies and stuff in the future
259
00:16:29.960 --> 00:16:32.140
to the point where, you know,
260
00:16:33.160 --> 00:16:41.180
you wanna go on Amazon, and it's completely priced based on based on your stack. Because at some point, you know, you had some sort of, privacy,
261
00:16:41.640 --> 00:16:42.220
you know,
262
00:16:43.245 --> 00:16:43.745
fault.
263
00:16:44.285 --> 00:16:51.985
And so what Compact Block Filters offers is you don't allow any service or any server or what have you to do this bucketing,
264
00:16:52.445 --> 00:16:53.345
but it's incredibly
265
00:16:54.125 --> 00:16:57.985
low resource. So the primary problem with running a full node,
266
00:16:59.260 --> 00:17:04.960
especially if you're nontechnical, is maybe you want a node in the box solution or something like that. It's not exactly cheap.
267
00:17:05.580 --> 00:17:06.080
And,
268
00:17:06.540 --> 00:17:09.600
you know, that's no knock on these companies. I think they're doing cool stuff.
269
00:17:11.180 --> 00:17:15.925
But Compact Block Filters is right in center in the middle. You have
270
00:17:16.465 --> 00:17:17.605
high privacy guarantees,
271
00:17:18.545 --> 00:17:20.085
with low resource requirements.
272
00:17:20.865 --> 00:17:22.885
So sorry for, like, the biggest side,
273
00:17:23.425 --> 00:17:23.925
but,
274
00:17:24.465 --> 00:17:27.125
yeah, I'm I'm pretty passionate about this this issue.
275
00:17:28.840 --> 00:17:34.220
And, yeah, the primary problem is you don't want your your addresses sort of bucketed together.
276
00:17:37.640 --> 00:17:38.140
Right.
277
00:17:43.695 --> 00:17:44.835
And and
278
00:17:46.495 --> 00:17:48.835
okay. So then can we just quickly go into,
279
00:17:51.294 --> 00:17:54.674
and and just to put a nod on that on the privacy side,
280
00:17:57.010 --> 00:17:59.590
The scary thing about Bitcoin is that
281
00:17:59.970 --> 00:18:02.870
if we're right about Bitcoin, the blockchain is gonna live forever.
282
00:18:03.570 --> 00:18:04.070
So
283
00:18:04.530 --> 00:18:06.710
if you may if you have leaks today,
284
00:18:07.169 --> 00:18:11.190
maybe they're not selling to advertisement companies, maybe they're not selling it to governments.
285
00:18:12.225 --> 00:18:13.285
But in the future,
286
00:18:14.145 --> 00:18:22.245
that can then be traced back to you, and then they could be grouped together. And all it takes is, you know, you have one deposit to someone who's sharing information,
287
00:18:22.545 --> 00:18:24.005
just grouped with other addresses,
288
00:18:24.470 --> 00:18:27.530
And then all of a sudden, they have five years of transaction data in the past.
289
00:18:27.910 --> 00:18:32.250
So it's important that we're proactive about it. And on the cost side with nodes,
290
00:18:32.710 --> 00:18:33.690
you know, I think,
291
00:18:35.270 --> 00:18:39.850
the Bitcoin community, specifically the Bitcoin development community, should be very proud that it's
292
00:18:40.725 --> 00:18:43.305
actually relatively compared to most other
293
00:18:43.765 --> 00:18:50.265
infrastructure that we rely on, relatively cheap and easy to use your own node, and and we need to keep it that way.
294
00:18:51.684 --> 00:19:01.000
I think probably the biggest limiter is is mental burden and friction. I mean, I I think people are just not used to running a twenty four seven server that has uptime.
295
00:19:02.420 --> 00:19:07.400
You know, at at the lowest level, you can just run Bitcoin Core on your on your computer you're already using.
296
00:19:08.179 --> 00:19:09.320
And and
297
00:19:09.645 --> 00:19:12.545
if it's a modern computer, it's gonna sync relatively quickly.
298
00:19:13.485 --> 00:19:22.705
But but all that said, we have to run under the assumption that the overwhelming majority of users are not gonna use their own Bitcoin network, and it's mostly because of friction.
299
00:19:24.500 --> 00:19:29.799
That is just probably just unavoidable friction. So, like, let's provide them a a pretty straightforward
300
00:19:31.059 --> 00:19:31.559
relatively
301
00:19:32.100 --> 00:19:33.799
good trade off balance way
302
00:19:34.500 --> 00:19:40.495
of of connecting to the Bitcoin network, and that's what compact block filters represents. Now I've my understanding
303
00:19:41.115 --> 00:19:44.335
historically has been that they don't work that well on mobile.
304
00:19:45.914 --> 00:19:49.054
Can you is is that no longer the case, or,
305
00:19:51.115 --> 00:19:52.560
where do we stand on that?
306
00:19:52.960 --> 00:19:56.740
Yeah. So I think there's a couple of different fronts to
307
00:19:57.200 --> 00:19:59.940
to attack this. So on the one hand, I think,
308
00:20:00.960 --> 00:20:02.020
one of the bottlenecks
309
00:20:02.400 --> 00:20:02.800
is,
310
00:20:03.360 --> 00:20:06.820
CPU because in this protocol, there's there's quite a bit of hashing.
311
00:20:08.945 --> 00:20:12.005
And for for the audience, that's maybe less technical.
312
00:20:13.025 --> 00:20:15.365
Anytime you you do a hash,
313
00:20:16.145 --> 00:20:18.565
just as how Bitcoin miners are hashing,
314
00:20:19.745 --> 00:20:22.405
this has a sort of, power requirement
315
00:20:22.785 --> 00:20:24.005
on your on your CPU.
316
00:20:25.640 --> 00:20:27.660
So that was one complaint is, like,
317
00:20:28.200 --> 00:20:30.780
yeah, maybe you wanna use compact block filters, but,
318
00:20:31.960 --> 00:20:35.020
if I have to have my phone plugged into the charger,
319
00:20:36.375 --> 00:20:38.235
you know, that that's a little less realistic.
320
00:20:39.815 --> 00:20:44.075
Maybe I just wanna buy a coffee or something. So that that's one complaint. I would say that's still
321
00:20:44.855 --> 00:20:45.355
somewhat
322
00:20:46.295 --> 00:20:48.555
unresolved, but it kind of ties into
323
00:20:49.655 --> 00:20:50.635
the next thing.
324
00:20:52.460 --> 00:20:57.840
So one thing that's improved quite a bit is, at least in iOS, and I'm sure for Android as well,
325
00:20:58.540 --> 00:21:01.120
the mobile OSes have gotten really, really good,
326
00:21:01.740 --> 00:21:07.544
and they've gotten good at and they've also gotten more open, let's say. So iOS lets you
327
00:21:08.164 --> 00:21:10.585
perform some some things in the background,
328
00:21:11.044 --> 00:21:16.184
like, while the user, you know, is plugged into charger and on Wi Fi. So let's say the user is just, like, asleep.
329
00:21:17.365 --> 00:21:21.144
The the primary problem with compact block filters is that
330
00:21:21.860 --> 00:21:26.440
the number of filters you need to check or, I guess, the the number of blocks you need to scan,
331
00:21:27.060 --> 00:21:36.680
to put it that way, it grow goes up linearly as time goes on. So as as more time passes without you using the app, that's increasing the the amount of bandwidth you have to use.
332
00:21:38.125 --> 00:21:39.585
But if we leverage things
333
00:21:40.205 --> 00:21:44.385
like, you know, maybe there's a background sync every week or every day,
334
00:21:46.525 --> 00:21:49.985
then it becomes much more snappy when the user opens up their phone.
335
00:21:50.450 --> 00:21:58.710
They're not they're not downloading a bunch of pass blocks because we've just sort of passively scanned them in the background. So I think that's the primary thing I hope to see
336
00:21:59.170 --> 00:22:00.450
moving forward is,
337
00:22:00.770 --> 00:22:01.910
developers leverage
338
00:22:02.290 --> 00:22:03.990
those APIs and, like,
339
00:22:04.755 --> 00:22:08.215
make the phone do a little bit of work, even while the user is asleep
340
00:22:09.155 --> 00:22:10.375
or something like that.
341
00:22:11.635 --> 00:22:16.935
And I think that would improve the experience quite a bit. Is there something is there something there
342
00:22:17.555 --> 00:22:18.935
that, like, if
343
00:22:19.780 --> 00:22:21.800
a user is using more addresses
344
00:22:23.059 --> 00:22:25.559
that it that it compounds on itself
345
00:22:26.020 --> 00:22:30.200
compared to, like, maybe just the maybe the typical user is using, you know,
346
00:22:31.059 --> 00:22:35.645
generating and using one new address a month or something. But, like, if you're a power user and you're using
347
00:22:36.184 --> 00:22:39.645
100 new addresses a week or something like that, does that make it
348
00:22:40.585 --> 00:22:41.085
significantly
349
00:22:41.385 --> 00:22:42.684
worse performance wise?
350
00:22:43.145 --> 00:22:44.765
Yeah. So there is a certain threshold
351
00:22:45.705 --> 00:22:47.725
where you're basically going to download
352
00:22:48.390 --> 00:22:49.370
every single block,
353
00:22:49.670 --> 00:22:51.690
at which point you maybe want to use,
354
00:22:54.070 --> 00:23:02.730
like, maybe a full node makes more sense to you. But I would still even argue, like, the cool thing about this protocol and combined with BDK is you can download the block,
355
00:23:03.424 --> 00:23:08.885
basically apply all of the relevant information, and then just throw the block away. Like, you no longer need it.
356
00:23:10.145 --> 00:23:11.044
And right now,
357
00:23:12.625 --> 00:23:21.710
I I don't really think that same level of experience is is there for, like, Bitcoin Core running a a pre node or something like that. Like I said, I mean, the the requirement for
358
00:23:22.090 --> 00:23:24.750
storage is basically minimal with this protocol.
359
00:23:26.970 --> 00:23:31.870
So that being said, I mean, at some point, you might as well just download every block and throw it away.
360
00:23:32.895 --> 00:23:33.555
But that
361
00:23:33.935 --> 00:23:34.435
would
362
00:23:34.815 --> 00:23:42.275
would be more like your example of, like, I'm revealing 100 addresses a week or something. I'm I'm a merchant or something like that. Maybe BTCPay server
363
00:23:42.655 --> 00:23:43.555
makes more sense.
364
00:23:45.289 --> 00:23:51.710
But if if you're still really resource constrained, I I would argue it's it's still a perfectly fine protocol just for the storage,
365
00:23:53.210 --> 00:23:54.990
minimization, if that makes sense.
366
00:23:55.450 --> 00:23:56.669
Got it. And then,
367
00:23:57.210 --> 00:23:57.710
Kyoto
368
00:23:58.330 --> 00:23:58.830
specifically
369
00:24:00.465 --> 00:24:04.385
is it both it's both a protocol and a reference client. Am I correct? Or
370
00:24:05.105 --> 00:24:14.005
So, yeah, it implements yeah. It's a it's a reference client for the BIP one five seven BIP one five eight. So it's like a compact block filter
371
00:24:14.580 --> 00:24:17.000
reference client. Yeah. Just as how Neutrino
372
00:24:17.779 --> 00:24:20.520
from Lightning Labs is another reference client.
373
00:24:22.100 --> 00:24:25.720
And I hope more, you know, come up in targeted languages in the future.
374
00:24:26.020 --> 00:24:28.039
But I just wanted to add a little diversity,
375
00:24:28.425 --> 00:24:31.165
and I think Rust is is a great language to do that.
376
00:24:31.945 --> 00:24:32.605
Got it.
377
00:24:33.385 --> 00:24:33.885
Yeah.
378
00:24:35.065 --> 00:24:36.365
Okay. Let's Andreas,
379
00:24:37.145 --> 00:24:38.765
so what is Bitcoin safe
380
00:24:39.225 --> 00:24:39.725
and,
381
00:24:40.505 --> 00:24:42.285
does it use compact block filters?
382
00:24:43.970 --> 00:24:46.789
Yeah. Bitcoin Safe, is a desktop software,
383
00:24:47.250 --> 00:24:49.429
for managing your cold storage wallets.
384
00:24:51.570 --> 00:24:57.669
And it's it's hardware signer only, so you need a hardware wallet to use it on Mainnet. On on Testnet, you can,
385
00:24:58.105 --> 00:24:59.965
use seeds, but not on Mainnet
386
00:25:00.745 --> 00:25:03.725
because, use case there is really cold storage.
387
00:25:04.345 --> 00:25:04.825
And,
388
00:25:05.225 --> 00:25:06.044
it offers
389
00:25:07.065 --> 00:25:08.044
a lot of features
390
00:25:08.345 --> 00:25:12.845
for the cold storage use case for individuals, but also for groups or organizations.
391
00:25:15.040 --> 00:25:18.420
And regarding your questions, yes, it uses COMEQ block filters.
392
00:25:19.760 --> 00:25:23.540
This, I think, is a very important way to enable private synchronization.
393
00:25:24.000 --> 00:25:24.740
It it uses,
394
00:25:25.440 --> 00:25:26.580
Rob's implementation
395
00:25:27.375 --> 00:25:28.275
from BDK.
396
00:25:29.455 --> 00:25:29.955
And,
397
00:25:31.455 --> 00:25:31.955
it's
398
00:25:32.255 --> 00:25:36.995
from from the performance wise, I'm I'm really blown away by Rob's implementation. It's
399
00:25:38.015 --> 00:25:44.679
there's there's basically two cases you have to look at. The first is initial recovery or initial synchronization
400
00:25:45.299 --> 00:25:46.919
the first time you set up a wallet.
401
00:25:48.019 --> 00:25:48.500
They are,
402
00:25:49.059 --> 00:25:56.279
it it really needs some time to synchronize, like, order of magnitudes, like, half an hour for, like, a second wallet if you recover it.
403
00:25:57.784 --> 00:26:01.485
But once that's done and you're a week offline
404
00:26:02.345 --> 00:26:06.605
on desktop, it's as fast as an Electrum server. It's it's it's seconds,
405
00:26:07.145 --> 00:26:10.044
after the base. Interesting. So the big trade off is,
406
00:26:10.345 --> 00:26:27.299
like, initial sync for an existing wallet? Yeah. Yeah. So to be clear, this is only an existing wallet. So if you fire up a new wallet and we're working on this. I just made the argument new wallet, you have nothing to look up. Yes. Exactly. So there there's you can just start essentially from from the chain tip. So to be clear, we're talking about,
407
00:26:27.875 --> 00:26:29.895
you're recovering a wallet. Maybe you
408
00:26:30.355 --> 00:26:38.535
are migrating from Bitcoin Core and you're traveling for a bit, let's say, and you just wanna be able to to, access your your wallet,
409
00:26:39.075 --> 00:26:40.855
on your laptop, then,
410
00:26:41.520 --> 00:26:44.980
this is where you would face that recovery time. But we're it's pretty niche,
411
00:26:45.440 --> 00:26:46.740
scenarios, I would say.
412
00:26:48.000 --> 00:26:49.460
Well, I mean, as someone
413
00:26:50.080 --> 00:26:50.960
as someone,
414
00:26:53.135 --> 00:26:56.915
who travels a lot, like, I don't keep any,
415
00:26:59.935 --> 00:27:05.795
like, pub key information or anything on my travel laptop because I just assume that's what's gonna be searched.
416
00:27:06.390 --> 00:27:08.890
So I do find I I mean, I was I
417
00:27:09.270 --> 00:27:15.130
you know, first of all, there's probably there's not that many sovereign Bitcoin users right now, so everything's a niche use case.
418
00:27:16.310 --> 00:27:16.810
But,
419
00:27:17.990 --> 00:27:18.490
restoring
420
00:27:19.110 --> 00:27:19.610
multisig,
421
00:27:20.425 --> 00:27:21.725
hardware based multisig
422
00:27:22.505 --> 00:27:23.725
on a computer fresh,
423
00:27:24.185 --> 00:27:31.405
is something that I probably do way more often than most. But even that, like, thirty minutes is fine. You just said it. You walk away. Like, who the hell cares?
424
00:27:32.520 --> 00:27:33.020
Yeah.
425
00:27:33.960 --> 00:27:38.620
I I think the additional thing that makes compact block filters so nice
426
00:27:38.920 --> 00:27:39.420
is
427
00:27:39.880 --> 00:27:41.900
that you don't need to configure it.
428
00:27:42.360 --> 00:27:52.665
For Electron servers, either you use a public one and you need to actually choose one. Either the developer chooses it for the user or the user actually has to think about it.
429
00:27:53.205 --> 00:28:04.020
Or the second use case is or the second possibility is the user runs their own Electrum server, then they have to actually put in this connection string. Right? They they have to type it in.
430
00:28:05.120 --> 00:28:08.900
And both is a friction point. For compact block filters,
431
00:28:09.600 --> 00:28:10.900
this just goes away.
432
00:28:12.160 --> 00:28:17.300
If you're connecting to random Bitcoin nodes out there, there's there's nothing to configure.
433
00:28:19.665 --> 00:28:22.085
Only if you want to connect to your
434
00:28:22.545 --> 00:28:24.325
your own Bitcoin nodes,
435
00:28:24.705 --> 00:28:27.045
running on your network, then you have to add that.
436
00:28:27.425 --> 00:28:34.810
So So even if you that's tricky. If you if you use Bitcoin safe to connect to your own node, you're still using compact block filters as the protocol?
437
00:28:35.750 --> 00:28:37.610
It's an option right now,
438
00:28:38.070 --> 00:28:39.530
as it is. It
439
00:28:39.910 --> 00:28:42.010
cannot use your own node exclusively,
440
00:28:42.870 --> 00:28:46.730
but it can add your own node to the pool of nodes
441
00:28:47.030 --> 00:28:48.330
that it's it's using.
442
00:28:49.015 --> 00:28:49.835
Got it.
443
00:28:51.415 --> 00:28:52.554
Why would you do that?
444
00:28:55.575 --> 00:28:56.615
Rob, I think that's a
445
00:28:57.255 --> 00:28:58.215
the question for you,
446
00:28:59.335 --> 00:29:03.035
about the design decision about this pool of initial peers.
447
00:29:04.790 --> 00:29:06.250
Why why would we do what?
448
00:29:07.030 --> 00:29:09.110
Attach the What advantages in this
449
00:29:09.590 --> 00:29:18.915
if if you're gonna use compact block filters anyway, what incentive do you have to really use your own node in that situation? Like, why am I even adding my node to the pool? Well, if you do have one,
450
00:29:20.255 --> 00:29:22.115
like, let's go back to the travel example.
451
00:29:22.415 --> 00:29:25.795
And you can Andreas, you can take the opportunity
452
00:29:26.095 --> 00:29:30.035
to show that Bitcoin safe, all data is encrypted at rest. So,
453
00:29:32.500 --> 00:29:33.940
even even if you're you're,
454
00:29:34.980 --> 00:29:37.240
held up as But see I mean, same with
455
00:29:38.980 --> 00:29:42.920
yeah. I mean, I guess, Sparrow, it's optional if it's encrypted at rest.
456
00:29:45.555 --> 00:29:47.795
Yeah. But sorry. Short short aside. I just wanted
457
00:29:48.275 --> 00:29:52.695
but, why why connect to your own node? If Yeah. If you know regionally you're close,
458
00:29:53.075 --> 00:29:53.895
to your node,
459
00:29:55.555 --> 00:30:00.510
then your download times will be faster. I mean, just lower latency is is a is a nice,
460
00:30:01.370 --> 00:30:03.390
a nice property of the protocol. Because, again,
461
00:30:04.010 --> 00:30:06.350
it's all peer to peer. So
462
00:30:07.130 --> 00:30:14.350
you it's kind of a luck of the draw thing. I mean, you could be connecting to somebody halfway around the world, or you could be connecting to your neighbor.
463
00:30:14.945 --> 00:30:17.845
You you don't have a lot of say in in how this,
464
00:30:19.025 --> 00:30:19.845
you know, actually
465
00:30:20.305 --> 00:30:29.445
occurs. I mean, I've thought about adding features, similar to Bitcoin cores, like AS map in the future, where, you know, you could target specifically, like, oh, I want AWS,
466
00:30:30.679 --> 00:30:33.419
US East. Like, give me a node from there.
467
00:30:33.720 --> 00:30:34.220
But,
468
00:30:34.679 --> 00:30:36.679
you know, that really over over,
469
00:30:37.480 --> 00:30:39.020
complicates, I think, the peer selection.
470
00:30:39.480 --> 00:30:39.980
So
471
00:30:40.840 --> 00:30:43.240
why you would connect to your own node just it's,
472
00:30:44.015 --> 00:30:44.915
could be faster.
473
00:30:45.295 --> 00:30:47.875
Also, it's very easy to configure. It's only two,
474
00:30:49.455 --> 00:30:51.315
two lines near Bitcoin config,
475
00:30:51.615 --> 00:30:52.735
and you you have,
476
00:30:53.215 --> 00:30:54.355
compact block filters.
477
00:30:54.815 --> 00:31:01.799
So Got it. Well, two lines for re indexing. You have to enable it on the node side first. Right? And then you put it in the configuration information,
478
00:31:02.179 --> 00:31:04.840
like, Bitcoin safe side or Bitcoin key other side. Right?
479
00:31:05.299 --> 00:31:09.480
Yep. Bitcoin safe, you you basically can can add your own IP.
480
00:31:10.020 --> 00:31:11.720
But, I mean, it it's
481
00:31:13.065 --> 00:31:16.684
still I I would argue that maybe that's not even necessary if if
482
00:31:17.065 --> 00:31:21.164
you are in a a densely populated area like The US. Odds are
483
00:31:21.465 --> 00:31:25.245
you probably are are gonna find some some pretty fast nodes
484
00:31:25.625 --> 00:31:27.885
in your area. If you're in a bit more rural
485
00:31:28.250 --> 00:31:29.550
of a country or region,
486
00:31:31.370 --> 00:31:31.870
then
487
00:31:32.490 --> 00:31:34.590
then, adding your own node could be an advantage.
488
00:31:35.530 --> 00:31:40.030
But that's kind of the beauty about this protocol is, like, you just connect to anyone,
489
00:31:40.410 --> 00:31:42.750
and, they could be helpful to you potentially.
490
00:31:43.245 --> 00:31:52.705
Yeah. I mean, I have a better framing of the question. Why if you're running your own node that's serving compact block filters, why why do you need the pool of nodes? Why don't you just
491
00:31:53.645 --> 00:31:58.385
take the block filters from your node and just use your own like, why do you need other nodes?
492
00:32:00.300 --> 00:32:04.720
I mean, if you wanna send a transaction, you you can do a little bit of, like, transaction origin
493
00:32:05.260 --> 00:32:08.240
obfuscation because, I mean, if it's coming from your home node,
494
00:32:09.340 --> 00:32:13.920
like, if your private like, if your compact block filter node is just sending directly to your home node,
495
00:32:15.404 --> 00:32:17.664
then, to any to any, like, passive observer,
496
00:32:17.965 --> 00:32:26.625
they're basically associating that with with your home node. Whereas you can There's more for the broadcast side, not for the receive side. Yeah. I think that's one one potential,
497
00:32:28.390 --> 00:32:28.890
benefit,
498
00:32:29.590 --> 00:32:31.050
to having having the pool.
499
00:32:31.430 --> 00:32:34.250
Also, just if your home node has happens to go down,
500
00:32:35.830 --> 00:32:38.570
it it can help to have a little bit of redundancy there.
501
00:32:40.144 --> 00:32:44.404
Yeah. To your point, if, like, if you wanna just do one connection with one
502
00:32:44.865 --> 00:32:47.445
home node, I don't see any problem with that either.
503
00:32:48.304 --> 00:32:50.485
You just maybe get lose a little bit of
504
00:32:51.745 --> 00:32:52.965
a transaction broadcast
505
00:32:53.345 --> 00:32:53.845
anonymization.
506
00:32:55.559 --> 00:32:56.380
Got it.
507
00:32:56.919 --> 00:33:00.700
Okay. That makes that makes sense to me. Okay. But back to Bitcoin safe,
508
00:33:03.000 --> 00:33:09.260
I mean, I think well, first off, why hardware only? Why can't you make a hot wallet
509
00:33:10.915 --> 00:33:13.415
on it? Why was that design decision made?
510
00:33:14.515 --> 00:33:15.335
Yeah. So
511
00:33:16.275 --> 00:33:19.975
Bitcoin safe focuses on this cold storage use case,
512
00:33:20.835 --> 00:33:25.335
for for savings or for for Bitcoin treasuries of organizations.
513
00:33:26.340 --> 00:33:26.840
And,
514
00:33:29.700 --> 00:33:31.880
their hot seats are just not safe.
515
00:33:32.340 --> 00:33:34.360
For for any large amount of money,
516
00:33:35.540 --> 00:33:38.840
saving a a seat on the computer is is is not a good idea.
517
00:33:39.465 --> 00:33:41.965
And nowadays, there are so many good
518
00:33:42.265 --> 00:33:44.045
hardware wallets or hardware signers,
519
00:33:45.065 --> 00:33:45.565
that's,
520
00:33:46.424 --> 00:33:50.445
this is this is just the way to go for any any large amounts of money.
521
00:33:51.780 --> 00:33:53.160
And Bitcoin Safe,
522
00:33:54.260 --> 00:33:58.680
supports all of the major hardware signers or all of the QR standards,
523
00:33:59.300 --> 00:34:02.360
USB or file. It supports all of that
524
00:34:03.140 --> 00:34:03.940
to make this,
525
00:34:04.500 --> 00:34:05.640
as easy as possible.
526
00:34:06.645 --> 00:34:09.865
And for for individuals, it also offers,
527
00:34:10.565 --> 00:34:11.865
a wanted setup wizard
528
00:34:12.325 --> 00:34:16.825
to guide a user through setting up a single sig or also multisig,
529
00:34:18.085 --> 00:34:23.430
such that at the end of this wizard, after the step by step process, they can be sure it's set up correctly
530
00:34:23.890 --> 00:34:28.150
and, they can trust that they can send larger funds inside.
531
00:34:28.610 --> 00:34:30.550
Because in this setup wizard,
532
00:34:30.930 --> 00:34:31.430
they
533
00:34:31.970 --> 00:34:37.984
have a receive test and they also have send tests where they have to test every hardware signer. So they
534
00:34:38.684 --> 00:34:41.505
they they tested all of their devices. They know it works.
535
00:34:43.244 --> 00:34:44.545
And that way, they can
536
00:34:44.924 --> 00:34:51.904
they don't do it the first time with with large amount of money. They did it already with a smaller amount of money in these test transactions.
537
00:34:53.170 --> 00:34:57.590
Got it. So it's I mean, it's just trying to guide the user towards best practices.
538
00:34:59.410 --> 00:35:01.910
I mean so I think what would be helpful here is,
539
00:35:05.105 --> 00:35:06.805
for the use case that you,
540
00:35:07.905 --> 00:35:08.724
are targeting,
541
00:35:09.505 --> 00:35:12.325
I mean, the gold standard is, clearly Sparrow.
542
00:35:12.785 --> 00:35:13.444
I think
543
00:35:14.065 --> 00:35:20.610
I mean, that I'm using Sparrow for this use case. I think probably the majority of the freaks are using Spiro for this use case.
544
00:35:22.270 --> 00:35:24.450
What's the differentiator? Like, why
545
00:35:25.470 --> 00:35:34.545
why should someone consider Bitcoin say I mean, look. I've quite I'm not being I'm not trying to be discouraging. Like, more options are better. Like, god forbid
546
00:35:35.005 --> 00:35:36.704
Craig gets hit by a bus or something.
547
00:35:38.684 --> 00:35:41.505
I don't want, like, this whole industry relying on a single man.
548
00:35:42.204 --> 00:35:42.704
But,
549
00:35:43.530 --> 00:35:45.070
like, clearly, there's a differentiator
550
00:35:45.370 --> 00:35:49.710
there. What what is why should someone consider Bitcoin safe over something like Spiro?
551
00:35:50.410 --> 00:35:50.910
Yeah.
552
00:35:52.570 --> 00:35:53.070
For
553
00:35:54.250 --> 00:35:55.470
for the for
554
00:35:57.675 --> 00:35:59.275
it it it really tries to go,
555
00:36:00.395 --> 00:36:01.775
offer additional features.
556
00:36:02.555 --> 00:36:05.295
As I as I mentioned, the this wallet setup wizard,
557
00:36:08.395 --> 00:36:16.630
should enable also people who are who did not listen to the, like, ten hours of podcast to to set up a single sig or or multisig. So making this
558
00:36:17.010 --> 00:36:17.829
self custody,
559
00:36:18.530 --> 00:36:21.910
for individuals as as easy and as smooth as possible.
560
00:36:23.809 --> 00:36:25.270
And part of that is also
561
00:36:25.674 --> 00:36:26.494
private synchronization,
562
00:36:27.355 --> 00:36:28.894
using compact block filters.
563
00:36:29.515 --> 00:36:34.654
If I have to choose an Electron server, for the user because the user doesn't know how to choose one,
564
00:36:35.355 --> 00:36:38.335
so if I set a good default, right now it's it's Blockstream,
565
00:36:41.310 --> 00:36:44.050
At some time, maybe the server goes away. And
566
00:36:44.750 --> 00:36:49.810
what then? And with callback WAC filters, this problem does not exist, so that's why,
567
00:36:51.070 --> 00:36:53.010
combat WAC filters are now one synchronization
568
00:36:53.310 --> 00:36:53.810
option.
569
00:36:54.325 --> 00:36:57.225
And then for the multisig use case or even multiparty
570
00:36:57.525 --> 00:36:58.825
multisig use case,
571
00:36:59.685 --> 00:37:01.145
there's a a functionality
572
00:37:01.445 --> 00:37:02.665
called sync and chat.
573
00:37:03.125 --> 00:37:03.625
It's,
574
00:37:04.805 --> 00:37:11.560
it's a it's a kind of a discovery mechanism and a way to connect two instances of Bitcoin safe running on different computers.
575
00:37:13.700 --> 00:37:17.320
So for for multiparty, multisig use case, let's say,
576
00:37:18.340 --> 00:37:23.080
you have three people and they want to to manage a wallet together.
577
00:37:23.424 --> 00:37:25.765
Part of that is synchronizing the labels.
578
00:37:26.704 --> 00:37:30.644
Right? You you want to always have synchronized labels.
579
00:37:31.424 --> 00:37:31.924
And,
580
00:37:32.305 --> 00:37:34.244
this is this being done through
581
00:37:34.625 --> 00:37:36.964
a protocol that sits on top of Nostra.
582
00:37:38.690 --> 00:37:43.990
And the same protocol also enables if the people want to sign a PSVT together,
583
00:37:44.769 --> 00:37:48.309
that they can send the PSVT over the same encrypted channel,
584
00:37:49.089 --> 00:37:50.230
to the other person,
585
00:37:51.455 --> 00:37:53.235
so the signatures can be collected.
586
00:37:54.335 --> 00:37:56.175
That's awesome. I mean, like, right now
587
00:37:57.695 --> 00:37:58.755
yeah. Like, right now
588
00:37:59.855 --> 00:38:04.835
I mean, if you're using Sparrow for this use case, you're basically just copying and pasting PSBTs into signal.
589
00:38:06.310 --> 00:38:06.810
Right.
590
00:38:07.510 --> 00:38:09.910
And it also has an integrated chat,
591
00:38:10.310 --> 00:38:14.010
that is it's supposed to be just for this use case to coordinate
592
00:38:14.790 --> 00:38:15.770
the the signing.
593
00:38:16.710 --> 00:38:19.930
It's, what you can write, like, hey. I want to sign now. Are you
594
00:38:20.265 --> 00:38:22.045
online? The person writes back.
595
00:38:22.424 --> 00:38:24.525
And so are those basically master DMs?
596
00:38:25.865 --> 00:38:27.724
Yep. It's it's SNP 17.
597
00:38:28.825 --> 00:38:29.565
Got it.
598
00:38:30.345 --> 00:38:30.845
It's,
599
00:38:32.025 --> 00:38:32.924
it's however,
600
00:38:34.025 --> 00:38:35.325
it's it's not supposed
601
00:38:35.690 --> 00:38:42.590
to that you you're putting your NSAC from your amethyst or some other Right. Master app. It creates a completely random NSAC,
602
00:38:43.690 --> 00:38:45.870
and it's supposed to be only used for this,
603
00:38:47.290 --> 00:38:48.190
to to minimize,
604
00:38:48.890 --> 00:38:50.190
where where your NSAC,
605
00:38:51.335 --> 00:38:54.394
is Yeah. And you don't want It's only living in encrypted wallet file.
606
00:38:54.694 --> 00:38:55.194
Right.
607
00:38:56.295 --> 00:39:00.154
Yeah. And it's it's this this NSAC is only living in the encrypted wallet file.
608
00:39:01.095 --> 00:39:01.595
Got
609
00:39:02.135 --> 00:39:05.994
it. It's generated when you set up Bitcoin safe. Exactly.
610
00:39:08.120 --> 00:39:11.900
Okay. That'll make sense to me. Have you talked to Craig at all about
611
00:39:13.000 --> 00:39:16.460
why they why he hasn't implemented Compact, but have either of you?
612
00:39:18.760 --> 00:39:26.485
I can speak on that a little bit. So I guess Okay. I can also take the time to show twenty one forty. So how I'm currently supported,
613
00:39:27.105 --> 00:39:30.645
previously, it was partially OpenSAT. So, of course, thanks for that.
614
00:39:31.105 --> 00:39:32.005
But Cheers.
615
00:39:32.710 --> 00:39:34.550
Right now, I'm employed by,
616
00:39:35.030 --> 00:39:36.090
twenty one forty,
617
00:39:37.430 --> 00:39:38.810
and The Netherlands.
618
00:39:39.670 --> 00:39:41.370
So I think the best way
619
00:39:42.070 --> 00:39:44.650
to put twenty one forty is we're kind of a developer
620
00:39:45.275 --> 00:39:45.855
collective, let's say.
621
00:39:47.035 --> 00:39:50.175
We all kind of work on protocols that we find,
622
00:39:50.555 --> 00:39:52.095
interesting and try and learn,
623
00:39:52.475 --> 00:39:58.175
from each other. But it's mostly just a set of independent people kind of working on what we find interesting.
624
00:39:58.475 --> 00:40:00.095
It's like chain code of the north.
625
00:40:00.780 --> 00:40:04.080
Chain code of, yeah. Chain code of The Netherlands. Yeah.
626
00:40:06.860 --> 00:40:11.360
Although I think New York is probably colder in the winter than The Netherlands, like, ironically. But,
627
00:40:12.220 --> 00:40:13.660
yeah. Chain code of the north.
628
00:40:14.940 --> 00:40:15.440
So,
629
00:40:17.305 --> 00:40:19.405
I I completely forgot the question. What,
630
00:40:20.025 --> 00:40:25.565
No. Why doesn't Craig use so Craig right now So he came using Electrum servers, and, specifically,
631
00:40:26.185 --> 00:40:28.125
he, like, picks a sane default
632
00:40:28.770 --> 00:40:30.710
public election servers. There's, like, Blockstream,
633
00:40:31.090 --> 00:40:32.070
MZ, mempool.
634
00:40:32.610 --> 00:40:34.950
Okay. People that probably aren't spying on you.
635
00:40:35.410 --> 00:40:39.350
Yeah. So okay. I as I okay. Maybe it was Chatham House rules,
636
00:40:41.605 --> 00:40:45.225
when he came, but, basically, he joined us for for a silent payments,
637
00:40:45.845 --> 00:40:46.345
dev,
638
00:40:47.125 --> 00:40:48.585
kinda workshop week.
639
00:40:49.045 --> 00:40:49.545
And,
640
00:40:50.485 --> 00:41:00.070
I mean, obviously, a incredibly brilliant dev. Like, the stuff that he turns out and like, he just showed up and was like, oh, I have, like, a silent payments server side scanner.
641
00:41:01.010 --> 00:41:08.070
And we're like, oh, that's that's awesome. Like, you know, something that would take a normal dev, like, I don't know, maybe six months he does in, like, a week or something.
642
00:41:08.955 --> 00:41:16.575
But I think the primary thing is well, for one, he like you said, he kind of has he has the gold standard of a wallet. So any feature he adds,
643
00:41:17.115 --> 00:41:18.015
he has to
644
00:41:19.275 --> 00:41:21.535
like, he he can't just retract it later.
645
00:41:21.900 --> 00:41:25.920
So it has to be very thoroughly thought out. It has to be really well implemented,
646
00:41:26.779 --> 00:41:28.240
or else, you know,
647
00:41:28.619 --> 00:41:30.640
he doesn't really have the opportunity to just
648
00:41:30.940 --> 00:41:34.960
remove it and then have like, he he's everything. He's, like, customer support,
649
00:41:35.260 --> 00:41:36.559
dev, all of it.
650
00:41:37.955 --> 00:41:38.455
So
651
00:41:38.835 --> 00:41:40.535
all features are really thoroughly
652
00:41:40.835 --> 00:41:44.855
thought through, and I think the impression is that compact block filters
653
00:41:45.315 --> 00:41:46.855
are going to be too slow,
654
00:41:47.635 --> 00:41:50.375
and not responsive enough on the user side.
655
00:41:51.450 --> 00:41:54.109
But I've gone to, like, really great lengths to,
656
00:41:55.210 --> 00:42:12.025
you know, pass as much information as I can to Andreas. Like, here's what's happening. The node is at this block height. The node is downloading this. The node got got this block. So So as much as we can inform the user is what's going on, and then also I, like So they, like, see it loading, basically. Right? Yes.
657
00:42:12.485 --> 00:42:12.985
So
658
00:42:13.525 --> 00:42:15.385
and and then the other thing is he's
659
00:42:15.765 --> 00:42:28.800
he's a wallet develop like, he's the whole thing, the UI, the wallet functionality, signing PSBTs and stuff. I was afforded the the luxury of just implementing on the node side. How can we make this as as best as we can,
660
00:42:29.420 --> 00:42:31.360
some sort of compact block filter implementation?
661
00:42:31.865 --> 00:42:35.005
And so because of that, I've had a bunch of time to focus on performance,
662
00:42:35.464 --> 00:42:38.204
what works, what doesn't work, and I've tried to make it as,
663
00:42:38.664 --> 00:42:40.684
like, as fast and seamless as possible,
664
00:42:41.785 --> 00:42:43.484
which I I just don't think,
665
00:42:43.785 --> 00:42:51.500
a wallet dev that's doing the full stack, they don't have time to do that. I mean, it's just not realistic. But do you think he'll implement it at some point in the future? Or
666
00:42:53.660 --> 00:42:55.200
I mean, I don't know. Option?
667
00:42:55.740 --> 00:42:56.720
It could be,
668
00:42:57.100 --> 00:43:04.005
like, theoretically high level. It could be as simple as, like, an option in settings. Right? To, like, switch from Electrum to
669
00:43:04.805 --> 00:43:16.185
I I I think I mentioned that earlier. Like, I would love if every wallet just had the drop down. Like, it doesn't have to be the default if you don't want it to be, if you think it has too much friction. But I'd love for every wallet to at least have the drop down.
670
00:43:17.770 --> 00:43:18.270
So
671
00:43:18.810 --> 00:43:21.230
I I would hope so, but at the same time,
672
00:43:23.210 --> 00:43:25.550
yeah, he's he's developing the full stack,
673
00:43:26.250 --> 00:43:26.750
and
674
00:43:27.210 --> 00:43:30.030
he has already quite a bit of features that he needs to support.
675
00:43:31.615 --> 00:43:34.515
I I can see how how the risk might not be worth the reward.
676
00:43:34.815 --> 00:43:40.755
Whereas in my position, I'm I'm a 100% willing. I think privacy is of the utmost importance,
677
00:43:41.455 --> 00:43:41.955
so
678
00:43:42.495 --> 00:43:44.355
I I have time to dedicate to it.
679
00:43:46.170 --> 00:43:48.830
Yeah. I think we we could cross our fingers, hopefully.
680
00:43:51.450 --> 00:43:54.089
Got it. Yeah. I mean, I wasn't trying to,
681
00:43:57.695 --> 00:44:00.755
we're not trying to I wasn't trying to have you speak for Craig.
682
00:44:02.975 --> 00:44:03.295
And,
683
00:44:04.655 --> 00:44:15.020
but it is an interesting thing. It's it's something that I've talked to him about at length because he really does he cares deeply about user privacy and security. That's why Sparrow exists in the first place,
684
00:44:16.520 --> 00:44:19.260
and almost to a fault. Like, I've had,
685
00:44:20.440 --> 00:44:25.000
large back and forths with him. Anyone who's gone through the Sparrow default setup process,
686
00:44:27.414 --> 00:44:28.315
In the beginning,
687
00:44:30.055 --> 00:44:30.875
he basically
688
00:44:32.615 --> 00:44:34.375
he first of all, he picks sane public,
689
00:44:34.775 --> 00:44:45.390
Electrum server defaults for you, but he also scares the shit out of users of using the public Electrum servers that he chooses for them. He's like, ultimately, like, if you're gonna if you actually care, you should be running your own.
690
00:44:45.930 --> 00:44:50.910
Yeah. Indeed. It's orange lights, red lights everywhere. Flashing yellow lights.
691
00:44:51.450 --> 00:44:52.270
Yeah. Yeah.
692
00:44:52.650 --> 00:45:01.845
And which I respect, but also, like, I mean, now that we have compact block filters, it sounds like this is a could be a better trade off balance for the overwhelming majority users.
693
00:45:02.145 --> 00:45:03.605
But up until this point,
694
00:45:05.905 --> 00:45:13.240
for a lot of users, like, using Blockstream or mempool spaces node is was probably good enough and not warranting yellow lights. And,
695
00:45:15.300 --> 00:45:19.480
I have you know, I I know those guys personally, and I'm
696
00:45:20.260 --> 00:45:24.820
relatively confident that they're they're not actively keeping logs. I mean, there's no way to prove it. But,
697
00:45:25.855 --> 00:45:27.235
if you're just some random
698
00:45:28.335 --> 00:45:31.715
smaller time user, like, you're probably fine doing that.
699
00:45:32.895 --> 00:45:38.115
So, yeah, anyway, I had a lot of back and forth with him, but it seems like it'd be right up his alley, which is why it's interesting.
700
00:45:38.980 --> 00:45:43.880
But, also, I I can see how he wants to wait and see you know, let it kinda get
701
00:45:45.780 --> 00:45:50.360
proven in the wild before he adds more tech debt to his already
702
00:45:50.660 --> 00:45:51.160
established
703
00:45:51.620 --> 00:45:53.160
heavily used wallet. Right?
704
00:45:53.685 --> 00:45:55.625
Yeah. Yeah. I think I think the market,
705
00:45:56.085 --> 00:45:57.465
so to speak, needs to
706
00:45:57.925 --> 00:46:01.785
pick it up. Like, the user is gonna do the least friction option.
707
00:46:02.645 --> 00:46:03.385
So I think
708
00:46:04.165 --> 00:46:05.705
it's more of my
709
00:46:06.410 --> 00:46:11.710
and others' responsibility as developers to make it the most or at least as frictionless,
710
00:46:14.090 --> 00:46:14.830
at which
711
00:46:15.370 --> 00:46:18.490
point you can kind of interchange between the two. Because
712
00:46:19.235 --> 00:46:24.455
yeah, I I just don't think it's realistic for for the user to opt into privacy. Like, the the average
713
00:46:24.995 --> 00:46:25.495
Joe
714
00:46:25.875 --> 00:46:28.295
is gonna pick the thing that that syncs the fastest.
715
00:46:29.075 --> 00:46:40.100
Right. So my my goal is is to make it as comfortable. And and like you said, yeah, I don't think anyone is recording logs right now, nor do I think people really care about those logs, like, nor do I think any
716
00:46:40.400 --> 00:46:42.020
companies would actually buy them.
717
00:46:42.560 --> 00:47:07.940
But if we think or if if Bitcoin does what what we think it's gonna do, then all of a sudden that data becomes a lot more interesting. Yeah. More valuable. So, yeah, I I would I would say it's more of a future planning, than than a current problem. Well, I would say there are wallets that just, like, naively pick random Electrum nodes, And that that's probably a horrible idea. There probably are some that are logging.
718
00:47:08.800 --> 00:47:12.900
Chain analysis has been you know, chain surveillance firms have been known to run them.
719
00:47:14.240 --> 00:47:18.580
That's why it's just like it was a very sane low lift thing for him to do is to just
720
00:47:19.015 --> 00:47:21.755
pick a white list of reputable ones.
721
00:47:23.015 --> 00:47:36.780
But, yeah, once again, that only goes so far. It's similar to the VPN trust model. Right? It's like there's no way for you to prove for a hosted VPN trust model. There's no way for you to prove if if the host is not doing logs. There's no way for them to even prove it.
722
00:47:37.800 --> 00:47:40.300
So you go based just on on reputation.
723
00:47:41.560 --> 00:47:42.540
And, ideally,
724
00:47:43.320 --> 00:47:44.700
we can get past that.
725
00:47:45.435 --> 00:47:49.855
And so, like, Obscura on the VPN side is trying to get past that by using MoleVAD,
726
00:47:50.555 --> 00:47:54.735
and the compact block filters is kind of a way to remove that trust,
727
00:47:56.075 --> 00:47:59.375
trade off that you have if you're not running your own node, which is pretty cool.
728
00:48:02.070 --> 00:48:02.790
Awesome. I,
729
00:48:05.670 --> 00:48:06.730
I forgot to go.
730
00:48:07.110 --> 00:48:10.490
Well, before you jump in, just real quick, twenty one forty is awesome.
731
00:48:10.870 --> 00:48:12.490
I feel like I cut that off.
732
00:48:12.870 --> 00:48:14.195
I love what what,
733
00:48:14.595 --> 00:48:17.815
Josie and and Ruben you guys are building out there.
734
00:48:19.395 --> 00:48:24.215
And, you're still kind of supported by OpenSats because we, helped bootstrap,
735
00:48:24.995 --> 00:48:29.415
them. In a small way, we helped bootstrap them. We're it's really cool to see,
736
00:48:30.420 --> 00:48:33.720
more and more dev initiatives kinda sprout out because, ideally,
737
00:48:34.339 --> 00:48:36.920
just like I'm I have concern of
738
00:48:37.380 --> 00:48:39.160
Craig getting hit by a bus,
739
00:48:40.180 --> 00:48:48.635
you know, like, god forbid something happens to OpenSats. Like, we need as many we need as many organizations as possible, all doing it slightly different ways too, which is cool.
740
00:48:49.655 --> 00:48:52.155
Yeah. Yeah. And I think I think the cool thing about
741
00:48:53.095 --> 00:49:00.200
what's happening here at twenty one forty is the in person aspect. I mean, some people really like how the open source,
742
00:49:01.480 --> 00:49:08.700
workflow, you can do it completely remotely, but that's just not really the type of person that I am. I like to be in an office and and talk to people.
743
00:49:09.160 --> 00:49:09.660
And
744
00:49:10.175 --> 00:49:12.035
I think it's there's sort of
745
00:49:12.335 --> 00:49:17.395
a a theory that you could subscribe to where you have a bunch of great minds. They may,
746
00:49:17.775 --> 00:49:18.275
you
747
00:49:18.655 --> 00:49:20.115
know, sum to, like,
748
00:49:20.734 --> 00:49:25.180
one, but if you put them all together, we sum to, like, two. Right? Like,
749
00:49:25.559 --> 00:49:27.420
the the effects of,
750
00:49:27.880 --> 00:49:39.055
the mind share kind of compound on the on the top. Plus one equals three is, I think, what you're talking about. Yeah. Exactly. One plus one is equal to three. And I I do like, as as corny as that sounds, I do think,
751
00:49:39.994 --> 00:49:43.455
that's that's what's happening here, where the amount of,
752
00:49:44.075 --> 00:49:45.615
round trips I have to do
753
00:49:45.994 --> 00:49:59.650
is so much fewer. I don't have to wait for someone's response or any of that. I can have a live conversation even passively, like at lunch. We all go out for lunch, and you can talk an idea through and sort of rubber duck it. And I I think that,
754
00:50:00.285 --> 00:50:01.744
you know, as many organizations
755
00:50:02.125 --> 00:50:04.224
as as we can get, like, twenty one forty
756
00:50:04.605 --> 00:50:05.265
up, I think,
757
00:50:05.805 --> 00:50:10.224
will really be an improvement to to the open source kind of development community because,
758
00:50:11.164 --> 00:50:15.345
yeah, there there's just a lot of value in in talking ideas through in person
759
00:50:15.849 --> 00:50:19.390
and, you know, either getting something knocked or act like in real life,
760
00:50:19.849 --> 00:50:24.349
because the the typical remote flow is is relatively slow.
761
00:50:25.050 --> 00:50:29.869
No. 100% cosign. I mean, that's why Bitcoin Park exists. Physical interaction is
762
00:50:30.355 --> 00:50:33.095
an incredibly important part of the human experience.
763
00:50:34.675 --> 00:50:37.095
Andreas, I cut you off. You wanted to jump
764
00:50:37.475 --> 00:50:37.975
in?
765
00:50:38.435 --> 00:50:38.835
Yeah.
766
00:50:40.275 --> 00:50:40.775
So
767
00:50:41.315 --> 00:50:42.135
Rob mentioned
768
00:50:42.515 --> 00:50:43.015
that,
769
00:50:43.635 --> 00:50:46.560
the the user is going to the least friction option.
770
00:50:47.660 --> 00:50:48.160
So
771
00:50:49.020 --> 00:50:52.800
right now, in Bitcoin safe, the Electron server is still the default,
772
00:50:53.420 --> 00:50:53.900
but,
773
00:50:54.220 --> 00:50:57.680
the plan is actually to make it the to make compact box filters,
774
00:50:58.300 --> 00:50:59.040
the default.
775
00:50:59.865 --> 00:51:00.845
And for this,
776
00:51:02.265 --> 00:51:02.765
there's,
777
00:51:03.305 --> 00:51:06.125
a a lot of design work actually left for BitCoinSafe.
778
00:51:06.425 --> 00:51:08.365
There's actually a a designer joined,
779
00:51:09.065 --> 00:51:09.805
the project
780
00:51:10.265 --> 00:51:12.765
to to help improve the user experience.
781
00:51:14.099 --> 00:51:15.799
And, there, I think
782
00:51:16.180 --> 00:51:20.839
the the next big thing is to to work on the design in the UX to make
783
00:51:21.140 --> 00:51:22.440
compact block filters,
784
00:51:22.900 --> 00:51:24.839
like, by default natural,
785
00:51:25.299 --> 00:51:27.799
and that this half hour recovery sync
786
00:51:28.795 --> 00:51:29.535
is not,
787
00:51:29.995 --> 00:51:36.255
like like, a not felt as a disadvantage, but it's explained to the user what's happening, why is it good that they're waiting,
788
00:51:37.275 --> 00:51:38.975
to to to make this
789
00:51:39.275 --> 00:51:42.575
as low friction as possible and that people go with this
790
00:51:42.910 --> 00:51:44.610
more private option by default.
791
00:51:47.150 --> 00:51:51.250
And, yeah, once again, to be clear, you can just check a box like, no. This is a new wallet.
792
00:51:51.790 --> 00:51:53.310
You don't need to to do this,
793
00:51:53.710 --> 00:51:55.424
background sync. But, yes.
794
00:51:55.885 --> 00:52:00.444
Yeah. Yeah. Just I mean, just for the recovery use case. Yeah. Is there is there,
795
00:52:02.365 --> 00:52:06.924
well, first of all, so you're using Electrum servers by default. Are you doing the same thing that,
796
00:52:07.780 --> 00:52:09.140
Craig is doing? You're, like, picking
797
00:52:09.780 --> 00:52:11.640
how are you picking the Electrum servers?
798
00:52:12.500 --> 00:52:18.360
The default is the the Blockstream one, but, of course, you can configure it to any Electrum server you want.
799
00:52:19.460 --> 00:52:24.325
Yeah. I mean, the two best from the three best from my experience is Blockstream, mem pool, and,
800
00:52:25.424 --> 00:52:25.924
MZ.
801
00:52:27.904 --> 00:52:29.684
Mem pool one is unfortunately
802
00:52:29.984 --> 00:52:30.484
not
803
00:52:30.865 --> 00:52:32.805
available on main net for free.
804
00:52:33.904 --> 00:52:35.684
Oh, you started charging for it?
805
00:52:36.620 --> 00:52:37.920
As far as I know.
806
00:52:39.580 --> 00:52:41.840
I'll talk to Wiz about that. Interesting.
807
00:52:42.620 --> 00:52:43.120
Okay.
808
00:52:44.220 --> 00:52:44.380
I
809
00:52:45.580 --> 00:52:46.080
what,
810
00:52:47.980 --> 00:52:49.840
that's interesting. I didn't realize that.
811
00:52:50.715 --> 00:52:51.215
The
812
00:52:53.195 --> 00:52:58.975
on the compact block filter side, if you are syncing a past wallet, does it do what is it like a,
813
00:53:00.875 --> 00:53:02.495
is there, like, a birth height
814
00:53:02.810 --> 00:53:12.350
thing that you put in or something? Or is it only segued outputs? Is it only Taproot outputs? Is there, like, a way to limit the amount of blocks that you're actually filtering through to?
815
00:53:13.530 --> 00:53:17.395
So it detects the script type. So, like, legacy,
816
00:53:17.935 --> 00:53:25.714
segue to type root, and then it uses the block height that makes sense. So, like, segue start or type root start or Genesys.
817
00:53:26.494 --> 00:53:39.460
But, like, presumably, I could keep the birth height of my wallet, and then when I restore it, the sync the restore sync would be quicker. Right? I mean, I obviously, that's a power user thing. Like, I don't think most people are gonna keep the birth height with their seeds. But
818
00:53:40.740 --> 00:53:42.420
It's not yet possible, but,
819
00:53:42.980 --> 00:53:43.460
I think,
820
00:53:43.940 --> 00:53:49.924
you're working on it to make it possible. Yeah. So, on on the binding side, I just opened a PR for this,
821
00:53:50.404 --> 00:53:51.865
like, hours ago,
822
00:53:52.404 --> 00:53:54.345
to just add, like, some sort of arbitrary
823
00:53:54.805 --> 00:53:58.825
kind of, like, height. But the thing is for compact block filters, since
824
00:53:59.400 --> 00:54:01.339
you're actually talking the peer to peer network,
825
00:54:01.960 --> 00:54:05.660
you don't really talk in heights. You you need you need a hash. Right? So,
826
00:54:07.720 --> 00:54:11.339
you would I mean, I guess, presumably, you would like ping a,
827
00:54:12.200 --> 00:54:19.765
yeah, like a mempool server, mempool dot space. Hey. Hey. What is the hash for this height? And then take that and start your sync.
828
00:54:21.825 --> 00:54:23.765
But, yeah, as you said, I think
829
00:54:24.305 --> 00:54:31.130
I I have no idea, like, when when I received my first SAT. Right? Like, it it's kind of hard
830
00:54:31.990 --> 00:54:33.210
to record a birthday.
831
00:54:34.470 --> 00:54:42.885
So, honestly, I think the safest option is just start from Segwit. But, yeah, if you're if you're a power user and you have a height, that's definitely something that we're we're gonna add as a future.
832
00:54:43.605 --> 00:54:46.585
Well, I mean, we've seen this in shitcoin land.
833
00:54:47.645 --> 00:54:48.145
Like,
834
00:54:51.205 --> 00:54:51.705
both
835
00:54:52.085 --> 00:54:52.585
both,
836
00:54:53.045 --> 00:54:56.920
Monero and Zcash have trade offs in how they handle syncs,
837
00:54:58.099 --> 00:54:59.799
where it's incredibly computationally
838
00:55:00.339 --> 00:55:00.839
intensive
839
00:55:01.220 --> 00:55:02.119
to do syncs.
840
00:55:02.579 --> 00:55:03.079
Mhmm.
841
00:55:04.099 --> 00:55:11.515
And so they, like, they inform they they, like, tell the user when they're recording their seed backup that, like, here's the here's the birth height of your wallet.
842
00:55:12.615 --> 00:55:13.995
Okay. That's pretty neat.
843
00:55:15.015 --> 00:55:20.055
Yeah. So there is some precedent. I'm not saying that's user friendly. I'm just saying that there that there is,
844
00:55:20.535 --> 00:55:22.475
there is precedent on that front.
845
00:55:22.850 --> 00:55:27.910
Yeah. I mean, you gotta write down stuff anyway or or stamp stuff or however you do it. And,
846
00:55:28.290 --> 00:55:33.990
you know, you might have a pen or something. So, I mean, some some extra numbers, maybe not that big of a deal.
847
00:55:36.005 --> 00:55:39.945
But, yeah, the the birthday concept is definitely something that that we're gonna add soon.
848
00:55:40.245 --> 00:55:42.825
And it probably becomes more helpful,
849
00:55:43.445 --> 00:55:45.705
like, the further we get away from
850
00:55:46.165 --> 00:55:50.425
SegWit and Taproot. Right? Like, if it's ten years in the future Yeah. 100%.
851
00:55:51.450 --> 00:55:52.430
Then it compounds.
852
00:55:53.050 --> 00:55:54.990
Yes. I'm just, to think about.
853
00:55:55.450 --> 00:55:58.330
The, yeah, the drawback of the protocol is that,
854
00:55:59.210 --> 00:56:00.670
the data you need to scan
855
00:56:01.210 --> 00:56:05.070
increases linearly with with time. You know? TikTok, next block. Yeah.
856
00:56:05.690 --> 00:56:07.155
We gotta check everyone.
857
00:56:08.655 --> 00:56:12.115
I mean, there is some really cool research about maybe how we could make this better,
858
00:56:13.695 --> 00:56:16.915
but I would say it's very academic and just kinda far out.
859
00:56:17.535 --> 00:56:20.835
What what happens if people I know they're not supposed to,
860
00:56:21.320 --> 00:56:23.980
and I'm sorry. These are stupid questions, but I'm just
861
00:56:24.760 --> 00:56:29.000
bringing them up as they come to my mind myself. What if a user is, like, receiving
862
00:56:29.800 --> 00:56:32.060
they're not supposed to reuse addresses, but
863
00:56:32.520 --> 00:56:33.980
they reuse an address
864
00:56:35.315 --> 00:56:37.175
that's, like, way deep in their index.
865
00:56:39.075 --> 00:56:43.255
Is is are you accounting for that, or are you just assuming they're not gonna do that?
866
00:56:45.075 --> 00:56:46.275
As in so
867
00:56:47.810 --> 00:56:53.590
Let's say so, like, first sync is the longest because I'm, like, literally checking all of my addresses that I've used.
868
00:56:53.970 --> 00:56:54.470
Yes.
869
00:56:54.850 --> 00:56:55.350
Right?
870
00:56:55.890 --> 00:56:59.750
And and and and I mean, I'm checking back behind time.
871
00:57:00.210 --> 00:57:02.470
But let's say I'm just using Bitcoin safe,
872
00:57:03.095 --> 00:57:07.914
and I've generated a thousand wallet a thousand addresses, and I'm not I'm not,
873
00:57:09.815 --> 00:57:16.635
not recovering it fresh. I'm just just chugging along, using my wallet. I've been using my wallet for four years, five years. I have a thousand addresses.
874
00:57:17.190 --> 00:57:18.650
And then some vendor
875
00:57:19.270 --> 00:57:26.890
or let's say I'm a plumber. Some customer pays an address like Index 3 or something, like, the third address or fourth address I ever used.
876
00:57:29.445 --> 00:57:31.545
I think Electrum counts for that already.
877
00:57:33.845 --> 00:57:39.865
Yeah. So I mean compact blocks count of count for that? Like, are you checking the old addresses? Are you routinely checking the old addresses?
878
00:57:40.405 --> 00:57:41.785
Yeah. Yeah. A 100%.
879
00:57:41.925 --> 00:57:42.425
Yeah.
880
00:57:43.349 --> 00:57:44.650
You will not miss that.
881
00:57:44.950 --> 00:57:46.390
Yeah. I mean, you don't
882
00:57:47.109 --> 00:57:48.250
I mean yeah.
883
00:57:48.869 --> 00:58:04.444
You're you're, in this scenario, your your plumber basically, like, dust attacked you or something. But yeah. But it's not a dust attack. He sent me real money in this in my theoretical example of Okay. Yeah. It The plumber You sent you sent you a refund. Your your toilet's still broken.
884
00:58:05.625 --> 00:58:14.910
Yeah. You're not gonna you're not gonna miss that money. No. And there's no performance overhead. I mean, of course, yeah, we don't don't reuse addresses, people. But yeah. No. It's not a problem. Fair enough.
885
00:58:16.010 --> 00:58:18.350
Just maybe as a, like, a speed test,
886
00:58:19.050 --> 00:58:20.750
that I did is I revealed
887
00:58:21.530 --> 00:58:22.750
20,000 addresses
888
00:58:23.675 --> 00:58:27.055
and synced the wallet on Mainnet. It took one and a half hours.
889
00:58:27.755 --> 00:58:28.895
Oh, that's not bad.
890
00:58:30.315 --> 00:58:32.234
And this is from Segwit start. So
891
00:58:33.994 --> 00:58:39.559
It's like it's this is freedom money. Like, you can wait an hour and a half for twenty thousand hours. It's just like I think
892
00:58:39.940 --> 00:58:41.559
that's, like, completely reasonable.
893
00:58:43.779 --> 00:58:48.680
And, presumably, we can make you can make it more performant than that. Right? Like, this is the worst it'll ever be.
894
00:58:50.565 --> 00:58:53.865
It depends on your Internet connection. Right? That's what I'm saying. I
895
00:58:54.165 --> 00:58:57.865
I think it's pretty Internet because yeah. I so I have, like,
896
00:59:00.165 --> 00:59:04.825
at home, I essentially have, like, a DSL connection, like, one of the worst connections,
897
00:59:05.640 --> 00:59:06.859
just like a old building.
898
00:59:07.319 --> 00:59:07.819
And
899
00:59:08.119 --> 00:59:08.779
it took
900
00:59:09.400 --> 00:59:10.299
I don't know.
901
00:59:11.720 --> 00:59:16.059
I I do benchmarks all the time, but, like, at home, it it took, I don't know, maybe, like,
902
00:59:16.359 --> 00:59:17.319
45
903
00:59:17.319 --> 00:59:24.245
to an hour just with, like, an empty just, like, single script. This is just as a bandwidth test. I'm talking, like, really bad Internet.
904
00:59:26.225 --> 00:59:31.105
So really the limiter? It's not comp it's not compute. The limiter is is down,
905
00:59:31.905 --> 00:59:32.965
downstream bandwidth?
906
00:59:33.320 --> 00:59:39.900
So I I would say I'm at, like, the really low end of the bell curve of of bandwidth where my bandwidth is is pretty horrible.
907
00:59:40.680 --> 00:59:47.020
As you reach a certain bandwidth threshold, then your limiting factor will will probably be compute if you're on mobile.
908
00:59:47.405 --> 00:59:51.744
But on the desktop case, like, for Bitcoin safe, if you have, like, a one gigabit connection
909
00:59:52.525 --> 00:59:55.984
and a m four or something, you're gonna absolutely rip,
910
00:59:57.165 --> 00:59:59.025
the filters, I think.
911
01:00:00.540 --> 01:00:01.040
Got
912
01:00:04.380 --> 01:00:08.240
it. Yeah. I mean, in some cases, five g is probably faster than DSL. Right?
913
01:00:09.420 --> 01:00:09.920
Definitely.
914
01:00:10.780 --> 01:00:11.280
Yeah.
915
01:00:11.660 --> 01:00:12.160
Yeah.
916
01:00:13.675 --> 01:00:14.175
Okay.
917
01:00:16.395 --> 01:00:17.214
Fair enough.
918
01:00:19.675 --> 01:00:24.095
I have nothing on the top of my head. This has been a great conversation. Do you guys have any
919
01:00:25.270 --> 01:00:28.890
pressing topics you'd like to discuss while you're while you're here with me?
920
01:00:33.430 --> 01:00:38.330
Another yeah. Just showing twenty one forty one more time. If you happen to be in The Netherlands,
921
01:00:39.464 --> 01:00:41.565
send me an email or something. I'm Rob
922
01:00:42.105 --> 01:00:46.765
at, two one four zero dot dev, like, twenty one forty dot dev.
923
01:00:47.305 --> 01:00:47.805
Yep.
924
01:00:49.464 --> 01:00:54.250
Pretty much encapsulates what we got going on. Company is twenty one forty, and we're developers.
925
01:00:55.109 --> 01:00:56.410
So, yeah, email me
926
01:00:57.030 --> 01:01:02.950
or, yeah, hit me up on GitHub or something. I don't know. Contact me somehow. I don't have any socials or anything, but,
927
01:01:03.750 --> 01:01:06.570
yeah, we'd love to see you if you're in The Netherlands.
928
01:01:08.865 --> 01:01:11.765
And as far as privacy and stuff,
929
01:01:13.345 --> 01:01:14.245
I would say
930
01:01:14.785 --> 01:01:18.565
it's not a problem now, but let's all, let's all have a good OPSEC.
931
01:01:19.185 --> 01:01:19.685
And,
932
01:01:20.305 --> 01:01:22.005
yeah, I think I think
933
01:01:22.400 --> 01:01:26.260
if even you're the average user and this is your first time considering privacy,
934
01:01:27.840 --> 01:01:29.860
there's always a chance to have forward privacy.
935
01:01:30.480 --> 01:01:31.700
Check out these tools.
936
01:01:32.080 --> 01:01:35.380
Do the reading. I don't think you'll regret it in the future.
937
01:01:37.035 --> 01:01:38.335
That's about it for me.
938
01:01:40.155 --> 01:01:41.375
Yeah. From my side
939
01:01:42.474 --> 01:01:44.175
yeah. From my side, I
940
01:01:44.875 --> 01:01:50.255
want to really thank the BDK team and also Rob for the incredible work they're doing.
941
01:01:50.635 --> 01:01:51.535
It's it's,
942
01:01:53.190 --> 01:02:03.530
for Bitcoin safe, I'm the developer, and there's a designer who joined. But it really feels like there's a whole team of BDK doing, like, really hard stuff supporting
943
01:02:03.910 --> 01:02:05.770
us, and that's that's really awesome.
944
01:02:06.894 --> 01:02:08.575
Yeah. That's all thanks to,
945
01:02:09.134 --> 01:02:09.795
to OpenSats
946
01:02:10.095 --> 01:02:11.234
and also Spiral,
947
01:02:12.174 --> 01:02:15.474
have been big supporters throughout this process. So thank you guys.
948
01:02:16.654 --> 01:02:19.474
You know, all this is possible with with, generous,
949
01:02:20.015 --> 01:02:21.394
orgs like that. So,
950
01:02:22.780 --> 01:02:23.280
yeah.
951
01:02:23.980 --> 01:02:28.559
Yeah. And on until the note of a thousand flowers bloom, like, one of the big things that,
952
01:02:29.339 --> 01:02:31.920
Steve has been working on is the BDK Foundation,
953
01:02:33.815 --> 01:02:39.495
so that they can be independent and sustainable on their own, which is really fucking awesome to see. It's I think it's,
954
01:02:42.215 --> 01:02:45.355
I don't know. There's just a lot of bullshit on social media,
955
01:02:47.300 --> 01:02:49.960
Mostly noise, but, like, quietly in the background,
956
01:02:50.340 --> 01:02:56.760
one of the most bullish fundamentals about Bitcoin is the growing developer ecosystem and and the distribution of it too.
957
01:02:57.220 --> 01:03:01.720
You know, like, people, like, wake up one day and they're like, oh my god. You know, chain code has three maintainers.
958
01:03:02.615 --> 01:03:05.595
It's there's been a lot of us that have been
959
01:03:06.375 --> 01:03:08.075
living and breathing this shit
960
01:03:08.454 --> 01:03:09.194
for years,
961
01:03:10.055 --> 01:03:16.795
and this is the best it's ever been, and it's only getting better from here in terms of distribution of influence and power
962
01:03:17.330 --> 01:03:18.790
and central points of failure.
963
01:03:20.290 --> 01:03:20.790
And,
964
01:03:22.930 --> 01:03:31.750
it's just a quiet grind is what it is. In the background, it's just a quiet grind, and a lot of the most legendary people in the space are very quiet themselves.
965
01:03:32.595 --> 01:03:34.135
You don't hear from them a lot,
966
01:03:36.115 --> 01:03:37.415
but they're mission focused
967
01:03:38.355 --> 01:03:44.295
on on Bitcoin. And it's just it's there's there's no other project that I have really seen like that
968
01:03:47.430 --> 01:03:52.250
in in the greater open source ecosystem. Just that you have, like, a global
969
01:03:52.630 --> 01:03:53.130
distributed
970
01:03:54.950 --> 01:03:57.210
relatively organic developer movement.
971
01:03:59.445 --> 01:04:02.105
Yeah. I think it's very mission very mission driven.
972
01:04:04.165 --> 01:04:04.665
And
973
01:04:05.125 --> 01:04:07.705
I also yeah. I think it's like whack a mole.
974
01:04:08.885 --> 01:04:11.145
At the current rate, we're going if you,
975
01:04:11.570 --> 01:04:12.070
you
976
01:04:12.370 --> 01:04:15.990
know, stop one dev, you're gonna have three more pop up. Like,
977
01:04:17.170 --> 01:04:18.630
I think we got a lot more,
978
01:04:19.650 --> 01:04:20.710
a lot more talent
979
01:04:21.250 --> 01:04:22.710
to poach. One of the things
980
01:04:23.090 --> 01:04:28.835
I wanna focus on is is going to universities and and trying to convince, you know, otherwise naive
981
01:04:29.295 --> 01:04:32.115
computer science students that they should be working on this stuff.
982
01:04:34.015 --> 01:04:36.515
And, yeah, I I think we got only room to grow.
983
01:04:38.580 --> 01:04:40.840
And from what I hear about developers,
984
01:04:41.460 --> 01:04:46.920
you know, more OGs, like, it's come a very long way. So that's exciting to see.
985
01:04:49.940 --> 01:04:53.400
Love it. Well, guys, thank you for your work. Thank you for
986
01:04:54.115 --> 01:04:54.615
building
987
01:04:54.995 --> 01:04:57.895
out Bitcoin. Thank you for joining us on dispatch.
988
01:04:58.275 --> 01:05:01.015
I enjoyed this conversation. I think the freaks will enjoy it a lot.
989
01:05:02.995 --> 01:05:04.435
I'll put links to all of your,
990
01:05:07.380 --> 01:05:11.240
to your projects and to your socials in the show notes, so check those out.
991
01:05:14.099 --> 01:05:16.180
I guess a good place to end it is,
992
01:05:16.500 --> 01:05:19.400
on the note of trying to bring in more developers,
993
01:05:20.525 --> 01:05:23.025
particularly young developers at universities and stuff.
994
01:05:23.885 --> 01:05:25.485
Why don't we end with,
995
01:05:26.045 --> 01:05:26.625
you each
996
01:05:27.405 --> 01:05:30.865
giving your words of wisdom to someone who might be listening to the show considering,
997
01:05:31.485 --> 01:05:35.585
working on open source Bitcoin dev? And I will start with you, Rob.
998
01:05:38.230 --> 01:05:40.089
I think the great thing about Bitcoin,
999
01:05:42.069 --> 01:05:43.690
as far as open source development,
1000
01:05:44.950 --> 01:05:46.890
there's two things. One is flexibility.
1001
01:05:47.685 --> 01:05:50.345
I mean, everyone in this space acts very graciously
1002
01:05:50.645 --> 01:05:54.185
and has, you know, a lot of respect for themselves and others,
1003
01:05:55.445 --> 01:06:02.905
which creates this this culture where you're not gonna get laughed out of the room if you have some sort of idea that you wanna pursue.
1004
01:06:03.830 --> 01:06:05.690
You know, it's it's a very autonomous
1005
01:06:06.150 --> 01:06:07.050
career path,
1006
01:06:08.790 --> 01:06:17.770
all the way down to what PRs you open, who you interact with, what you wanna work on. I mean, it's just there there's so many different routes that you can you can take.
1007
01:06:20.285 --> 01:06:21.345
So if you're,
1008
01:06:21.885 --> 01:06:29.425
a curious kind of academic, like, I assume a lot of these students will be, it's the perfect career for that. You you can really make up whatever you want.
1009
01:06:31.325 --> 01:06:33.185
And as as far as,
1010
01:06:33.490 --> 01:06:36.150
you know, the work life balance and so on,
1011
01:06:36.610 --> 01:06:40.790
there's no corporate shit. There's no none of that garbage. Like,
1012
01:06:41.330 --> 01:06:42.470
you you just
1013
01:06:42.850 --> 01:06:50.435
it's just pure alpha. You just work on what you wanna work on, and there's none of the extra shit. There's no meetings. There's no
1014
01:06:51.055 --> 01:06:54.915
any garbage. So I I would say that's the other huge upside
1015
01:06:55.454 --> 01:06:57.075
is, you know, you may,
1016
01:06:57.935 --> 01:07:00.660
you know, wanna go work at Google or something, but,
1017
01:07:01.140 --> 01:07:05.960
even as a developer, you're gonna be in stand up meetings and explaining to project managers,
1018
01:07:06.900 --> 01:07:09.480
for 500 times what you're working on.
1019
01:07:11.299 --> 01:07:14.119
Yeah. The all the fat has been trimmed. You just gotta
1020
01:07:14.420 --> 01:07:16.395
focus on on what you wanna work on.
1021
01:07:17.675 --> 01:07:21.135
Love it. Andreas, final thoughts for young Bitcoin devs,
1022
01:07:21.515 --> 01:07:22.495
potential devs?
1023
01:07:24.155 --> 01:07:25.135
I think the
1024
01:07:25.515 --> 01:07:26.815
Bitcoin developer
1025
01:07:27.195 --> 01:07:28.975
community is is incredible
1026
01:07:29.755 --> 01:07:30.255
because
1027
01:07:31.730 --> 01:07:35.349
it's it's it's really mission driven. There's something that connects everyone,
1028
01:07:35.730 --> 01:07:37.510
and it's it's everyone knows
1029
01:07:38.210 --> 01:07:40.150
Bitcoin is is super important,
1030
01:07:40.849 --> 01:07:44.309
and that makes the work that everyone is doing super important.
1031
01:07:45.395 --> 01:07:51.895
And I think there's probably no other in other industry that where where people have this kind
1032
01:07:52.435 --> 01:07:53.015
of conviction
1033
01:07:53.315 --> 01:07:55.255
that what they're doing is important.
1034
01:07:56.755 --> 01:07:57.255
And
1035
01:07:59.380 --> 01:08:04.680
and and, of course and that also, as as Rob said, everyone is super welcoming,
1036
01:08:06.020 --> 01:08:07.240
and open, and
1037
01:08:08.420 --> 01:08:10.440
and there is no there is no noise
1038
01:08:10.740 --> 01:08:12.200
that you have to fight against.
1039
01:08:13.095 --> 01:08:13.755
It's it's
1040
01:08:17.495 --> 01:08:20.695
incredible. Love it. Well, thank you guys for joining us.
1041
01:08:21.015 --> 01:08:22.315
I enjoyed this conversation.
1042
01:08:22.935 --> 01:08:28.880
Freaks, thank you for listening. Thank you for supporting the show. All relevant links are at silldispatch.com.
1043
01:08:29.420 --> 01:08:32.800
I got some great shows lined up for us over the next,
1044
01:08:33.180 --> 01:08:35.040
three three weeks, four weeks.
1045
01:08:35.820 --> 01:08:37.280
I hope you enjoy them.
1046
01:08:37.660 --> 01:08:41.600
Please, all feedback is appreciated. Let me know what you've been thinking about
1047
01:08:41.925 --> 01:08:42.745
this latest
1048
01:08:43.125 --> 01:08:43.625
arch
1049
01:08:44.085 --> 01:08:44.985
arch arc
1050
01:08:45.845 --> 01:08:46.745
of dispatch.
1051
01:08:48.005 --> 01:08:53.545
I've been having fun with it. I hope you guys have as well. Anyway, Rob, Andreas, thank you, guys.
1052
01:08:54.405 --> 01:08:54.905
Cheers.
1053
01:08:55.374 --> 01:08:56.114
Thank you.
1054
01:08:56.734 --> 01:08:59.234
Love you, freaks. Stay on the Stack Sats. Peace.