Open Source Stage Day 2 - Bitcoin 2022 in Miami
Video: https://youtu.be/L0Yh6VP6vxU
0:00:00 Matt Odell Introduction
0:06:54 The Bitcoin Core Development Process
0:49:09 Decentralized Bitcoin Exchanges - With Mike Brock, Wiz, Josef Tetek, Chris Stewart & D++
1:15:07 10x-ing Bitcoin Development
1:56:50 Softforks Benefits & Tradeoffs - With Jeremy Rubin, Jimmy Song, Paul Stzorc & Ben Perrin (BTC Sessions)
2:37:33 DLCs - Programmable Real World Events
3:17:45 Bitcoin & Lightning Node Roundtable - With S2L1, /Rootzoll, Jonas Nick, Keagan McClelland & Matt Odell
3:59:00 Rabbit Hole Recap - With Marty Bent & Matt Odell
twitch: https://twitch.tv/citadeldispatch
bitcointv: https://bitcointv.com/video-channels/citadeldispatch/videos
podcast: https://www.podpage.com/citadeldispatch
telegram: https://t.me/citadeldispatch
support the show: https://citadeldispatch.com/contribute
stream sats to the show: https://www.fountain.fm/
join the chat: https://matrix.to/#/#citadel:bitcoin.kyoto
00:00 - Matt Odell Introduction
06:54 - The Bitcoin Core Development Process
49:09 - Decentralized Bitcoin Exchanges With Mike Brock Wiz Josef Tetek Chris Stewart amp D
01:15:07 - 10xing Bitcoin Development
01:56:50 - Softforks Benefits amp Tradeoffs With Jeremy Rubin Jimmy Song Paul Stzorc amp Ben Perrin
02:37:33 - DLCs Programmable Real World Events
03:17:45 - Bitcoin amp Lightning Node Roundtable With S2L1 Rootzoll Jonas Nick Keagan McClelland amp
03:59:00 - Rabbit Hole Recap With Marty Bent amp Matt Odell twitch httpstwitch.tvcitadeldispatch
NOTE
Transcription provided by Podhome.fm
Created: 3/17/2024 8:12:50 PM
Duration: 16816.98
Channels: 1
1
00:00:00.240 --> 00:00:01.939
2
00:00:02.480 --> 00:00:02.980
morning.
3
00:00:04.240 --> 00:00:07.379
We got a great house here today. Let's fucking go.
4
00:00:11.745 --> 00:00:12.245
So,
5
00:00:12.545 --> 00:00:16.244
I mean, I know a lot of you think I'm a natural at this, but I've never actually
6
00:00:17.480 --> 00:00:22.700
been on stage by myself in person in front of a great crowd until yesterday.
7
00:00:23.640 --> 00:00:25.180
So this is my second attempt.
8
00:00:25.745 --> 00:00:28.805
I took some notes because I missed a bunch of things yesterday.
9
00:00:30.065 --> 00:00:40.210
First off, I wanna thank the production crew. They did a fantastic job yesterday. They're filming with very high quality cameras. They're uploading everything after the fact,
10
00:00:40.990 --> 00:00:46.385
and we have a great crew backstage that nobody sees that makes this all happen, so huge shout out to them. Woo.
11
00:00:50.605 --> 00:00:54.030
You might notice I'm wearing sunglasses just because these lights are very bright.
12
00:00:55.070 --> 00:00:57.809
Can I get a show of hands who was here last year?
13
00:00:59.629 --> 00:01:01.410
Okay. Awesome. A lot of new faces.
14
00:01:01.925 --> 00:01:04.425
As you can see, we did it a lot bigger this year.
15
00:01:05.205 --> 00:01:07.145
We got a nice dedicated space,
16
00:01:07.765 --> 00:01:09.225
larger than most conferences,
17
00:01:09.920 --> 00:01:11.220
dedicated to open source,
18
00:01:12.320 --> 00:01:13.460
contributors and projects.
19
00:01:14.480 --> 00:01:19.515
Extremely excited for it. We've been you know, it's been 6 months in the making, and I'm glad you're all here.
20
00:01:20.315 --> 00:01:23.455
Part of that program was we gave away a 120
21
00:01:23.835 --> 00:01:27.775
free tickets to open source contributors of 32 Bitcoin projects.
22
00:01:28.640 --> 00:01:36.980
A lot of them are here today. It's great to see those faces. We do appreciate you. You guys are are what makes this movement possible and what makes Bitcoin robust.
23
00:01:39.655 --> 00:01:46.075
We have So let's let's go through what what's going on here. We have First of all, we have workshop tables in the back.
24
00:01:46.850 --> 00:01:53.590
If you are over there, try and keep your voices to a minimum while the talks are going on. The talks will end at 3,
25
00:01:54.535 --> 00:01:57.195
with the live rabbit hole recap is gonna end the day.
26
00:01:57.655 --> 00:01:58.795
And then at 3,
27
00:01:59.335 --> 00:02:00.235
everyone can
28
00:02:00.535 --> 00:02:09.819
use the workshop tables to their full effect. We can network. We can talk about open source. You can see all the great projects that are that are being displayed out there.
29
00:02:11.045 --> 00:02:14.345
We have teams from around the world who are participating in that.
30
00:02:15.845 --> 00:02:17.225
We structured the panels
31
00:02:17.685 --> 00:02:18.585
to be longer.
32
00:02:18.900 --> 00:02:21.960
They're 40 minutes each so we can have proper discussion,
33
00:02:22.980 --> 00:02:27.240
rather than just intros and outros and then get off the stage which I'm pretty excited about.
34
00:02:27.775 --> 00:02:33.875
We had fantastic panels yesterday so if you weren't here for it, make sure you go check out the video after the fact.
35
00:02:34.415 --> 00:02:35.875
They were really really great.
36
00:02:36.830 --> 00:02:40.450
Today, we are gonna have a absolutely awesome lineup.
37
00:02:41.390 --> 00:02:44.610
We're gonna have a Bitcoin core panel that I'm really excited about,
38
00:02:45.025 --> 00:02:46.965
Bitcoin Development Panel, decentralized
39
00:02:47.265 --> 00:02:48.485
exchanges, DLCs,
40
00:02:48.945 --> 00:02:49.445
nodes.
41
00:02:51.025 --> 00:02:53.605
It should be a very, very great day
42
00:02:54.209 --> 00:02:56.870
and I'm really excited to share with all of you.
43
00:02:58.690 --> 00:03:00.709
What else do we have here on my notes?
44
00:03:04.275 --> 00:03:04.775
So
45
00:03:05.474 --> 00:03:11.415
open source. I'm sure most I hope that most of you, I mean, you're here today know what open source is.
46
00:03:13.120 --> 00:03:13.860
You know, the
47
00:03:14.320 --> 00:03:16.420
the power of open source is that the code
48
00:03:16.880 --> 00:03:17.860
can be verified
49
00:03:18.800 --> 00:03:21.860
and so you don't have to trust any corporation,
50
00:03:23.345 --> 00:03:24.405
with what is running,
51
00:03:26.385 --> 00:03:30.565
and that you can build off that code, you can improve it, you can distribute it,
52
00:03:31.110 --> 00:03:37.450
and that that code is viral in nature. It lives forever. It'll live way past all of us just like Bitcoin will,
53
00:03:38.045 --> 00:03:41.585
And, that is extremely powerful and that is why it is imperative
54
00:03:42.045 --> 00:03:42.945
for all of us
55
00:03:43.245 --> 00:03:46.065
to support these projects, support these contributors,
56
00:03:46.790 --> 00:03:47.530
use the tools,
57
00:03:47.830 --> 00:03:48.730
build the tools,
58
00:03:49.510 --> 00:03:50.490
test the tools.
59
00:03:50.950 --> 00:03:54.570
You don't have to be a developer to contribute to the open source ecosystem.
60
00:03:55.275 --> 00:03:56.735
They love getting feedback
61
00:03:57.915 --> 00:04:00.175
through testing. They love design help.
62
00:04:00.475 --> 00:04:01.775
Design help is huge,
63
00:04:03.030 --> 00:04:04.569
And of course donations.
64
00:04:05.430 --> 00:04:08.810
So most of our open source contributors have chosen not to work
65
00:04:10.775 --> 00:04:11.515
at very
66
00:04:11.975 --> 00:04:18.155
lucrative paying jobs and instead have dedicated their time to working on these open source projects that are often,
67
00:04:18.729 --> 00:04:19.789
you know, their their
68
00:04:21.449 --> 00:04:22.830
compensation isn't great.
69
00:04:24.490 --> 00:04:24.990
So
70
00:04:25.574 --> 00:04:29.514
if you want to support them it is really great to send them some stats.
71
00:04:31.335 --> 00:04:38.450
I have 2 projects that I've been working on and to make that easier, you have bitcoindev list.com where you can donate sats directly
72
00:04:38.990 --> 00:04:42.050
to open source contributors who choose to get listed on the site.
73
00:04:42.735 --> 00:04:44.514
That's powered by VTC Payserver,
74
00:04:45.055 --> 00:04:48.755
so no middleman, goes straight to them, it's basically directory.
75
00:04:49.935 --> 00:04:52.115
And then we also started OpenSats,
76
00:04:52.960 --> 00:04:53.940
which is a 501c3
77
00:04:54.560 --> 00:04:56.020
tax deductible foundation.
78
00:04:58.240 --> 00:05:01.620
You can donate to that with credit card or through Bitcoin.
79
00:05:02.495 --> 00:05:03.955
Very excited that
80
00:05:04.495 --> 00:05:08.995
after a year and a half, we publicly launched 2 days ago. So if you go to opensats.org,
81
00:05:09.455 --> 00:05:10.595
you can donate today.
82
00:05:12.840 --> 00:05:14.139
Let's fucking go.
83
00:05:16.039 --> 00:05:22.905
OpenSads, part of the reason it took us so long is we take 0 cut. So most five zero one c threes will take 5% or 10%
84
00:05:23.604 --> 00:05:24.264
or 2%.
85
00:05:24.565 --> 00:05:25.544
We take 0%.
86
00:05:27.044 --> 00:05:29.145
We also we have a great board.
87
00:05:29.590 --> 00:05:34.490
So the way the Open Stats works is, you know, you you donate to this general fund and our board basically
88
00:05:34.950 --> 00:05:41.634
there's 2 things. There's a general fund where we choose which projects go, where where where the donations go for you,
89
00:05:42.014 --> 00:05:50.400
and then there's also the ability to donate directly to projects that have applied and on the website. I don't think we have that part built out yet, but you can donate directly,
90
00:05:51.260 --> 00:05:52.080
to the projects.
91
00:05:52.380 --> 00:05:54.480
If you donate with credit card, by the way,
92
00:05:54.865 --> 00:05:58.245
we automatically convert that into Bitcoin and hold Bitcoin only.
93
00:05:58.945 --> 00:06:04.570
And the credit card fees the credit card fees, we don't even that doesn't even come out of your donation because,
94
00:06:04.950 --> 00:06:07.930
we got Ledger to sponsor the credit card fees, so just
95
00:06:09.350 --> 00:06:15.175
no credit card fees either. So it's just a 100% to devs, and you can get a tax deductible donation on it.
96
00:06:18.090 --> 00:06:23.789
Yeah. And just a just a huge thanks to there's there was a massive team that worked with me to make this happen
97
00:06:24.090 --> 00:06:25.150
at Bitcoin Magazine.
98
00:06:27.125 --> 00:06:30.185
I really could not have done it without them. I couldn't have done it without
99
00:06:30.885 --> 00:06:32.585
a lot of people in this room today.
100
00:06:33.925 --> 00:06:37.930
It just inspires me, gives me a lot of hope for the future.
101
00:06:38.950 --> 00:06:40.970
You all you all are my people,
102
00:06:41.750 --> 00:06:45.130
and I'm proud to be here today. I'm excited to be here today,
103
00:06:45.444 --> 00:06:50.745
and, you know, we're gonna win together. We're gonna fucking do it. So let's fucking go. Have a great time. Enjoy yourself.
104
00:06:54.820 --> 00:06:57.160
105
00:06:58.020 --> 00:06:58.760
I see you.
106
00:06:59.780 --> 00:07:03.940
107
00:07:04.695 --> 00:07:05.995
okay with that, I guess.
108
00:07:07.015 --> 00:07:14.560
Thanks for, getting up early and coming out. We're gonna be talking about the core development process. My name is James O'Byrne,
109
00:07:15.740 --> 00:07:20.800
and we've got what is probably the biggest panel of the, open source stage,
110
00:07:21.265 --> 00:07:25.445
at least so far. Maybe that bodes well for, increased developer participation.
111
00:07:26.625 --> 00:07:30.005
We'll see. But, yeah, I'm really excited about the panelists that we have here.
112
00:07:30.920 --> 00:07:33.900
So maybe we can get going. We've got a lot to cover.
113
00:07:35.080 --> 00:07:37.500
And, Yeah. Let's start off with some intros.
114
00:07:37.835 --> 00:07:39.055
115
00:07:39.514 --> 00:07:40.634
116
00:07:41.035 --> 00:07:43.775
I work on the Bitcoin Core Wallet. I'm the wallet maintainer,
117
00:07:44.315 --> 00:07:45.615
and I'm at Blockstream.
118
00:07:46.360 --> 00:07:49.660
119
00:07:50.040 --> 00:07:51.240
I work on,
120
00:07:51.640 --> 00:07:54.220
Sapio smart contract framework for Bitcoin.
121
00:07:55.185 --> 00:07:57.125
122
00:07:57.505 --> 00:07:59.925
I work mostly on mempool and p2p,
123
00:08:00.545 --> 00:08:01.205
at Brink.
124
00:08:01.790 --> 00:08:02.290
125
00:08:04.350 --> 00:08:05.010
I'm mainly
126
00:08:05.390 --> 00:08:09.345
trying to focus on, making phone notes easier for people to use.
127
00:08:11.985 --> 00:08:12.485
128
00:08:12.865 --> 00:08:18.780
I'm Carl Dong. I work for Chaincode Labs, and I used work on reproducible builds, but now modularizing
129
00:08:19.159 --> 00:08:20.300
the consensus engine.
130
00:08:21.879 --> 00:08:22.680
131
00:08:24.115 --> 00:08:26.135
let's start off by talking about,
132
00:08:26.755 --> 00:08:31.655
some repository mechanics. So as you all know, right now, Bitcoin Core is hosted on GitHub.com.
133
00:08:32.035 --> 00:08:33.255
It's a Git repository,
134
00:08:34.200 --> 00:08:34.520
and,
135
00:08:35.960 --> 00:08:40.300
there are a number of contributors, obviously, who work on Bitcoin Core in this venue.
136
00:08:41.205 --> 00:08:43.865
But there's a kind of special class of contributor,
137
00:08:44.405 --> 00:08:46.565
or maybe not so special as we'll find out,
138
00:08:47.045 --> 00:08:48.585
called maintainers. And
139
00:08:48.930 --> 00:08:57.590
Andrew is actually one of these maintainers, and we hear a lot about them. There's kind of a mystique surrounding them. So, Andrew, maybe you can talk a little bit about who the maintainers are, what they do,
140
00:08:58.675 --> 00:09:00.615
141
00:09:00.995 --> 00:09:07.140
are the the people who have the ability to merge code into the Bitcoin Core code base, and
142
00:09:07.600 --> 00:09:09.620
it's actually largely a janitorial
143
00:09:09.920 --> 00:09:10.420
role.
144
00:09:10.880 --> 00:09:12.180
Maintainers look for
145
00:09:13.040 --> 00:09:18.115
other contributors to review code and and agree with the changes before they merge them.
146
00:09:18.975 --> 00:09:20.915
They're not, like, unilaterally
147
00:09:21.295 --> 00:09:22.195
adding things.
148
00:09:22.815 --> 00:09:24.510
It's it's mostly just, like,
149
00:09:24.910 --> 00:09:29.410
you know, seeing seeing that things that got reviewed make it in.
150
00:09:30.670 --> 00:09:31.170
151
00:09:31.470 --> 00:09:32.770
Yep. That makes sense.
152
00:09:33.805 --> 00:09:37.325
So, Jeremy, what has your interaction been like with,
153
00:09:38.045 --> 00:09:39.405
maintainers? How do you, you know
154
00:09:40.765 --> 00:09:42.305
155
00:09:43.230 --> 00:10:02.959
with maintainers is there's a lot of good, but I think what's difficult is that, what the community sometimes expects from the maintainers is different from, like, what contributors expect. Mhmm. And then you have to tell maintainers sometimes, like, hey. The community is, you know, wanting you to do this. What do you think? And they're like, oh, I don't wanna be doing that. That's not what a maintainer does. And you're like,
156
00:10:03.339 --> 00:10:05.519
you should probably, like, you know, like, there's some sort of miscommunication
157
00:10:15.160 --> 00:10:17.900
158
00:10:18.440 --> 00:10:18.940
differ?
159
00:10:20.200 --> 00:10:23.900
160
00:10:25.615 --> 00:10:36.389
people wanna know, like, oh, like, what are what are the maintainers going to merge it? And I can communicate to maintainers. Like, people would like to know, like, you know, like this. Like, you should communicate that, you know, formally that this is not something that you're doing.
161
00:10:36.769 --> 00:10:52.400
162
00:10:53.100 --> 00:11:03.894
and they get to decide everything that's going on, what gets merged, and where the road map is going, whatever. But Bitcoin Core doesn't have that and we don't really want to. So it does lead to sometimes
163
00:11:04.595 --> 00:11:06.970
maintainers are are just doing
164
00:11:07.670 --> 00:11:10.470
the the work of clicking the button versus deciding,
165
00:11:12.230 --> 00:11:13.690
the direction of the project,
166
00:11:14.435 --> 00:11:18.214
which which we really wanna leave up to the contributors and community
167
00:11:18.595 --> 00:11:21.014
for for where Bitcoin is going to go.
168
00:11:21.860 --> 00:11:28.360
169
00:11:30.085 --> 00:11:32.345
how it functions, the consensus mechanism.
170
00:11:33.365 --> 00:11:33.865
Gloria,
171
00:11:34.645 --> 00:11:45.380
we know that there's a lot that happens in Bitcoin Core that isn't necessarily related to consensus, and a lot of the the job of the repository is to manage details that aren't related to that. So how are the 2 different?
172
00:11:46.465 --> 00:11:49.685
173
00:11:50.145 --> 00:11:51.205
consensus rules,
174
00:11:51.825 --> 00:11:53.765
so, like, scripting rules, for example.
175
00:11:54.650 --> 00:12:01.870
And then the next and most obvious thing would be the p to p protocol, like what messages are sent and understood by the all Bitcoin nodes.
176
00:12:02.955 --> 00:12:03.455
But
177
00:12:03.835 --> 00:12:06.895
there's so much that's only, like, a small fraction
178
00:12:07.675 --> 00:12:16.040
of what Bitcoin d is, which is also a small portion of or a major, but not the full portion of what Bitcoin Core is.
179
00:12:16.820 --> 00:12:20.520
And people often say, like, oh, Bitcoin development is so slow,
180
00:12:21.485 --> 00:12:21.985
But
181
00:12:22.845 --> 00:12:36.550
there's, like, dozens of PRs merged every day. There's bugs fixed every day. And I don't I just don't think it's true. I find it very hard to keep up with all the pull requests and issues that are open to the Bitcoin Core repo.
182
00:12:37.755 --> 00:12:39.855
So, yeah, there's there's a lot
183
00:12:40.555 --> 00:12:42.735
a lot more than consensus. And
184
00:12:43.195 --> 00:12:44.175
a lot of the
185
00:12:44.980 --> 00:12:51.000
biggest impacts that we can have at a protocol development level are not actually in consensus.
186
00:12:51.380 --> 00:12:51.880
Right?
187
00:12:52.945 --> 00:13:00.805
Peter Wille is known for many consensus changes, but I would even say that his biggest contribution is Ultra Prune,
188
00:13:02.529 --> 00:13:14.245
aka turning the state from let's look at what outputs are available in the blockchain and instead just keep a small UTXO set. And that, I think, did more for scalability than
189
00:13:14.945 --> 00:13:16.245
almost any
190
00:13:16.945 --> 00:13:19.925
or more than any consensus change that we've had.
191
00:13:20.560 --> 00:13:21.060
Likewise,
192
00:13:21.920 --> 00:13:28.500
I guess I'm going to show my own bags, package relay is not consensus change. It does require a lot of community,
193
00:13:29.360 --> 00:13:29.860
like,
194
00:13:30.505 --> 00:13:31.005
consensus.
195
00:13:32.105 --> 00:13:35.245
Not consensus consensus, but, like, you know, agreement.
196
00:13:36.985 --> 00:13:41.140
But it is it is it would also be a very impactful change. So
197
00:13:43.200 --> 00:13:45.220
hopefully, my message is consensus
198
00:13:45.600 --> 00:13:46.339
is overrated,
199
00:13:47.445 --> 00:13:50.825
and there's a lot we can do without requiring a soft work.
200
00:13:51.445 --> 00:13:54.585
201
00:13:55.630 --> 00:14:00.770
so since I work mostly in the wallet, these are gonna be some wallet examples. But, like, we do things in the wallet,
202
00:14:01.390 --> 00:14:12.515
some new innovation, and then other wallet software will, you know, pick them up, see that they're good ideas, and use them. And that's not that's also not a consensus change. And in fact, it doesn't even really require
203
00:14:13.149 --> 00:14:15.810
agreements between different software. But,
204
00:14:16.430 --> 00:14:17.009
you know,
205
00:14:17.310 --> 00:14:29.215
there are there are there's a large component of Bitcoin Core where we make changes that are basically local and then other people also pick them up because they seem like good ideas and, you know, vice versa.
206
00:14:29.680 --> 00:14:31.940
We've taken some ideas from other people as well.
207
00:14:32.720 --> 00:14:35.780
208
00:14:36.320 --> 00:14:39.245
among many other things, but specifically OP CTV
209
00:14:39.704 --> 00:14:43.404
in terms of consensus development. Can you just walk us through
210
00:14:43.945 --> 00:14:45.165
the process of,
211
00:14:46.060 --> 00:14:48.399
how changes to consensus are are proposed?
212
00:14:50.060 --> 00:14:50.560
213
00:14:51.019 --> 00:14:56.785
I I would if I, like, knew what it was. I think that there it's kinda funny because we have, like, this whole, like, you know,
214
00:14:57.405 --> 00:15:02.945
BIP process, and that's something that, you know, Luke knows a lot about because he's the BIP editor.
215
00:15:03.270 --> 00:15:04.550
But there's really no,
216
00:15:05.110 --> 00:15:09.750
fixed set of things that you have to do, say, or talk about. It's sort of this,
217
00:15:10.755 --> 00:15:11.535
you know, maybe
218
00:15:12.154 --> 00:15:15.675
rough process where you just decide you you're kinda like you're the,
219
00:15:16.635 --> 00:15:32.725
the who's the gopher who comes out and looks at his shadow and is like, you know, is winter gonna keep on going? You just poke your head out and see if people shout at you and what they shout at you about. And then you're like, okay. Like, it's gonna be in another 6 weeks or you're like, actually, maybe it's gonna be another 6 years or something like that. That make you Bill Murray?
220
00:15:34.785 --> 00:15:42.089
I definitely sometimes identify with the notion of doing the same thing every day and the same thing happens. So I would say maybe. Yeah. I'll take it.
221
00:15:43.350 --> 00:15:44.170
222
00:15:45.475 --> 00:15:52.615
So, you know, as Gloria was talking about earlier, Bitcoin d is composed of a lot of different components. It does a lot of different things.
223
00:15:53.770 --> 00:16:03.225
It's the one piece of software that people participating in in Bitcoin have to run. So I think it might be useful to go through and enumerate the different parts of Bitcoin d. So,
224
00:16:04.005 --> 00:16:11.545
just in quick succession here, let's start with Carl and kinda go down the list and and have each of you talk briefly about one component of Bitcoin.
225
00:16:12.630 --> 00:16:13.110
226
00:16:13.910 --> 00:16:15.029
yeah. So like,
227
00:16:15.670 --> 00:16:20.725
yeah, I can I can talk about the consensus engine, I guess, or or what people would call validation?
228
00:16:22.545 --> 00:16:25.605
So you guys know how like Bitcoin has a blockchain.
229
00:16:27.185 --> 00:16:28.085
And so,
230
00:16:29.089 --> 00:16:31.750
the blockchain has to be kept somewhere, and basically,
231
00:16:32.450 --> 00:16:37.510
it's kept in what we call validation code or what I like to call sort of the consensus engine.
232
00:16:38.305 --> 00:16:43.764
It keeps track of, all of the blocks. It keeps track of all the, you know, UTXOs,
233
00:16:44.065 --> 00:16:45.845
which are basically, you know, the coins.
234
00:16:47.140 --> 00:16:50.360
And what it also does is it defines
235
00:16:51.060 --> 00:16:52.839
what it means to be Bitcoin,
236
00:16:53.300 --> 00:16:56.665
basically. It define it's the arbiter of truth of whether, you know,
237
00:16:57.125 --> 00:17:00.585
a transaction or a block or or something is valid,
238
00:17:01.045 --> 00:17:03.705
which makes it a critical part of Bitcoin.
239
00:17:04.725 --> 00:17:05.225
And
240
00:17:05.850 --> 00:17:06.350
all
241
00:17:07.130 --> 00:17:07.630
of
242
00:17:08.410 --> 00:17:13.165
the consensus engines across all of the nodes on the network basically have
243
00:17:13.645 --> 00:17:21.425
to agree for, you know, consensus to be formed. And if they disagree, then, you know, that's what we call it. Sort of an unintentional fork and
244
00:17:21.780 --> 00:17:22.600
that's bad.
245
00:17:23.140 --> 00:17:26.520
So yeah. That that's what the consensus engine or validation is.
246
00:17:30.145 --> 00:17:31.765
247
00:17:32.145 --> 00:17:33.125
essentially decides
248
00:17:33.585 --> 00:17:34.405
which transactions
249
00:17:35.105 --> 00:17:38.645
the miners don't put into a box they might potentially buy.
250
00:17:39.020 --> 00:17:41.120
So when a miner finds a box, they had
251
00:17:43.020 --> 00:17:43.770
a certain
252
00:17:53.195 --> 00:17:57.889
253
00:17:58.190 --> 00:18:01.649
values of Bitcoin kind of come to life in code form,
254
00:18:01.950 --> 00:18:03.570
which makes it very interesting.
255
00:18:04.315 --> 00:18:07.294
So this idea of, like, oh, it should be permissionless,
256
00:18:07.595 --> 00:18:09.855
but not just that. It should be censorship resistant.
257
00:18:10.475 --> 00:18:14.789
Anyone should be able to join the p to p network and broadcast their transactions,
258
00:18:15.409 --> 00:18:18.470
but that also makes p to p security model,
259
00:18:18.850 --> 00:18:25.904
like, extra hard mode because we want anyone to be able to join, and we don't want to be able to tell who's who.
260
00:18:26.205 --> 00:18:26.945
But, also,
261
00:18:27.404 --> 00:18:29.664
there are going to be bad guys. We have to,
262
00:18:30.524 --> 00:18:32.549
expect that, and that allows
263
00:18:33.090 --> 00:18:34.149
for very interesting,
264
00:18:35.570 --> 00:18:37.110
very anxiety driven
265
00:18:37.490 --> 00:18:38.549
development sometimes.
266
00:18:40.295 --> 00:18:41.275
It makes review
267
00:18:42.455 --> 00:18:43.595
kind of spicier.
268
00:18:44.055 --> 00:18:44.555
And,
269
00:18:44.855 --> 00:18:49.115
yeah, we're always thinking about privacy and security andDoS attacks.
270
00:18:49.799 --> 00:18:50.299
So
271
00:18:50.600 --> 00:18:51.100
that's
272
00:18:51.559 --> 00:18:52.940
that's my pitch for p2p.
273
00:18:53.799 --> 00:18:56.700
274
00:18:57.125 --> 00:19:01.065
you know, list of transactions there to be confirmed into a block.
275
00:19:02.164 --> 00:19:08.080
It sort of serves as the glue between the last three modules you heard about of consensus, the thing that gets finalized,
276
00:19:08.620 --> 00:19:14.880
mining, how we pick the things to finalize from the mempool, and then also p to p, like, how we get things into the mempool
277
00:19:15.315 --> 00:19:21.575
to give to those other 2 modules and then use the mempool to also figure out what to put into the p2p network ourselves.
278
00:19:22.274 --> 00:19:23.394
And so the mempool is,
279
00:19:24.370 --> 00:19:27.190
at least I view it as sort of like this central plane
280
00:19:27.490 --> 00:19:31.190
for all of Bitcoin where it sort of touches all the different parts
281
00:19:31.490 --> 00:19:31.970
and,
282
00:19:32.835 --> 00:19:46.740
it, you know, stores all the transactions that you might ever do in Bitcoin. And each node has their own mempool. There's no one global mempool, but there's also a, you know, philosophical mempool of all the transactions that somebody in the world somewhere knows about.
283
00:19:47.360 --> 00:19:55.205
284
00:19:55.665 --> 00:19:57.125
285
00:19:58.145 --> 00:20:01.670
286
00:20:02.050 --> 00:20:05.670
you know, it does things like manage your UTXOs, manage keys,
287
00:20:06.290 --> 00:20:09.190
figure out what addresses, what scripts to be watching for.
288
00:20:11.054 --> 00:20:15.315
And I find it to be actually very senior to be working on the wallet because,
289
00:20:15.615 --> 00:20:17.475
it's like the the one thing that users
290
00:20:17.775 --> 00:20:19.794
interact with a lot and then
291
00:20:20.159 --> 00:20:26.820
if you do it wrong, you might actually end up losing people's money. And, of course, you never wanna lose someone's money, which is so so the wall is is,
292
00:20:27.360 --> 00:20:31.695
a pretty big component and and there's a lot of work going into making sure that things are secure,
293
00:20:32.794 --> 00:20:37.660
that funds are still available, and that we don't, like, do anything weird with it.
294
00:20:38.760 --> 00:20:41.400
295
00:20:42.360 --> 00:20:49.225
fairly crucial to running Bitcoin, like the RPC interface, the the graphic user interface that maybe are sort of nonessential, but,
296
00:20:50.345 --> 00:20:52.845
but niceties that, that help everything run.
297
00:20:56.060 --> 00:20:56.560
So,
298
00:20:57.260 --> 00:20:59.200
let's turn now to,
299
00:21:00.060 --> 00:21:02.000
the development process itself.
300
00:21:02.860 --> 00:21:05.315
Working on Bitcoin is, you know, notoriously,
301
00:21:07.375 --> 00:21:10.575
I don't wanna say difficult, but it it definitely has,
302
00:21:11.135 --> 00:21:13.875
unique attributes that make it time consumptive
303
00:21:14.519 --> 00:21:15.419
to work on.
304
00:21:15.880 --> 00:21:16.200
So,
305
00:21:17.639 --> 00:21:18.139
Carl,
306
00:21:18.600 --> 00:21:20.220
how how have you found
307
00:21:20.919 --> 00:21:23.740
doing large projects on Bitcoin Core, and
308
00:21:24.585 --> 00:21:28.445
why do you think the review process is is so, intense?
309
00:21:29.545 --> 00:21:30.525
310
00:21:31.625 --> 00:21:32.285
I think,
311
00:21:33.659 --> 00:21:41.679
you know, this is logic that I've heard from other people, and I I I think I agree with sort of on the surface. It's it's sort of, you know, if we
312
00:21:42.105 --> 00:21:46.045
just sort of walk away from Bitcoin, you know, it still
313
00:21:46.345 --> 00:21:47.325
kind of works.
314
00:21:47.945 --> 00:21:52.929
You know, maybe default compilers would change and and all that, but it still kind of works
315
00:21:53.230 --> 00:21:56.850
and which is why I think that, you know, Bitcoin has such a
316
00:21:57.575 --> 00:21:58.075
conservative,
317
00:21:58.935 --> 00:22:09.590
you know, model of reviewing PRs and and getting getting them through. Not not to say that I've I've I've fully agree with that or agree with the lien or anything. So I think that's what it is.
318
00:22:10.530 --> 00:22:11.190
I think
319
00:22:11.730 --> 00:22:14.710
personally when I'm trying to get across large changes,
320
00:22:16.835 --> 00:22:20.615
what has been really important is just, like, getting the rationale
321
00:22:20.915 --> 00:22:21.415
up,
322
00:22:21.875 --> 00:22:22.435
you know,
323
00:22:22.860 --> 00:22:26.559
you know, writing a big document about the rationales, the FAQs,
324
00:22:26.940 --> 00:22:28.880
sort of socialize the change,
325
00:22:29.980 --> 00:22:33.795
breaking up into little reviewable pieces, which has been sort of like,
326
00:22:34.355 --> 00:22:39.235
a culture that has developed over the years as review has become more and more,
327
00:22:39.795 --> 00:22:40.295
stringent.
328
00:22:41.370 --> 00:22:41.870
And,
329
00:22:42.570 --> 00:22:45.390
well, one thing that I found to be really helpful is sort
330
00:22:46.330 --> 00:22:48.190
of dealing with and
331
00:22:48.554 --> 00:22:49.054
talking
332
00:22:49.355 --> 00:22:50.735
with people about,
333
00:22:51.115 --> 00:22:57.100
you know, potential flaws or or or potential downsides or potential alternative strategies sort of
334
00:22:57.580 --> 00:23:03.919
upfront. I find that that that really helps get people across the line after they've had a lot of context.
335
00:23:05.914 --> 00:23:06.414
336
00:23:07.115 --> 00:23:08.255
That's great. Gloria,
337
00:23:08.955 --> 00:23:10.735
a lot of your projects require
338
00:23:12.840 --> 00:23:17.020
coordination, deep thinking, you know, trying to sort of emulate how,
339
00:23:17.480 --> 00:23:21.020
mempool policy changes and peer to peer policy changes will kind of,
340
00:23:21.615 --> 00:23:23.955
ripple out through the network. You know,
341
00:23:24.415 --> 00:23:27.555
how do you feel that developing for that part of the system
342
00:23:28.175 --> 00:23:31.460
differs from, you know, other other tasks in Bitcoin.
343
00:23:31.920 --> 00:23:37.380
344
00:23:37.815 --> 00:23:40.235
to change something that doesn't require anyone
345
00:23:40.615 --> 00:23:41.115
to
346
00:23:41.575 --> 00:23:42.315
to coordinate.
347
00:23:42.695 --> 00:23:43.514
Right? Like,
348
00:23:44.135 --> 00:23:51.020
I I think it's kind of understated how bad it would be if we, you know, merge to change that had an assertion
349
00:23:51.800 --> 00:23:58.255
that is not supposed to be hit, but could potentially be hit if, you know, a peer sends us something in particular.
350
00:23:58.635 --> 00:24:11.200
Because then you have a crash bug where someone can attack the network and just shut down all of the nodes running that version with that bug in it. You know? And sometimes we change something here and something breaks over there. Right? Like, it's
351
00:24:11.675 --> 00:24:16.335
pretty it's I think we should we should be careful about changing things.
352
00:24:17.115 --> 00:24:20.330
So I'm on the I guess I'm more on the conservative side of
353
00:24:20.890 --> 00:24:21.390
development.
354
00:24:22.970 --> 00:24:27.309
But, yeah, like, with policy and p to p, with, yeah, with policy changes,
355
00:24:28.695 --> 00:24:29.195
the
356
00:24:29.735 --> 00:24:35.915
I guess policy exists in this gray area, and we can we can both speak to this, where, like, there are no
357
00:24:36.530 --> 00:24:38.710
358
00:24:39.250 --> 00:24:45.270
359
00:24:45.945 --> 00:24:49.885
So not transactions and blocks, but ones that we receive on p to p
360
00:24:50.505 --> 00:24:52.525
or through the wallet, for example.
361
00:24:52.960 --> 00:24:58.100
And they're local to a node. Usually, the user is able to configure them and we do hope that people
362
00:24:58.800 --> 00:25:06.815
stick to the defaults because it's more safe. But, you know, if you're a miner, for example, and you have more resources, you can afford to, like, make your mempool,
363
00:25:07.514 --> 00:25:11.470
have a higher maximum dynamic memory, like, limit. Right?
364
00:25:12.970 --> 00:25:17.870
Yeah. The that's why there's this kind of gray area you cannot really expect people
365
00:25:18.215 --> 00:25:21.835
to adhere to a certain policy. And for example, in Lightning,
366
00:25:22.215 --> 00:25:24.795
they might take some liberties in, like, using,
367
00:25:25.310 --> 00:25:27.650
you know, a few bits of the in sequence field
368
00:25:28.110 --> 00:25:28.610
to,
369
00:25:29.390 --> 00:25:30.130
to communicate
370
00:25:30.510 --> 00:25:34.290
the ordering of transactions in their channel, for example. Right?
371
00:25:35.524 --> 00:25:45.809
Or I I think, you know, we've we've tried to say, like, oh, maybe we should make this nonstandard, but, actually, you know, colored coins is using this to, like, flag certain transactions
372
00:25:46.110 --> 00:25:47.169
in a certain way.
373
00:25:47.549 --> 00:25:50.690
So that this is kind of this, like, no man's land where
374
00:25:52.434 --> 00:25:54.695
people can use it for their purposes.
375
00:25:55.795 --> 00:26:02.110
And that's why it requires so much coordination when we try to change policy because if we accidentally make something nonstandard
376
00:26:02.890 --> 00:26:12.815
and, like, 99% of nodes on the network are Bitcoin Core, and then 99% of those nodes are running default policy, Well, you cannot really expect your transactions to propagate
377
00:26:13.355 --> 00:26:17.375
if you're relying on something that, you know, the Bitcoin Core developers unilaterally
378
00:26:17.675 --> 00:26:18.735
decided to
379
00:26:19.340 --> 00:26:20.399
to make nonstandard.
380
00:26:20.700 --> 00:26:21.200
Right?
381
00:26:21.580 --> 00:26:24.159
Which is why we don't unilaterally decide that.
382
00:26:24.700 --> 00:26:26.139
But it, you know, it
383
00:26:26.784 --> 00:26:29.205
I think it's it's good to
384
00:26:29.745 --> 00:26:30.725
to have this,
385
00:26:31.184 --> 00:26:34.950
you know, usable space for people to develop applications, of course.
386
00:26:35.909 --> 00:26:39.529
And that's why it's so important to have a nice communication
387
00:26:40.870 --> 00:26:41.370
between,
388
00:26:41.830 --> 00:26:42.409
you know,
389
00:26:43.304 --> 00:26:46.605
protocol or l one and l two because
390
00:26:46.985 --> 00:26:49.085
this is an interface that
391
00:26:50.025 --> 00:26:51.165
we rely on
392
00:26:52.389 --> 00:26:59.210
to to make the ecosystem work. Like, obviously, we cannot scale to millions of transactions per block,
393
00:26:59.644 --> 00:27:01.745
So we rely on these applications,
394
00:27:02.684 --> 00:27:03.184
such
395
00:27:03.485 --> 00:27:04.065
as Lightning,
396
00:27:04.845 --> 00:27:07.424
to scale. But, also, you know, if
397
00:27:08.050 --> 00:27:08.950
if the
398
00:27:09.410 --> 00:27:13.350
the first layer is broken or if transaction propagation doesn't work
399
00:27:14.050 --> 00:27:15.430
the way it's supposed to,
400
00:27:15.890 --> 00:27:16.390
then
401
00:27:16.745 --> 00:27:18.205
maybe Lightning is vulnerable
402
00:27:18.505 --> 00:27:19.005
to
403
00:27:19.465 --> 00:27:21.165
paying a tax, for example.
404
00:27:22.265 --> 00:27:22.765
405
00:27:23.385 --> 00:27:27.770
So as time has gone on, I've seen for myself that it feels
406
00:27:28.070 --> 00:27:29.130
sometimes as though,
407
00:27:29.830 --> 00:27:31.690
development in Bitcoin Core has
408
00:27:32.804 --> 00:27:34.184
become more arduous,
409
00:27:34.885 --> 00:27:41.065
and and that sort of makes sense that the process would get a little bit more heavyweight as the value of the network grows, say.
410
00:27:41.830 --> 00:27:44.090
But I know there are a lot of early developers who,
411
00:27:45.270 --> 00:27:51.695
feel that it's very difficult to work on the code now, and it and it continues to grow in difficulty.
412
00:27:52.875 --> 00:27:54.895
Jeremy, can you talk a little bit about,
413
00:27:55.595 --> 00:28:00.654
you know, whether that's whether there's good reason for that and how we might be able to keep the development process
414
00:28:01.179 --> 00:28:03.600
safe, but also kind of nimble and approachable.
415
00:28:04.380 --> 00:28:07.679
416
00:28:09.875 --> 00:28:11.815
Currently, a a lot of Bitcoin
417
00:28:12.195 --> 00:28:12.934
core development,
418
00:28:13.875 --> 00:28:17.495
happens more as an artisan process than an engineering process.
419
00:28:18.170 --> 00:28:25.345
And I would delineate the 2 if you wanna think about building a bridge, where an artisan process, you might be more concerned with, like, the,
420
00:28:25.825 --> 00:28:30.965
aesthetic detail of, like, what is the color of the bridge? What's the molding on the bridge look like?
421
00:28:31.505 --> 00:28:32.885
Are we using, you know,
422
00:28:33.730 --> 00:28:46.565
peak wood or something like that? And the engineering concerns would be asking questions of, like, how many cars need to be going? What's the load? What's the peak load? How many lanes do we need? And and those would be things that would be more concrete engineering constraints.
423
00:28:46.945 --> 00:28:57.540
And I think the reason why there there's a difference why Bitcoin ends up being a little bit more artisan and we could benefit by being more engineering driven. Is it an engineering driven process? You can define some sort of,
424
00:28:58.865 --> 00:29:00.725
objective acceptance criteria
425
00:29:01.025 --> 00:29:02.325
for is this bridge
426
00:29:02.705 --> 00:29:05.285
a satisfying bridge for our our need.
427
00:29:06.145 --> 00:29:08.325
And, you know, if it is, you can proceed.
428
00:29:08.770 --> 00:29:12.309
I think Bitcoin as a community, we've been very resistant to having,
429
00:29:12.690 --> 00:29:14.470
standard processes required,
430
00:29:15.330 --> 00:29:30.500
because people view a standard bar for something as something that an adversary might be able to say. I've met the bar, and the bar that I met was for introducing a bug. And everybody can see that it's a bug, but now there's a standard thing that was satisfied by it. And now we're screwed because we said we would accept anything that met that bar.
431
00:29:30.880 --> 00:29:35.840
I don't think we have to commit ourselves so strongly to that, but I do think that by having,
432
00:29:36.485 --> 00:29:44.410
better standards, that means that you have things like a preflight checklist of, like, one one example of something I think is is maybe a new idea would be, like,
433
00:29:45.050 --> 00:29:48.990
any peer to peer or, like, policy change that we implement,
434
00:29:49.370 --> 00:29:57.225
we should back test against every previous block that we would be able to relay all the transactions that come in the next block into the mempool.
435
00:29:57.605 --> 00:30:14.855
And they're obviously non standard blocks that get mined, but what that would give us would be to say, okay. If we're introducing a new thing, anytime we introduce any policy we should always have a backtest that tells us if there are new transactions that previously would have been okay. Right? And that's the sort of thing where in your if you're in an engineering process, you can define more of these criteria.
436
00:30:15.235 --> 00:30:24.650
And the more criteria that you have, it's actually, even though it's more arduous because you're saying, well, you better do this, you better do that. It's actually easier because you know exactly what you have to demonstrate,
437
00:30:25.245 --> 00:30:48.895
and you can work towards a concrete goal. And I think as long as developers aren't trying to adversarially be like, I'm going to come up with a rule that's not going to trigger this test, and then I'm going, I think you can actually get more confidence in the review process. And so I think that's something where the solution to make it less arduous is to get more strenuous, if that makes sense. I don't think it's very safe to just have, like, a checklist. I I know that's not exactly what you're saying, but, like,
438
00:30:49.275 --> 00:30:52.650
439
00:30:53.190 --> 00:30:53.930
it's secure.
440
00:30:54.950 --> 00:31:00.175
There's always, like I I think it's more about developing this kind of, like, adversarial thinking
441
00:31:00.875 --> 00:31:10.110
442
00:31:10.590 --> 00:31:11.470
we just have,
443
00:31:11.790 --> 00:31:20.265
kind of, like, empirical evidence that, like, things like checklists and actually, like, you know, redundant checklists for, like, mission critical things in, like, aerospace
444
00:31:20.885 --> 00:31:22.665
do reduce critical failures.
445
00:31:23.205 --> 00:31:39.804
And they make sure that when you're doing something, you never let yourself rest on an assumption of, like, oh, this is a small change. We don't need to audit it in this way. You always are saying, well, it might be a small change, but we still have to go through all of these steps no matter how big or small we think it is. And so it doesn't let you skip
446
00:31:40.260 --> 00:31:45.720
any of the things in between. And and in terms of code review, one thing that I've heard recently is that, like,
447
00:31:46.020 --> 00:31:49.885
apparently, a large number of developers maybe, like, mostly review the tests
448
00:31:50.445 --> 00:32:02.650
when they're looking at a code change rather than, like, reviewing line by line every piece of the code. And that was, like, really surprising to me because I usually almost never look at the tests, and I always go line by line through the code. I think that that's something where at least understanding,
449
00:32:03.030 --> 00:32:19.690
like, well, if you're acting, you actually should have gone through line by line of the code and at least read every single line before you act. It's something that, like, maybe is like a a checklist type thing that would be, you know, an improvement. That that seems pretty obvious. Yeah. But I guess people don't do it. So I don't know. So, like,
450
00:32:20.550 --> 00:32:36.580
necessary but not sufficient checklist is? Yeah. I think I think that's something where, like, yeah, it's more annoying if anytime you wanna approve a pull request and you're saying it's an act Yeah. That you that you have, like, you know, like, 10 tick boxes that you have to do and it's, like, did you review every line of the code?
451
00:32:37.440 --> 00:32:43.845
You know, and if you didn't, it's fine. You you know, but, you know, it's like it would just mean it would get more information of, like, have we actually satisfied,
452
00:32:44.465 --> 00:32:49.640
453
00:32:50.900 --> 00:32:53.480
what we can do with static analysis.
454
00:32:54.179 --> 00:32:59.445
So for example, like, you know, for the CI system, that's basically a checklist. Right? It's an automated checklist,
455
00:33:00.145 --> 00:33:02.965
versus sort of there's a big spectrum between that
456
00:33:03.425 --> 00:33:19.304
and what you have to, you know, think about on, like, a design level when it comes to p p to p and stuff. Right? So, you know, you you could have, you know, things in the middle which are not yet automatable, but is somewhat, you know, just, you know, you can describe it, let's say, fully,
457
00:33:19.764 --> 00:33:23.065
and you can have a checklist without god, I I would love to have that for
458
00:33:23.605 --> 00:33:26.050
bash scripts and things that shell tech can't,
459
00:33:26.530 --> 00:33:27.990
can't can't catch and
460
00:33:28.530 --> 00:33:35.365
461
00:33:36.645 --> 00:33:51.760
transaction broadcast based on historical blocks, I think that's a great check, and and you could probably write a functional test. Well, that's difficult because the, you know It's it's gonna take a few hours. Gonna take a few hours. So it's almost this this zone between, you know, functional test and, something that someone would do manually
462
00:33:52.165 --> 00:34:02.029
where, you know, you might have a simulation framework or something to to to check some of those things. So I think that's that could be a really valuable project for somebody looking to get involved with Bitcoin is to kind
463
00:34:02.570 --> 00:34:05.630
of focus on the testing regime between those 2. Sorry.
464
00:34:06.490 --> 00:34:11.435
So talking about the development process and maybe some of the the difficulties associated with it,
465
00:34:13.035 --> 00:34:22.960
it, one of the ways that, you know, this this could be resolved, and, Luke, you know, I think the route that you've taken is that you have your own implementation of Bitcoin, a fork of Bitcoin called Bitcoin knots.
466
00:34:23.579 --> 00:34:24.079
And,
467
00:34:24.940 --> 00:34:28.319
you know, obviously, you can make the argument against that that,
468
00:34:29.285 --> 00:34:33.845
having, an implementation that's unilaterally controlled by a single person is risky,
469
00:34:34.325 --> 00:34:43.070
that, you know, having multiple implementations in the first place comes with some non obvious risks. But how would you make the case that that's actually sort of a good thing to be doing?
470
00:34:44.570 --> 00:34:46.090
471
00:34:46.925 --> 00:34:49.265
everything that would be a good idea to merge,
472
00:34:50.125 --> 00:34:54.145
probably safe as merging the Bitcoin nuts, whereas Bitcoin core believes
473
00:34:54.525 --> 00:34:56.305
it takes the more careful and
474
00:34:56.960 --> 00:34:58.820
extra careful review approach.
475
00:34:59.760 --> 00:35:02.180
And so the users have the option between
476
00:35:02.560 --> 00:35:04.420
do they want to have something that
477
00:35:04.925 --> 00:35:08.225
takes this extra careful approach, or do they just wanna have something that has
478
00:35:08.525 --> 00:35:10.545
all the latest and greatest and, hopefully,
479
00:35:11.405 --> 00:35:12.225
safe enough?
480
00:35:13.510 --> 00:35:21.049
Right. So it could function, I guess, as a good test bed maybe. Right. It can be used in a lot of ways. Potentially, it's testing and other.
481
00:35:22.905 --> 00:35:23.405
482
00:35:25.705 --> 00:35:28.525
483
00:35:29.470 --> 00:35:37.890
the the project that I've been working on is called Lit Bitcoin Kernel, and it's, it's it's a project to extract sort of the consensus engine
484
00:35:38.385 --> 00:35:40.245
out of, Bitcoin Core.
485
00:35:40.625 --> 00:35:45.845
And one of the rationales or one of the problems that we're sort of trying to solve is that
486
00:35:46.210 --> 00:35:46.710
people
487
00:35:47.490 --> 00:35:51.910
have different and and as they as Gloria has mentioned, like, people have different expectations
488
00:35:52.530 --> 00:35:54.070
for how they want,
489
00:35:54.635 --> 00:36:03.130
you know, their mempool or their validation or or or or or or or or sorry. Mempool and sort of the the the rest of the code, like wallet or GUI,
490
00:36:04.390 --> 00:36:06.010
RPC and all of that to act.
491
00:36:06.310 --> 00:36:12.935
And as Luke has said, perhaps they want to be more you know, experimental or have, you know, features that perhaps,
492
00:36:13.475 --> 00:36:15.975
can't get into Bitcoin Core. Right? So
493
00:36:17.290 --> 00:36:19.869
the options right now for experimenters
494
00:36:20.170 --> 00:36:24.030
like that are, you know, you either go through as
495
00:36:24.635 --> 00:36:27.195
I hope we painted a picture of,
496
00:36:27.595 --> 00:36:45.385
PR review being very stringent, let's say. You either go through with PR review and try to get it into Bitcoin Core, which is hard, but also is a, you know, a burden on maintainers. Right? This is not a piece of code that you write, and then that's that's it. We have to maintain it throughout time.
497
00:36:46.325 --> 00:36:47.865
So you either do that,
498
00:36:48.805 --> 00:36:49.625
you either
499
00:36:50.040 --> 00:37:06.505
fork Bitcoin Core, which is what LUKE does, and and and every release, you have to rebase. And perhaps, you know, Bitcoin Core structures it in a way that now makes it really hard for this critical feature that that you have. And I think Luke has run into that problem before.
500
00:37:07.799 --> 00:37:19.425
And and and then the third way is just to sort of reimplement Bitcoin Core. Right? And and if you reimplement Bitcoin, then you are sure to get almost certain to get sort of,
501
00:37:19.965 --> 00:37:21.185
consensus incompatibilities,
502
00:37:21.645 --> 00:37:26.570
which, you know, as I just described before, consensus incompatibilities is what leads to,
503
00:37:27.510 --> 00:37:34.315
you know, unforeseen or unexpected bugs, which is, you know, sort of what keeps all of us up at night, I would I would say.
504
00:37:35.255 --> 00:37:35.915
And so
505
00:37:37.175 --> 00:37:38.935
having this sort of,
506
00:37:39.495 --> 00:37:42.109
extracting out sort of the part that defines
507
00:37:42.809 --> 00:37:43.309
consensus
508
00:37:44.009 --> 00:37:44.509
allows
509
00:37:44.809 --> 00:37:54.655
experimenters. And, you know, I I I think it speaks to the strength of our community that we have people who want to experiment, have people who want to implement features, have people who want to tweak parameters.
510
00:37:55.355 --> 00:37:58.175
It sort of allows people to experiment with that
511
00:37:59.359 --> 00:38:09.025
and not have to worry about the, you know, consensus compatibility part, not have to sort of try to cram it into Bitcoin Core and make it a burden on everybody else,
512
00:38:10.125 --> 00:38:14.464
not have to, you know, do do do the forklift. So I I,
513
00:38:14.809 --> 00:38:25.005
you know, I I on a personal note, I'm I'm very, very happy that, you know, there are experimenters out there, and I think we should encourage them. So I think your project, the Bitcoin Kernel, is one of the most exciting,
514
00:38:25.485 --> 00:38:28.785
515
00:38:29.165 --> 00:38:32.225
the inner workings of consensus packaged up very nicely
516
00:38:32.540 --> 00:38:44.095
in a format that allows people to build a lot of the policy components or optional components of Bitcoin kind of in in the way that they like to without risking some some kind of major consensus fault. So
517
00:38:44.634 --> 00:38:45.674
with with that,
518
00:38:46.075 --> 00:38:46.894
under consideration,
519
00:38:47.194 --> 00:38:48.974
Carl, how do you see
520
00:38:49.275 --> 00:38:50.575
Bitcoin Core's scope
521
00:38:51.059 --> 00:38:58.440
kind of expanding or contracting over, say, the next 5 years? What do you think will ultimately be a part of the Bitcoin Core process?
522
00:39:00.285 --> 00:39:00.785
523
00:39:01.484 --> 00:39:08.610
and and this is just me speaking personally is is I I would hope that sort of the
524
00:39:10.110 --> 00:39:11.490
there is a
525
00:39:12.750 --> 00:39:23.145
the project is to basically delineate a clear boundary between what is consensus and what what is not. Right? And, you know, the the the big problem right now is that when we make a change,
526
00:39:23.580 --> 00:39:27.600
because everything is all tangled up into this, like, spaghetti monster mess,
527
00:39:28.140 --> 00:39:32.320
when we make a change, we don't know if it'll, you know, affect consensus. And and
528
00:39:32.635 --> 00:39:33.375
and sometimes,
529
00:39:33.675 --> 00:39:41.900
you know, to Jeremy's point, we probably need a checklist for this. Sometimes we introduce, like, a a block filter, and then it pick up as part of consensus. And you're like, okay. What?
530
00:39:42.859 --> 00:39:44.960
So I think be you know, delineating
531
00:39:45.900 --> 00:39:46.400
that
532
00:39:46.700 --> 00:39:47.200
boundary
533
00:39:47.579 --> 00:39:48.380
means that,
534
00:39:48.700 --> 00:39:52.435
it's a technical change, I think, to sort of a social problem
535
00:39:52.895 --> 00:39:54.755
where now we can have
536
00:39:55.375 --> 00:39:57.635
more eyes on the consensus
537
00:39:57.935 --> 00:39:58.915
critical part
538
00:39:59.569 --> 00:40:00.069
and,
539
00:40:00.530 --> 00:40:24.075
you know, and and the sort of outside realm can be swapped out, and and, you know, we we won't have to have, like I I mean, we we just have too many flags right now. I mean, we don't have to have, like, you know, a 100 flags just for, you know, all the all the all the use cases that people have. And that, I think, will be able to that will make the review process easier because people now know what is consensus critical and what is not. Right? And and it'll make,
540
00:40:24.555 --> 00:40:33.410
541
00:40:34.369 --> 00:40:35.829
is not consensus critical,
542
00:40:36.609 --> 00:40:39.030
but is still very crucial to
543
00:40:39.410 --> 00:40:45.655
using Bitcoin. And it's something where the design space is very open. So you obviously have a number of different wallet implementations.
544
00:40:46.435 --> 00:40:54.510
How do you see the repo evolving over, say, the next 5 years? What components do you think will be in there? What what won't be, maybe? So I think,
545
00:40:54.830 --> 00:40:58.770
546
00:40:59.070 --> 00:41:04.095
repository, and it uses the interface exposed by lib Bitcoin kernel or whatever
547
00:41:04.714 --> 00:41:05.775
the the node
548
00:41:06.075 --> 00:41:21.404
part stuff remains. And we've we've actually observed this with the GUI kind of, where the where all the work on the GUI is actually occurring in a different repository where, you know, it has its own issues, has its own pull requests. And that just that also makes it easier to keep track of,
549
00:41:21.704 --> 00:41:23.085
what's going on and,
550
00:41:23.464 --> 00:41:25.940
makes it easier for people who care about the GUI to,
551
00:41:26.900 --> 00:41:27.880
work on it.
552
00:41:28.579 --> 00:41:45.430
Same thing I expect to happen to the wallet and maybe some other components of Bitcoin Core as well. So as we we break it up a little bit so that, you know, people can focus on the things that they care about without, you know, having things get lost in a 100 PRs of of something completely different.
553
00:41:46.930 --> 00:41:49.110
And yeah. So I I expect that there will be,
554
00:41:49.650 --> 00:41:54.505
a a wallet repo in the future once we get, you know, a lib Bitcoin kernel or multiprocess,
555
00:41:55.685 --> 00:41:56.185
implemented.
556
00:41:57.045 --> 00:42:01.420
557
00:42:02.599 --> 00:42:05.980
Great. How many people here, use the Bitcoin GUI?
558
00:42:07.175 --> 00:42:10.155
K. How many people here use the Bitcoin Wallet?
559
00:42:10.694 --> 00:42:15.515
Bitcoin Core Wallet? K. Good number. How many people here run a transaction index?
560
00:42:16.760 --> 00:42:17.260
K.
561
00:42:17.720 --> 00:42:22.460
How what's another good optional thing? Block filter index? Yeah. Who runs a block filter index?
562
00:42:22.895 --> 00:42:28.194
563
00:42:29.454 --> 00:42:30.435
564
00:42:31.135 --> 00:42:33.620
you you you all have to come talk to Gloria afterwards.
565
00:42:33.920 --> 00:42:41.525
We do not know anybody who does this, and it'd be really good to know what you're putting in. And we'll talk about, like, maybe why you really have introduced a vulnerability for yourself by doing so. So yeah.
566
00:42:42.484 --> 00:42:58.760
I'd like to repurpose the remainder of this panel to just call the audience about what features they actually Yeah. No. Well, so to bring it back to what what these guys are talking about and I think this too, is that we are shipping a lot of code onto your computers that you're not running, and we would like to give you the minimal possible thing that's going to do what you're actually using.
567
00:42:59.285 --> 00:43:02.185
Like, probably most of you said you're running a node which is, like, tremendous,
568
00:43:02.485 --> 00:43:09.720
but then all the other things were really a little bit more specialized and what would be really good is if we could have this thing that's just a node that you can run
569
00:43:10.020 --> 00:43:12.840
and then these other things you actually can get maybe a,
570
00:43:13.460 --> 00:43:19.474
more competition among service providers for that functionality which if we're all capitalists who here's a capitalist?
571
00:43:20.415 --> 00:43:33.660
Okay. That that's good. Most of us. So if we're you know, we think maybe that will get us a better end result, you know, eventually. So I think that that's sort of maybe the motivation for some of this. Yeah. And I also think then you can ship more versions of the GUI and wallet,
572
00:43:34.765 --> 00:43:39.425
573
00:43:40.045 --> 00:43:42.145
Yeah. Maybe Yeah. Dark mode faster.
574
00:43:43.000 --> 00:43:48.200
575
00:43:49.560 --> 00:43:50.460
Gloria and
576
00:43:51.125 --> 00:43:54.025
Jeremy in that that I think it would be ideal if
577
00:43:54.325 --> 00:43:56.985
every user decided their own policies for themselves.
578
00:43:57.685 --> 00:43:59.945
We have defaults, but they really
579
00:44:00.299 --> 00:44:04.079
shouldn't be used as some kind of consensus rules. Relying on them to be
580
00:44:04.380 --> 00:44:06.240
identical across the network is
581
00:44:06.859 --> 00:44:10.675
insecure and really should be considered a security risk in general.
582
00:44:11.775 --> 00:44:17.215
583
00:44:18.440 --> 00:44:23.580
your wallet dot dot file and the setting that you choose is to make it readable by anybody on the network,
584
00:44:23.960 --> 00:44:25.000
you know, and and, like,
585
00:44:25.415 --> 00:44:42.600
like, that would be if you're, like, putting if you're selecting the folder for your wallet that that is like a shared open public file, like, that would be an insecure setting. Right? And then and then for consensus, there are things that are similar where if you, like, pick the really bad parameter, like, you know, or even for policy that our implementations just can't handle those parameters.
586
00:44:43.275 --> 00:44:46.415
587
00:44:46.795 --> 00:44:53.440
588
00:44:53.980 --> 00:44:56.560
right. Feel free to use your config options,
589
00:44:57.020 --> 00:44:59.599
but we try to make the default as safe as possible.
590
00:45:00.305 --> 00:45:02.805
591
00:45:03.985 --> 00:45:09.130
change your own options. You have to, you know, make the bitcoin.com file and know what,
592
00:45:09.609 --> 00:45:12.990
how to format the lines and put all the right options there.
593
00:45:14.490 --> 00:45:16.670
At least, you know, if you're using the GUI,
594
00:45:17.375 --> 00:45:24.035
there's almost no way to change any of, like, your relay options from within the GUI itself. So it's
595
00:45:24.540 --> 00:45:30.480
596
00:45:31.100 --> 00:45:32.960
597
00:45:33.305 --> 00:45:36.125
598
00:45:37.865 --> 00:45:38.365
599
00:45:38.905 --> 00:45:40.525
So with the remaining 3 minutes,
600
00:45:40.825 --> 00:45:43.005
I thought that maybe we could turn to
601
00:45:44.990 --> 00:45:56.525
ways that you guys think we might be able to grow the developer ecosystem at Bitcoin Core and just increase the health of of the project. So I'll just open it up to the group if there's anything in particular you think we could do.
602
00:45:58.190 --> 00:46:02.610
603
00:46:03.070 --> 00:46:03.570
in
604
00:46:03.870 --> 00:46:07.570
contributing to Bitcoin Core and maybe doing it full time in the future.
605
00:46:08.654 --> 00:46:11.474
There's this great thing called PR Review Club.
606
00:46:11.775 --> 00:46:12.515
It's bitcoincore.reviews.
607
00:46:13.454 --> 00:46:17.395
We do a weekly meeting where we pick a Bitcoin Core PR,
608
00:46:17.930 --> 00:46:18.590
and there's
609
00:46:19.130 --> 00:46:19.870
a host.
610
00:46:20.330 --> 00:46:22.030
It's not always me.
611
00:46:22.810 --> 00:46:26.670
There's a host that will come up with a list of notes as well as questions.
612
00:46:27.225 --> 00:46:31.085
So you kind of get an opinionated tour through this area of the code base
613
00:46:31.465 --> 00:46:40.310
and hopefully walk through some questions that start to build up your mental model of what adversarial thinking looks like when you're reviewing a PR in Bitcoin Core.
614
00:46:40.930 --> 00:46:43.510
And, you know, hopefully, as you've
615
00:46:43.955 --> 00:46:51.415
done you know, maybe you could do, like, 5 to 10 of these review clubs, you've gotten a good breadth of different areas of the code base,
616
00:46:52.290 --> 00:46:54.550
and you find one that you want to dig into
617
00:46:55.010 --> 00:47:00.390
very deep, and maybe you write a functional test that tests something that,
618
00:47:01.545 --> 00:47:06.285
very specific that we we don't have coverage for yet or a unit test or whatever it is.
619
00:47:06.825 --> 00:47:16.910
And then you and then you look through the issues and you find there are many features and bugs in that particular area of the code base that we don't have enough people to to work on.
620
00:47:17.450 --> 00:47:17.950
Anyway,
621
00:47:18.265 --> 00:47:20.285
all I wanted to do was show prreviewclub,
622
00:47:21.145 --> 00:47:22.444
Bitcoin Core dot reviews.
623
00:47:23.625 --> 00:47:29.060
624
00:47:30.320 --> 00:47:30.820
Okay.
625
00:47:31.280 --> 00:47:37.635
You know, come find us and, like, tell us what the obstacle is that might be stopping you from doing that, and, like, we'll try and find a pathway to, like,
626
00:47:38.175 --> 00:47:40.035
making you, you know, do that thing.
627
00:47:41.299 --> 00:47:49.160
628
00:47:49.475 --> 00:47:55.895
in Bitcoin step up and and provide those resources. So if you're kind of on the margin, if you wanna get involved,
629
00:47:56.835 --> 00:48:02.680
really do consider it getting into touch with any of us, and we can try and point you in the right directions.
630
00:48:02.980 --> 00:48:03.220
But,
631
00:48:03.780 --> 00:48:13.855
it's a really great time to be a Bitcoin developer. So, so so please consider it. And, I would just say you don't have to be smart. You just have to keep on trying. Absolutely. Persistence is totally underrated.
632
00:48:14.715 --> 00:48:16.175
633
00:48:16.660 --> 00:48:23.880
Always use more You don't necessarily need to be able to code, but if you can read code reading code is very different from writing code. So
634
00:48:24.180 --> 00:48:36.550
635
00:48:37.090 --> 00:48:40.930
been analyzed by a lot of people working on the project. So get involved,
636
00:48:41.825 --> 00:48:51.570
and and there are a number of ways you can review. You can just download the code and run it and build it. You don't, you know, even necessarily have to, to try and understand the code if you're doing something to add to the process.
637
00:48:52.670 --> 00:48:59.585
So great. We're out of time. Well, we've got oh, yeah. We're okay. Now we're going up on the time. We're out of time. Number go up. Time go
638
00:49:00.765 --> 00:49:07.105
up. I wanna thank all of our wonderful panelists. I wanna thank you guys for for coming to this. I hope it was, enjoyable.
639
00:49:08.710 --> 00:49:09.210
Thank
640
00:49:12.710 --> 00:49:14.329
641
00:49:35.395 --> 00:49:37.255
642
00:49:42.800 --> 00:49:44.660
So my name's d plus plus
643
00:49:45.040 --> 00:49:48.100
and the topic for today's panel is decentralized
644
00:49:48.640 --> 00:49:49.140
exchanges
645
00:49:49.600 --> 00:49:50.875
or DEX
646
00:49:51.275 --> 00:49:51.855
for short.
647
00:49:53.355 --> 00:49:55.375
Now I'm thrilled to be here on stage
648
00:49:55.675 --> 00:49:57.055
at Bitcoin Miami
649
00:49:57.595 --> 00:49:58.095
2022.
650
00:49:59.039 --> 00:50:02.260
Specifically, I'm thrilled to be on the best stage,
651
00:50:02.720 --> 00:50:04.500
the open source stage.
652
00:50:05.839 --> 00:50:06.339
653
00:50:09.224 --> 00:50:11.404
654
00:50:14.265 --> 00:50:17.164
Just very quickly about me, I'm a Bitcoin educator.
655
00:50:17.860 --> 00:50:21.960
My aim is to bring simple education to the next 1,000,000,000 folks.
656
00:50:22.580 --> 00:50:31.375
I have I have a background in computer engineering. I've worked as an entrepreneur and a coding professor before I devoted my life to Bitcoin maximalism
657
00:50:31.835 --> 00:50:33.055
and Bitcoin education.
658
00:50:33.900 --> 00:50:35.920
Now before we dive into the questions
659
00:50:36.220 --> 00:50:37.359
on today's topic,
660
00:50:37.900 --> 00:50:41.680
I'd love it if our lovely panelists could quickly introduce themselves.
661
00:50:42.645 --> 00:50:46.905
662
00:50:47.445 --> 00:50:52.810
663
00:50:53.830 --> 00:50:55.850
664
00:50:56.310 --> 00:51:04.325
Bisq, Bitcoin TV, and a bunch of other projects. It's great to be here. Hey there. Daniel Buckner. I work at TBD at Block, on decentralized identity protocols.
665
00:51:06.625 --> 00:51:07.685
666
00:51:08.660 --> 00:51:11.000
speaking of block and TV decks,
667
00:51:11.460 --> 00:51:13.400
Daniel, this question is for you.
668
00:51:14.740 --> 00:51:16.200
I've gone through the white paper.
669
00:51:16.515 --> 00:51:23.015
I I really think Satoshi was onto something with this whole 6 page white paper thing. Can we make that a standard,
670
00:51:23.475 --> 00:51:24.295
just generally?
671
00:51:25.040 --> 00:51:28.740
That'd be great. But that said, can you explain like I'm 5?
672
00:51:29.119 --> 00:51:31.280
Distill it into something that,
673
00:51:31.840 --> 00:51:39.865
maybe explain like I'm 4. What is tbdex? Can you walk me through it? Yeah. Absolutely. So it's a decentralized value exchange protocol, a generalized protocol,
674
00:51:40.485 --> 00:51:48.660
675
00:51:49.194 --> 00:51:58.734
The first type of value exchange we're focused on is fiat on and off ramps and being able to get, you know, people to exchange Bitcoin, you know, for dollars or whatever the local currency is.
676
00:51:59.800 --> 00:52:01.340
The interesting thing about
677
00:52:01.640 --> 00:52:10.585
the exchange itself is that it it gives the ability to transfer reputation and trust. So in in a way that's standards based. So we use centralized identifiers, verifiable credentials.
678
00:52:11.285 --> 00:52:18.640
Doesn't mean that participants have to require reputation and trust if they don't want to. It's completely optional. But if they do require something,
679
00:52:19.260 --> 00:52:24.224
they they can totally do so. So, you know, if it's a bank, they probably will require some sort of credential.
680
00:52:24.925 --> 00:52:29.585
If it's not, if it's like a peers, they they might not. They might just require peer reputation.
681
00:52:30.925 --> 00:52:34.070
An interesting thing about the protocol is that it's actually useful even beyond
682
00:52:34.530 --> 00:52:42.474
the stage of fiat. So imagine we're in a hyper Bitcoinized world, and you wanna buy a car with Bitcoin. Well, it turns out that this value exchange protocol,
683
00:52:42.934 --> 00:53:13.455
can cover that use case in the sense that you might be able to locate and find, know, all the cars available out there. And then you wanna know that the car, you know, that you're buying is backed by you know, it's it's via pink slip. Right? It's valid, and the person has money in their account. Right? So these are things that you can exchange as reputational proofs, in the process. And the last thing I'll note is that the protocol is built on a generalized decentralized app platform. So this is kind of the first app we're building on top of it, and we'll have more news about that platform,
684
00:53:13.835 --> 00:53:14.655
in the coming
685
00:53:15.115 --> 00:53:16.235
686
00:53:16.555 --> 00:53:22.980
Let me say it back to you. Yeah. So TV decks is a messaging protocol Mhmm. That I can use to discover
687
00:53:23.359 --> 00:53:23.859
people,
688
00:53:25.040 --> 00:53:26.500
or financial institutions.
689
00:53:27.280 --> 00:53:27.780
So
690
00:53:28.640 --> 00:53:34.345
if I'm using it to discover other people, could it be used in a peer to peer sort of local Bitcoin
691
00:53:34.805 --> 00:53:40.619
692
00:53:41.000 --> 00:53:44.859
any participants in whatever type of value exchange you wanna do,
693
00:53:45.400 --> 00:53:48.300
whether it's currency or just any other type of good,
694
00:53:48.785 --> 00:53:51.925
and then be able to communicate with them privately, securely, and encrypted,
695
00:53:52.464 --> 00:53:55.605
exchange reputational proofs, and sort of come to agreement about,
696
00:53:55.930 --> 00:53:58.670
you know, selling and buying of of any type of goods.
697
00:53:59.290 --> 00:54:00.750
698
00:54:01.210 --> 00:54:02.910
other people. So let's say,
699
00:54:03.210 --> 00:54:08.925
Alice and Bob Mhmm. Our friends, Alice and Bob meet by way of the TB DEX protocol,
700
00:54:09.305 --> 00:54:11.805
so they can transact Bitcoin, of course.
701
00:54:12.809 --> 00:54:15.869
What other types of things can Alice and Bob do
702
00:54:16.329 --> 00:54:17.230
now that they've
703
00:54:17.609 --> 00:54:19.309
found each other? It's so romantic.
704
00:54:21.365 --> 00:54:22.665
This question is for Chris.
705
00:54:23.204 --> 00:54:24.665
What else could they do now?
706
00:54:26.645 --> 00:54:36.000
707
00:54:36.300 --> 00:54:39.200
is, they're really focused on censorship resistant money.
708
00:54:39.695 --> 00:54:48.650
And I think we all in this room agree that that's kind of one of the core principles of Bitcoin. You can spend your Bitcoin how you want to. What I think Bitcoiners get wrong is,
709
00:54:49.049 --> 00:54:54.109
they stop at censorship resistant money and don't advocate for censorship resistant financial markets.
710
00:54:54.525 --> 00:55:01.505
What my understanding of TBD is and Bisc, which Wiz works on, is that's what they're providing is censorship resistant
711
00:55:01.970 --> 00:55:04.530
financial markets where people can trade different things.
712
00:55:04.930 --> 00:55:07.030
Bitcoiners sometimes get up in arms
713
00:55:07.410 --> 00:55:13.165
about what's being traded on these censorship resistant financial markets because it's a token they don't like
714
00:55:13.465 --> 00:55:20.105
or it's economic activity that they aren't fans of. But, you know, if something's censorship resistant, you can't pick and choose,
715
00:55:20.670 --> 00:55:31.134
what you like and what you don't like. It's a platform either everybody can use for everything or nobody can use because it's gonna get coerced and co opted by a government or a large corporation.
716
00:55:32.954 --> 00:55:39.990
717
00:55:40.450 --> 00:55:43.990
But, Wiz, how does censorship resistance play into
718
00:55:44.450 --> 00:55:44.950
BISC?
719
00:55:46.315 --> 00:55:47.435
720
00:55:48.075 --> 00:55:49.055
Bisc is basically
721
00:55:49.355 --> 00:55:49.855
a
722
00:55:50.155 --> 00:56:01.440
decentralized exchange platform, which means that it's a peer to peer network running over Tor where everyone running the disk node software on their computer connects to each other and exchanges the order books.
723
00:56:01.980 --> 00:56:08.045
And this allows users to make offers or take offers and, connect to each other. And because there is no,
724
00:56:08.825 --> 00:56:09.325
centralized
725
00:56:09.705 --> 00:56:10.845
servers anywhere,
726
00:56:11.465 --> 00:56:16.600
it just, you know, achieves censorship resistance by being decentralized in nature.
727
00:56:16.980 --> 00:56:21.320
There's no, Bisc Office or Bisc Company to shut down. It's more of a trade protocol.
728
00:56:25.385 --> 00:56:28.204
729
00:56:29.944 --> 00:56:30.765
730
00:56:31.590 --> 00:56:32.810
Tor had some issues,
731
00:56:33.190 --> 00:56:36.230
which has happened in the past, sure. I mean, Bisc is,
732
00:56:37.030 --> 00:56:39.450
also governed by a a DAO to
733
00:56:40.355 --> 00:56:44.455
manage the parameters of the network like, what the trading fees are and like this
734
00:56:45.475 --> 00:56:46.135
and, other,
735
00:56:46.595 --> 00:56:48.215
limits or payment methods.
736
00:56:48.630 --> 00:56:50.630
These are all controlled by the DAO, which has a,
737
00:56:51.990 --> 00:56:54.410
kind of like a, unique governance structure.
738
00:56:55.349 --> 00:56:58.665
Basically, they have their own, shitcoin token where they do the voting.
739
00:56:59.365 --> 00:57:03.545
And, they DAO stakeholders can vote to change certain parameters,
740
00:57:04.380 --> 00:57:08.800
but the DAO stakeholders are not known. And so because of their,
741
00:57:09.500 --> 00:57:13.765
relative anonymity and the decentralized nature, it's not easily
742
00:57:15.825 --> 00:57:16.785
743
00:57:17.664 --> 00:57:19.845
Do you think the shitcoin token is really necessary?
744
00:57:21.510 --> 00:57:22.870
745
00:57:23.350 --> 00:57:26.490
I don't I don't use it. I I'm a Bitcoiner, you know,
746
00:57:26.790 --> 00:57:37.265
and and you don't need to use their shit coin to use this. You could just pay the trade fees in in good old sats and works great. It's only if you really wanna participate in the governance of the network,
747
00:57:37.660 --> 00:57:40.640
which is mostly just the contributors anyway at the end of the day.
748
00:57:41.580 --> 00:57:49.965
749
00:57:51.065 --> 00:57:53.805
How many of you find local Bitcoiners in your area
750
00:57:54.520 --> 00:57:55.740
and exchange cash
751
00:57:56.040 --> 00:57:57.740
for Bitcoin? And how many of you
752
00:57:58.360 --> 00:58:03.500
earn Bitcoin, get paid in Bitcoin, which is one of the best ways of getting KYC free Bitcoin?
753
00:58:05.685 --> 00:58:06.185
So
754
00:58:06.645 --> 00:58:10.825
p speaking of KYC, Wiz, I'm sure you're gonna have a hot take on this as well.
755
00:58:12.510 --> 00:58:15.490
You know, there is illicit activity happening on bitcoin
756
00:58:16.030 --> 00:58:18.530
and the illicit activity is KYC.
757
00:58:19.515 --> 00:58:20.335
Know your customer.
758
00:58:22.395 --> 00:58:25.695
Is KYC gonna be necessary on decentralized exchanges?
759
00:58:26.830 --> 00:58:34.610
760
00:58:35.645 --> 00:58:39.425
because it's it's purely decentralized in nature and there is no regulator,
761
00:58:40.765 --> 00:58:50.190
enforcing any rules. It's purely peer to peer. So, it's kinda like Craigslist if you post an ad to sell your sofa and someone buys it. The only 2 people who know about the details of that transaction
762
00:58:50.665 --> 00:58:55.785
are the buyer and the seller, and that's exactly how it works on DISC. The only person you send your,
763
00:58:56.105 --> 00:59:03.190
bank details, for example, would be to the other guy, and it's not in either of those parties' interest to snitch on each other.
764
00:59:03.650 --> 00:59:08.975
So, it achieves a very nice level of privacy and, also censorship resistance this way.
765
00:59:10.075 --> 00:59:17.619
766
00:59:18.160 --> 00:59:19.220
censorship resistant
767
00:59:19.520 --> 00:59:46.685
and doesn't have AML KYC at the base layer, and you can always add it on top if that's a feature that is required. And I think that's an acceptable trade off. But if you bake in, like, all these, like, regulations at the base layer, you can never have something that's no AML KYC on top of that. So getting these, like, levels of the stack engineered correctly are really important, and that's, like, kind of one of the core innovations of Bitcoin, in my opinion, is we have this censorship resistant money, this strictly a proto computer protocol,
768
00:59:46.985 --> 00:59:58.870
and we can build, you know, financial institutions on top of it. You know, many financial institutions have been super successful built on top of Bitcoin, but we can't go, the opposite way. So when thinking about designing these things, it's super important
769
00:59:59.315 --> 01:00:08.775
to get the base level right without, you know, these these things baked in. And if you wanna add them on top, go for it. That's my 2 stats on that.
770
01:00:10.579 --> 01:00:13.400
771
01:00:14.260 --> 01:00:18.035
but why don't we start with why? Why decentralized
772
01:00:18.655 --> 01:00:19.155
exchanges?
773
01:00:19.615 --> 01:00:20.755
Why does this matter?
774
01:00:21.055 --> 01:00:22.275
And why should we care?
775
01:00:22.734 --> 01:00:24.355
Yosef, I'd love to hear from you.
776
01:00:24.720 --> 01:00:25.319
777
01:00:25.760 --> 01:00:30.160
decentralized exchanges for me are important for three reasons. First is,
778
01:00:30.880 --> 01:00:35.675
you are actually forced to self custody our Bitcoin from the start because,
779
01:00:36.135 --> 01:00:36.795
these exchanges
780
01:00:37.175 --> 01:00:38.875
never hold your keys for you.
781
01:00:39.430 --> 01:00:39.930
And
782
01:00:40.790 --> 01:00:44.890
unfortunately, the default setting for centralized exchanges is they are the custodians,
783
01:00:45.350 --> 01:00:48.490
and people tend to not withdraw their points.
784
01:00:48.984 --> 01:00:54.444
So that's the first one, self custody. The second one is you actually get to use Bitcoin as a protocol
785
01:00:54.984 --> 01:01:01.070
because on centralized exchanges, you usually just buy some kind of weird financial derivative
786
01:01:01.530 --> 01:01:02.030
that's
787
01:01:02.490 --> 01:01:02.990
maybe,
788
01:01:03.850 --> 01:01:09.745
settable in, like, physical Bitcoin if you withdraw, but most people don't withdraw from these exchanges.
789
01:01:10.205 --> 01:01:12.705
So they don't actually get to use Bitcoin, whereas
790
01:01:13.005 --> 01:01:13.665
at this,
791
01:01:13.965 --> 01:01:14.765
you use,
792
01:01:15.165 --> 01:01:17.700
multisig. You are confronted with,
793
01:01:18.260 --> 01:01:21.960
like handling your private keys and with minor fees and stuff.
794
01:01:22.420 --> 01:01:25.720
And the third one is the privacy aspect. There is no KYC.
795
01:01:26.285 --> 01:01:31.424
Only the party knows some of your details, but there is no reason to snitch us with that.
796
01:01:31.805 --> 01:01:34.305
And, yeah, KYC is this whole,
797
01:01:34.605 --> 01:01:40.970
like like we said, that's the early security. That's the thing because it stays with you. And once you KIC yourself,
798
01:01:41.430 --> 01:01:43.609
it's hard to get rid of because
799
01:01:44.305 --> 01:01:45.204
these exchanges
800
01:01:45.905 --> 01:01:46.405
employ,
801
01:01:47.265 --> 01:01:49.125
like the chain analytic companies
802
01:01:49.744 --> 01:01:54.930
and privacy in Bitcoin is hard. And if you, like, dox yourself at the start,
803
01:01:55.549 --> 01:01:56.930
it's very hard to,
804
01:01:57.789 --> 01:01:58.690
correct that.
805
01:02:00.645 --> 01:02:13.410
806
01:02:14.110 --> 01:02:16.770
807
01:02:17.230 --> 01:02:18.210
The most private
808
01:02:18.605 --> 01:02:19.345
might be,
809
01:02:20.285 --> 01:02:23.425
meeting in person at the Starbucks and just handing cash to someone.
810
01:02:24.685 --> 01:02:25.485
There's also,
811
01:02:25.885 --> 01:02:31.089
US Postal money order. You can like physically mail a money order to someone for like $1,000,
812
01:02:31.869 --> 01:02:39.335
and, the post office website allows you to verify that the money order serial number and the amount everything was cashed or not cashed. So you can,
813
01:02:40.455 --> 01:02:41.515
you know, verify
814
01:02:42.720 --> 01:02:51.540
without going through the banking system, but also be able to send the money. Of course, if you use a payment method like a bank transfer, then you'll need to send your bank account details to the counterparty,
815
01:02:52.455 --> 01:02:52.955
but
816
01:02:53.735 --> 01:02:57.195
it's not really in the other guys interest to
817
01:02:58.775 --> 01:03:03.569
save those or docs you for any reason. So, there's different trade offs with different payment methods.
818
01:03:03.950 --> 01:03:09.650
Some of them are faster or slower, some of them are more expensive or cheaper, some of them are more private or less private.
819
01:03:10.664 --> 01:03:13.005
And it also depends on the country. If you're,
820
01:03:13.625 --> 01:03:16.845
you know, in Japan, for example, you can actually do anonymous bank transfers.
821
01:03:17.870 --> 01:03:20.530
If you're in the US, the postal money order is excellent,
822
01:03:20.990 --> 01:03:27.525
but every country has their own localized payment method, so it really depends on your threat model, I guess.
823
01:03:31.505 --> 01:03:33.605
824
01:03:35.025 --> 01:03:37.390
825
01:03:37.869 --> 01:03:45.915
a lot of people in the crowd do, though. It's, you know, if I did, I would use the, the US postal money order system on disk. It's, it's pretty cool because
826
01:03:46.455 --> 01:03:50.075
it's basically how people sent money to each other before banks were,
827
01:03:50.455 --> 01:03:51.515
what they are today
828
01:03:52.030 --> 01:03:56.130
And, because the post office has this really cool website where you can verify everything,
829
01:03:57.310 --> 01:04:03.684
you know, no one can claim that you didn't send them the money or everything. Like, it just shows what post office it was cashed at and everything. So it's really,
830
01:04:04.944 --> 01:04:05.825
well built for,
831
01:04:06.385 --> 01:04:08.085
Bisc users in the United States.
832
01:04:09.570 --> 01:04:17.750
833
01:04:19.805 --> 01:04:21.585
834
01:04:23.725 --> 01:04:31.869
a newer payment option. I haven't I don't have a strike account, so I've never used it. But if, if that's true then I would assume it works like any other,
835
01:04:32.510 --> 01:04:33.410
payment method.
836
01:04:35.345 --> 01:04:40.805
I mean, obviously, Stripe, you need to connect your bank account, but the counterparty counterparty wouldn't be able to see that.
837
01:04:41.424 --> 01:04:48.760
838
01:04:49.860 --> 01:04:56.415
I've got, like, a 1000 questions for Daniel, and I think we're probably not gonna have enough time. We'll probably have to talk later.
839
01:04:56.795 --> 01:04:57.295
But
840
01:04:57.835 --> 01:05:00.735
I'm curious to hear more about TB decks.
841
01:05:01.500 --> 01:05:03.120
My understanding is that
842
01:05:03.500 --> 01:05:06.720
TB DEX cannot exist without some kind
843
01:05:07.100 --> 01:05:08.320
of verifiable credential,
844
01:05:08.780 --> 01:05:14.845
some kind of system of trust. Right? And the reason for that is because Bitcoin, of course, is trustless,
845
01:05:15.545 --> 01:05:17.485
but the fiat system is not.
846
01:05:17.940 --> 01:05:22.760
And, when you're exchanging with another person, there is some level of trust that's going to be required.
847
01:05:23.060 --> 01:05:24.040
Now, my understanding
848
01:05:24.500 --> 01:05:25.480
is that tbdex
849
01:05:25.780 --> 01:05:27.080
is predicated upon
850
01:05:27.565 --> 01:05:28.705
decentralized identity
851
01:05:29.085 --> 01:05:31.025
or DID for short.
852
01:05:31.805 --> 01:05:35.905
And again, if you could explain like I'm 5 or preferably explain like I'm 4,
853
01:05:36.280 --> 01:05:39.100
what is DID, and how is it used by DEX?
854
01:05:39.720 --> 01:05:41.160
855
01:05:41.560 --> 01:05:44.615
the standard that has, you know, gone through international standardization
856
01:05:44.995 --> 01:05:45.655
at W3C.
857
01:05:46.675 --> 01:05:48.695
We're using it. A lot of other companies are.
858
01:05:49.155 --> 01:05:57.110
It allows you to create identifiers that are wholly yours that you can rotate keys under and you can prove. So unlike an email address, you actually own your identifier,
859
01:05:58.370 --> 01:06:10.125
and can have the full route ability to, like, be to send messages to someone. You can have multiple identifiers so and we encourage that. It's not like one identifier and you keep using it everywhere to correlate yourself. Like, you wanna
860
01:06:10.690 --> 01:06:11.509
retain privacy.
861
01:06:11.970 --> 01:06:40.734
And then the other big component is verifiable credentials, which is sort of like a data signing standard, basically, for proofs. And it could be proofs of anything. Right? You can prove a diploma or whatever. In this case, you might prove KYC details or reputational proofs if it's like peer to peer and you don't need like a KYC component. It's just modeling it with a standard. So whatever your form of reputation or proof is, we're trying to use these these standardized forms for it. That's really interesting because in Bisc there is no identity system. There is no reputation system.
862
01:06:41.434 --> 01:06:42.974
863
01:06:44.700 --> 01:06:50.000
guarantees the trades if you were to get scammed or something, which, because the security deposit system
864
01:06:50.300 --> 01:06:51.520
is financially disincentivized.
865
01:06:52.105 --> 01:06:54.845
So, in Bisc, there is no identity system because we want
866
01:06:55.145 --> 01:06:56.605
privacy, we want anonymity.
867
01:06:57.545 --> 01:07:03.250
You know, you could create, you know, create a new Bisc account for every trade and or you you could use the same one. There is no,
868
01:07:04.530 --> 01:07:05.030
identity.
869
01:07:05.730 --> 01:07:23.150
870
01:07:23.850 --> 01:07:32.065
And so identity, you have an identity, but you may have many facets of your identity. You may have millions of identifiers, right? Every website you use a new one.
871
01:07:32.444 --> 01:07:37.010
So so we believe in exactly the same thing. It's just a standardized means of doing of locating,
872
01:07:37.470 --> 01:07:41.730
people if you needed to in a recurring fashion. The other thing is we wanna make
873
01:07:42.030 --> 01:07:56.540
on and off ramping to existing financial institutions easier only because it's the world we live in today. Like, I'm I'm a big you know, I've been in Bitcoin for 10 years. Like, I, you know, want that as much as anyone. But the reality on the ground is that we need to get more people into Bitcoins. We have to bring
874
01:07:56.920 --> 01:08:03.695
the world with us and that's part of the reason why we added these features that are totally optional so that those institutions
875
01:08:03.995 --> 01:08:04.735
can start
876
01:08:05.355 --> 01:08:07.855
helping by participating in the system,
877
01:08:08.315 --> 01:08:10.815
and increasing the number of people who have Bitcoin.
878
01:08:11.550 --> 01:08:13.070
879
01:08:13.950 --> 01:08:14.450
would,
880
01:08:14.910 --> 01:08:15.410
DBD,
881
01:08:16.750 --> 01:08:18.690
be compatible with stuff like FIDO2?
882
01:08:18.990 --> 01:08:19.490
Like,
883
01:08:20.005 --> 01:08:21.945
there's this open standard for
884
01:08:22.565 --> 01:08:25.145
online identification. It's very fast
885
01:08:25.685 --> 01:08:30.050
identification online. Yeah. And Tresor is, like, supports that.
886
01:08:30.510 --> 01:08:31.170
So I could
887
01:08:31.630 --> 01:08:41.485
prove my identity, like, like, credentials, not my real identity, but I'm the same person like the last time they've signed in some kind of cryptographic message.
888
01:08:41.864 --> 01:08:55.395
889
01:08:55.775 --> 01:08:57.795
can go through that same existing standard.
890
01:08:58.175 --> 01:09:15.655
FIDO, right now, the way it's designed, it sort of assumes that you're using a single key, just a non robable key, and the PKI source is like a centralized entity. So you have, like, a key with a website and you have to go register it with them. So it's kind of not designed to be decentralized. You can extend it though.
891
01:09:15.955 --> 01:09:28.770
I also we did extend OpenID Connect so that it uses DIDs instead of centralized accounts. So there's there's ways that we can uplift these things into more decentralized forms. Yeah. Yeah. And I wanted to ask if I may, like,
892
01:09:29.515 --> 01:09:39.810
893
01:09:40.130 --> 01:09:41.350
894
01:09:41.730 --> 01:09:49.575
there's a payment method called Zelle, which is, I guess the common way to quickly send money between banks in the US. And
895
01:09:50.195 --> 01:09:54.775
because there is a very, small amount of chargeback risk, it's not 0,
896
01:09:55.460 --> 01:09:57.079
they implemented a
897
01:09:57.619 --> 01:09:59.239
small limit for new accounts
898
01:09:59.619 --> 01:10:12.840
and once you trade a few times, that with other counterparties who were signed, then they'll sign your account to build this, kind of like decentralized level of trust. They're not signing your identity so much as they are your the hash of your payment accounts.
899
01:10:13.460 --> 01:10:13.960
So,
900
01:10:14.340 --> 01:10:17.880
I guess, yeah, you could consider that payment accounts and identity.
901
01:10:18.895 --> 01:10:32.440
902
01:10:32.820 --> 01:10:51.930
or or use it in any way, it forms an identity. Now, let's not confuse, like, personal identity, like, you as a person with that identity. Identity just means, like, I could be a dog on the Internet, but I'm this hash of this dog. Right? So, yeah, I I think it's a scary word, but it's kind of it's a little overblown. And Yeah. Like, piggybacking off that, like, I think maybe,
903
01:10:53.050 --> 01:11:06.909
904
01:11:07.769 --> 01:11:12.385
how, you know, to make this a little bit more concrete, would you say that, you know, if DIDs
905
01:11:13.165 --> 01:11:15.905
should be included in the lightning spec to
906
01:11:16.364 --> 01:11:18.605
be that form of identity? Or how would,
907
01:11:19.324 --> 01:11:25.230
DIDs compare and contrast to the current form of identity on the Lightning Network which is the public key and IP address?
908
01:11:25.530 --> 01:11:39.750
909
01:11:40.369 --> 01:11:53.665
it's mostly a data model. So it's like Okay. Every type of DID method, right, you could create one for Ion, spits out the same PKI document so that everyone can like, you know, in a standard way can find the keys and routing endpoints. Like how much data?
910
01:11:54.159 --> 01:12:03.380
911
01:12:03.735 --> 01:12:13.590
912
01:12:14.390 --> 01:12:39.090
the equivalent would be like DNS. Right? You look up a zone file? Sure. Right? It's that. You don't put your website in zone file. Right? So, it's really important because I think it gives efficient lookups and and locational finding that could be even better potentially than some of the construction lightning that are required because they're doing path finding Yeah. Like, liquidity and stuff. Okay. It kinda feels like, the more modern way to do, decentralized web of trust. Like, back in the day, we would have,
913
01:12:39.795 --> 01:12:42.534
914
01:12:42.994 --> 01:12:46.614
and sign each other's PGP key. But now, it seems like maybe
915
01:12:47.560 --> 01:12:49.659
there's also gonna be the entry of
916
01:12:50.040 --> 01:12:50.540
corporations
917
01:12:51.000 --> 01:12:57.340
that will basically KYC people and sign their key for them. So, you'll have at wiz at
918
01:12:58.344 --> 01:13:00.445
Twitter for example or maybe some
919
01:13:00.824 --> 01:13:03.485
block or square. You could be wizsquare
920
01:13:04.184 --> 01:13:09.660
and that's kyseed. But if you're at wiz at bisque or something you know maybe it's not kyc,
921
01:13:11.160 --> 01:13:22.114
922
01:13:22.550 --> 01:13:32.614
and you accrue reputational trust. Like, I get a degree from an institution or something like that. Those are all verifiable credentials. Right? Like LinkedIn may soon accept these and say, oh, I can verify
923
01:13:32.995 --> 01:13:33.895
that this institution
924
01:13:34.275 --> 01:13:35.175
that has a DID
925
01:13:35.795 --> 01:13:45.610
signed this proof, and it is you who's in with zero knowledge proving that you actually are the the holder of the keys that back it. So absolutely. Yeah. So my understanding is that we're doing
926
01:13:45.990 --> 01:13:49.370
927
01:13:50.054 --> 01:13:54.955
928
01:13:55.335 --> 01:14:03.070
with, MSR colleagues, when I was at Microsoft that we are looking to implement in the community that's, yes, it's, you know, it's motor snark. Right?
929
01:14:03.530 --> 01:14:05.310
And it is a zero knowledge
930
01:14:05.715 --> 01:14:19.970
credential that you could say, like, let's say a credential of, like, 10 things you can prove in it. You could do selective disclosure where you only want to disclose a few of them. You could do predicates where you say, I'm just over this age, like, you know, range proof stuff like that. And those can be more advanced constructions of credentials.
931
01:14:20.670 --> 01:14:31.545
932
01:14:32.010 --> 01:14:34.910
I'm very excited for the future of the redecentralization
933
01:14:36.090 --> 01:14:44.475
of the web, which will hopefully be using some of these exciting technologies that we discussed today and which definitely will not be some kind of
934
01:14:44.935 --> 01:14:45.435
web
935
01:14:45.975 --> 01:14:47.275
3, VC backed,
936
01:14:47.815 --> 01:14:49.115
shitcoin, dino,
937
01:14:49.575 --> 01:14:51.560
decentralized in name only block
938
01:14:52.040 --> 01:14:59.340
chain. It's going to be the real decentralized web and it's going to use Bitcoin and Bitcoin only. Yeah. Absolutely.
939
01:15:09.980 --> 01:15:11.840
940
01:15:14.620 --> 01:15:16.860
941
01:15:17.425 --> 01:15:20.085
So just a quick shout out to the guys doing the,
942
01:15:20.545 --> 01:15:25.685
workshops at the back. It it is a little bit noisy. So if you wanna, have conversations,
943
01:15:26.460 --> 01:15:28.780
please, go on the outside because, you are
944
01:15:29.500 --> 01:15:30.880
you you really are gonna wanna
945
01:15:32.140 --> 01:15:36.705
you you really are gonna wanna hear what these these incredible people have to say today.
946
01:15:37.405 --> 01:15:44.110
I think you can come back in at 3 o'clock and use the tables to to do your your workshops and your and your hacky stuff after. So,
947
01:15:45.230 --> 01:15:54.605
just a just a note on that. So, yeah, welcome, everyone. Thank you for for joining us today. So we're gonna be talking about improving and 10xing the the Bitcoin
948
01:15:55.065 --> 01:15:58.844
development experience. I've got some amazing panelists with me today.
949
01:15:59.224 --> 01:16:01.724
So my name's Connor. I work at Spiral.
950
01:16:02.250 --> 01:16:04.110
We're focused on improving,
951
01:16:04.810 --> 01:16:05.470
the Bitcoin
952
01:16:06.010 --> 01:16:07.230
open source ecosystem,
953
01:16:08.330 --> 01:16:12.645
via a number of different initiatives, some of which we'll kinda go into detail today.
954
01:16:13.105 --> 01:16:21.020
So we'll start by just, getting to know our our panelists a little bit today. So, Steve, if you wanna start. Sure. Yeah. So I'm Steve Myers, and I'm a contributor
955
01:16:21.320 --> 01:16:25.135
956
01:16:26.094 --> 01:16:31.635
as are a bunch of other developers on our project. So, and, yeah, we'll talk about what BDK is in a bit.
957
01:16:32.320 --> 01:16:33.700
958
01:16:34.080 --> 01:16:36.580
I hang out in the Bitcoin design community.
959
01:16:37.120 --> 01:16:41.780
I've I guess, I spend a lot of my time contributing to the Bitcoin design guide,
960
01:16:42.375 --> 01:16:45.915
and other open source design related projects in Bitcoin.
961
01:16:47.255 --> 01:16:48.795
962
01:16:49.310 --> 01:16:51.890
I work on the lightning dev kit project,
963
01:16:52.590 --> 01:16:54.610
sponsored by Spiral as well,
964
01:16:54.990 --> 01:16:56.530
or I guess work for Spiral.
965
01:16:57.125 --> 01:16:58.905
So our goal being to,
966
01:16:59.365 --> 01:17:02.505
allow people to build custom lightning nodes and lightning integrations,
967
01:17:03.445 --> 01:17:06.210
super easy, and we take all the hard work out of that.
968
01:17:07.010 --> 01:17:26.410
969
01:17:26.890 --> 01:17:31.469
what the experience has been like over the past couple of years in trying to build
970
01:17:31.845 --> 01:17:50.615
971
01:17:51.655 --> 01:17:57.515
And then, of course, a lot of them didn't have the latest modern features that you would want in a in a Bitcoin wallet.
972
01:17:58.190 --> 01:18:02.449
Teamed up with Avakos Fellini, and he's got you know, there's this great library that
973
01:18:02.830 --> 01:18:06.370
uses another library set of projects called Rust Bitcoin, which provide,
974
01:18:06.885 --> 01:18:08.665
you know, all the primitives you need,
975
01:18:09.205 --> 01:18:15.225
and then, you know, put put together with another Rust Bitcoin project for mini scripts so you get descriptor support
976
01:18:15.739 --> 01:18:18.880
and, you know, of course SegWid and all, you know, talking to different,
977
01:18:19.420 --> 01:18:20.559
Bitcoin back ends.
978
01:18:21.260 --> 01:18:26.965
It just, you know, basically gives you all the features. So then one of the things I focus on is making that available on mobile.
979
01:18:27.505 --> 01:18:33.739
So, you know, with Kotlin and Swift, so you can just, you know, as a developer, you just can pick up this library now and,
980
01:18:34.199 --> 01:18:36.380
and build a Bitcoin wallet for desktop
981
01:18:36.840 --> 01:18:43.405
982
01:18:43.945 --> 01:18:45.965
assuming they haven't been as well maintained,
983
01:18:46.905 --> 01:19:23.815
984
01:19:24.195 --> 01:19:24.695
985
01:19:25.074 --> 01:19:26.935
Bitcoin development has kind of
986
01:19:27.380 --> 01:19:28.040
987
01:19:28.420 --> 01:19:32.840
Yeah. So, I mean, I I came at this from from I worked on Bitcoin Core for many, many years,
988
01:19:33.380 --> 01:19:35.880
and and have now kind of moved over to the lightning space.
989
01:19:36.905 --> 01:19:40.744
You know, historically, when I when I started working on Bitcoin many
990
01:19:41.304 --> 01:19:42.764
11 years ago or something,
991
01:19:43.304 --> 01:19:43.965
there weren't
992
01:19:44.510 --> 01:19:48.610
any funding for Bitcoin Core developers. There weren't even any full time Bitcoin Core developers.
993
01:19:49.070 --> 01:19:51.170
Now that, you know, obviously,
994
01:19:51.685 --> 01:19:55.625
can always use more resources probably. But that's kind of a solved problem.
995
01:19:56.485 --> 01:20:03.820
There's a ton of people working on Bitcoin Core. Bitcoin Core has a lot of really smart people working on it. There's room to grow. But
996
01:20:05.080 --> 01:20:09.500
everything further up the stack doesn't. Right? And so BDK has been really awesome.
997
01:20:10.225 --> 01:20:18.565
Steve talked about all these, like, libraries that have been kind of one offs that people have thrown out in various languages, and they're not well maintained, and they're not really all that usable.
998
01:20:19.040 --> 01:20:21.219
And so having a common base
999
01:20:21.520 --> 01:20:23.219
for on chain stuff is awesome.
1000
01:20:24.159 --> 01:20:26.900
But we looked at it as the spiral team, and we
1001
01:20:27.360 --> 01:20:28.020
also concluded
1002
01:20:28.685 --> 01:20:32.065
there needs to be something like this for lightning, too, right? Is
1003
01:20:33.485 --> 01:20:39.060
that lightning is even more complicated than the on chain stuff. There's even more to get right. There's even more to do.
1004
01:20:39.840 --> 01:20:40.340
And
1005
01:20:40.880 --> 01:20:47.860
we've seen several kind of mobile lightning wallets. We've seen several lightning wallets come around. And it's a full time job for a team of 3 or 4 people
1006
01:20:48.824 --> 01:20:55.324
to not only build a lightning implementation, but actually keep up with all of the changes happening in lightning and everything going on in lightning.
1007
01:20:56.344 --> 01:20:59.469
And so our goal is to abstract that out, right?
1008
01:21:00.090 --> 01:21:06.829
And make it so that you don't need a team of 4 full time engineers to build a great Bitcoin wallet,
1009
01:21:08.475 --> 01:21:08.975
where
1010
01:21:10.875 --> 01:21:13.135
there's frankly some work to be done. There's
1011
01:21:13.915 --> 01:21:19.889
some good wallets out there that need to grow, need to add lightning support, need a little better UX here or there,
1012
01:21:20.349 --> 01:21:23.165
need a little better design help for the design community folks.
1013
01:21:25.085 --> 01:21:32.385
And we want to see a lot more, especially things like Bitcoin Beach Wallet, things like where there's a localized community
1014
01:21:33.030 --> 01:21:43.805
that has some local features they might need, or or where, you know, integration with some local services makes more sense, and really enable people to build good user experiences around bitcoin that, you
1015
01:21:44.185 --> 01:21:51.600
know, it's just currently you have to be a great low level engineer to do that. And finding a great low level engineer who is also good at building
1016
01:21:51.980 --> 01:21:56.320
UX and good design is not I mean, basically it doesn't exist, right?
1017
01:21:56.864 --> 01:22:04.085
And so trying to abstract away that low level stuff so that we can do all that work for you, and then you can focus on how do you build a great user experience.
1018
01:22:04.440 --> 01:22:07.180
1019
01:22:07.640 --> 01:22:09.320
yeah. Random floor. It's like,
1020
01:22:10.680 --> 01:22:30.550
it's this idea of, like, allowing people who operate at different levels in a in a stack to really specialize in specific areas. So, like, you say, if you're a protocol engineer, you can operate and build the tools that make it easy for application developers to build front ends and and who work with more UI and UX focused people, it can really hone in in those areas. So,
1021
01:22:31.915 --> 01:22:36.014
we've kind of identified that the developer experience is something that is is pivotal
1022
01:22:36.554 --> 01:22:38.735
to 10x in the the Bitcoin development,
1023
01:22:39.435 --> 01:22:39.935
experience.
1024
01:22:42.280 --> 01:22:56.614
Steve Myers and and Matt Crowder, you're working on some projects to to do that one being the BDK and the LDK. So do you wanna explain to the people what what the BDK actually is? Right. So, BDK stands for Bitcoin DevKit, the name inspired by LDK, which had,
1025
01:22:57.255 --> 01:22:57.995
1026
01:22:58.360 --> 01:23:01.020
name. And the idea that we're focused is on
1027
01:23:01.720 --> 01:23:10.905
building descriptor based wallets. So these are on chain wallets and you basically get all the modern features. You know you have, like I said, so descriptors are a way of defining the,
1028
01:23:11.625 --> 01:23:19.310
the spending conditions for wallet, but it's, you know, it it provides you a way to create those scripts in a way that's portable between different wallet implementations,
1029
01:23:20.090 --> 01:23:26.750
as well as well reviewed and audited. Like, you can easily look at a descriptor and figure out what it does for some more complicated spending conditions.
1030
01:23:27.835 --> 01:23:30.335
As Matt was saying, you know, people might wanna build applications
1031
01:23:30.715 --> 01:23:31.535
for specific,
1032
01:23:31.915 --> 01:23:32.575
you know,
1033
01:23:33.035 --> 01:23:48.864
specific communities, but it could also be like you're a company and you wanna build something in house that uses Bitcoin. You can now you know, you don't need to have a bunch of bitcoin protocol engineers in house. You can take this library. It's gonna be reviewed by, you know, the Bitcoin community. You can contribute back to it if you have no features.
1034
01:23:49.244 --> 01:23:52.625
We had one one person that was contributing back to our project,
1035
01:23:53.179 --> 01:24:00.559
and, he had a use where he wanted to do proof of reserves. So he could easily, within his company, create a proof of reserve library using BDK
1036
01:24:00.975 --> 01:24:17.050
and then, you know, release it both open source. And now any company that has that need can can use these 2 libraries together. This is, like, an example of somebody that, you know, didn't have to start from scratch. And, it's it's a really important thing too that a lot of things are changing on LDK, but things are still changing on BDK too. You know, Taproot is coming out.
1037
01:24:17.945 --> 01:24:21.245
You know, it's gonna be it's gonna be difficult for somebody to,
1038
01:24:21.625 --> 01:24:34.290
you know, implement a Taproot wallet from scratch. But you start with BDK, and BDK is gonna be supporting Taproot. Now you can just immediately get that feature in whatever application you're building. So that's part of the power. Fantastic. And on on the LDK side?
1039
01:24:34.750 --> 01:24:35.570
1040
01:24:36.665 --> 01:24:50.030
so basically the same thing. Right? But but on the lightning side, right? So the lightning protocol, like I mentioned, is it's complicated. And it's really hard to get right. And it's really important to get right. You get it wrong, you're you or your customers lose money, and that's
1041
01:24:50.410 --> 01:24:51.950
not a great user experience.
1042
01:24:53.155 --> 01:25:05.869
So so we try to, you know, do something similar where we we do all of the lightning state machine. We do all of the the logic around how you how you route payments and how you, how you even forward payments if you're running a non kind of mobile node,
1043
01:25:06.250 --> 01:25:08.510
and and do all of that stuff.
1044
01:25:08.889 --> 01:25:09.630
And then
1045
01:25:09.995 --> 01:25:19.989
we expose it as kind of the individual building blocks, and they all work well together, and it's easy to hook them up together. Or you can separate them out, and you can say I'm gonna run the routing part on a server, and I'm gonna,
1046
01:25:20.690 --> 01:25:38.320
query that from the client, and then I'm gonna do my backups by doing live updates against, you know, Icloud or or whatever you wanna do. You know, we give just neat little interfaces for all of the different pieces that aren't kind of corded lightning, but, like, how do you store your data? How do you, where do you get your private keys from?
1047
01:25:39.260 --> 01:25:40.960
How do you sync the chain?
1048
01:25:41.420 --> 01:25:43.360
All these kinds of things that
1049
01:25:44.095 --> 01:25:55.790
you could have many different ways you wanna do it. We provide just interfaces for that, and you have to go kinda hook it up to the right places, but you don't have to do all of the kind of hard work of building a lightning state machine.
1050
01:25:56.810 --> 01:26:05.565
And so we we do that in Rust as well, and then have, like BDK language bindings in a number of different languages and more continuing to come so the developers
1051
01:26:06.105 --> 01:26:11.880
can focus on how they wanna build a Bitcoin application and how they wanna have the UX work.
1052
01:26:12.420 --> 01:26:15.719
And we can just kind of make it easy to to
1053
01:26:16.495 --> 01:26:18.915
hook it up and then have lightning suddenly running.
1054
01:26:19.375 --> 01:26:20.755
1055
01:26:21.375 --> 01:26:22.675
you have developers
1056
01:26:23.520 --> 01:26:30.500
working across various different stacks whether it be on desktop or mobile on embedded devices whatever it might be
1057
01:26:31.025 --> 01:26:35.605
also working in different programming languages as well. So how do you approach
1058
01:26:35.905 --> 01:26:39.365
trying to accommodate for all of those different types of users?
1059
01:26:39.825 --> 01:26:43.710
1060
01:26:44.010 --> 01:26:45.390
you know, feature rich
1061
01:26:45.770 --> 01:26:54.755
Bitcoin and lightning stack, but then it's a whole another thing to support that ecosystem around it for mobile. So you have to have, you know, you have to support Android. You have to support iOS. And in those
1062
01:26:55.170 --> 01:27:09.785
environments, you wanna support those languages. So you need to support Kotlin or Java on Android and you wanna support Swift. You know that's sort of like just you know the you know that's sort of the, you know the price of admission is you just need to support that. And to do that
1063
01:27:10.130 --> 01:27:18.455
as well as supporting the core library gives you that just kind of, you know, easy pick it up off the shelf and you can start building your app, whatever environment you want.
1064
01:27:19.975 --> 01:27:21.755
Which is hard for, you know, hard
1065
01:27:22.055 --> 01:27:34.360
1066
01:27:34.994 --> 01:27:43.094
1067
01:27:43.970 --> 01:27:48.070
60% of the work we do. The other 40 is actually doing lightning stuff.
1068
01:27:48.850 --> 01:27:52.070
Yeah. I mean, we built a language bindings framework from scratch.
1069
01:27:52.474 --> 01:27:59.775
We sat down and said, like, all of these existing lang you know, we have a rich object oriented interface with different classes and different
1070
01:28:00.239 --> 01:28:09.275
interfaces that you have to plug into and and use and we want to support that in different languages. Turns out there are no language bindings frameworks to support this. It just doesn't exist.
1071
01:28:10.055 --> 01:28:27.715
You know, all the all the existing language bindings frameworks are are for people who are saying, like, well, I've got my my app and it's written in in Java or Swift or whatever, and then this this one function is too slow, and I have an implementation in c I wanna call, and it's like one function and it's a pure function and it doesn't doesn't have all of these interdependencies
1072
01:28:28.094 --> 01:28:28.835
or whatever.
1073
01:28:29.614 --> 01:28:36.340
And there's a ton of frameworks for that and they're really great. And then you want to have, well, I have these classes. And I
1074
01:28:37.200 --> 01:28:45.205
want it to feel like a native interface where you're instantiating these classes that are secretly written in Rust, but they're actually, you know, exposed to you in Java or Swift.
1075
01:28:46.145 --> 01:28:52.710
And then you have interfaces that you want to write an implementation of in Java that the Rust code is actually calling all the way into.
1076
01:28:53.730 --> 01:28:56.390
Yeah, it turns out that didn't exist. So we had to we spent
1077
01:28:56.784 --> 01:28:57.685
about 2 years
1078
01:28:58.545 --> 01:29:02.244
of engineering time a little more, actually building that from scratch.
1079
01:29:04.304 --> 01:29:04.745
And,
1080
01:29:05.185 --> 01:29:07.910
yeah. It was an insane amount of work,
1081
01:29:08.290 --> 01:29:14.150
but it ended up working really well. And so, you know, Cash App shipped with with LDK powering their lightning node,
1082
01:29:14.965 --> 01:29:18.585
And they didn't write a single line of Rust. They didn't look at a single line of Rust.
1083
01:29:19.045 --> 01:29:21.625
They wrote it all in Java, or I guess they wrote it all in Kotlin.
1084
01:29:22.405 --> 01:29:23.145
But so that
1085
01:29:23.710 --> 01:29:27.810
turned out to be a good investment. It worked incredibly well at the end of the day.
1086
01:29:28.350 --> 01:29:32.530
But but that ends up being almost all of our work is is a combination of that
1087
01:29:32.835 --> 01:29:43.220
And also just thinking about how do we design an interface that is hard to misuse? How do we design an interface that's either gonna, like, immediately spontaneously combust and the application won't even run,
1088
01:29:43.600 --> 01:29:44.100
or
1089
01:29:44.720 --> 01:29:45.780
it works right
1090
01:29:46.080 --> 01:29:47.700
and you can't lose money,
1091
01:29:50.435 --> 01:29:52.215
and the payments go through reliably,
1092
01:29:52.835 --> 01:29:53.335
and
1093
01:29:53.795 --> 01:29:55.255
it all works. Right? So
1094
01:29:56.370 --> 01:29:57.590
trying to design interfaces
1095
01:29:58.610 --> 01:30:00.070
is hard, hard form, right?
1096
01:30:00.449 --> 01:30:05.725
And so that ends up being the other half of our work is just how do we make sure that this interface is gonna be robust and users
1097
01:30:06.025 --> 01:30:07.565
are gonna know how to use this correctly
1098
01:30:08.025 --> 01:30:09.325
just by looking at it,
1099
01:30:10.185 --> 01:30:34.370
1100
01:30:35.950 --> 01:30:37.090
1101
01:30:38.555 --> 01:30:40.815
So do you wanna talk to us a little bit about,
1102
01:30:41.275 --> 01:30:42.975
the Bitcoin design community?
1103
01:30:43.835 --> 01:30:50.600
What that is, what that f is, what type of things are involved on on that side of things, and then we'll we'll dive into a bit of how
1104
01:30:51.220 --> 01:30:51.960
we tie
1105
01:30:52.260 --> 01:30:54.440
the fact that we have these awesome SDKs
1106
01:30:55.215 --> 01:31:02.675
and with the the UI expertise that come from that community as well. Yeah. So the Bitcoin design community is, just kind of a
1107
01:31:03.179 --> 01:31:03.679
1108
01:31:03.980 --> 01:31:05.119
community of designers
1109
01:31:05.420 --> 01:31:06.320
and creatives,
1110
01:31:06.860 --> 01:31:10.159
who are interested in, working on open source, Bitcoin.
1111
01:31:10.765 --> 01:31:19.105
You know, I guess the the kind of central thesis of would be thesis of it would be that, you know, Bitcoin is the best money, so it should have the best user experience.
1112
01:31:20.179 --> 01:31:27.719
And, you know, I think a lot of people would agree that it's, you know, it's currently lacking. A lot of people find Bitcoin difficult to use. There's a lot of uncertainty
1113
01:31:29.315 --> 01:31:30.695
for people about how to
1114
01:31:31.075 --> 01:31:32.855
self cut to do their own Bitcoin.
1115
01:31:34.114 --> 01:31:34.595
So,
1116
01:31:34.995 --> 01:31:41.170
kind of the flagship product of the design community is this project called the Bitcoin design guide. And
1117
01:31:41.790 --> 01:31:45.650
the Bitcoin design guide is you can think of it kind of as, like, human interface guidelines
1118
01:31:46.165 --> 01:31:49.945
for bitcoin products. If you're building a non custodial
1119
01:31:50.804 --> 01:31:52.025
bitcoin product,
1120
01:31:53.000 --> 01:31:53.500
You
1121
01:31:53.960 --> 01:31:57.180
can turn to this guy to look for principles and techniques
1122
01:31:57.640 --> 01:32:01.740
that you can employ to build a better experience for your users. And
1123
01:32:02.415 --> 01:32:20.835
it might be good to differentiate a little bit. Like, you you said the word UI. Like, you know, it's also, I think, important to differentiate between, like, UI, like, just the the thing that the user sees on screen, like, the the the specific color of the button or the font choice. Right? That that I consider to be more UI. But, like, UX,
1124
01:32:21.135 --> 01:32:26.735
I consider to be a little bit broader than that. Like, we're we're trying to think about, like, the whole experience the user has to go through.
1125
01:32:27.360 --> 01:32:29.219
You know, is the
1126
01:32:29.600 --> 01:32:36.580
application you're building, let's just say it's a wallet, for example. Do when they turn it on for the first time, do they know what they're supposed to do
1127
01:32:37.485 --> 01:32:39.185
when they receive their first Bitcoin?
1128
01:32:41.245 --> 01:32:43.185
Is there a backup facilitated?
1129
01:32:44.909 --> 01:32:50.289
How is the user still using it a year down the road? Are they still using it a 5 years down the road? And
1130
01:32:50.590 --> 01:33:02.285
is the way that they're using it changing? So these are kind of, like, all, you know, things that I would consider kind of under the umbrella of user experience. And I guess kind of, like, similar to LDK or, like, BDK and LDK is that,
1131
01:33:03.200 --> 01:33:15.635
if you think about, like, why should every single developer have to repeat the same work over and over again? Like, let's find what works. Like, let's, you know, build our our good, you know, lightning state machine and just put that into a toolkit, and everybody can use that.
1132
01:33:15.935 --> 01:33:18.435
You know, similar with design, like,
1133
01:33:18.975 --> 01:33:19.775
we don't need,
1134
01:33:20.175 --> 01:33:20.675
everybody
1135
01:33:20.975 --> 01:33:31.139
to come up with a new design solution every time. Like, if some other wallet or Bitcoin service has come up with a good design solution that makes it really easy to use for people,
1136
01:33:31.625 --> 01:33:37.485
why don't we document that in an open source way? And then other projects can take, you know, take advantage of that.
1137
01:33:38.185 --> 01:33:38.685
1138
01:33:39.140 --> 01:33:44.040
And, just to to touch on a few things around, like, the design guide and,
1139
01:33:45.060 --> 01:33:46.280
kind of documenting
1140
01:33:46.739 --> 01:33:53.304
patterns that work regardless of, you know, what what wallet you're trying to build or what Bitcoin application you're trying to build.
1141
01:33:53.764 --> 01:33:56.664
Do you wanna talk maybe about a concrete example
1142
01:33:56.965 --> 01:34:04.760
and one that was, you know, announced earlier by by Myles and the Cash App team that the BIP 21 URIs and, like, how that's an example of
1143
01:34:05.505 --> 01:34:10.405
developers and designers who, you know, developers who have created the standard
1144
01:34:11.505 --> 01:34:24.215
and getting some some some aid, I guess, from from the UX side to kind of tie it together as, like, a concrete example? Yeah. Yeah. That that's a good one. So for if, if anyone didn't see the Cash App talk this morning, you know, Miles announced
1145
01:34:24.755 --> 01:34:25.974
1146
01:34:26.514 --> 01:34:32.695
But, yeah, one one of them in particular was this plan to kind of move to a new type of QR code or
1147
01:34:33.020 --> 01:34:36.000
using an existing type of QR code, but differently. And this,
1148
01:34:36.460 --> 01:34:43.955
you know, there's been this, you know, big conversation about it in the Bitcoin design community and, other open source Bitcoin communities,
1149
01:34:44.735 --> 01:34:47.475
about this. You know? Like, just as a real world example,
1150
01:34:48.080 --> 01:34:54.420
I think, you know, many of us witnessed this last year in El Salvador, just the difference in payment formats.
1151
01:34:56.255 --> 01:35:14.514
You know? For example, you go into, you know, like, a little bodega or pupuseria, and you wanna order something, and, you know, you ask to pay in Bitcoin, and, you know, there's usually some kind of toggle that they have to switch between an on chain, address QR code or a bolt 11 invoice QR code or proprietary Chivo QR code.
1152
01:35:15.215 --> 01:35:38.175
So you know? And there's just not a lot of education. People aren't sure what what what to do in in these situations. And you think about QR code. It's kind of like an ugly human unreadable thing. Like, you can't look at a QR code and just, like, know what's inside of it unless it tells you. So that was a big problem, and, you know, there's been many people have tried to come up with solutions for that, like, Galois, Bitcoin Beach. They had kind of a solution that they were experimenting,
1153
01:35:48.405 --> 01:35:53.845
But, I'm not sure exactly where the idea originated from. I first, I think, heard it from, you know, Pavlinx and,
1154
01:35:54.245 --> 01:36:02.400
you know, John Zohari and Steve Lee, some combination of those 3. But basically, this idea of, you know, just taking a a BIP 21,
1155
01:36:02.780 --> 01:36:03.420
which is this,
1156
01:36:04.335 --> 01:36:05.715
it's this payment URI
1157
01:36:06.415 --> 01:36:12.195
format. It's been around for about 10 years. I think you weren't you involved in I think I might have written the original spec. Yeah. I think I saw
1158
01:36:12.574 --> 01:36:13.790
your name on the paper.
1159
01:36:14.430 --> 01:36:18.430
But, you know, it's basically this idea we can use as an existing spec. We can put,
1160
01:36:19.150 --> 01:36:34.040
an optional parameter in there, put a lightning invoice in there. And I think the spec was very forward looking. Like, it it you know, you were kinda predicting that people would wanna use it in different ways, and we don't know how we're gonna wanna use it in 10 years. Well, this is an example of that. So we're now able to use this existing,
1161
01:36:34.500 --> 01:36:35.800
open source standard.
1162
01:36:36.179 --> 01:36:36.679
And,
1163
01:36:36.980 --> 01:36:42.135
you know, in the Bitcoin design community, we started experimenting with it. We built a website. We started documenting,
1164
01:36:42.675 --> 01:36:46.055
which wallets could support the standard and which, don't.
1165
01:36:46.515 --> 01:36:51.320
And we started reaching out to projects. And this is just an example of, like, you know, designers
1166
01:36:51.620 --> 01:36:57.000
can get involved in open source, and you can go on GitHub, and you can open an issue with a project
1167
01:36:57.325 --> 01:37:00.545
and make a bug report or a feature request or suggestions
1168
01:37:00.925 --> 01:37:02.225
for UI improvements.
1169
01:37:02.844 --> 01:37:04.920
And so we've gotten pretty positive feedback.
1170
01:37:05.300 --> 01:37:13.560
It's an ongoing discussion, but we've gotten very positive feedback. And even Cash App was able to get involved and have discussions with the Bitcoin Design Community
1171
01:37:14.685 --> 01:37:19.185
about about this project. So, it's really cool thing if you think about, like,
1172
01:37:20.205 --> 01:37:34.315
if you have the best UI, the slickest UI, the best UX in the world for your wallet, if every other Bitcoin wallet out there has has is hard to use, it hurts you too. Like, we're kind of all in this together when it comes to Bitcoin UX.
1173
01:37:35.415 --> 01:37:41.470
So, you know, Cash App, I thought it was really great that they, they got involved with the design community, got involved in these discussions.
1174
01:37:41.850 --> 01:37:45.630
And, now we've basically seen in a very short period of time,
1175
01:37:46.250 --> 01:37:47.470
designers and developers,
1176
01:37:48.090 --> 01:37:49.690
collaborating together to,
1177
01:37:50.090 --> 01:37:50.605
you know,
1178
01:37:51.005 --> 01:37:52.385
improve improve the UX.
1179
01:37:52.765 --> 01:37:56.705
1180
01:37:57.485 --> 01:38:03.560
developers and designers coming together. Like, sometimes we term like bridging bridging the gap between designers and developers
1181
01:38:04.180 --> 01:38:08.440
now that we have these development tools and and a design guide
1182
01:38:11.245 --> 01:38:17.025
Why why why is it important to to kind of bridge that gap? Is it the fact that now we can get more experimentation
1183
01:38:17.485 --> 01:38:18.465
happening quicker?
1184
01:38:19.260 --> 01:38:22.240
Is it the fact that, like, those tools just naturally,
1185
01:38:22.940 --> 01:38:24.480
bring bring those 2
1186
01:38:24.780 --> 01:38:27.840
users together? Like, what would you say about about that side of things?
1187
01:38:28.345 --> 01:38:31.485
1188
01:38:32.505 --> 01:38:41.650
you know, I think this is, like, a running problem in in, you know, software engineering and product development. This idea that, like, if you're if you're trying to build something and,
1189
01:38:42.350 --> 01:38:45.954
you you spend, you know, 6 months planning it out and then,
1190
01:38:46.974 --> 01:38:53.480
3 months building it and then, you know, 2 months testing it. And then eventually, by the time it it gets to market, it's like you,
1191
01:38:54.520 --> 01:39:07.405
you know, the the competitors beat you or users, you know, customers' demands have changed. So I think, like, what we've witnessed over, you know, the the past several decades is just that, you know, development cycles for products are are getting a lot. You know?
1192
01:39:08.360 --> 01:39:26.690
I hate to use this word, but I guess you'd say it's becoming more agile. Like, we're figuring out how to, we're figuring out how to, like, ship features quicker. And so an important part of that is, like, you don't want a situation where, like, the designer is, you know, building this perfect, you know, layout, and then I pass it over to the developer. And then, you know, the the developer,
1193
01:39:27.550 --> 01:39:34.845
you know, kinda has their own interpretation of it. And then, you know, by the time it hits the market, it's you know, something's been lost in translation.
1194
01:39:36.105 --> 01:39:49.850
I think, like, on the open source side, what's what I've witnessed, just in the design community is that, like, some of the most successful Bitcoin open source projects are one where the designers and the developers work very closely together, and they have, like, kind of a constant feedback loop.
1195
01:39:50.470 --> 01:39:55.665
So, like, if you come in and you say, you ask the designer, like, can you solve this problem for me? What's the answer to my
1196
01:39:56.125 --> 01:39:56.625
question?
1197
01:39:57.085 --> 01:39:58.785
And then take it and run with it.
1198
01:39:59.120 --> 01:40:19.730
You know, here's the thing. This isn't like a perfect science. Like, you know, like, there's not, like, one just answer to UI because it's gonna depend on, like, where you are in the world, what kind of customer you're trying to serve, you know, what your the needs of your community are. And so there's not just like, you know, this isn't like, you know, physics or something where we can like, you know, absolutely define something down to a molecule. So
1199
01:40:20.270 --> 01:40:20.910
the ongoing,
1200
01:40:21.230 --> 01:40:26.775
collaboration between the designer and developer, I think is so that, you know, you can test stuff, see what works,
1201
01:40:27.155 --> 01:40:32.375
and just very quickly find what works for the product or for the customer that you're trying to serve.
1202
01:40:32.710 --> 01:40:34.170
1203
01:40:36.230 --> 01:40:38.170
so just to recap a little bit, we have
1204
01:40:38.470 --> 01:40:42.385
the BDK, which is helping with on chain Bitcoin functionality,
1205
01:40:43.244 --> 01:40:51.460
exposing all these high level APIs. Similarly, on the LDK side, if you wanna integrate instant lightning payments into into any wallet or application.
1206
01:40:54.160 --> 01:40:56.875
What what types of what types of applications
1207
01:40:57.415 --> 01:41:05.115
and and are we seeing being built with, like, BDK, and then we'll go into LDK in a second. So yeah. Yeah.
1208
01:41:05.480 --> 01:41:06.380
1209
01:41:07.159 --> 01:41:16.775
so right now, you know, we primarily have sort of example applications. We we did I mentioned there was a a bank looking to use you know, looking at BDK for some proof of reserve stuff.
1210
01:41:18.195 --> 01:41:20.775
Kind of our big focus now is just getting
1211
01:41:21.235 --> 01:41:34.895
more, you know, more of the mobile stuff built out to support more mobile applications. And, you know, that's part of, you know, what I'm doing here and the rest of the BDK team is doing is just finding open source developers or finding closed source developers. Anybody who wants to build something using
1212
01:41:35.275 --> 01:41:36.335
on chain Bitcoin
1213
01:41:37.035 --> 01:41:41.215
and, you know, getting to know them and getting to solve their problems with BDK.
1214
01:41:42.370 --> 01:41:51.365
You know, I don't think we have any big, like, commercial programs yet using BDK, but the goal is we we hope to soon yeah. We're certainly that's our that's our goal is to make that happen. Yeah.
1215
01:41:52.005 --> 01:41:56.985
1216
01:41:57.925 --> 01:42:01.200
And so we have so Cash App was our first
1217
01:42:01.840 --> 01:42:05.700
user to go live in a big way. It was actually the the second
1218
01:42:06.240 --> 01:42:07.620
user to start integrating
1219
01:42:08.534 --> 01:42:09.034
overtorments
1220
01:42:09.415 --> 01:42:10.395
back here somewhere,
1221
01:42:10.775 --> 01:42:11.675
from blue wallet,
1222
01:42:12.135 --> 01:42:15.915
suffered through a lot of the pain of of some of our very early alpha language bindings,
1223
01:42:16.935 --> 01:42:17.435
projects.
1224
01:42:18.250 --> 01:42:21.630
And so they have they're they're more in flight as well. Obviously,
1225
01:42:22.570 --> 01:42:25.469
you know, building for mobile is is just a little
1226
01:42:25.864 --> 01:42:38.610
harder in almost every way, not only on the language bindings end, but but also especially on the lightning end. There's just so many more things you wanna get right to have a really great user experience, especially as a as a non custodial end user application.
1227
01:42:40.005 --> 01:42:43.305
And so cache app beat them to the punch. It's a little easier to build
1228
01:42:43.845 --> 01:42:48.105
a custom Lightning node that is just custodial than the non custodial.
1229
01:42:49.320 --> 01:42:50.540
But but it highlights
1230
01:42:50.920 --> 01:42:51.980
the the very different
1231
01:42:52.360 --> 01:42:54.940
uses for LDK and projects like this,
1232
01:42:55.535 --> 01:42:56.035
where
1233
01:42:56.575 --> 01:43:02.595
Cash App is a large corporate. They have a ton of back end infrastructure that existed already for all of their existing.
1234
01:43:03.080 --> 01:43:05.340
Obviously, Cash App does a whole lot more than Bitcoin.
1235
01:43:06.840 --> 01:43:11.659
And they really wanted a lightning node that tightly integrated with all of that infrastructure. Right? So
1236
01:43:12.245 --> 01:43:16.025
using their own logging infrastructure, their own database infrastructure, their own
1237
01:43:16.725 --> 01:43:18.345
node failover and
1238
01:43:20.150 --> 01:43:26.410
hosting infrastructure, all of the stuff that they already had, that they wanted their lightning node to really integrate well with that. And just taking
1239
01:43:26.710 --> 01:43:29.690
something like CLightning or LND, which which are great,
1240
01:43:30.105 --> 01:43:38.889
but in running it off the shelf, it doesn't provide them that. Right? And so they wanted to build something super custom. And they were able to, in in a number of months, put together
1241
01:43:39.270 --> 01:43:41.610
a a full lightning node from scratch that,
1242
01:43:42.070 --> 01:43:49.025
used LDK to do all of the kind of lightning parts, but then integrated and worked in exactly the way they wanted lightning node to work for them.
1243
01:43:49.405 --> 01:43:51.345
On the on the other side, you know, blue wallet,
1244
01:43:52.205 --> 01:44:10.825
just completely different scenario. But again, where it's they already had an on chain, non custodial wallet. They already synced the blockchain. They already had key derivation. They already have had a backup system. You know, they already had all of these pieces and they didn't wanna, you know, take something like lnd and try to make it run on mobile, and then,
1245
01:44:11.205 --> 01:44:21.130
sync the chain twice, and have 2 separate key derivation systems, and have so, you know, they wanted a lightning node that worked with their existing infrastructure and actually integrated
1246
01:44:21.510 --> 01:44:25.915
into the app, and not something that just was completely fresh from scratch,
1247
01:44:26.855 --> 01:44:41.685
or was from scratch kind of for them. And so there again, you know, this LDK where it's really just building blocks. You know, we provide a bunch of different building blocks and some sample implementations, and you can take the pieces you want and hook them up in the way you want and end up with a lightning node that works in exactly the way you want. So
1248
01:44:43.025 --> 01:44:44.885
being able to build super tailored
1249
01:44:45.425 --> 01:44:47.525
systems for exactly what you need
1250
01:44:48.145 --> 01:45:02.675
1251
01:45:03.375 --> 01:45:09.155
on memory storage, background tasking, all of these kind of things. We are seeing something like Sensei
1252
01:45:09.640 --> 01:45:10.300
which is
1253
01:45:11.560 --> 01:45:13.739
a, I guess, a lightning of implementation
1254
01:45:14.040 --> 01:45:16.219
based off of LDK as well,
1255
01:45:16.600 --> 01:45:17.100
which
1256
01:45:17.665 --> 01:45:22.965
we hope might be in the in the Umbral app store soon and, you know, might be instances where, although,
1257
01:45:23.265 --> 01:45:34.810
out of the box, it's not really designed to be like an out of the box node experience. Like you have the tools to to make a custom node yourself right? So that's really cool. And on on the on the Bitcoin
1258
01:45:35.350 --> 01:45:36.330
design side,
1259
01:45:37.015 --> 01:45:42.715
although you talk about the the user experience and and getting developers to work with designers to to build, you know,
1260
01:45:43.175 --> 01:45:46.235
customer facing stuff like wallets and other types of applications,
1261
01:45:46.720 --> 01:45:52.500
What other things do we see from the Bitcoin design community around art and narrative
1262
01:45:52.800 --> 01:45:54.580
and and all of these kind of things?
1263
01:45:55.175 --> 01:45:56.155
1264
01:45:56.855 --> 01:46:01.755
there's there's a lot a lot of different projects, you know, in the design community other than just the design guide.
1265
01:46:02.215 --> 01:46:10.790
You know, around art, I'd say, yeah, I mean, there's a whole channel in our, our Slack workspace where people post, like, art they're working on and stuff, which is really cool.
1266
01:46:11.250 --> 01:46:17.465
You know, we've gotten involved with other you know, there's a lot of, just kind of, I guess, like, collaborations, you'd say,
1267
01:46:18.244 --> 01:46:28.500
you know, we're which is basically somebody's doing a project on Bitcoin. They come to us, and, you know, they might need some help with something. And, you know, we'll put together a call and people in the community who might wanna help this project,
1268
01:46:30.545 --> 01:46:52.245
can jump in and help out. And so, you know, like, on the the narrative side, you know, there was this Hello Bitcoin project that you were involved with, and, you know, it's kind of a video series that kinda teaches people the fundamentals of Bitcoin and why it's valuable. And several people in the community got involved with that and started working on the animation for that. And, also, just, like, with, like, wallet projects and stuff, I mean, there's currently a collaboration with JoinMarket.
1269
01:46:53.345 --> 01:46:59.620
I think, there's some people there's a team working on trying to redesign the UI for Bitcoin core, like the wallet,
1270
01:47:00.340 --> 01:47:01.240
portion of it.
1271
01:47:02.260 --> 01:47:07.275
There is, there's the Zeus a while, which has been a incredible, incredibly good collaboration.
1272
01:47:09.255 --> 01:47:12.315
There's, you know, also just some some, kind of
1273
01:47:12.820 --> 01:47:18.680
other flagship products. Next to the design guy would be, like, the UI kit and, the Bitcoin icons kit,
1274
01:47:19.140 --> 01:47:24.155
like, Kristoff, Ono, and Bosch. Like, those are basically kind of toolkits you can use. So,
1275
01:47:24.535 --> 01:47:31.100
you can, take the icons kit and install it as a viewer react module and just instantly have icons for your
1276
01:47:31.400 --> 01:47:32.460
your Bitcoin product.
1277
01:47:33.160 --> 01:47:36.220
You can use the the UI kit. It's a Figma prototype.
1278
01:47:36.525 --> 01:47:48.050
You know, so you can basically rip screens from that and incorporate them into your project. It's kind of like why why reinvent the wheel? Not to limit your creativity in any way, but it's a good starting point so you don't have to rebuild,
1279
01:47:48.750 --> 01:47:49.250
everything
1280
01:47:49.630 --> 01:47:59.975
from scratch. So there's really just a ton of of projects going on in the community. Sometimes new initiatives just kind of spring up out of nowhere without any central authority with school.
1281
01:48:00.675 --> 01:48:06.200
1282
01:48:06.900 --> 01:48:07.400
experience.
1283
01:48:08.580 --> 01:48:10.200
What what advice would you give
1284
01:48:10.660 --> 01:48:17.715
people who want to get involved in a space, whether it be contributing directly to BDK, LDK, and the design community
1285
01:48:18.415 --> 01:48:23.030
or taking these tools and and building applications themselves. Like, any any advice
1286
01:48:23.429 --> 01:48:35.535
1287
01:48:35.975 --> 01:48:50.815
developers sometimes aren't great talking to users. In UX, that's part of what they do to bridge the gap is they're basically collecting that user feedback about, you know, what does user wanna do? How do they wanna use it? You know, maybe they don't know what they want. And maybe what they want isn't actually what they want, what they think they want.
1288
01:48:51.435 --> 01:48:57.135
So that, like, that's obviously part of it part of it. But on the BDK side or on the on chain side,
1289
01:48:57.450 --> 01:49:00.670
just being able to take a library that's well reviewed, has examples,
1290
01:49:01.210 --> 01:49:03.710
allows you to kind of bootstrap whatever project you have.
1291
01:49:04.250 --> 01:49:05.370
And then I think it's also
1292
01:49:06.025 --> 01:49:31.400
you know, from the co in the closed source world, you might have all these companies replicating the exact same software. Mhmm. And that's pretty inefficient. You know, with open source and, you know, projects like LDK and BDK, you have all these people that wanna do the same thing, all these smart people that can just get together, combine forces, trade ideas back and forth, people all over the world. You're gonna get a a cross section of developers that you could never, as a company, afford to buy. Like, they're not for sale, most of them. So,
1293
01:49:31.780 --> 01:49:36.920
you you get that for free, and it's it's quite amazing. You know? It's it's, you know, it's a resource that
1294
01:49:37.245 --> 01:49:40.785
you can only get in an open source project. You're not gonna get that on a closed source project.
1295
01:49:41.245 --> 01:49:56.534
1296
01:49:56.835 --> 01:49:59.655
to, like, your Google or Apple calendar and all of that.
1297
01:50:02.070 --> 01:50:13.994
But just to dig into that a little bit more, I mean, you know, we we do calls, you know, talking about specific projects or issues, and it's all pretty open. So, I mean, I would really encourage you to just lurk.
1298
01:50:14.575 --> 01:50:20.155
You know, once you get on a call and you, you know, you can just hang out, you don't have to
1299
01:50:20.520 --> 01:50:25.420
ask questions or be involved if you don't want to. And you can just kinda see how an open source community
1300
01:50:25.800 --> 01:50:26.300
functions,
1301
01:50:27.000 --> 01:50:37.775
and then jump in and contribute, when you feel comfortable. And I'll just say that, like, I really encourage you to do it, especially, like, especially if you're, like, starting out your career and you're thinking of doing an unpaid internship.
1302
01:50:38.300 --> 01:50:50.824
I'd say don't do that. And I would say contribute to an open source project instead, because, you know, like Steve said, you're gonna meet, like, people all around the world with different ideas. You're gonna you're just, you you know, kinda connected to this hive mind of ideas.
1303
01:50:51.445 --> 01:51:02.770
And and, also, like, the open source contributions you make, people are gonna see them. So it's not gonna be, like, some proprietary thing that's hidden, and you have to kinda, like, hype yourself up. Like, people can see when you're doing your work in the open,
1304
01:51:03.265 --> 01:51:08.405
exactly what you're contributing. And those open source contributions, I think, will follow you from one job to the next.
1305
01:51:09.025 --> 01:51:16.570
1306
01:51:16.949 --> 01:51:19.085
in this space of, like, oh, I wanna
1307
01:51:20.125 --> 01:51:26.610
contribute to, like, the lowest levels of the protocol. And and that's awesome. You know? Those those spaces need as much contribute
1308
01:51:27.010 --> 01:51:29.750
contribution as they can get, as many eyes on it as they can get.
1309
01:51:30.449 --> 01:51:42.665
But they also have, over the last few years, started getting a lot of eyes on it, a lot of contributors, a lot of a lot of great people working on those projects. And further up the stack, you see a lot of these
1310
01:51:43.125 --> 01:51:50.740
awesome wallets that people have started building and that people use every day. And the real touch points for users on Bitcoin non custodial
1311
01:51:51.375 --> 01:51:53.155
have teams of 2, or 3, or 4 people.
1312
01:51:53.534 --> 01:51:54.034
Right?
1313
01:51:54.335 --> 01:51:55.394
And these projects,
1314
01:51:57.775 --> 01:52:00.900
they often don't even have a UX or a designer. Or they
1315
01:52:01.360 --> 01:52:04.267
have some contribution from the design community and work
1316
01:52:04.693 --> 01:52:06.420
or are turning to that increasingly.
1317
01:52:07.425 --> 01:52:20.750
And they don't have the resources to build out a lot of really awesome UX that they might want to build because they're too focused on some of these lower level things. And so there's there's a lot more room to contribute to some of these projects further up the stack,
1318
01:52:21.130 --> 01:52:25.915
and and make a much bigger impact on how people actually use and experience Bitcoin,
1319
01:52:27.495 --> 01:52:27.995
because
1320
01:52:28.375 --> 01:52:35.900
these are the real touch points. You know, people actually are using an app to to receive their Bitcoin, and they're not they're not using Bitcoin Core on a regular basis.
1321
01:52:36.840 --> 01:52:44.335
And so I think there's a lot of room to contribute to these communities, certainly, especially the design community and going out and actually working with some of these wallets.
1322
01:52:45.035 --> 01:52:50.415
And then there's also just a lot of room to to build great user experiences using Bitcoin.
1323
01:52:51.080 --> 01:52:56.460
You know, there's only probably a handful of wallets that that people strongly recommend that have great UX.
1324
01:52:58.014 --> 01:52:58.514
And,
1325
01:52:59.295 --> 01:53:12.409
you know, go build another one. You know? Go go build something that's that's unique and and has some other user experience that that you think might win yet more people over to Bitcoin and give them really the the experience that they want.
1326
01:53:12.710 --> 01:53:16.455
And there's there's a lot of room in the space for that kind of contribution.
1327
01:53:17.075 --> 01:53:27.659
1328
01:53:28.440 --> 01:53:28.940
And,
1329
01:53:29.320 --> 01:53:40.930
then just tell people where they can, like, find your projects again, the projects that you're working on again. So maybe, Steve, do you wanna start? Sure. Well, I mean, as a an on chain library, I think Taproot's probably the most exciting thing right now just
1330
01:53:41.410 --> 01:53:52.335
1331
01:53:52.635 --> 01:53:54.095
and also our Discord community.
1332
01:53:54.715 --> 01:54:00.350
If you have questions or have ideas for an app or you wanna contribute to the project, you know, you can chat with us there. We're
1333
01:54:00.730 --> 01:54:06.615
we're around the we're we're around the globe, so there's always somebody around online there. Awesome. And, Steven? Yeah. I'm,
1334
01:54:07.155 --> 01:54:46.454
1335
01:54:46.800 --> 01:54:53.780
after the the whole kind of rough consensus process. But I'm also curious to see what the design around that, how how we solve those design problems.
1336
01:54:54.575 --> 01:54:59.075
But, yeah, you can, like I said, you can follow what we're working on in Bitcoin design just by going to Bitcoin.design
1337
01:54:59.775 --> 01:55:00.515
on the web.
1338
01:55:00.895 --> 01:55:05.679
1339
01:55:07.179 --> 01:55:08.079
All of the things.
1340
01:55:08.860 --> 01:55:14.295
So, yeah, on on the l e k side, let's see. We're we're working on bolt 12 integration. So so improving,
1341
01:55:14.915 --> 01:55:17.895
the the way people pay in lightning to add,
1342
01:55:18.600 --> 01:55:25.260
to to address a number of shortcomings in the user experience and a number of different ways people expect to pay, especially things like static invoices.
1343
01:55:25.880 --> 01:55:26.780
So that's huge.
1344
01:55:27.955 --> 01:55:35.895
Shipping, 0Conf, and other features that are kind of needed for a first class good mobile user experience and what people expect from existing lightning wallets,
1345
01:55:36.800 --> 01:55:37.860
That's gonna be huge.
1346
01:55:39.040 --> 01:55:40.660
And and just helping people
1347
01:55:41.040 --> 01:55:42.820
start building a lot more
1348
01:55:43.495 --> 01:55:50.715
lightning walls and a lot better UX and helping people not have to spend 4 developers, 3 developers full time just to maintain
1349
01:55:51.070 --> 01:55:55.810
stuff and actually enabling people to really start experimenting more with lightning, start building more stuff, start,
1350
01:55:56.510 --> 01:56:02.605
extending more stuff, and and, you know, getting stuff getting to the point where we can start, you know, having people build good,
1351
01:56:03.625 --> 01:56:05.405
dollar denominated lightning channels,
1352
01:56:06.105 --> 01:56:08.285
on on a mobile app. You know, that's that's
1353
01:56:09.140 --> 01:56:14.600
gonna be awesome, but, man, we've got a lot of work to do to get there. And and, yeah, you see, you can go to the lightning devkit.org,
1354
01:56:15.460 --> 01:56:23.915
if you wanna check it out. And we have a Slack and a Discord community because, I don't know, we like we like making sure we're available to anyone who has questions.
1355
01:56:24.695 --> 01:56:44.260
So you can you can join one of those. There's always someone around to answer questions. And and, you know, like like all these great folks, we try to be pretty hands on and pretty available to to answer any questions and to help you figure out what's going on and how best to to build what you wanna build. Hey, Yousef. We got a lot of work to do. Back to work? Yeah. Back to work. Thank you for listening.
1356
01:56:53.034 --> 01:56:54.895
1357
01:56:55.515 --> 01:56:57.855
1358
01:56:58.240 --> 01:57:14.660
1359
01:57:15.360 --> 01:57:16.260
1360
01:57:17.440 --> 01:57:21.219
My name is Ben. I'm host of the BTC Sessions on YouTube.
1361
01:57:21.840 --> 01:57:26.335
I guess I'll I'll just let you guys introduce yourselves. We'll start with Paul. Sure. My name is Paul Storitz.
1362
01:57:26.795 --> 01:57:30.494
1363
01:57:31.594 --> 01:57:34.310
I've also written a lot about soft forks in the past,
1364
01:57:34.790 --> 01:57:38.410
so I guess that's my intro. Awesome, Jimmy. I'm a bitcoin
1365
01:57:39.510 --> 01:57:44.945
1366
01:57:45.405 --> 01:57:48.305
yeah, I'm up here mostly to look pretty, I think.
1367
01:57:49.965 --> 01:57:50.705
1368
01:57:51.085 --> 01:57:58.449
Jeremy Rubin. I'm a Bitcoin core rabble rouser, and, I also have a software proposal that I've been doing called BIP 119,
1369
01:57:59.070 --> 01:58:02.635
and happy to be here to talk about it with Zelle. Awesome.
1370
01:58:03.255 --> 01:58:05.835
1371
01:58:06.615 --> 01:58:07.015
And,
1372
01:58:10.160 --> 01:58:12.240
so I I wanna start this talk out,
1373
01:58:12.880 --> 01:58:15.540
by making it accessible to to,
1374
01:58:16.080 --> 01:58:22.235
you know, some people that may not be super familiar. So we'll just set a few baseline things, then we'll get into the weeds after that. So,
1375
01:58:22.615 --> 01:58:27.515
I'll open it up to anybody here, but let's just break down really, really quickly, briefly,
1376
01:58:27.840 --> 01:58:50.550
1377
01:58:50.850 --> 01:58:53.830
the hard fork is an absolute permanent split
1378
01:58:54.370 --> 01:58:59.235
where the you've formed 2 networks and it's you you break up and you are never getting back together
1379
01:58:59.614 --> 01:59:01.955
and then with the soft fork there's this theoretical
1380
01:59:02.495 --> 01:59:02.995
compatibility
1381
01:59:03.855 --> 01:59:04.355
where
1382
01:59:05.010 --> 01:59:07.590
all all the these different sub these different protocols,
1383
01:59:08.370 --> 01:59:11.590
are nonetheless interoperable with each other. So you can stay
1384
01:59:12.015 --> 01:59:26.989
this idea of it being compatible and opt in, which is a nuanced point, but the idea of the the old node, you can stay there. You can stay with the old protocol, and that is why that's what makes it soft. And I could talk more about that if you want, but I'm sure you can. I would say that it's
1385
01:59:27.875 --> 01:59:36.215
1386
01:59:36.890 --> 01:59:40.190
blockchains or 2 ledgers that have some difference.
1387
01:59:40.650 --> 01:59:44.830
And that is terrible for any sort of consensus mechanism because
1388
01:59:45.185 --> 01:59:49.285
they're not in consensus. And that that's what we wanna avoid generally
1389
01:59:49.825 --> 01:59:52.325
and soft work or hard work. That's,
1390
01:59:53.550 --> 01:59:55.170
unless you are permanently
1391
01:59:55.550 --> 01:59:59.890
1392
02:00:00.350 --> 02:00:08.765
the, rather, for the user, like, in terms of a soft fork versus a hard fork? If you're a user, you're perhaps running a a Bitcoin node, for instance.
1393
02:00:10.070 --> 02:00:10.810
What responsibilities
1394
02:00:11.190 --> 02:00:22.185
1395
02:00:22.804 --> 02:00:25.625
ultimately, like, they're not really so different. Like,
1396
02:00:26.420 --> 02:00:35.239
both of them can result to a bad thing happening to your Bitcoin. And so from that perspective, they're the same. And I think, ultimately, what it comes down to is how do you participate.
1397
02:00:35.765 --> 02:00:41.545
And the choice of the soft work is really something that allows people who are just kinda disinterested in what's happening with development
1398
02:00:42.005 --> 02:00:42.405
to,
1399
02:00:42.885 --> 02:00:47.020
and and disinterested in upgrading or whatever to just, like, continue to be a part of the network.
1400
02:00:47.640 --> 02:00:52.060
The downside of that is is that, like, changes can happen to the Bitcoin network
1401
02:00:52.705 --> 02:01:27.039
even if you're not participating. So in some senses, soft forks are maybe bad because how do you oppose something that can happen if you're just not even aware that it's happening? And then hard forks, on the other hand, it's like, well, if you don't want it to happen and the rest of the network does it, now you're off the network permanently and that's, like, not really great. But on the other hand, for a hard fork, you have to have, like, much more overwhelming consensus to make it happen. So each of them have trade offs and ultimately, like, the end negative outcome is the same which is that, like, a bad thing could happen to you, but we get to choose the trade offs. And right now in the community, the dominant choice is that people prefer
1402
02:01:27.565 --> 02:01:39.260
seemingly Softworks, but that is a preference. It's not like a mathematical proof that one is superior to the other. Let's let's go a bit deeper into this. So one point. Yeah. So what what precedent does it set,
1403
02:01:39.960 --> 02:01:41.420
1404
02:01:41.960 --> 02:01:45.340
leans heavily? The the community has leaned heavily towards
1405
02:01:45.805 --> 02:01:51.665
keeping things backwards compatible versus protocols that have gone off and basically have regular hard forks.
1406
02:01:52.045 --> 02:01:53.185
What do we lose
1407
02:01:54.080 --> 02:01:54.580
by
1408
02:01:55.040 --> 02:01:55.540
normalizing
1409
02:01:56.000 --> 02:02:00.739
regular hard forks versus what has been preserved with Bitcoin? Well, the main main
1410
02:02:01.204 --> 02:02:09.385
1411
02:02:10.260 --> 02:02:11.400
who's doing the forcing?
1412
02:02:11.940 --> 02:02:24.330
If if if you're being forced by some central entity then you're clearly centralized because whoever made that hard fork is demanding it of you. This is how Ethereum works. They demand you to upgrade. If you're if you don't
1413
02:02:33.655 --> 02:02:35.435
the software that they tell you to run,
1414
02:02:36.295 --> 02:02:41.355
then then you're part of that consensus. In which case, it's not really consensus as much as it is
1415
02:02:41.690 --> 02:02:47.710
somebody from authority telling you what you have to run-in order to be compatible with the rest of the network. So
1416
02:02:48.170 --> 02:02:49.950
hard forks for me are
1417
02:02:50.565 --> 02:02:51.465
centralized. And
1418
02:02:52.005 --> 02:02:55.945
it's an indication of centralization, at least the way they've been used. So
1419
02:02:56.405 --> 02:02:56.905
for
1420
02:02:58.360 --> 02:03:04.300
for coins to go do that it reveals their centralized single point of failure. Whereas,
1421
02:03:04.760 --> 02:03:11.085
you know, with a software, what you what you have is this ability to be backwards compatible. You're not forcing anybody anything on anybody.
1422
02:03:11.864 --> 02:03:26.925
Hard works, like, almost all rules are up for grabs, including, you know, the supply limit and stuff like that, which I find an anathema. Like, part part of what you have that's very valuable about Bitcoin is that you know certain things aren't going to change
1423
02:03:27.385 --> 02:03:27.885
because
1424
02:03:28.585 --> 02:03:29.465
of the way,
1425
02:03:30.105 --> 02:03:45.735
1426
02:03:46.454 --> 02:03:57.469
I agree with a lot of what you're saying, but we have to now maybe unpack this for the audience because this is where the rubber meets the road so to speak because this as I said the fork is a very serious matter of changing the protocol
1427
02:03:57.770 --> 02:03:58.989
and it was thought
1428
02:03:59.395 --> 02:04:06.215
that first of all the soft fork is clearly it's not only backwards but forwards compatible all the nodes share the same network
1429
02:04:07.460 --> 02:04:09.239
And it used to be thought
1430
02:04:09.540 --> 02:04:12.840
that because they were all compatible you can just stay where you were
1431
02:04:13.219 --> 02:04:15.239
and therefore the opt in property
1432
02:04:15.915 --> 02:04:16.655
came from
1433
02:04:17.275 --> 02:04:18.175
the the compatibility
1434
02:04:18.555 --> 02:04:19.055
property.
1435
02:04:20.235 --> 02:04:21.695
But it was later,
1436
02:04:21.995 --> 02:04:22.635
the couple
1437
02:04:23.110 --> 02:04:32.475
there were a couple sort of chinks in the armor of that, argument where Peter Todd proposed the evil fork idea where you can change lots of things with the soft fork, and then Segwit
1438
02:04:33.095 --> 02:04:34.715
actually increased the block size
1439
02:04:35.495 --> 02:04:40.635
with a soft fork which was sort of a very it was something that everyone had to experience.
1440
02:04:41.470 --> 02:04:46.850
There's the there's another case actually that I think is a very good example which is the s value signature
1441
02:04:47.550 --> 02:04:54.885
case where that is something that's very very soft and the very old definition of the soft fork was that if you got miners on your side
1442
02:04:55.265 --> 02:04:55.765
anytime
1443
02:04:56.225 --> 02:04:57.205
there the
1444
02:04:57.770 --> 02:05:00.110
2 different blocks were mine following
1445
02:05:00.410 --> 02:05:09.305
incompatible rules since the miners always went with 1 everyone would end up going along That was the old old definition of the software. So this s value
1446
02:05:10.405 --> 02:05:11.845
situation is where
1447
02:05:12.245 --> 02:05:32.094
so an example of something where it was 100% soft, but it was 0% opt in. You a a normal layperson had no choice but to upgrade the software. They could not send money. Yeah. I need to, like, break that down. Like Yes. A similar thing to this would be, like, if we decided PUSH was bad and then just said no more spending PUSH addresses.
1448
02:05:32.650 --> 02:05:34.250
1449
02:05:34.570 --> 02:05:35.070
possibly,
1450
02:05:35.930 --> 02:05:42.335
and that would be confiscatory, and that would steal people's money, and that would be bad. And I think overall, it's one of these things where for,
1451
02:05:43.035 --> 02:05:47.695
hard forks, I think it's like there there is a propensity to to shove it down people's throat,
1452
02:05:48.090 --> 02:06:18.125
but it's more of a cultural value for what type of activity we want to do. And softworks generally align more with things we want to be more often, But you could do either on either, an example of this would be we could use all the same BIP 9 version bits. We can talk about what those are and, speedy trial and, you know, we'd have a delayed activation that would be, like, 2 years in the future for a hard fork. And that would probably be pretty good, in terms of not being something where we just, like, the devs decided there's a hard fork happening.
1453
02:06:18.425 --> 02:06:22.510
And but it still would be that old nodes at that 2 year mark would fall off.
1454
02:06:23.150 --> 02:06:57.740
There have been proposals previously. Like, somebody said, you know, Bitcoin Core should I think Luke junior made this point. Bitcoin Core should just, like, have a fixed number of block headers that can consume by default, and so it shuts off in 10 years. So all nodes just have a shelf life, and now every hard fork is a soft fork based on if you're running Bitcoin Core because we could deploy it, and then the node automatically shuts off after some fixed deadline. It's like, well, I don't love that, but, like, yeah, you can kinda map I don't love that. I one on the other. But I know my love. Ultimately, the I think the thing that, you know, to to wrap it up in the coherent point is,
1455
02:06:58.540 --> 02:07:04.720
hard or soft, like, you know, feature or whatever, what what matters is that we do these things in a way that involves,
1456
02:07:05.260 --> 02:07:06.160
mass participation
1457
02:07:06.460 --> 02:07:06.960
and
1458
02:07:07.395 --> 02:07:21.360
1459
02:07:21.900 --> 02:07:32.554
all all kinds of things by saying these are no longer allowed on the network. I I don't think we're denying that. The the real question, I think, in in your sort of equivalence of hard fork and soft fork is that,
1460
02:07:32.980 --> 02:07:34.280
okay, is it possible
1461
02:07:34.659 --> 02:07:41.159
to have sort of like a benevolent hard fork? I suppose in some metaphysical way, it can be somewhat benevolent.
1462
02:07:41.565 --> 02:07:50.030
But I I I think what we're saying is, with soft works, at least the ones that Bitcoin has done, it it's generally benevolent soft works, not the evil soft
1463
02:07:57.675 --> 02:08:04.975
within the space of softworks that I think, you know, benevolent or good things for the network are. Because it once you change
1464
02:08:05.320 --> 02:08:09.340
sort of, like, permanent rules or anything like that, that that opens up a whole,
1465
02:08:10.119 --> 02:08:16.744
like, can of worms that I don't think we wanna go down. So for for me, like, softworks are very important to,
1466
02:08:17.125 --> 02:08:19.625
like, stay within that area of softworks
1467
02:08:20.170 --> 02:08:20.409
and not
1468
02:08:21.130 --> 02:08:25.230
and, you know, obviously avoid the evil softworks. But, you know, go go with this,
1469
02:08:25.690 --> 02:08:28.005
sort of subset that's actually benevolent.
1470
02:08:28.945 --> 02:08:30.485
1471
02:08:31.985 --> 02:08:40.800
in terms of Paul, when I was speaking to you over email prior to this, you you you made reference to it's a question of
1472
02:08:41.260 --> 02:08:46.925
of is it worth it in the instance of of a hard fork. And and then we saw historically, like, for
1473
02:08:47.225 --> 02:08:52.125
2017 when when, there's this push to go from 1 megabyte to 2 megabytes.
1474
02:08:52.500 --> 02:09:00.760
I mean, the the resounding answer from a a lot of individuals was no. We don't we don't wanna set the precedent of changing for for small incremental,
1475
02:09:01.515 --> 02:09:03.695
increases in in block size like that.
1476
02:09:05.275 --> 02:09:11.680
But we Bitcoin has hard fork before, so I'm wondering if somebody wants to maybe touch on It has. When it was.
1477
02:09:12.220 --> 02:09:18.240
1478
02:09:18.764 --> 02:09:21.344
when Satoshi added the OpNops in 2010
1479
02:09:21.724 --> 02:09:23.965
or something, and he's the creator. So he sort of
1480
02:09:24.685 --> 02:09:35.870
you know, it's like creators right or whatever. It, like, doesn't really make it's not really a very relevant consideration, right, since he created in the first place. And then there was the other one was after the, the summer 2015
1481
02:09:36.855 --> 02:09:37.755
database lock
1482
02:09:39.815 --> 02:09:46.075
situation. I'm not exactly sure what to call that, but there was something where a database configuration rule had
1483
02:09:47.070 --> 02:09:49.170
become a consensus rule without anyone knowing,
1484
02:09:49.630 --> 02:10:00.255
and then it had been changed. And so it is possible to sync old nodes, but you have to do this extra step, and so that sort of makes it a hard fork. And I don't know, like, no one has ever, like, intentionally
1485
02:10:01.675 --> 02:10:06.370
done a hard fork, like, through the whole peer review slow Yeah. Process.
1486
02:10:06.750 --> 02:10:13.555
1487
02:10:14.355 --> 02:10:18.275
I actually can't think of any that that because a soft fork is, like, sort of,
1488
02:10:20.355 --> 02:10:21.015
you know,
1489
02:10:21.610 --> 02:10:23.869
increasing the rules and, like, making it stricter.
1490
02:10:25.130 --> 02:10:27.869
1491
02:10:28.935 --> 02:10:30.855
1492
02:10:31.815 --> 02:10:35.755
it's it's increasing the number of rules shrinking the set of things that are valid. Yes.
1493
02:10:36.215 --> 02:10:55.320
But I I actually can't think of it maybe, you know, again, the drinking thing. Okay. No. The opt addition of the opt I can't think of any that were actually a hard fork even, like, remove because then you're talking about removing, like, opcat and stuff like that? No. I'm sorry. Those he added the op nops, 0 through That's it. 20. They didn't exist. And he added them for the specific purpose of later using them as soft forks.
1494
02:10:55.984 --> 02:10:58.940
1495
02:11:00.199 --> 02:11:05.305
check template verify or whatever. Oh, not excuse me. Now now you've got to get confused. I'm talking about
1496
02:11:06.985 --> 02:11:08.525
check check lock time verify.
1497
02:11:09.145 --> 02:11:17.010
That was added by Satoshi as a blank thing that was like a blank check. So when he added all the blank checks, it was hard. But then when we repurposed them individually,
1498
02:11:17.710 --> 02:11:33.820
1499
02:11:34.360 --> 02:11:40.285
except one had a lot more technical debt in how you might do it. One of the things that bothers me sometimes about
1500
02:11:40.665 --> 02:12:11.060
a software process is if you go through too much extra work to do the thing, you're actually signing up the rest of the future of humanity to, like, maintain technical debt forever. I'm like, it actually might not be the like, we might be able to swallow a small amount of governance now for saving, like, a bunch of complexity and potential risk in the future. Well, let's go down that road. In in what instances would you see a hard fork as as not an absolute no, like, for each of you? What what what I agree with Jimmy that the the you don't want to do see, the the way it kind of
1501
02:12:11.905 --> 02:12:12.965
1502
02:12:13.905 --> 02:12:20.645
for a while, I thought or I guess people agreed with me also thought that the soft fork sort of protects us from arbitrary
1503
02:12:21.610 --> 02:12:36.515
tyranny by the development process or something else because you can stay on your old node and then move to the new node if you want or stay. But then now these things have been just these ways of discover that equivocate the hard and soft work is sort of modern
1504
02:12:37.989 --> 02:12:45.290
things that are make it so that they're they're very similar in terms of what you can do. And so, yeah, the way I see it, we lose some of the protection. And then
1505
02:12:45.655 --> 02:12:46.395
what I
1506
02:12:47.175 --> 02:12:51.835
my BIP, BIP 300, is really about ending all soft and hard forks and putting
1507
02:12:52.135 --> 02:12:53.900
them into to some extent,
1508
02:12:54.380 --> 02:13:02.355
so that the protocol can do an unlimited number of hard and soft forks without actually without actually changing at all. So the protocol can have a fixed
1509
02:13:04.275 --> 02:13:09.895
amount of code. You don't need to do any pull requests or write anything else. And I kind of feel that we should move towards the direction of
1510
02:13:10.670 --> 02:13:11.170
not,
1511
02:13:12.110 --> 02:13:27.120
1512
02:13:27.740 --> 02:13:33.040
remove that rule and allow the user to get their funds out because it was the the software community stole money from this person.
1513
02:13:33.405 --> 02:14:07.550
Like, to me, that's a bad thing, and they probably should have been more vocal in that process. But if we have to patch in a hard fork to say, we will allow this transaction to proceed to restore this person's funds, I I think that that would, at least from my perspective, like, I don't love the governance around it. That would be in the shape of the right thing to do. Well, that that would be interesting because you're kind of assuming that an evil software could go through and that you have to reverse Not not evil. So for example, if I wrote a smart contract that was, like, in early as a Bitcoin using opt cat to do something and then cat got soft worked out Mhmm. Which it did. And then I demonstrated, hey. Look. Like, imagine, like,
1514
02:14:08.045 --> 02:14:08.945
you know, I don't
1515
02:14:09.245 --> 02:14:23.620
know, how Finney comes back and he's like, hey, you know, by the way, like when and he was still, you know, around at this point, but he's like, by the way, when you did this, I couldn't advocate for myself, but I got unfrozen. And, like, and now I can't get to my coins because you thought and and we talk about doing these things all the time.
1516
02:14:24.195 --> 02:14:38.600
There's this thing called and I don't wanna pick on anyone in particular, but, like, the great consensus cleanup to clean up some of these really, like, edge condition things that we don't think anybody actually uses. But if somebody relied on that, I would wanna honor the Reliance interest. So but to to push back against that,
1517
02:14:39.060 --> 02:14:42.280
1518
02:14:42.655 --> 02:14:50.020
1519
02:14:51.140 --> 02:14:52.760
The time to speak up is at the
1520
02:14:53.540 --> 02:14:56.200
soft fork, hey, you're gonna confiscate some of my money.
1521
02:14:56.580 --> 02:15:09.530
1522
02:15:09.990 --> 02:15:13.210
1523
02:15:13.510 --> 02:15:15.450
the feature of it that's now, like,
1524
02:15:15.824 --> 02:15:29.260
1525
02:15:29.560 --> 02:15:31.580
consequence. But, like, if you are
1526
02:15:31.960 --> 02:15:32.460
a,
1527
02:15:32.825 --> 02:15:42.445
you know, relying on this thing and you're not paying attention to what's happening, like, this is a big deal for us developers is that we don't want to make it feel like the community has to pay attention to what we're doing. We actually would prefer,
1528
02:15:43.120 --> 02:15:53.125
not for, like, reasons of, like, hiding stuff, but we'd prefer if we operated in a way that most of Bitcoin doesn't have to care if we're doing something to tinker with it. But if that does happen, like, I I just don't, you know, like
1529
02:15:54.225 --> 02:16:05.160
like, I I would see if I were involved in such a thing, I feel a personal responsibility to work on restoring funds. Maybe if it's a small amount of money, you just pay it out as, like, a, okay. Sure. We'll make you whole. But I I do think that it's that it's, like, sort of a
1530
02:16:05.880 --> 02:16:13.315
like, it it ruins part of the promise of softwares if somebody can come forward later and be like, you did something that's incompatible with what I was doing, and now my funds are frozen.
1531
02:16:13.650 --> 02:16:33.950
1532
02:16:34.410 --> 02:16:37.790
means that they the status quo will have an enormous amount of
1533
02:16:38.186 --> 02:16:40.186
leverage, for lack of a better word. And,
1534
02:16:41.465 --> 02:16:46.205
they you also need to make it seem as though this is in their best interest,
1535
02:16:46.710 --> 02:16:47.210
which
1536
02:16:47.830 --> 02:17:04.529
probably would it would be almost impossible if you were saying, like, well, some people lost their money somehow, and we need to get it back. I would imagine it would make a lot of people nervous. And so I'm not I share your suspicion that that would that type of a hard fork to reassign funds to people would be very would be viewed with a It would be very
1537
02:17:04.830 --> 02:17:11.569
1538
02:17:11.925 --> 02:17:21.660
that somehow confiscates someone's funds because it was used in this very weird way. An example would be like before SegWit, somebody used the, you know, particular
1539
02:17:22.520 --> 02:17:32.024
form and, it's okay. Now now you can't redeem it because, you know, Segway rules make it so that you can't you you can't redeem that. Like, that's a very
1540
02:17:32.484 --> 02:17:36.990
specific like, you you almost have to be pathological to have done that. And
1541
02:17:37.370 --> 02:17:37.770
it's
1542
02:17:38.330 --> 02:17:43.470
and we try to sort of, like, make sure that doesn't happen. And it's
1543
02:17:43.850 --> 02:17:51.226
it's like such a corner case to me that I I I don't see this as, like, a thing that would realistically happen. There there is something,
1544
02:17:51.846 --> 02:17:53.540
1545
02:17:55.120 --> 02:18:22.415
we have something called, like, the, like, sequence field. Mhmm. And usually well, let me jump up for a sec. Usually, when we have one of these things like a SegWit version, we try to reserve it and make it so it's really hard to send to the network. So we're kind of communicating very clearly like, hey. You shouldn't rely on using this thing because it's for an upgrade. If you use it, like, we can't guarantee what will happen. So it's kind of undefined behavior. In programmers, we all love undefined behavior. Right? So that that's kind of okay. Use undefined behavior,
1546
02:18:22.875 --> 02:18:25.775
get screwed. Like, that that's that's a clear contract. But
1547
02:18:26.235 --> 02:18:49.290
what happened is we had for end sequence, which is how you do, a relative time lock in Bitcoin. We had something that was intended for future upgrades, but we forgot to do this thing where we don't let you send it to the network. And so people actually started using it. And recently, I I found this, and I was like, hey. We actually kinda screwed up on this. We don't prevent you from broadcasting this. Is anybody using this? Because you probably, like, undocumented,
1548
02:18:49.750 --> 02:18:50.810
unspecified behavior.
1549
02:18:51.270 --> 02:19:24.880
And then we're like, okay. No one's using it. Good. Maybe we can do a just not even a software, just a policy change to make them un broadcastable. And then people from the Lightning Network were like, no. Actually, we decided to put some extra metadata in there because we need a memo field. We're like, why? And they're like, oh, it's the cheapest place to put it. And we're like, okay. So now we've, like, kind of and this is kind of still being debated and discussed, but, like, now we've maybe, like, permanently burned end sequence for future upgrades. And other people have been like, no. We haven't burned it. We just need to do this trick and that trick and this other trick. I'm like yeah. I I personally, like, I'm not sure. Is it can a can, like, a behavioral norm or a tradition
1550
02:19:25.645 --> 02:19:26.145
1551
02:19:26.525 --> 02:19:32.420
a mandatory soft fork or something? Yeah. Yeah. Possibly. And we have a we have 4 bytes, and every transaction has
1552
02:19:32.900 --> 02:19:38.580
a version field that it's like, what if people started using that or something? Does that just We kinda do. Right? I've I've checked
1553
02:19:39.700 --> 02:20:14.869
1554
02:20:15.915 --> 02:20:22.415
1555
02:20:22.955 --> 02:20:34.500
there's no permission required. That's that's kind of the whole point. So if some people are using it, then, you know, I yeah. It sucks as a developer because you don't have as much freedom to use
1556
02:20:34.865 --> 02:20:35.766
certain fields or
1557
02:20:36.145 --> 02:20:37.045
whatever. But that's
1558
02:20:37.425 --> 02:20:41.845
kind of the burden that you have as somebody that's trying to add
1559
02:20:42.360 --> 02:20:47.100
features that you want to add. I think that's entirely fair. It's it's it's okay
1560
02:20:47.800 --> 02:21:01.780
that, you know, sequence field is used in a way that maybe you don't like, but, you know, it is what it is. It's you can't force anybody on the network. That's the 5 minutes. So I wanna we've we've been discussing a lot about things that can go wrong with soft forks, implications for people,
1561
02:21:02.400 --> 02:21:04.980
1562
02:21:05.681 --> 02:21:07.780
I'd like to talk a little bit about,
1563
02:21:08.400 --> 02:21:09.940
right now we're talking about
1564
02:21:10.556 --> 02:21:13.535
preventing bad things being put into the code. But
1565
02:21:13.915 --> 02:21:16.335
on the other side of things, we also want to,
1566
02:21:16.955 --> 02:21:31.436
for the time that it's still malleable enough to introduce these types of things, things that can give us huge improvements in Bitcoin, we still want to be able to do them. And I wanna maybe dive down the road of of activation methods and what we've gleaned from things like
1567
02:21:31.976 --> 02:21:32.476
like
1568
02:21:33.020 --> 02:21:33.520
SegWit,
1569
02:21:34.141 --> 02:21:34.641
because
1570
02:21:35.101 --> 02:21:38.160
obviously, there was we we had some difficult time there.
1571
02:21:38.700 --> 02:21:41.440
Things that should not have been maybe as contentious
1572
02:21:42.795 --> 02:21:43.695
as they were,
1573
02:21:44.075 --> 02:21:51.615
became contentious. So what do you guys feel that we learned about activation methods from SegWit to start with?
1574
02:21:52.301 --> 02:21:55.040
1575
02:21:55.500 --> 02:22:03.485
like, we can assign moral value, like, saying we should it should have been easier or whatever. It was what it was. Right? And there there's no
1576
02:22:04.025 --> 02:22:11.840
sort of moral judgment that I I think we can really cast on it. What what I will say though is that what we showed was that the corporations
1577
02:22:12.300 --> 02:22:15.760
were not in control. And that was a major major
1578
02:22:16.395 --> 02:22:26.330
event in Bitcoin history. And it's not a coincidence that Bitcoin went up in price afterwards. At least I don't think so because we proved that that corporations don't control it.
1579
02:22:26.870 --> 02:22:27.770
Now, like,
1580
02:22:28.149 --> 02:22:40.564
like, what what's what's the right way? What I mean, ultimately, I I I'm not sure that it's like a permanent thing. Right? Like, oh, 90% is the right number, and that's gonna be the case for the rest of time or whatever.
1581
02:22:41.130 --> 02:22:44.590
I I think each soft work has its own sort of, like,
1582
02:22:45.210 --> 02:22:45.949
sort of,
1583
02:22:47.130 --> 02:22:51.835
environment in which it has to activate, and it you you have to
1584
02:22:52.535 --> 02:23:07.710
get consensus whatever way you can for that particular software with each one. And that kinda sucks for people like the like, that that are on stage with me because Yeah. We we they wanna get something on there. And it's like, well, what's the process? Well,
1585
02:23:08.145 --> 02:23:24.550
I I hate to tell you, but there there is no process. And like you you just kinda have to go get consensus, and I don't know exactly what that looks like. But it's a it the burden is on you to prove to the rest of the community that this is something that's desirable. Yeah. I can tell you, and certainly, I think Jeremy will agree that it's very.
1586
02:23:24.930 --> 02:23:32.135
1587
02:23:32.995 --> 02:23:34.285
1588
02:23:35.710 --> 02:23:46.645
1589
02:23:47.025 --> 02:23:55.490
lesson out of what happened with Segway other than maybe, oh, corporations, like, don't have this unilateral control. Like, if if they did, we would have seen something else in this anecdote.
1590
02:23:56.270 --> 02:23:58.210
But even that is not, like, the most
1591
02:23:58.511 --> 02:24:18.229
useful thing because maybe for, like, a less because Segway had controversy around it. Maybe it itself wasn't as controversial, but, hey. It kinda was a little bit conciliatory to some miners who developed some IP around it. Right? And that's, like, maybe something that we are, like, we fucked up. Like, sorry for this livestream or whatever, but, you know, we messed up and, you know, we we don't want to,
1592
02:24:19.194 --> 02:24:31.270
we we really strive not to break anyone's mining hardware. Yeah. And that's something that, like, I think it's a big egg on the face of the, you know, development community that, like, okay. Like, if if I want to learn something, it'd be like, we should probably have much better integration testing
1593
02:24:31.649 --> 02:24:33.510
that we have some way of making sure,
1594
02:24:34.130 --> 02:24:52.290
that, you know, every developer is, like, intimately familiar with how mining hardware works so that maybe we can, you know, avoid things like this in the future. That said, from my perspective, we're probably not gonna have a lot of forks that are like SegWit, even soft forks. Most of them are much simpler. So that if you're trying to generalize a lesson from SegWit activation
1595
02:24:52.671 --> 02:24:58.774
for check template verify, which is, you know, what I work on, it's like I think most of the learnings there just don't really map.
1596
02:24:59.075 --> 02:25:13.610
You know, there's some stuff that maps, but, like, it's a very different thing. It's a very different mining climate. And it's a change that is just like it's not coming in to solve something that's controversial. It's something that every it's in a problem space that I think most people are like, oh,
1597
02:25:14.345 --> 02:25:36.045
we're gonna make the, I I say, make the hardest money ever even harder. Yeah. Right? And it's like, okay. If we can all agree on that, we can all agree on things self custody. Like, I think that those are things that just like the the the the type of thing the the lessons of like, oh, these things have to be really hard and we've gotta really, like, be afraid of, like, pissing people off. It's like yeah. I I'm not sure that everything goes through that same sort of gauntlet.
1598
02:25:36.506 --> 02:25:37.405
1599
02:25:37.851 --> 02:25:44.110
you know, Segwit was controversial. You're saying there's not a lot of those that are are likely to we did just have a a large,
1600
02:25:44.891 --> 02:25:45.391
upgrade
1601
02:25:45.770 --> 02:25:47.595
soft fork that was not,
1602
02:25:48.395 --> 02:25:50.095
especially controversial, Taproot.
1603
02:25:50.715 --> 02:25:56.895
And so I'm wondering if if you guys just for people watching that are unfamiliar, maybe just touch on what
1604
02:25:57.400 --> 02:26:03.820
that enabled for us and, and and where that can go and and things that are still needed beyond that that could
1605
02:26:04.455 --> 02:26:08.475
be implemented later. But start with, what what did Taproot do for us?
1606
02:26:09.814 --> 02:26:20.199
1607
02:26:20.944 --> 02:26:22.965
and the script spend. And you you,
1608
02:26:23.824 --> 02:26:49.540
those were 2 different types of addresses all throughout Bitcoin's history up until top road. So you had the pay to pubkey hash addresses, the addresses that start with a 1, pay to script hash addresses, which are the addresses that start with a 3. Even within SegWit, there was the Beck 32 addresses that were shorter and then the Beck 32 addresses that were longer. 1 was pay to witness pubkey hash. The other one was pay to witness script dash. You've combined those. So, essentially, you can't tell which one
1609
02:26:50.080 --> 02:26:51.380
and and in fact,
1610
02:26:51.760 --> 02:26:52.580
all Taproot,
1611
02:26:52.960 --> 02:26:54.660
spends can can be
1612
02:26:55.404 --> 02:26:56.864
one or the other, and
1613
02:26:57.165 --> 02:27:01.345
you have the option of both. And there's no real penalty that you're paying for that.
1614
02:27:01.725 --> 02:27:16.114
And that that gives you additional privacy. But also you have this tap tree so you you you can make some very very complicated scripts or like have many many different conditions under which you can unlock it. And many of them can be hidden behind, you know, many,
1615
02:27:16.654 --> 02:27:22.520
you know, very deep in the mastery and so on. So you know, depending on the probability of their execution.
1616
02:27:24.261 --> 02:27:26.520
And this gives us a lot more flexibility
1617
02:27:26.980 --> 02:27:28.681
in sort of how we,
1618
02:27:29.475 --> 02:27:29.955
spend,
1619
02:27:30.354 --> 02:27:43.061
you know, have backups to our funds and stuff stuff like that, most of which hasn't really been, you know, adopted by wallets and so on. So I look forward to sort of seeing a lot of that. But I would say that
1620
02:27:43.440 --> 02:27:45.301
the main benefit is that
1621
02:27:45.655 --> 02:27:53.435
we we've sort of upgraded the security for each user. So you you have this ability to go and back up your wallet
1622
02:27:53.851 --> 02:27:58.110
to 2 of 3 of this and 4 or 5 of this and even
1623
02:27:59.530 --> 02:28:00.030
have
1624
02:28:00.865 --> 02:28:13.400
public companies or something that, you know, publish their public key and have it possible for them to unlock it. And they don't even know that they hold those keys. Right? Like, those are some really cool things that we can have within
1625
02:28:14.261 --> 02:28:14.761
Taproot.
1626
02:28:16.075 --> 02:28:24.015
You know, so I I see it as like a beneficial software but to go back a little bit to, you know, you know, what what
1627
02:28:24.480 --> 02:28:27.620
what Jeremy said, and I think he's absolutely right on this.
1628
02:28:28.000 --> 02:28:30.900
You know, the the process for Segwit and Taproot,
1629
02:28:31.635 --> 02:28:42.840
I I really don't think you can have generalized lessons. And I see that kind of as a feature, not a bug. Right? Like, it is frustrating for these guys, obviously, to, you know, have to go and try to find,
1630
02:28:43.380 --> 02:28:48.820
okay. How do I get consensus? And, you know, Paul described it as Kafkaesque or whatever. It's like, how do how do I
1631
02:28:49.875 --> 02:28:51.015
Well, you know,
1632
02:28:51.395 --> 02:28:56.535
if we had, like, a strict process or something, that I I think that would imply that we have
1633
02:28:57.070 --> 02:29:14.915
a permanent governance model or something. Right? Like and that's exactly what we don't want. This is a decentralized network. And in a decentralized network, what you need to do is convince the people that are part of that decentralized network. And there are more people coming in and out of this decentralized network all the time. So we should expect
1634
02:29:15.540 --> 02:29:19.319
the sort of process by which we add soft forks
1635
02:29:19.700 --> 02:29:25.295
to be different each time because we have more constituents. We have more use cases. We have different
1636
02:29:26.315 --> 02:29:29.056
features, different thing, things that are happening.
1637
02:29:29.676 --> 02:29:31.375
And in a sense, like,
1638
02:29:31.730 --> 02:29:46.176
each each software has to be different because you have different people using it, and that's a good thing. I I don't see that as a bad thing. Yeah. I I completely agree. I don't think that the controversy about Segwit, I think, was almost 0% about the actual Segwit part.
1639
02:29:46.690 --> 02:29:50.070
1640
02:29:50.610 --> 02:29:54.790
Mhmm. So I totally agree with that. It's an extra layer of irony with BIP 300 because
1641
02:29:55.155 --> 02:30:06.550
what I'm sort of saying is that it should I I can make it not if you just give me this one thing, it won't be cop casks anymore because it will be, there won't be any more changes to layer 1 Bitcoin. And if you wanna do any hard or softworks,
1642
02:30:07.010 --> 02:30:07.670
the process
1643
02:30:08.050 --> 02:30:11.351
is now sort of inside the BIP 300
1644
02:30:11.976 --> 02:30:18.936
activation, which occurs without any anyone changing any lines of So what's the pushback to that? Well, I think it's just a very abstract idea. I think there's a lot of,
1645
02:30:20.061 --> 02:30:24.480
there's a lot of, like, so directed this to a storage solution. For them.
1646
02:30:24.940 --> 02:30:27.841
I think part of it, though, is that BIP 300 is about escaping
1647
02:30:28.665 --> 02:30:31.886
Bitcoin Core to go to a different piece of software, and I think that's inherently
1648
02:30:32.346 --> 02:30:53.940
that I think that baffles people, actually. People are like, don't but don't we have everything perfect in Bitcoin Core? I I really don't like that. Like, Lightning requires external software, you know, for example. It's like Yeah. So I think that, so right. It doesn't really it doesn't really apply, but I think that's part of what people sort of stumble over. It's also there's other features of it that are very different or maybe, like, it it alters who
1649
02:30:54.641 --> 02:31:00.500
is the most important person, I think, to some extent. So that, I think, may have something to do with it. But I think it's also
1650
02:31:00.985 --> 02:31:04.445
the the since it opens up this unlimited space of
1651
02:31:04.985 --> 02:31:05.805
of of possibility,
1652
02:31:07.305 --> 02:31:07.805
people
1653
02:31:08.130 --> 02:31:08.530
are
1654
02:31:09.090 --> 02:31:12.390
the very conservative Bitcoiner is sort of trying to wonder,
1655
02:31:14.610 --> 02:31:25.215
will will one of those infinite things be be really, really bad? And the answer is no because it's BIP three hundred is designed very cleverly so that your full node is totally ignoring everything that is happening
1656
02:31:25.595 --> 02:31:34.570
on those other networks, which is unlike the hard fork and unlike even the the well, we thought the soft fork had that property, but it doesn't really have that property. So this is
1657
02:31:34.995 --> 02:31:42.295
designed to be a big improvement on the process, but it must go since it doesn't exist yet, it must go through the process. Maybe instead of, like, hard fork,
1658
02:31:42.840 --> 02:31:52.745
you should rename drive change to over easy forks. Yeah. Over easy fork. I think people are saying, like, people have tried to change the terminology. As I wrote a whole article about this at one point about people's
1659
02:31:53.226 --> 02:32:12.645
changing the terminology and how the existing terminology doesn't really work because and then there's a very funny thread between I mean, I don't know how far we should just throw this out out into, like, other people, but there's a Reddit thread between Adam Back and Luke Dash junior where they're, like, they're going back and forth about whether or not something is a hard fork, and it's very funny. It's, like, they really don't agree. But it's like it's because
1660
02:32:13.425 --> 02:32:14.645
the the concepts have,
1661
02:32:15.425 --> 02:32:19.000
they don't have the properties that people thought they had, I think, when it originally,
1662
02:32:20.280 --> 02:32:26.625
1663
02:32:26.926 --> 02:32:31.665
of a soft work. And, you know, like, we we thrown around terms like evil soft work or whatever.
1664
02:32:31.980 --> 02:32:37.761
And the and this is a little bit of a problem because, you know, like, for some,
1665
02:32:38.221 --> 02:32:47.845
developers, like, that's not a software. That's actually a hard fork or something like that. And it's like these are these are, you know, these things matter. Like, they're they're technical minutiae
1666
02:32:48.601 --> 02:32:51.420
that's not transparent to most users,
1667
02:32:52.040 --> 02:32:53.580
but they they matter.
1668
02:32:54.120 --> 02:32:56.860
And, you know, this is where, you know,
1669
02:32:57.285 --> 02:33:01.064
consensus building is especially hard. Again, I feel for these guys. Right? Because
1670
02:33:01.365 --> 02:33:09.290
1671
02:33:11.350 --> 02:33:12.890
what do you see as
1672
02:33:13.505 --> 02:33:15.284
what's next coming down the pipeline?
1673
02:33:15.665 --> 02:33:17.765
And then, also, at what point,
1674
02:33:18.305 --> 02:33:22.484
if ever, does Bitcoin just ossify and these conversations are moot?
1675
02:33:24.140 --> 02:33:43.030
1676
02:33:43.410 --> 02:33:44.950
in general through history,
1677
02:33:45.650 --> 02:33:53.905
they have some amount of, like, technologically complicated product that they can produce, and it's a curve. And then when that curve starts turning the other way,
1678
02:33:54.605 --> 02:33:57.025
so the society is usually, like, imminently collapsed.
1679
02:33:57.550 --> 02:34:11.055
It's just sort of a phenomenon of, like, okay. There's some sort of, you know, the decline of the Roman Empire. It's like, okay. Well, you look at the technologies they were producing. And I think that for this ossification, like, maybe we can get Bitcoin to the point. But if we if we get to a point where we don't have the type of developers
1680
02:34:11.675 --> 02:34:17.200
available who could produce the same type of artifact, I think we get ourselves into really hot water,
1681
02:34:17.980 --> 02:34:20.320
just in terms of, like, Bitcoin as a society.
1682
02:34:21.580 --> 02:34:22.940
And that's something that really,
1683
02:34:23.415 --> 02:34:26.955
concerns me. And I think one of the thing ways that you defray that is by keeping
1684
02:34:27.335 --> 02:34:30.955
talent fresh that can actually work on these complicated topics and understand
1685
02:34:31.340 --> 02:34:48.065
how Bitcoin even works. And that's something that that does concern me in terms of, like, is this ossification of Bitcoin going to happen? It's like, I actually think it's sort of like the demise of Bitcoin if it does, even though I think the idea of we wouldn't have to change it is appealing. Yeah. I'm gonna disagree with that. I really don't think of this as
1686
02:34:48.641 --> 02:34:53.620
1687
02:34:54.000 --> 02:34:55.620
at some point, yeah, I think it'll.
1688
02:34:55.936 --> 02:35:02.676
And I I don't think that's necessarily a bad thing because you have rules that are permanently in place, and you know
1689
02:35:03.030 --> 02:35:06.650
how to plan for the future as a result of money being
1690
02:35:07.030 --> 02:35:11.210
permanent. And and that ability to plan for the future is critical to entrepreneurship,
1691
02:35:11.590 --> 02:35:19.745
to civilization building and all that stuff. And you know, yeah there are sort of like technological curves. It's usually because of
1692
02:35:20.125 --> 02:35:21.905
bad money that you get
1693
02:35:22.320 --> 02:35:30.260
sort of like this, technological fall off or something like that because you allow in a lot more rent seekers and so on. So for me,
1694
02:35:30.695 --> 02:35:40.280
I don't see Bitcoin that way, that if we stop, like, soft working or something or adding features, that it suddenly, like, means that we're on the decline or something like that.
1695
02:35:40.920 --> 02:35:48.940
Money that stays that that's easy to predict is a very good feature of civilization. I see that as, like, a stable foundation,
1696
02:35:49.845 --> 02:36:05.990
of, having a civilization built on the stable foundation of money as a very good thing and allowing, which allows civilization to thrive. I I would say, Jim, I know we're a little on time, but, like, I find bugs, like, relatively often. And,
1697
02:36:06.325 --> 02:36:10.425
1698
02:36:10.726 --> 02:36:28.805
understanding how these things work, adversaries will continue to find them, and then they can take out the system over time. That that's what scares me about it. I'll I'll cede it down. I'll leave it to Paul. You got one minute left. Okay. Great. I think it's a very nuanced point. I think there's some things that have ossified. Like, you could argue different parts of, like, the network,
1699
02:36:29.345 --> 02:36:31.285
1700
02:36:31.745 --> 02:36:32.245
have
1701
02:36:32.570 --> 02:36:35.950
sort of they're sort of here to stay forever, warts and all. Right?
1702
02:36:36.410 --> 02:36:46.175
I mean, again, obviously, I'm a proponent of this bit 300 thing, which and then ossifying. So I I am concerned about the exactly what you're talking about, which is that we want something reliable for the long
1703
02:36:46.635 --> 02:36:50.015
term that that is not is tamper resistant, basically.
1704
02:36:50.490 --> 02:36:54.250
But I also agree with Jeremy because I do think that
1705
02:36:54.730 --> 02:37:06.705
I don't, you know, I don't agree that money is actually very stable across time. I mean, after all, it moved from shells to gold, and then it became banknote money. You can say whether or not you hate that, but then it started becoming Bitcoin. But these are those are all changes.
1706
02:37:07.150 --> 02:37:08.450
And I'm not sure that
1707
02:37:08.990 --> 02:37:26.250
1708
02:37:27.110 --> 02:37:31.290
1709
02:37:32.631 --> 02:37:33.931
1710
02:37:38.455 --> 02:37:38.955
1711
02:37:39.415 --> 02:37:40.555
How's everybody doing?
1712
02:37:41.015 --> 02:37:49.850
Woo. Got that, nice belly full of food, hopefully, and ready to listen to it talk about discrete log contracts. And so let's just start off with a raise of hands.
1713
02:37:50.229 --> 02:37:52.569
How many people have heard of DLCs before?
1714
02:37:53.405 --> 02:37:57.585
Okay, quite a few people. How many people have tried DLC's before?
1715
02:38:00.540 --> 02:38:14.245
Quite a few less people. So I, you know, I gotta start off the talk with a little bit of shilling. We're doing some DLC demos right after this talk by the big moon in the expo hall in the esports gaming arena. If this stuff interests you that we're talking about today,
1716
02:38:14.645 --> 02:38:20.230
come get some hands on experience with it, bring some sats, bring an address that we can send the payout to for a DLC,
1717
02:38:20.690 --> 02:38:34.064
and a fun bet idea. And, you know, what we're gonna talk about here today on this panel is kind of, you know, what DLCs are, what problems do they solve, and how they actually work. So, kind of like kicking us off here, I I wanna start with, you know, introductions.
1718
02:38:35.090 --> 02:38:40.229
1719
02:38:41.330 --> 02:38:45.935
I invented the Lightning Network with Joseph Poon back in 2015. And similar
1720
02:38:46.715 --> 02:38:54.960
from that, also wrote the paper Discrete Log Contracts a couple of years after that and introduced this way to do smart contracts on Bitcoin.
1721
02:38:55.500 --> 02:38:59.840
And I'm actually mostly working on UTRIXO, a different new Bitcoin thing.
1722
02:39:00.220 --> 02:39:06.605
But today, we're talking about DLCs. And so I'm definitely really excited to see that, like, people are actually starting to use it and stuff. So it's great.
1723
02:39:07.305 --> 02:39:13.330
1724
02:39:14.029 --> 02:39:15.890
So we're a Toronto based startup,
1725
02:39:16.350 --> 02:39:20.770
super early stage still, but, we're building a mobile app for folks to be able to
1726
02:39:21.255 --> 02:39:23.835
put their Bitcoin to work and earn a yield,
1727
02:39:24.295 --> 02:39:32.030
potentially, on their Bitcoin using options based strategies that are built on top of DLCs, which, we're gonna talk more about later today.
1728
02:39:32.810 --> 02:39:34.910
I started in the space, 2017.
1729
02:39:35.290 --> 02:39:37.470
I actually started on the Ethereum space
1730
02:39:37.815 --> 02:39:39.516
and then decided to pivot
1731
02:39:39.895 --> 02:39:45.596
and focus, on the Bitcoin side of things later on and, you know, found out that, hey, there's actually all this
1732
02:39:46.061 --> 02:39:48.800
sort of cool functionality that we can build natively,
1733
02:39:49.500 --> 02:39:56.475
cool products, cool, applications that we can build natively on Bitcoin. So why not just do it natively on Bitcoin and focus there and,
1734
02:39:56.875 --> 02:40:00.975
build build products for Bitcoiners. So, yeah, that's a quick intro for me. Hell, yeah.
1735
02:40:01.520 --> 02:40:06.340
1736
02:40:06.800 --> 02:40:09.360
And, I do a lot now in my free time too. And,
1737
02:40:10.205 --> 02:40:13.745
it helps, like, build the DLC wall out there in, like, Crystal Bowl or Oracle software.
1738
02:40:14.365 --> 02:40:16.225
Me and Justin Moon are working on, like,
1739
02:40:16.605 --> 02:40:19.085
a SDK for mobile wall DLC stuff, but,
1740
02:40:19.890 --> 02:40:21.430
all work in progress stuff there.
1741
02:40:22.210 --> 02:40:26.149
1742
02:40:26.850 --> 02:40:27.350
say,
1743
02:40:28.645 --> 02:40:35.145
Tadge is probably responsible for 2 inventions that employ a lot of people in this room, lightning network and
1744
02:40:45.195 --> 02:40:48.575
1745
02:40:49.516 --> 02:40:59.199
1746
02:40:59.899 --> 02:41:15.340
Yeah. Back to, like, kind of discrete log contracts. It's, you know, why is this an important problem to be solving in the first place? You know, we hear about, like, DeFi over in other blockchain ecosystems. And, like, Tony, I'm gonna kick this over to you, why this is, you know, a problem we should be solving in the Bitcoin world.
1747
02:41:15.720 --> 02:41:21.020
1748
02:41:21.636 --> 02:41:23.335
really cool products and primitives,
1749
02:41:24.195 --> 02:41:26.936
decentralized finance, DeFi products for Bitcoin.
1750
02:41:27.476 --> 02:41:28.530
And the reason that
1751
02:41:29.170 --> 02:41:33.030
our team thinks about it and why we think it's necessary to kind of explore
1752
02:41:33.410 --> 02:41:36.550
ways to build, Bitcoin DeFi is is twofold.
1753
02:41:37.425 --> 02:41:44.245
Well, I'll break it down into, like obviously, DeFi consists of decentralized and finance. So why is why are both of those parts necessary on Bitcoin?
1754
02:41:45.141 --> 02:41:47.720
The financial part, I think, is is a bit more obvious.
1755
02:41:48.660 --> 02:41:49.800
You know, basically,
1756
02:41:51.141 --> 02:41:55.625
kind of like when you look at some of the greatest assets or currencies around the world,
1757
02:41:56.085 --> 02:42:02.840
you know, you notice that there's a very robust and, ecosystem of financial tools around them. And I think part of Bitcoin's maturation,
1758
02:42:03.460 --> 02:42:11.455
process as a financial asset, as a currency, as a store of value is that there's gonna be more and more financial tools,
1759
02:42:11.836 --> 02:42:21.330
that are built on top of Bitcoin. And I think that, you know, financial tools, you know, are just gonna be a large part of that maturation process. In terms of decentralized part of things,
1760
02:42:22.030 --> 02:42:22.690
I think
1761
02:42:23.230 --> 02:42:25.090
that's where it starts to get a bit more interesting.
1762
02:42:25.630 --> 02:42:30.585
Right now, the way that we look at it, there's kind of a big gap or dichotomy
1763
02:42:30.886 --> 02:42:31.386
between,
1764
02:42:32.165 --> 02:42:33.065
Bitcoin finance
1765
02:42:33.686 --> 02:42:34.186
and
1766
02:42:34.890 --> 02:42:36.170
Bitcoin, the asset today.
1767
02:42:36.570 --> 02:42:39.790
Bitcoin, the asset, as we all know, you know, censorship resistant,
1768
02:42:40.170 --> 02:42:40.670
verifiable,
1769
02:42:41.130 --> 02:42:42.590
transparent, all that jazz.
1770
02:42:43.444 --> 02:42:48.265
But the issue is, you know, when we look at a lot of Bitcoin finance tools that are available today,
1771
02:42:48.725 --> 02:42:55.149
you know, it's kind of the opposite. Right? You kind of hand over your coins to them, then you don't know really what happens after the fact.
1772
02:42:55.609 --> 02:42:57.630
You know, it's you can't really verify much,
1773
02:42:58.385 --> 02:43:01.845
And it even kind of removes the provable scarcity
1774
02:43:02.225 --> 02:43:05.205
aspect of Bitcoin to some degree because of potential,
1775
02:43:05.985 --> 02:43:06.645
you know,
1776
02:43:07.020 --> 02:43:07.840
of rehypothecation
1777
02:43:08.460 --> 02:43:17.465
and all that kind of stuff. And so that's why, like, we think that it's it's very necessary to build kind of sound financial tools or decentralized financial tools,
1778
02:43:18.005 --> 02:43:21.705
that match a bit that, you know, for the most part, match Bitcoin's
1779
02:43:22.170 --> 02:43:29.470
aspects in terms of, you know, provable scarcity, in terms of verifiability, transparency, all that kind of stuff. And we think that that's,
1780
02:43:30.245 --> 02:43:33.945
you know, we don't wanna replicate some of the same issues that we see in the fiat world,
1781
02:43:34.485 --> 02:43:35.145
you know,
1782
02:43:36.005 --> 02:43:42.520
happen on Bitcoin. And so why not build sound financial tools from the ground up that also carry most of Bitcoin's best,
1783
02:43:43.320 --> 02:43:43.820
traits?
1784
02:43:44.360 --> 02:43:52.275
That's kind of why we are really kind of strong believers in the need to build bitcoin defi, the need to build sound financial tools for sound money,
1785
02:43:52.735 --> 02:43:54.195
natively here on bitcoin.
1786
02:43:54.655 --> 02:43:57.395
1787
02:43:58.520 --> 02:44:01.020
why we haven't seen, like, as much
1788
02:44:01.561 --> 02:44:02.061
development
1789
02:44:02.601 --> 02:44:17.605
for these tools on Bitcoin. And, like, a a question I have for you, Tadh, is, like, kind of, like, you know, what's the why why is it so hard to build things on Bitcoin? Do you think it's a cultural issue that, you know, Bitcoiners don't want this? Or do you think it's a technical issue of
1790
02:44:18.130 --> 02:44:20.550
they want it, but it's really freaking hard.
1791
02:44:21.010 --> 02:44:42.350
1792
02:44:42.811 --> 02:44:46.015
And it's like, no, you can't. I'm like, I wonder, there's probably a way.
1793
02:44:46.475 --> 02:44:47.375
And so yes,
1794
02:44:48.395 --> 02:44:52.815
one of the aspects is it's easier. The Ethereum ecosystem has all these tools
1795
02:44:53.320 --> 02:44:56.860
and you can just write whatever crazy thing you want and lose $600,000,000
1796
02:44:57.400 --> 02:44:59.260
of other people's money. Theoretically.
1797
02:44:59.720 --> 02:45:00.220
Yeah,
1798
02:45:00.615 --> 02:45:05.436
and it is it is more difficult, Bitcoin. But I do think there are some technical things that, like,
1799
02:45:06.295 --> 02:45:06.795
are
1800
02:45:07.335 --> 02:45:13.710
funded quite different where if you actually look in Ethereum what people are spending a lot of gas and and using it for,
1801
02:45:14.410 --> 02:45:19.945
a lot of it's discovery. And so what we have with discrete law contracts and, like, people have worked on it a lot,
1802
02:45:20.325 --> 02:45:26.745
it's contract execution and you have all this securities like, okay, and we always talk about Alice and Bob. It's like, okay, Alice and Bob,
1803
02:45:27.439 --> 02:45:39.735
Alice is long Bitcoin, Bob is short Bitcoin, so Bob has sort of something like a stable coin, and Alice has this like super volatile Bitcoin because she thinks it's going to go up, And that's a good trade, like they both want to do this, and we have all these really secure ways to make that happen.
1804
02:45:40.195 --> 02:45:42.215
But we start with Alice and Bob,
1805
02:45:42.630 --> 02:45:47.449
And really we need to start with Alice doesn't know Bob. Like nobody knows anything.
1806
02:45:48.069 --> 02:45:48.569
And
1807
02:45:48.949 --> 02:45:54.045
you need an order book, you need a marketplace. And I think that is what you sort of see being
1808
02:45:54.425 --> 02:45:56.846
one of the use cases, one of the things that Ethereum does have
1809
02:45:57.226 --> 02:46:18.565
that is, on the one hand, horrible because it's enormous and enormously efficient for someone to say, hey, I'm interested in going long this asset. Anyone want or, like, I have an order. I wanna buy something for this amount. I changed it. My mind, I cancel. Right? Because I know that in, like, Wall Street, it's something like a 101, like, total number of orders that go into a market versus order execution.
1810
02:46:18.930 --> 02:46:23.270
Right? Most people put in orders and then cancel them. And and so you sort of see that
1811
02:46:23.890 --> 02:46:29.085
recorded for all time in Ethereum where it's all these orders and cancellations and it's very inefficient, but
1812
02:46:29.865 --> 02:46:36.430
people can find each other. And that's one of the hard parts that is sort of still unsolved in Bitcoin land where
1813
02:46:36.930 --> 02:46:37.430
you're,
1814
02:46:37.930 --> 02:46:43.390
you know, same with coin joins, same with a lot of these other protocols. It's like, well, yeah, if you can find your counterparty,
1815
02:46:43.725 --> 02:47:06.965
1816
02:47:07.270 --> 02:47:40.670
1817
02:47:41.070 --> 02:48:05.850
Right? Like, I don't know if that's the cool catchphrase, but, like, yeah, we have the mempool Make it happen, Twitter. Yeah. We have this mempool where things are sort of floating around and miners grab stuff and make blocks and make the blockchain. And the mempool is a huge I mean, people have been talking so other people today have been talking about the open source work on the mempool. It's super important and difficult. We don't really have a layer 2 mempool. We don't You know, if you're trying to find counterparties on lightning, if you're trying to do these things it's
1818
02:48:06.195 --> 02:48:07.735
there's all these sort of sporadic,
1819
02:48:08.115 --> 02:48:22.865
peer to peer interactions. It's work, but there isn't what's nice is, like, there's the mempool and you sort of all put stuff together. So we don't quite have that as, like, a layer 2 thing, but that's sort of still an open question. There's lots of cool ideas about that. Do you have anything in the works to solve that? Just ask. Just
1820
02:48:23.245 --> 02:48:28.865
kidding. It's it's a question we keep talking about, but we don't we don't like, oh, silver burrow. Not yet. Yeah. Maybe.
1821
02:48:29.480 --> 02:48:36.780
1822
02:48:37.565 --> 02:48:40.705
aggregate and where can you go find, you know,
1823
02:48:41.085 --> 02:48:47.105
Allison where can Allison Bob go to match each other in a decentralized way so we don't have this, like, regulatory pressure
1824
02:48:47.520 --> 02:48:52.480
of, you know, depositing your coins on a centralized exchange, and then, you know, they they, of course, are,
1825
02:48:53.040 --> 02:48:56.875
you know, subject to the whims of whatever jurisdiction they're in. And,
1826
02:48:57.335 --> 02:49:01.274
I I think, you know, I think Bitcoiners should take the problem more seriously. But,
1827
02:49:01.654 --> 02:49:04.075
you know, in terms of, like, what we can do with DLCs,
1828
02:49:04.430 --> 02:49:19.226
assuming that Alice and Bob have found each other already, can we just, like, enumerate some of the the use cases of, you know, what types of contracts we can do? Ben, do you do you do you maybe wanna take that? I'm, like, it's cool. You can do almost anything. Like, they have the options contracts where you're betting on the price of Bitcoin.
1829
02:49:19.540 --> 02:49:22.600
1830
02:49:22.900 --> 02:49:27.720
or you could bet you know, that you guys are doing the thing. How long is Justin Moon's mullet? Like,
1831
02:49:28.295 --> 02:49:33.354
like you can, you can do like anything. It's super cool. 2:30. Be there. How long is Justin Moon's mullet?
1832
02:49:33.895 --> 02:49:44.720
So like, like, cause all you're doing is having Oracle sign a message of what something is. So it could be, you know, the Bitcoin price. It could be the length of a mullet. It could be a Smash Bros game. It could be like, what's the
1833
02:49:45.075 --> 02:50:01.600
coordination of the stars or something. Like it can be almost anything. So it opens up like a 1000000 use cases and you can like, with that, you can make lots of cool stuff for like, you know, they're just signing with the Bitcoin price. So you could say, like, what's the execution of the script and then make a real, like, actual smart contract that way.
1834
02:50:02.085 --> 02:50:16.220
1835
02:50:16.760 --> 02:50:19.580
from a privacy and scalability perspective?
1836
02:50:19.935 --> 02:50:44.870
1837
02:50:45.489 --> 02:51:11.730
and the actual contract was just, like, negotiation between us, and we've all resulted in is spending from a multisig and then spending out of it. That's all anyone can see. So I don't know, like what we're betting on, if we are even betting. And, even though your Oracle doesn't know. So they might like, maybe they, you know, see your IP address, ping the server. I was like, oh, they got the Bitcoin price. They don't know if you were short or long, what the how big your bet was, anything like that. So it's extremely private that way. And then since all this is all off chain and just like 2 transactions,
1838
02:51:12.125 --> 02:51:13.025
it's lots more
1839
02:51:13.405 --> 02:51:22.510
1840
02:51:24.090 --> 02:51:51.245
1841
02:51:51.625 --> 02:51:59.039
Where outside? You know? And and so you need some kind of entity to just post and say, here, this is the score of the Super Bowl.
1842
02:51:59.500 --> 02:52:02.720
And and you do have to trust that entity. And this is like a problem
1843
02:52:03.579 --> 02:52:07.375
that I don't know. There's, like, whole entire alt coins that are entirely
1844
02:52:07.755 --> 02:52:11.055
devoted to oracles. I don't know what they're doing. But, like, to me
1845
02:52:11.700 --> 02:52:36.899
to me, it's always, like, well, you want to minimize. Here's this trust needed, and so you want to minimize that. Right? We we can't really get around it, but we want to reduce the power of the this Oracle as much as possible. So the goal is sort of, like, let's make the Oracle as oblivious as possible to what's going on. So they report this data, but they don't see what people are doing with it, or they don't see how many contracts are using this or anything like that. So to try this and also
1846
02:52:37.235 --> 02:52:40.295
cryptographically, they can't equivocate. They can't, say,
1847
02:52:40.835 --> 02:52:41.335
oh,
1848
02:52:41.715 --> 02:52:56.105
the Rams won the Super Bowl. No. The, you know, Oilers are on the Super Bowl. They can't they can't do both at the same time without losing their private keys, which is sort of a nice extra thing. But yeah, it's it's you know some entity in the real world may be known, may be anonymous
1849
02:52:56.485 --> 02:52:58.565
that reports on real world data.
1850
02:52:59.205 --> 02:53:04.729
And and that report doesn't have to go into the blockchain and ideally won't. Right? So that that report
1851
02:53:05.190 --> 02:53:08.570
influences the blockchain, but can be on a website or something. And
1852
02:53:09.270 --> 02:53:13.244
so that's that's sort of the you know, my goal is, like, limit the oracles. Yeah.
1853
02:53:13.805 --> 02:53:43.410
1854
02:53:43.775 --> 02:53:47.395
The same oracle can be used across the entire DLC ecosystem,
1855
02:53:47.775 --> 02:53:52.690
and, you kind of prevent this, like, fragmentation going on. And, also, you know,
1856
02:53:53.091 --> 02:54:05.476
1857
02:54:07.936 --> 02:54:16.210
1858
02:54:16.556 --> 02:54:25.136
what is the limitations of an Oracle? I like, how I think about it is, you know, you should always make sure if you're gonna be an Oracle in the DLC ecosystem,
1859
02:54:26.061 --> 02:54:34.935
the event has to be very cut and dry of what happened. And, like, Tadge was kind of hinting at this earlier of, like, you know, if
1860
02:54:35.494 --> 02:54:37.994
what what's the temperature outside? You needed to define,
1861
02:54:38.375 --> 02:54:41.755
like, what the thing that you're going to attest to is very,
1862
02:54:42.454 --> 02:54:47.490
airtight as possible. Kind of almost like a legal agreement. Otherwise, you can have ambiguity and,
1863
02:54:48.510 --> 02:54:55.386
your smart contract execution is only as good as the, Oracle's input into the, you know, the smart contract itself.
1864
02:54:56.405 --> 02:54:59.386
Another thing that we've worked on in in the DLC spec is
1865
02:54:59.760 --> 02:55:43.710
1866
02:55:44.795 --> 02:55:45.295
1867
02:55:45.675 --> 02:55:56.520
Another, thing that comes up a lot is, like, should oracles be paid? Should they not be paid? Does anyone have any thoughts on on on the panel about, you know, compensation for the services that Oracles are providing?
1868
02:55:57.860 --> 02:55:59.479
1869
02:56:00.260 --> 02:56:09.075
Basically, it's it's an interesting it's it's an interesting, like, question because, like, oh, there's an oracle being paid. Open up the door for potential collusion or whatever.
1870
02:56:09.935 --> 02:56:16.189
That, like, it's it's also interesting because maybe Oracle should be thought of as a public good or something like that.
1871
02:56:16.890 --> 02:56:20.670
And so, yeah, it's it's an interesting kind of, like, discussion topic. I think that,
1872
02:56:21.195 --> 02:56:22.175
you know, if
1873
02:56:22.635 --> 02:56:23.135
if,
1874
02:56:23.755 --> 02:56:29.729
you know, if if if, say, I'm I'm building a product and I need, you know, an oracle with,
1875
02:56:30.109 --> 02:56:34.689
you know, a guaranteed amount of uptime or something like that or some some sort of kind of, like,
1876
02:56:35.525 --> 02:56:42.750
you know, minimum level of service, then, you know, maybe then it makes sense for me to pay a little bit more to, like, kinda guarantee that kind of, like,
1877
02:56:43.390 --> 02:56:44.830
uptime and stuff like that. But,
1878
02:56:45.470 --> 02:57:13.505
1879
02:57:14.765 --> 02:57:43.780
it is like I don't think it's a huge problem of, like, incentives. Like, most likely, like, you know, people will just set up oracles and be like, oh, it just runs on AWS now forever. And they'll sign every game. They don't need to worry about it anymore. And I think, like, doing things like open source oracles where, like, you open source, like, my NFL oracle that signs every NFL game, then anyone can run this now and we can all see, like, oh, this one's fucking up. He's signing the wrong thing. And then, you know, you just switch over to new Oracles. Like, you don't need to, like, have these all these, like, you know, super,
1880
02:57:44.226 --> 02:57:56.640
1881
02:57:57.260 --> 02:58:08.215
I think it's the the one use case I keep coming back to is, like, the price of Bitcoin. Right? People wanna bet on that. We see there's all these stable, you know, Tether and USDC, and it's just like I'm always
1882
02:58:08.530 --> 02:58:16.230
very curious at, like, why people use them because it seems like a horrible idea. And one day, it's just gonna get, like, seized by some government, and then everyone loses everything. But,
1883
02:58:17.244 --> 02:58:29.920
or not, but but yeah. But it's like, well, you can sort of get that action with the DLCs where it's like, okay, I want a constant dollar price contract. And so the bitcoin price seems very important, and it does feel like oracles
1884
02:58:31.181 --> 02:58:51.471
possibly in that case would be incentivized from non without getting paid. So if you're an exchange, you're, you know, Gemini, Kraken, you say, well, I want if there are people making derivatives contracts based on the price of Bitcoin, I want their price to be our price. And most of the exchanges are very, you know, very close in price, but not always. You know, there there can be a little bit of a divergence here and there.
1885
02:58:51.995 --> 02:59:02.950
And they can say, well, if you are doing these derivatives contracts, we want you to use, you know, Kraken's price and then that'll make more people wanna trade on Kraken because you can sort of net it out.
1886
02:59:04.050 --> 02:59:06.710
And and, you know, you're already trusting these exchanges
1887
02:59:07.090 --> 02:59:09.270
to, like, hold gazillions of Bitcoin.
1888
02:59:09.675 --> 02:59:20.140
So trusting them to, like, say what the last trade price is seems like a much lower ask than that. So that does seem like, you know, it's not happening now, but it could in the future where where exchanges
1889
02:59:20.760 --> 02:59:21.260
want,
1890
02:59:21.880 --> 02:59:30.625
1891
02:59:31.564 --> 02:59:35.091
1892
02:59:35.551 --> 02:59:47.435
like, you know, trading on this, like, very important auction price. Like, okay. Here's the price of Bitcoin for the day or something. That'd be cool. And we're we're starting to see that. Yeah. I mean, I think another, like, interesting topic here is, like,
1893
02:59:48.455 --> 02:59:48.955
1894
02:59:49.575 --> 03:00:02.255
going back to how do Alice and Bob find each other in a decentralized fashion is very, very hard in the the UTXO world, and it can be done in other blockchains, although really inefficiently and with no privacy, basically.
1895
03:00:03.375 --> 03:00:11.510
So, another, like, idea that I guess I've been thinking about is, like, is it important that you retain custody of the Bitcoin,
1896
03:00:12.130 --> 03:00:13.750
while the matching happens
1897
03:00:14.370 --> 03:00:19.275
if the matching happens fast? So, like, imagine I deposit money into Kraken.
1898
03:00:19.815 --> 03:00:27.801
They do what they're really good at, which is matching buyers and sellers, and they print a Bitcoin transaction that represents the DLC outback. Does anyone have,
1899
03:00:28.280 --> 03:00:30.860
thoughts on that or why it's good, why it might be bad?
1900
03:00:31.721 --> 03:00:32.700
Any hot takes?
1901
03:00:33.240 --> 03:00:35.020
1902
03:00:35.415 --> 03:00:41.354
resistant financial markets still, which kind of is the goal here. But it is a, I mean, it is a, like, solution. Like,
1903
03:00:41.734 --> 03:01:00.734
and, honestly, it should be a spectrum. Like, you know, we can have the most decentralized version where it's like, I don't know, like, some, like, actual peer to peer network that we use to negotiate these offers. And if you have the, like, you know, the centralized ones where, you know, deposit the Kraken, spit out a DLC, and you can have things in the middle. So, they're they're all our rivals. You kinda need to try them all out and see which one sticks.
1904
03:01:01.194 --> 03:01:11.870
1905
03:01:12.455 --> 03:01:16.715
If that's 30 seconds to match a trade, I think that's a pretty acceptable,
1906
03:01:17.735 --> 03:01:18.955
amount of time. If,
1907
03:01:19.470 --> 03:01:21.250
you know, the the exchange in question,
1908
03:01:22.270 --> 03:01:27.710
is doing funky business, people will stop depositing money into their exchange almost immediately. And,
1909
03:01:28.270 --> 03:01:34.545
you just gotta make sure you're not using that same exchange as the Oracle, and you do end up having some of the censorship resistance to,
1910
03:01:35.165 --> 03:01:41.641
at least it's how I've been thinking about. Of course, that requires, like, a large amount of buy in from the existing exchanges, which are pretty,
1911
03:01:42.360 --> 03:01:46.115
vehemently against adopting any sort of Bitcoin tooling, it seems.
1912
03:01:46.495 --> 03:01:58.870
1913
03:01:59.226 --> 03:02:14.490
and they're sort of a party to every trade. And and Bob doesn't necessarily have to take a position. They could say, well, Alice over here wants to go short Bitcoin, and Alice over here wants to go long Bitcoin. So I sort of net that out. Well and I think that's very similar to the atomic finance model, if I'm not mistaken. Tony, do you wanna speak to that,
1914
03:02:15.050 --> 03:02:17.950
1915
03:02:19.436 --> 03:02:25.135
1916
03:02:25.755 --> 03:02:29.280
lightning pool and stuff like that. We're joint markets. Right? And,
1917
03:02:30.380 --> 03:02:52.435
basically, like, kind of just like, you know, users are coming on board on the app. You know, it's very seamless on on the front end for them. Just that tap button. But in the back end, what's happening is, like, you know, generating an offer message on IRC channel and then kind of, like, matching that up with a market maker, on the other side. So it's kind of, like, very simple stuff like that. I think, like, remains to be seen kind of, like, what,
1918
03:02:52.994 --> 03:02:59.255
you know, longer term, what the matching stuff will will look like and if we standardize on one thing and stuff like that. But,
1919
03:02:59.715 --> 03:03:00.274
you know, that's,
1920
03:03:01.360 --> 03:03:03.940
I guess, an open question once again. Yeah. Yeah.
1921
03:03:04.320 --> 03:03:09.460
1922
03:03:09.905 --> 03:03:14.485
contract privacy. So somebody that's a third party can't see what you're betting on,
1923
03:03:15.104 --> 03:03:18.565
without having Alice or Bob reveal that information to them.
1924
03:03:19.140 --> 03:03:28.100
You know, another interesting component of DLCs, I think, that's kind of underrated is how, it's a dual funded protocol. It requires Alice and Bob to,
1925
03:03:28.886 --> 03:03:37.705
put in some of their own Bitcoin. And, Ben, do you wanna speak to just kind of how that sometime that can have a privacy impact at the transact or blockchain level? Yeah. So, like,
1926
03:03:38.641 --> 03:03:52.555
1927
03:03:53.035 --> 03:04:00.720
if they don't know this is DLC, then they might accidentally, like, you know, link your 2 walls together. And now you guys, you know, screw the chain analysis. So good job.
1928
03:04:01.100 --> 03:04:01.260
And,
1929
03:04:01.900 --> 03:04:21.200
it's really nice and it's, great too, because it just goes in like, we just sending Bitcoin to a multisig and out. So it's the exact same off chain footprint as like a dual funded lighting channel. And, so you get this really high nice privacy where it doesn't even look like a DLC always. It could just be like and then once we have Taproot as well, it just looks like a normal payment. So it has, like, really nice, benefits there.
1930
03:04:21.615 --> 03:04:38.630