April 7, 2022

Open Source Stage Day 1 - Bitcoin 2022 in Miami

Open Source Stage Day 1 - Bitcoin 2022 in Miami
Citadel Dispatch
Open Source Stage Day 1 - Bitcoin 2022 in Miami

Video: https://youtu.be/j7R6CLnWI4M

0:0:00 Odell Intro
0:4:48 Lightning Services & Liquidity Providers panel with Ryan Gentry, Roy Sheffield, niftynei, João Almeida
0:51:36 The Future of Lightning - with Christian Decker, Hannah Rosenberg
1:23:05 Signatures - with Jonas Nick, Andrew Poelstra, and Nadav Kohen
2:03:50 Covenants - with Jerem Rubin, Burak Keceli, Sanket, hosted by niftynei and Mike.
2:43:17 Tradeoffs of Lightning Implementations - Christian Decker, Matt Corallo, Olaoluwa Osuntokun
3:35:30 Defining The Standards Of Taproot & Multisig - With Keith Mukai, Jameson Lopp, Stick, Oliver Gugger, Afsheen Bigdeli
4:23:10 Preventing Attacks On Bitcoin - With Peter Todd, Bryan Bishop, Luke Dashjr
4:48:10 Olaoluwa Osuntokun - Keynote


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 - Odell Intro

04:48 - Lightning Services amp Liquidity Providers panel with Ryan Gentry Roy Sheffield niftynei João

51:36 - The Future of Lightning nbsp with Christian Decker Hannah Rosenberg nbsp

01:23:05 - Signatures with Jonas Nick Andrew Poelstra and Nadav Kohen nbsp

02:03:50 - Covenants with Jerem Rubin Burak Keceli Sanket hosted by niftynei and Mike. nbsp

02:43:17 - Tradeoffs of Lightning Implementations Christian Decker Matt Corallo Olaoluwa Osuntokun nbsp

03:35:30 - Defining The Standards Of Taproot amp Multisig With Keith Mukai Jameson Lopp Stick Oliver

04:23:10 - Preventing Attacks On Bitcoin With Peter Todd Bryan Bishop Luke Dashjr nbsp

04:48:10 - Olaoluwa Osuntokun Keynote twitch httpstwitch.tvcitadeldispatch nbsp bitcointv

WEBVTT

NOTE
Transcription provided by Podhome.fm
Created: 3/17/2024 8:10:48 PM
Duration: 18351.203
Channels: 1

1
00:00:00.560 --> 00:00:01.380
Hello, guys.

2
00:00:02.560 --> 00:00:03.780
Good morning, Miami.

3
00:00:09.405 --> 00:00:11.665
By a show of hands, who was here last year?

4
00:00:13.245 --> 00:00:16.065
I can't see any of your hands, so that's a bad idea.

5
00:00:16.580 --> 00:00:21.720
Well, we've come a long way from last year. Last year, we were in a little tent. We called it the Fostome.

6
00:00:23.460 --> 00:00:25.320
It was more of a tent than a dome,

7
00:00:26.705 --> 00:00:34.645
but it was very active and we had a lot of people there and people were very excited about it. So this year, it was important for us to do it bigger.

8
00:00:36.440 --> 00:00:39.820
Might have overshot it a little bit. It's pretty, pretty huge.

9
00:00:40.840 --> 00:00:46.705
But at the end of the day, I hope you fill up this stage every day. We're gonna have it today, tomorrow,

10
00:00:47.085 --> 00:00:47.585
Friday.

11
00:00:49.165 --> 00:00:52.545
Really fantastic lineup. Absolute all star developers,

12
00:00:52.910 --> 00:00:55.250
open source contributors joining us.

13
00:00:57.230 --> 00:01:01.250
I imagine since most of you are here bright and early on the first day

14
00:01:01.715 --> 00:01:03.895
that you understand the importance of open source.

15
00:01:04.995 --> 00:01:10.695
I was gonna ask you how many of you are open source contributors to raise your hand, but I'm not gonna be able to see your hands. So

16
00:01:12.100 --> 00:01:18.040
I just wanted to say that I really do appreciate all the work that all of our contributors do in this space.

17
00:01:19.215 --> 00:01:22.034
They are what makes this this movement possible.

18
00:01:23.055 --> 00:01:23.795
Open source,

19
00:01:24.415 --> 00:01:25.395
you know, has

20
00:01:27.220 --> 00:01:29.880
obviously two main benefits to society.

21
00:01:30.820 --> 00:01:35.240
One being that we don't have to trust the code we run, that we can verify it ourselves,

22
00:01:36.685 --> 00:01:37.585
that it's independent

23
00:01:38.045 --> 00:01:39.025
of any corporation

24
00:01:41.325 --> 00:01:43.425
or entity that's in control of it,

25
00:01:44.765 --> 00:01:47.969
and that at the end of the day, this code

26
00:01:48.670 --> 00:01:49.810
can all be modified,

27
00:01:50.590 --> 00:01:51.090
distributed,

28
00:01:51.549 --> 00:01:52.049
improved,

29
00:01:54.204 --> 00:01:58.704
and will outlive any of the individual creators. It's very viral in nature.

30
00:01:59.645 --> 00:02:00.145
And

31
00:02:02.470 --> 00:02:03.290
I just

32
00:02:04.150 --> 00:02:08.170
am absolutely moved by everyone who continues to work in the space,

33
00:02:08.550 --> 00:02:09.850
work in open source,

34
00:02:10.584 --> 00:02:11.084
oftentimes

35
00:02:11.465 --> 00:02:13.005
for very little compensation

36
00:02:13.385 --> 00:02:14.444
when they could have,

37
00:02:15.145 --> 00:02:16.765
you know, a big paying job

38
00:02:17.785 --> 00:02:19.245
with some major corporation

39
00:02:20.220 --> 00:02:22.000
that is KYC ing you

40
00:02:22.700 --> 00:02:26.000
and trying to control everything you do and lock you into a system.

41
00:02:27.655 --> 00:02:32.955
I also wanna say just a huge thanks to the Bitcoin Magazine team for putting this together

42
00:02:34.215 --> 00:02:38.740
and really trying to make this a first class experience for open source.

43
00:02:39.280 --> 00:02:40.020
We have

44
00:02:40.960 --> 00:02:43.700
obviously the largest Bitcoin event in history

45
00:02:45.075 --> 00:02:47.095
happening in this venue today

46
00:02:47.635 --> 00:02:49.415
or and over the next few days,

47
00:02:50.515 --> 00:02:51.735
but this room

48
00:02:52.990 --> 00:03:01.010
believe there's about 1100 chairs in here, is larger than most conferences on its own, and we cannot have the largest Bitcoin event in history

49
00:03:01.630 --> 00:03:02.130
without

50
00:03:03.455 --> 00:03:06.035
the largest focus on open source in history.

51
00:03:06.735 --> 00:03:11.955
So I'm really grateful for them to make it happen. This has been months in the process.

52
00:03:12.620 --> 00:03:15.680
Big thank you to Cash App for actually sponsoring it,

53
00:03:16.780 --> 00:03:19.280
because this was a very expensive room to book.

54
00:03:22.775 --> 00:03:23.255
And,

55
00:03:23.735 --> 00:03:26.475
I appreciate you all for showing up because,

56
00:03:27.015 --> 00:03:29.195
you know, this is a movement of people.

57
00:03:30.570 --> 00:03:31.070
Without

58
00:03:31.650 --> 00:03:32.150
people,

59
00:03:32.730 --> 00:03:34.030
the code is just words.

60
00:03:34.330 --> 00:03:38.990
Right? We need the people to actually run it, build it, use it, support it,

61
00:03:39.615 --> 00:03:41.474
and that's what makes this movement great.

62
00:03:45.215 --> 00:03:48.035
I love you all. This is a very big moment.

63
00:03:48.540 --> 00:03:50.160
We're gonna have a lot of fun together.

64
00:03:50.620 --> 00:03:54.640
We have some really great programming today. Today is gonna be more technical focused.

65
00:03:56.115 --> 00:04:01.895
The next 2 days will be a little bit more accessible and a little bit more mainstream focused, but we have some really

66
00:04:03.530 --> 00:04:07.630
all star all star open source contributors that will be on panels today.

67
00:04:09.975 --> 00:04:17.035
And, I'm looking forward to it, and I hope you're looking forward to it as well. I got this big screen that's just me in front of me, which is kinda weird.

68
00:04:19.129 --> 00:04:20.669
I have 5 more minutes,

69
00:04:21.530 --> 00:04:26.590
but I'm not I don't think I'm just gonna, like, walk on stage and just keep talking. We're running a little bit behind,

70
00:04:27.884 --> 00:04:31.664
which is natural for these types of things right in the beginning. So we're gonna get started

71
00:04:32.365 --> 00:04:32.845
and,

72
00:04:33.805 --> 00:04:36.140
keep on building. I appreciate you all. Thanks, guys.

73
00:04:45.775 --> 00:04:52.115
Welcome to the open source stage. Matt did a great job stalling opening for us, doing his thing.

74
00:04:54.020 --> 00:04:55.000
Welcome, everybody.

75
00:04:55.300 --> 00:04:57.960
Let's do quick intros for the people,

76
00:04:58.900 --> 00:05:00.120
the people of the audience

77
00:05:00.635 --> 00:05:01.135
specifically,

78
00:05:01.675 --> 00:05:03.215
and you, the viewer. Yes.

79
00:05:05.115 --> 00:05:06.895
I'm just so happy to be here with everyone.

80
00:05:07.740 --> 00:05:13.040
Zhuang, do you wanna maybe say your name correctly and also give a quick intro? Let's maybe,

81
00:05:14.140 --> 00:05:15.905
we have a little bit of time, but,

82
00:05:16.385 --> 00:05:20.165
maybe keep intro short so we can get to the the good stuff. I'm Zhuang.

83
00:05:21.585 --> 00:05:24.245
I work at OpenNode. We basically do payments

84
00:05:24.560 --> 00:05:25.780
in the Bitcoin space.

85
00:05:26.400 --> 00:05:29.620
One of the first to do lining. I'm happy to be here.

86
00:05:31.805 --> 00:05:35.905
Cool. I'm Lisa, also known as Nifty Nye. I work at Blackstream

87
00:05:36.365 --> 00:05:38.705
on core lightning, recently renamed.

88
00:05:39.645 --> 00:05:40.145
Yeah.

89
00:05:41.480 --> 00:05:42.220
I'm Roy.

90
00:05:42.600 --> 00:05:45.820
I'm building Breeze. Breeze is a lightning wallet and a platform

91
00:05:46.200 --> 00:05:48.380
to interact with the lightning economy.

92
00:05:49.405 --> 00:05:50.465
And I'm Ryan Gentry.

93
00:05:50.845 --> 00:06:03.479
I do business development at Lightning Labs, where we develop L and D and, you know, liquidity services, which is the topic of the panel. Perfect. I'm glad you I'm glad you're able to make it. No. Absolutely. Thank you for having and I'm I'm Michael Tidwell,

94
00:06:04.900 --> 00:06:09.685
moderating this great panel of candidates here, attend or whatever, panelist.

95
00:06:10.625 --> 00:06:11.845
I I run infrastructure

96
00:06:12.145 --> 00:06:14.405
at Zebedee, a gaming platform company.

97
00:06:14.785 --> 00:06:15.285
So,

98
00:06:16.270 --> 00:06:20.610
let's let's jump into it. And, I think the first thing I wanna do is

99
00:06:21.390 --> 00:06:24.370
let's maybe talk about a little bit of history of LSPs.

100
00:06:24.974 --> 00:06:25.634
You know,

101
00:06:26.014 --> 00:06:33.634
this you know, I have no idea what an LSP is being fairly new to lightning myself. Maybe someone on the panel, someone maybe Roy Yeah. Can break down.

102
00:06:33.950 --> 00:06:38.370
What is an LSP? Who who even made up this term? What what is this? That's a good question.

103
00:06:39.550 --> 00:06:42.095
I don't know. Someone came up with a term.

104
00:06:42.975 --> 00:06:44.995
LSP is a lightning service provider.

105
00:06:45.695 --> 00:06:46.655
It's kind of,

106
00:06:47.295 --> 00:06:48.515
the way that

107
00:06:48.895 --> 00:06:51.475
everyone can plug into the lightning network.

108
00:06:52.319 --> 00:06:59.939
Similarly to the way that you have an ISP and you plug your router in your home and you're plugged in into the, in Internet,

109
00:07:00.305 --> 00:07:06.164
the same way we need an infrastructure in Lightning that allows you to be connected to the network

110
00:07:06.625 --> 00:07:12.550
in as seamlessly as possible. So that's why wait. I remember. I coined the term LSC.

111
00:07:13.090 --> 00:07:14.310
Yeah. So

112
00:07:15.170 --> 00:07:17.350
that that's why I came up with this

113
00:07:17.705 --> 00:07:24.205
concept of a a Lightning service provider, and that's the service that facilitate this connectivity to the Lightning

114
00:07:24.585 --> 00:07:26.125
Network. Great. And

115
00:07:26.990 --> 00:07:33.970
I I just wanna say it it seems I I feel like we could talk about this stuff maybe for, like, an hour and a half because just because we're we're all doing

116
00:07:34.545 --> 00:07:40.885
pretty different things with lightning, like, LSPs and and and whatnot. Like, for instance, Zebedee is doing custodial

117
00:07:41.505 --> 00:07:42.965
LSP stuff, and

118
00:07:43.289 --> 00:07:44.909
Breeze, on the other hand, noncustodial.

119
00:07:45.530 --> 00:07:49.710
And we have a lot of cool things in between. I mean, there's so much to dig into. Yeah.

120
00:07:50.655 --> 00:08:00.500
I I kinda wanna maybe maybe we can kinda piecemeal this and kinda see where it goes, but, because these topics because within LSPs, there's there's so many different kind of, I guess you can

121
00:08:00.800 --> 00:08:01.120
say,

122
00:08:01.680 --> 00:08:02.420
use cases

123
00:08:02.800 --> 00:08:05.540
and and and implementations, I guess you could say.

124
00:08:07.074 --> 00:08:09.095
Maybe we start with with

125
00:08:09.875 --> 00:08:15.360
non custodial breeze route and then kinda work our way to what everyone else is doing. Yeah. Okay. Sure.

126
00:08:15.740 --> 00:08:20.639
Sure. Not not not to shit on custodial solutions, but the only way that you can do

127
00:08:21.020 --> 00:08:24.754
Lightning is in a noncustodial fashion. Lightning is the extension of Bitcoin.

128
00:08:25.134 --> 00:08:25.615
Bitcoin

129
00:08:25.935 --> 00:08:28.595
all the properties of Bitcoin of being censorship resistant,

130
00:08:29.055 --> 00:08:29.555
open,

131
00:08:30.095 --> 00:08:30.595
borderless,

132
00:08:31.055 --> 00:08:31.955
etcetera, etcetera.

133
00:08:32.319 --> 00:08:37.139
We need to bring that to the to the lightning network. So the only way that you can do

134
00:08:37.759 --> 00:08:38.259
really

135
00:08:39.815 --> 00:08:45.355
lightning is in a non custodial fashion, and and and the function of an LSP in just in that

136
00:08:46.055 --> 00:08:47.274
topology is

137
00:08:47.899 --> 00:08:57.279
how do you, as a user, how do you connect to the network? You actually need to run a node. Right? The node is the entity that facilitates your participant

138
00:08:57.645 --> 00:08:58.545
in the network.

139
00:08:58.925 --> 00:09:06.065
So you let's say you were able to run a node, and in Breeze, for example, we allow you to run a node on your mobile device.

140
00:09:07.050 --> 00:09:07.790
A node

141
00:09:08.410 --> 00:09:11.630
can do anything with the inside the lightning network without

142
00:09:12.250 --> 00:09:17.475
the ability to plug in to the network. So the LSP is the bridge between the network

143
00:09:17.855 --> 00:09:21.005
and the end user node. And the way that the

144
00:09:23.030 --> 00:09:28.090
LSP needs to connect the user to the Lightning Network is by opening a channel.

145
00:09:28.550 --> 00:09:30.250
There's an entity in Lightning Network,

146
00:09:30.710 --> 00:09:36.055
which is called the payment channel. The LSP needs to open a payment channel and provide liquidity

147
00:09:36.835 --> 00:09:38.135
to the end user.

148
00:09:38.995 --> 00:09:41.175
So so for the other panelists here,

149
00:09:41.490 --> 00:09:42.230
does anyone

150
00:09:43.250 --> 00:09:48.950
have a different take? Like like, for instance, the thing that Roy just described, does it scale? Does anyone have any, like,

151
00:09:49.445 --> 00:09:49.945
maybe

152
00:09:50.325 --> 00:10:02.200
counter objection or slightly different angle that they would want to talk about here? Or do does everyone just 100% agree with Roy? I'm just curious. Anything? I think the the the key thing that Roy said that I definitely agree with is,

153
00:10:02.680 --> 00:10:16.180
you know, when we think about lightning, we think about there's the core of the network, which is largely service provider nodes, big nodes that are doing routing, and then there's the edges of the network, right, which is generally the users, right? And so some users will be

154
00:10:16.800 --> 00:10:19.620
operating on a custodial node, some will be on non custodial,

155
00:10:19.935 --> 00:10:31.950
but that function of connecting the core to the edge, that is the service that's provided. It's connecting you to the broader lighting network, which you know, I particularly work with a bunch of like a cross section of a bunch of different LSPs,

156
00:10:33.370 --> 00:10:35.870
like everybody on the stage, Lisa aside.

157
00:10:36.410 --> 00:10:36.910
But

158
00:10:37.450 --> 00:10:37.950
we

159
00:10:39.305 --> 00:10:43.805
there's all sorts of different use cases and different things that people are doing on lightning from sending funds

160
00:10:44.665 --> 00:11:00.725
to emerging markets, from playing games, from playing podcasts, etcetera. And the function of making that connection seamless of making sure that you can get from stats from the edge of the network through the core to some other destination like that function at its core is is what the Lightning Service Provider does.

161
00:11:01.505 --> 00:11:05.310
And I would say it depends on the end user too. You know? If you're talking,

162
00:11:06.250 --> 00:11:08.269
of a big company, publicly traded

163
00:11:08.649 --> 00:11:12.029
company, they might not, at this time, be ready to run a non custodial,

164
00:11:12.569 --> 00:11:13.470
you know, infrastructure.

165
00:11:14.485 --> 00:11:19.065
They need some compliance stuff. You know? The the stuff we don't like, but that is necessary.

166
00:11:19.685 --> 00:11:22.345
So they might come, in this case, to us, you know,

167
00:11:22.885 --> 00:11:23.720
because that's

168
00:11:24.120 --> 00:11:29.740
that's what they need to show to the regulators to, like, oh, we're legit. We're running a service that

169
00:11:30.120 --> 00:11:35.125
complies to all the stuff that you need. So at the end of the day, it really depends on the end user. Right? From

170
00:11:35.425 --> 00:11:39.045
for me, from my perspective, obviously, I would want this to be all noncustodial.

171
00:11:39.900 --> 00:11:40.720
But sometimes,

172
00:11:41.180 --> 00:11:42.720
you know, if you're like McDonald's,

173
00:11:43.260 --> 00:11:47.520
they cannot run a noncustodial service today because they don't have an empty up, for instance.

174
00:11:47.834 --> 00:11:54.815
They're in the food business or real estate business, maybe. They're not in the finance business. So it it really depends on where your,

175
00:11:55.120 --> 00:12:06.605
you know, where your goals as a company. Like, do you wanna waste time pursuing that license, or do you just wanna get a quick shortcut and get into the big plugged into the Bitcoin network? So I feel like there's service for everything.

176
00:12:08.105 --> 00:12:12.080
Lisa, did you wanna or Nifty Nai, did you wanna chime in on anything here?

177
00:12:12.480 --> 00:12:18.900
And so, I mean, when we're talking about liquidity, I think one thing maybe it'd be interesting to kinda talk a little more,

178
00:12:21.225 --> 00:12:22.925
broadly about, like, what is liquidity

179
00:12:23.625 --> 00:12:24.365
on lightning?

180
00:12:24.904 --> 00:12:28.125
Be before we jump on that Yeah. Yeah. Let me ask a quick follow-up for.

181
00:12:30.610 --> 00:12:31.270
Got it.

182
00:12:31.730 --> 00:12:35.890
Which I still don't recognize you even though I've known you for years. The the hair is throwing me off.

183
00:12:37.730 --> 00:12:39.350
So so do you feel like

184
00:12:40.615 --> 00:12:46.475
companies will probably even long term will probably be noncustodial, and then maybe, like, your end users, like, your actual

185
00:12:46.990 --> 00:12:50.930
nonbusiness users are gonna be noncustodial, or do you not see it that way?

186
00:12:51.390 --> 00:12:58.795
I feel like there is a transition phase. Right? Right now, they need to go through these services like what we do. Like, eventually, long term, the goal is

187
00:12:59.335 --> 00:13:02.315
to be able for the business to build self serve. Right?

188
00:13:02.775 --> 00:13:12.269
And, ideally, the utopia is like every business runs their own infrastructure. They're in control of their money. I mean but the reality is I don't see that happening very soon.

189
00:13:13.115 --> 00:13:21.214
So, like, 2 weeks, 2 years, 20 years? I wanna give a timeline. That's like asking what's the price of Bitcoin to be here. Well, I was gonna ask that next. You know?

190
00:13:22.020 --> 00:13:22.520
Okay.

191
00:13:23.300 --> 00:13:25.640
Well, may maybe we jump into the other l,

192
00:13:26.180 --> 00:13:26.760
the liquidity.

193
00:13:27.300 --> 00:13:28.840
Oh, yeah. So Totally.

194
00:13:29.380 --> 00:13:30.200
Why don't you

195
00:13:30.505 --> 00:13:41.700
tee that off? Yeah. Totally. So, like, I mean, I think one thing that's, like, useful so I understand when you're talking about liquidity service providers is exactly what service they're providing. Right? Like, what is that liquidity

196
00:13:42.080 --> 00:13:45.280
that the l and liquidity service provider stands for?

197
00:13:45.920 --> 00:13:47.860
And it kinda goes back to how

198
00:13:48.225 --> 00:13:51.205
the lightning network is set up and what, like,

199
00:13:52.145 --> 00:13:55.045
it's when we're talking about liquidity, we're literally talking about

200
00:13:55.410 --> 00:13:59.030
Bitcoin that's being committed to lightning channels. Right?

201
00:13:59.490 --> 00:14:01.590
And there's kind of this, like, inherent

202
00:14:02.645 --> 00:14:06.985
problem with moving money over Lightning Network, and that is

203
00:14:07.445 --> 00:14:13.770
who and where is that Bitcoin that's been committed to Lightning Channels locked up? Who's got it?

204
00:14:14.150 --> 00:14:27.154
Who's got the ability to use that locked of Bitcoin to pay someone else? Right? This is, like, becomes a kind of complicated problem. Right? There's only so much Bitcoin in the world. We well, what is it? Do we hit 18? Is it 19,000,000?

205
00:14:27.850 --> 00:14:28.350
19,000,000

206
00:14:28.650 --> 00:14:31.790
was the thing? So there's only 19,000,000 Bitcoin.

207
00:14:32.490 --> 00:14:34.670
A lot of that Bitcoin lives in,

208
00:14:35.524 --> 00:14:37.545
cold storage or exchanges

209
00:14:38.805 --> 00:14:50.970
or, you know, people's, like, wallets at home, whatever. And then there's even a smaller part of that, like, ends up getting locked into Lightning Channels. Right? So I think one thing is, like, okay, there's only so much Bitcoin available to be used,

210
00:14:51.589 --> 00:14:55.805
Lightning, etcetera. Okay. So then you've got the amount of Bitcoin that's locked into Lightning channels.

211
00:14:56.985 --> 00:15:02.845
Then in order like, once you're operating on the Lightning Network, your ability to send and receive payments,

212
00:15:03.790 --> 00:15:21.570
sending payments is, like, I wanna say a little bit easier. You can buy some Bitcoin, lock it into a Lightning channel, and then send it. So that's kind of like sending Bitcoin, sending Lightning over Bitcoin to some extent is bring your own stats. Like, you've got some money and you're probably gonna, like, put it in and send it out somewhere else.

213
00:15:22.350 --> 00:15:33.185
The harder problem is receiving money on Lightning. This is this is, like, tends to be and you guys should definitely correct me if I'm wrong. This tends to be kind of the gap. The liquidity service providers,

214
00:15:33.910 --> 00:15:38.090
fill in for that edge network that Ryan is was talking about earlier.

215
00:15:38.550 --> 00:15:39.050
So

216
00:15:39.750 --> 00:15:40.230
the,

217
00:15:40.630 --> 00:15:46.315
the work of figuring out, like, okay. We only have so much Bitcoin locked into channels or, like, as a service

218
00:15:46.855 --> 00:15:50.154
provider. You know? If if someone wants to receive a payment,

219
00:15:50.509 --> 00:15:53.970
the liquidity service provider has to figure out how to get

220
00:15:54.350 --> 00:15:55.730
Bitcoin to them

221
00:15:56.269 --> 00:15:56.769
from

222
00:15:57.635 --> 00:16:04.935
whatever channels etcetera. They've they've got Bitcoin locked into already, etcetera. So we call this So this problem of, like,

223
00:16:05.270 --> 00:16:08.650
getting the ability to receive Bitcoin over Lightning,

224
00:16:09.030 --> 00:16:10.730
we call that inbound liquidity.

225
00:16:11.670 --> 00:16:16.555
Inbound liquidity is, like, kind of a valuable difficult thing to get on Lightning.

226
00:16:17.015 --> 00:16:22.635
Part of the reason for this is you have to convince someone else to make that Bitcoin available to you

227
00:16:22.960 --> 00:16:41.825
before you can receive payments. So LSPs help solve this problem. And, again, please, like, help correct me if I'm wrong here. You guys have a lot more hands on experience with us than I do. But getting LSPs are the the service that provides basically the ability to receive and send, but the receive part is the really difficult part of,

228
00:16:42.240 --> 00:16:43.940
payments over lightning. So,

229
00:16:44.800 --> 00:16:55.535
some of the work that goes into that is, like, okay, where do you have all this Bitcoin available? So, like, if you have Bitcoin available such that you can then pay it out to people. Right? Someone else is gonna pay you on the other end, but,

230
00:16:56.840 --> 00:17:00.460
I think another, like, this is a little bit of a tangent, but sort of similar.

231
00:17:01.320 --> 00:17:06.885
Another thing about Bitcoin liquidity on Lightning is that I would call Lightning a over collateralized

232
00:17:07.345 --> 00:17:10.245
network. If you wanna send a bitcoin from

233
00:17:10.705 --> 00:17:12.805
your node to 3 hops away

234
00:17:13.230 --> 00:17:14.690
because Lightning is routed,

235
00:17:15.230 --> 00:17:16.690
you need 3 Bitcoin

236
00:17:17.389 --> 00:17:20.289
of Bitcoin already locked into Lightning

237
00:17:20.835 --> 00:17:31.260
before you can send 1 bitcoin 3 hops away. So every payment that's made over lightning requires a multiple of bitcoin to already be committed to the lightning network.

238
00:17:32.120 --> 00:17:43.885
So liquidity management and how do you so then so, you know, you kinda step back a little bit. It's okay. Like, we need a lot more Bitcoin on the network in order to make payments work than the actual volume of the payments that are going through the network

239
00:17:44.424 --> 00:17:48.125
currently as it stands. Maybe we'll come up with some really fancy ways to do rehypothecation

240
00:17:51.070 --> 00:17:55.740
on lightning. We don't we don't like that word any different. But today. They're not.

241
00:17:56.715 --> 00:17:58.095
So you mean there'll be 22,000,000

242
00:17:58.475 --> 00:17:59.455
Bitcoin? Yeah.

243
00:18:00.075 --> 00:18:07.000
Maybe we'll expand the Bitcoin supply but like there's this anyway, this is like the like sort of philosophical problem about liquidity on lightning.

244
00:18:08.100 --> 00:18:16.455
So, like, then, you know, you're doing liquidity. It's like, okay. You're providing liquidity to people. People. Like, how much Bitcoin do you have? How do you attract more people that have Bitcoin that isn't on lightning

245
00:18:16.835 --> 00:18:24.080
to bring their Bitcoin into the lightning network such that we can use it as payment rails to move, you know, value around between people,

246
00:18:24.860 --> 00:18:25.360
etcetera.

247
00:18:25.660 --> 00:18:39.370
That's a lot of talk. So so you made it pretty clear. Inbound liquidity is one of the biggest challenges right now for onboarding new people for it's it's it's one of the biggest challenges right now. And I'm I'm curious. Maybe we can talk about

248
00:18:39.750 --> 00:18:42.169
how is this challenge being addressed, the inbound liquidity

249
00:18:42.470 --> 00:18:44.745
challenge. You know, and and what what are

250
00:18:45.125 --> 00:18:52.105
what are we doing to, you know, tackle this problem because there's a couple different ways. Right? So So one thing that I think is was really interesting,

251
00:18:53.110 --> 00:18:54.730
last week when Kraken

252
00:18:55.270 --> 00:18:57.850
finally turned on their node and

253
00:18:58.150 --> 00:19:09.705
got on and joined the Lightning Network, their node, like last I looked, they had like rocketed up to something like number 10 in total capacity on the network. Everyone here is probably guilty of helping that. Not a failure.

254
00:19:10.725 --> 00:19:15.559
But I think what was what's really interesting is like the inbound liquidity problem

255
00:19:15.940 --> 00:19:16.440
is

256
00:19:16.740 --> 00:19:17.240
generally

257
00:19:18.100 --> 00:19:19.080
absolutely agreed

258
00:19:19.565 --> 00:19:31.960
with Lisa that it is like the scarce resource and the hard thing to acquire. But then you have an entity like Kraken where people are like hey, we want them to succeed, we think there's gonna be a ton of fees to be earned by routing payments

259
00:19:32.419 --> 00:19:33.640
to the Kraken node,

260
00:19:33.975 --> 00:19:48.480
like let's allocate a ton of capital to them or they don't even have to pay for it, we'll just kinda like optimistically think that that's where we're gonna earn a return from. It's like it's like if you're so cool and popular, it's like life is easy for you. You know what I mean? I know. I don't know anything about that. That must be nice.

261
00:19:49.875 --> 00:19:54.295
So I think that's been like a really interesting thing, and we've seen that a couple times where

262
00:19:54.675 --> 00:20:11.605
there are like new services that pop up on Lightning and they ask like how can I go and get connected to the network? And we're just still in these early days where kind of the best solution still is like put up the bat signal on Twitter and say like hey, we have a new node, can you please connect to us and the community will generally

263
00:20:11.985 --> 00:20:13.205
open the channels to you.

264
00:20:13.970 --> 00:20:18.950
As it matures and the network gets bigger, I think it's fundamentally, it's a market problem.

265
00:20:19.650 --> 00:20:30.855
As Lisa said, well you're trying to convince somebody to allocate capital to your direction, and like what's the best way to do that? Well, you just pay them. Right? I agree, because right now it's I feel like for

266
00:20:31.220 --> 00:20:39.480
Lightning companies or Lightning service providers, there's almost kinda, like, right now, an excess of capital where it's like, I don't wanna just deploy this randomly, but when I see a Kraken,

267
00:20:39.805 --> 00:20:43.265
I suddenly have plenty of capital to deploy. You know? And,

268
00:20:43.725 --> 00:20:54.320
I think I think we're kinda past, like, the 2019, 2020, 2021 where we just wanna open up random channels to everyone. We wanna be a little bit more thoughtful on that, so It has it definitely has matured for sure.

269
00:20:54.860 --> 00:21:04.765
I I would say there are 2 different issues like connecting to routing nodes to other hubs in the network and onboarding end user. Yes. These are 2 completely separate problems.

270
00:21:05.110 --> 00:21:10.330
Would you think that that's, like, the core and edge distinction? Yeah. Yeah. And then end user can be,

271
00:21:10.789 --> 00:21:15.155
like a service, like OpenNode as well. Like but yeah. So let's say an edge

272
00:21:15.695 --> 00:21:18.835
onboarding edges and connecting to other nodes

273
00:21:19.215 --> 00:21:23.075
in the network, these are completely 2 separate problems. And and

274
00:21:23.535 --> 00:21:34.355
I don't know if it's easy to send in the Lightning Network right now because in order to send, you need to first receive. And then before you're able to send, you need to receive and and to solve the inbound liquidity

275
00:21:34.655 --> 00:21:35.155
problem.

276
00:21:35.455 --> 00:21:38.915
So I think there are what what's cool about the inbound liquidity,

277
00:21:39.935 --> 00:21:47.559
problem that is it's being solved for end users at least. Like, we want we don't have enough tools to manage liquidity

278
00:21:47.940 --> 00:21:51.960
efficiently currently in the Lightning Network, but at least to onboard users,

279
00:21:52.325 --> 00:21:54.024
there are set of solutions

280
00:21:54.404 --> 00:21:57.465
that, were put into place in order to facilitate

281
00:21:58.245 --> 00:22:01.385
this, out of the box inbound liquidity issue.

282
00:22:01.850 --> 00:22:08.270
One of the solutions is what we're doing at Breeze, opening 0 confirmation channels. So we're actually utilizing

283
00:22:08.835 --> 00:22:12.215
the liquidity of the end user in order to open

284
00:22:12.675 --> 00:22:13.175
liquidity,

285
00:22:13.715 --> 00:22:14.855
to allocate liquidity

286
00:22:15.315 --> 00:22:24.440
to the user end. So we open a channel and we push liquidity, the same liquidity that the user used to top up the wallet. We use it in order to provide

287
00:22:25.435 --> 00:22:27.375
inbound liquidity. That's one solution.

288
00:22:28.795 --> 00:22:33.855
Another solution is pool solution like pool from Lightning Labs is the ability to lease

289
00:22:34.620 --> 00:22:35.120
liquidity

290
00:22:35.740 --> 00:22:36.720
and to open

291
00:22:37.820 --> 00:22:38.480
a channel

292
00:22:38.940 --> 00:22:41.040
which is a list for by default,

293
00:22:41.660 --> 00:22:43.565
a month, 2 weeks, what's the default?

294
00:22:43.865 --> 00:22:49.200
It's we have range, but there's a duration for 2 weeks, a month, 3 months, and a year now, I believe. Okay. That's very cool.

295
00:22:50.000 --> 00:22:51.539
And the 3rd solution from

296
00:22:52.799 --> 00:22:59.085
Lisa I think worked on it, it's liquidity ads where nodes can announce that they are willing

297
00:23:00.424 --> 00:23:00.924
to

298
00:23:01.625 --> 00:23:04.765
rent you liquidity for such and such

299
00:23:05.145 --> 00:23:05.645
price.

300
00:23:06.720 --> 00:23:15.139
So we have pool, we have Breeze with the model where if I download the Breeze wallet, I get inbound liquidity kind of by being a user of Breeze.

301
00:23:15.525 --> 00:23:27.309
You have liquidity at I'm actually a little bit unfamiliar. Would you like to Yeah. I can talk about them a bit. So liquidity ads is a proposal that I wrote for the lightning spec, so it's specified.

302
00:23:27.610 --> 00:23:35.035
That means that we are working with other lightning implementations so that, hopefully, it'll be supported by every node on the Lightning Network.

303
00:23:35.815 --> 00:23:37.735
It's basically act a way to

304
00:23:38.615 --> 00:23:40.930
I call it like a billboard system of advertising

305
00:23:41.309 --> 00:23:44.050
that you've got liquidity that you're looking to deploy.

306
00:23:44.910 --> 00:23:53.784
This billboard ad that you can put up, you can put in, like, how much you're looking to get for the capital that you have available. So you set your own rate of how much that your

307
00:23:54.245 --> 00:23:59.320
available capital is worth to you, and you can set that. You put it into a little advertisement.

308
00:23:59.940 --> 00:24:06.420
Those advertisements go into something in lightning we call the gossip network, which every node on the network sends and receives.

309
00:24:07.140 --> 00:24:11.955
So so you can advertise. You put a little bit of information, this little kind of, like, classified ad

310
00:24:12.255 --> 00:24:26.534
called liquidity ads into your gossip goes out to every node on the network. So if you're running a node right now, you're currently getting all the liquidity ad data. It's on your node. Whether or not your node exposes that to you is a different question, but if you're on core lightning, you can see them.

311
00:24:27.015 --> 00:24:29.434
They're also available to see on lnrouter.app,

312
00:24:31.015 --> 00:24:35.419
which is like a little there's a little dashboard. You can go look at all the liquidity ads that are currently available.

313
00:24:35.879 --> 00:24:50.925
Anyway, so this is the way you advertise, like, hey. I've got some capital. I'd like to deploy it. Here's how much I want you to pay for me. And then you can if you're trying to buy or get inbound liquidity, you can go look at all the nodes that are offering liquidity, where they are on the network, whether it's worth, what they're offering to you or not, and then

314
00:24:51.305 --> 00:24:55.600
decide whether or not to take them up on their ads. So it's a it's super decentralized.

315
00:24:55.900 --> 00:25:10.525
I have no information for you. It's been out for maybe, like, 7 months now. I have no information for you about how many people have used it, or how much capital has been allocated using that market because that data only exists between the buyer and seller.

316
00:25:11.140 --> 00:25:15.400
You can go look at I think the number of ads is, like, we're close to, like, 15, 20 these days.

317
00:25:15.780 --> 00:25:17.320
So it's, like, small but growing.

318
00:25:18.100 --> 00:25:29.549
Yeah. I wanna talk a little bit custodial with you for for but before I do that, I wanna jump and and wrap up maybe some pool because we didn't really talk about pool much. Where do you see the leasing

319
00:25:30.649 --> 00:25:31.149
liquidity

320
00:25:31.690 --> 00:25:40.325
industry, the leasing channel market? What what do you what is it like now? What was it before? What's what's it gonna become? Maybe you can talk a little bit about that since you're familiar. Sure.

321
00:25:40.885 --> 00:25:41.385
So

322
00:25:41.765 --> 00:25:43.850
what it was previously was, like,

323
00:25:44.169 --> 00:25:45.150
before we had,

324
00:25:45.690 --> 00:25:54.785
you know, channel leases as like a formal kind of financial product on lightning, it was all handshake agreements between, you know, people on the stage, right, saying like, hey

325
00:25:55.405 --> 00:25:59.985
message you on Telegram, hey can you please open 1 Bitcoin channel to me, like we're expecting

326
00:26:00.285 --> 00:26:03.030
a lot of volume this weekend or something like that. Right?

327
00:26:03.410 --> 00:26:08.150
That obviously doesn't scale if we think flight in network is gonna be tens to hundreds of thousands

328
00:26:08.610 --> 00:26:09.350
of nodes,

329
00:26:10.050 --> 00:26:10.550
businesses

330
00:26:11.485 --> 00:26:18.545
being able to interact. So turning that kind of interaction into more of a market interaction saying, you know, I will pay you

331
00:26:18.880 --> 00:26:23.059
x amount or x percent of the capital that you, commit to me,

332
00:26:23.600 --> 00:26:30.655
as long as you keep that channel open for say a 3 month period. Right, and I think the cool thing that that both pool and,

333
00:26:31.515 --> 00:26:38.070
the liquidity edge construction does is that that lease term is actually secured by Bitcoin script. Right. So if the channel is opened,

334
00:26:38.850 --> 00:26:42.790
it actually, you know, those funds can't be decommitted from that channel.

335
00:26:43.170 --> 00:26:48.745
Bitcoin itself will not allow that channel to be closed until the duration is up, which I think is a really cool construction.

336
00:26:49.205 --> 00:26:50.745
So so it's like I can either

337
00:26:51.365 --> 00:26:55.385
use, like, something like pool or like a commit or whatever to get, like, inbound liquidity,

338
00:26:55.710 --> 00:27:07.475
or I can just start an exchange and get really popular and get a bunch of users, and they get free inbound liquidity. Yeah. Or just, like, a bunch of Twitter users and just say, hey. I need inbound liquidity. Or we can or we can download reason. Or we can

339
00:27:08.595 --> 00:27:12.434
so so so I guess The final thing that I wanna say on that though, which is which is really interesting,

340
00:27:12.995 --> 00:27:13.495
is,

341
00:27:15.290 --> 00:27:16.030
we've seen

342
00:27:17.130 --> 00:27:19.150
in pool, the lease rates are public.

343
00:27:20.170 --> 00:27:28.475
If you're running a node you can download all the data and read through all the history. And so we've seen over the last like couple months or this year that like

344
00:27:28.990 --> 00:27:34.210
demand is starting to is like really starting to pick up, rates are starting to get, like, pretty sustainably high,

345
00:27:34.670 --> 00:27:40.674
which means that there is now, like, you know, well maybe in the early days there was an overabundance of supply,

346
00:27:41.535 --> 00:27:58.525
like demand is starting to kind of pick up and push prices up, which should in theory then induce kind of more supply coming on the network. Because if you can earn, you know, 6% annualized on your Bitcoin for opening a channel to a node that wants it, like, that's a pretty good deal. Or you can trust all your money with, like, a custodial

347
00:27:59.305 --> 00:28:06.760
you know? I I'm not gonna name names. Kinda like, hey. We magically give you 6%, and we and they they take this is like the I mean,

348
00:28:07.220 --> 00:28:18.195
this might be the only thing I can think of that's, like, noncustodial, actually, like, providing a service where you can get a little bit of income on your Bitcoin potentially. Right? Absolutely. And, like, you know And that's key. We need to break a myth here. Like, there's a misconception

349
00:28:19.135 --> 00:28:20.995
that Lightning is free.

350
00:28:21.320 --> 00:28:25.019
Yes. And and in order for Lightning to be successful,

351
00:28:26.039 --> 00:28:28.539
the the routing fees need to go higher

352
00:28:29.185 --> 00:28:30.725
and and lightning needs

353
00:28:31.345 --> 00:28:33.525
basically, the the entire thing about liquidity

354
00:28:34.065 --> 00:28:44.149
is is why would people allocate liquidity to going back to what Lisa said, like what's the reason that people will put their liquidity in lightning? They want to generate yield, right?

355
00:28:44.575 --> 00:28:46.434
So if people put liquidity

356
00:28:46.735 --> 00:28:47.235
in

357
00:28:47.535 --> 00:28:56.990
lightning and they they are able to generate yield, then people will put more liquidity in lightning. So there there's a circle here of like traffic

358
00:28:57.690 --> 00:28:58.590
brings liquidity,

359
00:28:59.245 --> 00:29:09.400
liquidity provides yield, yield provides more traffic, traffic provides more liquidity. So we need to start thinking about lightning as an economical tool,

360
00:29:10.500 --> 00:29:11.000
and

361
00:29:11.460 --> 00:29:16.280
lightning, like long term, if we all want Bitcoin and lightning to be successful,

362
00:29:16.934 --> 00:29:19.755
it can't be as cheap as it is now.

363
00:29:20.774 --> 00:29:21.335
Thank you.

364
00:29:21.894 --> 00:29:26.080
Can you scoot forward just a little bit? What's that? Just scoot forward a little bit. I need to tell

365
00:29:26.780 --> 00:29:27.840
you. These guys

366
00:29:28.620 --> 00:29:29.360
think, like,

367
00:29:29.660 --> 00:29:39.475
noncustodial lightning will scale, and I just wanna talk, like, real between you between Zebi and OpenNode right now about how, like, Lightning will actually work in the future. Actually, we've, full story about liquidity.

368
00:29:39.855 --> 00:29:45.870
There were a trending that we're seeing. So we're working, like, pretty big digital wallets that today in our world.

369
00:29:46.250 --> 00:29:50.270
And we're doing is they actually are connecting to us saying, yo,

370
00:29:50.645 --> 00:30:07.680
we need to connect for launching our product. That's to some private channels because they don't want to announce first their node on network because they don't wanna get attacked like the OS. Mhmm. And then so we're doing we actually sign contracts, like legal contracts about channels, which is smart contracts, dumb real contracts? Contracts. Yeah.

371
00:30:08.035 --> 00:30:09.095
Like, real contracts.

372
00:30:09.715 --> 00:30:15.975
So it's it's a it's a trend, we're seeing. Like, we're actually, like, signing contracts about opening channels to these service providers.

373
00:30:16.770 --> 00:30:22.549
So so, you know Oh, yeah. Yeah. It's it's good. That's see. That that's a sign of maturity of lightning. Yeah.

374
00:30:22.850 --> 00:30:32.255
And I think we're gonna see that more often in the future. One one thing on the on the fees, which I it's you're absolutely right on, but I just I just happened to be looking at the numbers,

375
00:30:32.895 --> 00:30:33.875
last week. So

376
00:30:34.470 --> 00:30:35.370
Visa, Mastercard

377
00:30:35.830 --> 00:30:42.784
kind of average rates that they charge for domestic payments is like and you would know this better than me probably is you know, 1.29%

378
00:30:43.645 --> 00:30:44.625
plus 5.5¢,

379
00:30:46.044 --> 00:30:46.945
for per payment.

380
00:30:47.565 --> 00:30:52.580
I looked at, like, the top five biggest nodes on the Lightning Network, and it just so happens

381
00:30:53.039 --> 00:30:54.580
that the average fee rate,

382
00:30:55.039 --> 00:30:58.019
across those 5 nodes is, like, exactly

383
00:30:58.320 --> 00:30:58.820
90%

384
00:30:59.205 --> 00:31:05.144
of that. So it's it's the the 10 x difference. It was, like, 13 depths or something Okay. Which I think is just, like, a very interesting

385
00:31:05.765 --> 00:31:10.030
way that, you know, this this free market decentralized ecosystem has kind of coalesced,

386
00:31:10.890 --> 00:31:14.669
at a rate that is, you know, typical venture capital wisdom

387
00:31:15.125 --> 00:31:31.149
is, you know, in order for something to, you know, a new network to disrupt the incumbent, it has to be 10x better Yeah. In fees. And so I thought that was just interesting that that is kind of where the rates are right now. And it's happened it it happens very naturally because fees are your only 2 currently within the Lightning Network

388
00:31:31.450 --> 00:31:34.705
to to say, like, how do I want the liquidity flow

389
00:31:35.804 --> 00:31:37.585
to be. Like if I want

390
00:31:38.044 --> 00:31:40.625
the liquidity to flow from one end to another,

391
00:31:41.485 --> 00:31:42.465
I need to have

392
00:31:42.909 --> 00:31:43.809
lower fees.

393
00:31:44.590 --> 00:31:49.250
And if I wanted the liquidity to flow in the other way from B to A,

394
00:31:50.110 --> 00:31:54.015
if I don't want the liquidity to flow from B to A, I need to set high fees.

395
00:31:54.475 --> 00:31:54.975
So

396
00:31:56.555 --> 00:31:59.135
it's it's it's it's basically represent, like, the opportunity

397
00:31:59.435 --> 00:32:00.370
cost of

398
00:32:00.850 --> 00:32:02.309
of the liquidity. So

399
00:32:02.850 --> 00:32:04.550
and fees are the only way to control

400
00:32:05.010 --> 00:32:05.830
the the how

401
00:32:06.210 --> 00:32:11.975
how bitcoins are flowing within this lightning network. When I when I analogize lightning to to normies,

402
00:32:12.595 --> 00:32:27.955
I talk about how the channels are like roads and your fees are like your traffic lights. Okay. Right? Where it's like if you if you don't want traffic to flow down this way, you gotta hike the rate, which is like turning the light red. And if you want traffic to flow, you lower lower the rate and make the light green,

403
00:32:28.515 --> 00:32:30.855
which I think is accurate. Yeah. Yeah.

404
00:32:31.955 --> 00:32:32.755
Nice. I,

405
00:32:33.715 --> 00:32:37.409
I love that analogy. Really good. Yeah. He runs red lights. Yeah.

406
00:32:37.870 --> 00:32:43.250
Better better than my beads on a string analogy. Well, you know, but we it takes all kinds. Yeah.

407
00:32:45.424 --> 00:32:50.085
I I I did wanna talk a little bit I wanna I wanna involve this this gentleman right here

408
00:32:50.785 --> 00:32:55.820
and and say, what are what do you think the challenges are? You know, we we talked a bit about noncustodial

409
00:32:56.440 --> 00:32:58.620
liquidity, lightning service provider challenges.

410
00:32:59.720 --> 00:33:09.120
Although it doesn't fit Roy's definition to a t, the we can maybe caveat it with the non, you know, custodial Lightning providers. What what do you think the challenges are

411
00:33:09.920 --> 00:33:21.445
for people like you and I, stuff like that? I think the risk of custodial Bitcoin is the biggest challenge. I would say it's there's a huge risk to, like, hold Bitcoin. It's something that you don't want you don't wanna do.

412
00:33:23.185 --> 00:33:30.970
You know, and once you're holding Bitcoin from someone's else, there is compliance risks. There is all certain of legal stuff that you have to

413
00:33:31.270 --> 00:33:34.010
to go through, especially if your company is in the United States.

414
00:33:34.825 --> 00:33:38.125
That's why a lot of people do not make their company in the United States.

415
00:33:40.025 --> 00:33:43.645
But I would say the biggest challenge is definitely the the user onboarding

416
00:33:44.140 --> 00:33:44.640
today.

417
00:33:44.940 --> 00:33:47.840
Obviously, Kustodil makes it easier. It makes it simple.

418
00:33:48.780 --> 00:33:54.295
Is it the the solution? I don't think so it is. I think you're you guys are doing a really good job on that.

419
00:33:55.715 --> 00:34:04.610
But so far, we're still in a transition period. Right? And if you want to involve certain parties in this economy, we need to make tools that are,

420
00:34:05.150 --> 00:34:05.650
you

421
00:34:06.750 --> 00:34:07.650
know, somehow,

422
00:34:08.350 --> 00:34:09.730
easy enough for them.

423
00:34:10.395 --> 00:34:16.494
And it's a transition period. I would say, obviously, long term, the idea is to everything to make a trustless system

424
00:34:17.275 --> 00:34:17.775
noncustodial.

425
00:34:18.650 --> 00:34:20.809
But right now, we still have to go through this

426
00:34:21.289 --> 00:34:24.270
Transition phase. Transition phase. Like, people still need the dollars.

427
00:34:24.809 --> 00:34:25.390
You know?

428
00:34:25.885 --> 00:34:27.425
What about hot wallet,

429
00:34:27.885 --> 00:34:29.745
cold wallet kind of concern

430
00:34:30.525 --> 00:34:31.905
that concern you?

431
00:34:32.580 --> 00:34:36.840
That's what I was saying. It's about the risk When you look just explain the others that when you lock liquidity

432
00:34:37.300 --> 00:34:40.440
in lightning, it's being locked in a hot wallet currently.

433
00:34:41.045 --> 00:34:51.280
Yes. There's definitely so, yeah, it's basically a hot wallet where your Bitcoins are exposed somehow to, like they're online. Right? They're exposed to the Internet, to the outside world.

434
00:34:51.660 --> 00:34:53.360
While when you're doing cold storage,

435
00:34:54.220 --> 00:34:57.815
you know, the Bitcoin, your your secret, your c, your password,

436
00:34:58.435 --> 00:34:59.335
it was never,

437
00:34:59.635 --> 00:35:04.295
like, interactive maybe with a computer. So there is no way for anyone to know that password.

438
00:35:04.610 --> 00:35:06.790
And so when you're locking up funds in Lightning,

439
00:35:07.490 --> 00:35:08.790
those funds are somehow

440
00:35:09.970 --> 00:35:12.390
exposed, or there is a there is a chance,

441
00:35:13.455 --> 00:35:18.595
that, eventually, they might get stolen or not, depending on security practices. Right?

442
00:35:18.975 --> 00:35:25.530
And but I think we're coming up with tools like the remote signing, you know, things that are improving. You know,

443
00:35:27.109 --> 00:35:32.165
the the the software is is going through another phase now where, like, okay, Things are being pretty,

444
00:35:32.485 --> 00:35:35.625
risky now. Let's let's decouple the stuff

445
00:35:35.925 --> 00:35:39.225
and try to make the signing stuff like a cold storage offline,

446
00:35:39.980 --> 00:35:46.319
where you like because you every time you do a transaction aligning, you have to update the channel. And to update the channel, you need to sign a transaction.

447
00:35:46.755 --> 00:35:49.975
So, eventually, that software needs to have access to to the signer.

448
00:35:50.275 --> 00:36:02.260
The problem here is the signer. Right? You don't want to expose that entity to the outs to the Internet because then you have a threat. If you expose your password or you're not exposing your password, but there is

449
00:36:02.960 --> 00:36:05.220
there is a way that eventually someone,

450
00:36:05.785 --> 00:36:14.985
if they know enough about you, might be able to get that password. And when you do cold storage, that information is not accessible anywhere. But with the remote signing tools, I think we're,

451
00:36:16.050 --> 00:36:22.310
we're getting there. Yeah. We're getting there. Not there yet, but we'll get there. We're getting there. On the Hot Wallet risk, one

452
00:36:22.664 --> 00:36:23.665
interesting thing. So,

453
00:36:24.105 --> 00:36:31.484
we have a service liquidity service we provide called Loop, not to be confused with pool. Just you spell it backwards. You spell it backwards. Yeah. Something.

454
00:36:31.790 --> 00:36:37.310
And so Loop is, a submarine swap provider where it's a it's a bridge between on chain Bitcoin and off chain Bitcoin,

455
00:36:38.589 --> 00:36:41.575
where if you if you need more inbound liquidity, you

456
00:36:42.055 --> 00:36:45.355
send funds to Lightning Labs, and then in a noncustodial way,

457
00:36:45.815 --> 00:36:50.155
we return the funds to you on chain. One interesting use case for that,

458
00:36:50.609 --> 00:37:07.244
more so than just needing to acquire invalid liquidity is actually risk management. Mhmm. Right? If you wanna make sure that the amount of capital that you have on your node stays low that's on your side of the channels. One thing that we're seeing a lot of folks do is just continually make sure to loop out to send funds

459
00:37:08.160 --> 00:37:15.940
out of out of their custody and return it back to their on chain wallet, which I think is an interesting thing that, you know, as the network has grown,

460
00:37:16.454 --> 00:37:27.540
has become something yeah. Like, you know, all of a sudden, certain providers say, man, we have, like, a 100 Bitcoin in this node. Like, we gotta be careful. We gotta, like Start looping out. Start start looping out and start using some risk management practices, which I think is very interesting.

461
00:37:28.160 --> 00:37:31.060
Cool. And and we we've talked about a couple of things. We,

462
00:37:31.360 --> 00:37:37.115
remote signing and the what in in terms of the future of LSPs and and things to look forward to,

463
00:37:37.495 --> 00:37:39.995
what kinda like, I know we have

464
00:37:40.615 --> 00:37:41.435
Nifty here,

465
00:37:41.895 --> 00:37:43.115
Blockchain. We have

466
00:37:43.430 --> 00:37:43.930
Ryan,

467
00:37:44.470 --> 00:37:47.450
Lightning Labs that are working on implementations of Lightning,

468
00:37:48.230 --> 00:38:00.005
that kinda help enable some of these things. What what what can what can I'll tell you from a user, like, from a He's gonna tell you what he needs, and then you'll have to call it. Yeah. Exactly. The guy that's running an LSP,

469
00:38:00.310 --> 00:38:00.970
I need

470
00:38:01.270 --> 00:38:02.890
better control of my liquidity.

471
00:38:03.270 --> 00:38:04.410
I need better flexibility

472
00:38:04.790 --> 00:38:07.610
to manage my liquidity. So I think in that regard,

473
00:38:07.990 --> 00:38:09.370
I'm looking forward to splicing.

474
00:38:09.815 --> 00:38:12.875
The ability splicing is the ability to change the capacity

475
00:38:13.175 --> 00:38:14.474
of the channel dynamically

476
00:38:14.855 --> 00:38:16.234
without closing the channel.

477
00:38:16.535 --> 00:38:26.039
And, basically, if you let's say, I'll give you a very simple use case. Let's say we have a user. The user is is using Breeze to get inbound liquidity.

478
00:38:26.525 --> 00:38:27.345
So we open

479
00:38:27.885 --> 00:38:39.090
a one BTC channel to the end user. The the Bitcoin are on the user side. The user used the entire BTC to to pay for stuff. And now I I got one BTC

480
00:38:39.390 --> 00:38:46.695
locked in the channel on my end of the channel. And the user stopped using Breeze for some reason. I don't know why it's a great product, but

481
00:38:47.235 --> 00:38:47.735
but

482
00:38:48.115 --> 00:38:53.849
they stopped they stopped using Breeze, and now I got liquidity locked on my end of the channel as an LSP.

483
00:38:54.150 --> 00:38:59.210
And I need to reallocate this liquidity because I want to onboard new user using this

484
00:38:59.695 --> 00:39:04.115
BTC or I want to put this liquidity somewhere else where it generate

485
00:39:04.495 --> 00:39:08.035
a much better yield than than the user that doesn't use

486
00:39:08.415 --> 00:39:15.940
Prism anymore. So in order to take this liquidity out of the channel, I need a way to splice out, I need a way to dynamically

487
00:39:16.400 --> 00:39:18.740
configure the channel to have a lower capacity

488
00:39:19.125 --> 00:39:21.385
so I'll be able to reallocate this liquidity

489
00:39:21.845 --> 00:39:22.744
someplace else.

490
00:39:23.125 --> 00:39:31.140
Yeah. So any implementation that doesn't support splicing obviously hates Bitcoin. So what are we gonna do to fix this problem? Correlating is working on splicing.

491
00:39:32.079 --> 00:39:39.955
The great news about so the cool thing about liquidity ad stuff is a lot of the base, the background work we had to do to make liquidity ads happen,

492
00:39:41.215 --> 00:39:47.700
lends itself real easily to making splicing happen. So we are actively working on making splicing happen.

493
00:39:48.720 --> 00:39:51.140
Hopefully, that will come out at some point.

494
00:39:52.095 --> 00:39:56.915
In 2 weeks? 2 weeks. Yeah. 2 weeks. So look for it in 2 weeks. We're great. Yeah.

495
00:39:57.295 --> 00:40:06.590
So, yeah, we hear this. And I'm like, man, it's so much fun to think through all the ways that splicing lets you do wild stuff with your channels when you get it going.

496
00:40:07.690 --> 00:40:14.285
Yeah. The way that we wrote, like, some of the so the precursor stuff we had to do before we get liquidity ads is this thing that,

497
00:40:14.905 --> 00:40:19.545
calling collaborative channel opens. It used to be called dual funding, but that got a little,

498
00:40:20.810 --> 00:40:21.790
let's see, the namespace

499
00:40:22.090 --> 00:40:25.530
collision started happening so we're calling it collaborative channel opens now.

500
00:40:26.010 --> 00:40:32.035
Anyways, so all that work that we did to make that happen, you can use cool stuff where you can splice across multiple channels on the same transaction

501
00:40:32.655 --> 00:40:33.714
with multiple peers,

502
00:40:34.415 --> 00:40:35.714
on Lightning, decentralized,

503
00:40:36.015 --> 00:40:38.849
it's like cool stuff. So we're hoping to bring that to splicing

504
00:40:39.150 --> 00:40:39.809
real soon.

505
00:40:40.349 --> 00:40:42.049
That's the plan. Thank you, Lisa.

506
00:40:43.390 --> 00:40:43.890
Brian?

507
00:40:44.269 --> 00:40:44.769
Yeah.

508
00:40:46.029 --> 00:40:47.170
Same. 2 weeks.

509
00:40:47.855 --> 00:40:52.835
One is like another another side of this and as an infrastructure guy, I imagine you have thoughts on this.

510
00:40:54.015 --> 00:41:03.690
One really funny thing that happened like a year ago, as I remember talking with a bunch of lightning companies about kind of like what they what they wanted from l and d,

511
00:41:04.365 --> 00:41:05.665
in the year 2021.

512
00:41:06.525 --> 00:41:15.430
And it was the first time that instead of it being, you know, new features and and new techniques and and new cool bells and whistles, it was, you know, can we have,

513
00:41:16.290 --> 00:41:22.925
accounting software? Yeah. Can we have, you know, like, a more scalable database? Right? It's like very, like, adult requests instead.

514
00:41:23.464 --> 00:41:30.340
And so I think that's like the other lens of this is running the infrastructure and and scaling like your back end and, you know, like the post stuff,

515
00:41:31.200 --> 00:41:33.845
that we're working on, that kind of making sure that,

516
00:41:34.405 --> 00:41:39.545
just your nodes stay online, that they're, you know, easy to manage, that you have all the data that you need,

517
00:41:39.845 --> 00:41:46.910
as well, like, you know, data that you need for reporting requirements and, you know, accounting stuff, like, all of those kind of boring,

518
00:41:47.529 --> 00:41:53.535
tools as well as something that, you know, is is increasingly more in demand as lightning companies get bigger, succeed, raise money,

519
00:41:54.075 --> 00:41:57.830
and and and get more kind of That's Ryan Wade. He's saying me wait.

520
00:41:58.790 --> 00:41:59.290
So

521
00:41:59.670 --> 00:42:01.290
I said 2 weeks. Yeah.

522
00:42:01.910 --> 00:42:03.430
Yeah. I I am curious, though.

523
00:42:03.830 --> 00:42:06.970
Maybe this is something that anyone can talk about. Does

524
00:42:07.475 --> 00:42:08.935
Bolt 12 or Taproot

525
00:42:09.475 --> 00:42:14.615
affect LSPs? And if so, what way what what does what's better? Because I know, like, for instance,

526
00:42:14.920 --> 00:42:19.579
LMD is a little bit more or sorry. Not LLD. Lightning Labs is a little bit more focused on,

527
00:42:19.960 --> 00:42:20.940
supporting Taproot.

528
00:42:21.559 --> 00:42:22.059
And

529
00:42:23.414 --> 00:42:28.055
and I was just curious. Maybe we can talk about that a little bit. How in in in its relation to,

530
00:42:29.414 --> 00:42:31.170
providing service like LSP?

531
00:42:32.190 --> 00:42:35.310
Well, so I think Taproot, just from, like, a fundamental level,

532
00:42:36.270 --> 00:42:40.984
just opens up, like, a a brand of much bigger design space for what can be done,

533
00:42:41.605 --> 00:42:55.795
on lightning. I think it it enables a lot more use cases just kinda upgrading the channel commitment types and and things like that to supporting Taproot. It just it it it's more of like kind of like a a platform upgrade, so to speak, the to think of. Right? And I think,

534
00:42:56.255 --> 00:43:00.755
you know, that's kind of like a little bit of a of a longer term thing where you can think of, you know,

535
00:43:01.300 --> 00:43:06.360
for instance, I know one thing that that roast beef is working on, is the concept of dynamic commitments

536
00:43:06.740 --> 00:43:09.320
where, like, right now if you wanted to upgrade a channel,

537
00:43:10.045 --> 00:43:19.185
that's a a a normal, you know, pre Taproot channel, you would need to close the channel and then reopen a new Taproot one and spend to a new Taproot output.

538
00:43:19.720 --> 00:43:32.305
You know, working on a proposal to be able to allow that to happen. If you think about that at scale, right, there's something like 80,000 channels on the network right now, public channels, like 80,000 bitcoin transactions closing channels and then reopening would be like pretty heavy.

539
00:43:32.685 --> 00:43:37.710
But with dynamic commitments being able to do that kind of on the fly and upgrading your commitment output,

540
00:43:38.109 --> 00:43:46.355
without changing the channel is is, you know, a cool thing that then allows for, you know, wacky things like, you know, our proposal yesterday,

541
00:43:46.895 --> 00:43:49.795
Taro, which which leverages it will be Taproot Channels,

542
00:43:50.175 --> 00:43:52.915
where you can send, you know, assets that aren't Bitcoin,

543
00:43:53.530 --> 00:43:57.950
you know, say, you know, a a Fiat backed stablecoin or something like that, you could send those

544
00:43:58.410 --> 00:43:59.550
over the lightning network.

545
00:43:59.930 --> 00:44:13.060
Those channels require tapered outputs. Right? So things like that. And that proposal actually increased the demand of liquidity inside the network because these assets move between one node to the other, they're being

546
00:44:13.760 --> 00:44:14.260
Bitcoinized.

547
00:44:14.720 --> 00:44:19.244
Bitcoinizing the dollar. Yeah, exactly. That's the meme. So we need more Bitcoin

548
00:44:19.625 --> 00:44:22.285
collateral in order to facilitate new assets

549
00:44:22.744 --> 00:44:27.050
that will increase the demand of having more liquidity in the Lightning Network.

550
00:44:27.690 --> 00:44:28.190
Yep.

551
00:44:29.690 --> 00:44:31.930
Nifi or John, did did you wanna chime in on

552
00:44:32.650 --> 00:44:50.340
I would say privacy. Right? I think it's the Yep. I mean, the big one here. It's the basic one. Taproot will bring privacy to lightning, because today, you can literally look at on chain and see what channels were closed and kinda figure out liquidity and what's happening. And with Tapware, it's gonna look like another transaction.

553
00:44:50.800 --> 00:44:52.480
So I think that's a big win. With,

554
00:44:53.585 --> 00:44:54.484
That's well,

555
00:44:55.105 --> 00:45:03.125
we're gonna talk about privacy more on Friday. I'm doing a privacy panel. We'll get way into that. I'm gonna push back and say that just upgrading the Taproot

556
00:45:03.730 --> 00:45:07.970
outputs isn't actually gonna solve the privacy problem. It's

557
00:45:08.610 --> 00:45:11.990
I think the biggest thing is moving to blinded routes in bolt 12.

558
00:45:13.015 --> 00:45:22.950
Right now, no one cares about on chain footprint. If you're handing them an invoice, it tells you where the payment's going, what you're paying for, how much it's for. Like, you don't even have to look at the chain if you give someone an invoice.

559
00:45:23.329 --> 00:45:23.829
Like,

560
00:45:24.690 --> 00:45:27.270
so I think Taproot's cool. I think, like,

561
00:45:27.855 --> 00:45:29.955
lightning's gonna get to Taproot soon.

562
00:45:31.055 --> 00:45:39.760
Upgrading it, doing dynamic commitments is, like, an awesome thing. Miners might not like it so much, as the people running the channels, but, you know, that's fine.

563
00:45:40.859 --> 00:45:44.515
But yeah. Anyways, like, Taproot's cool. It's coming.

564
00:45:44.915 --> 00:45:46.535
Really excited about the,

565
00:45:47.075 --> 00:45:52.710
novel engineering that Labs is doing with Taproot stuff, and excited to see how that goes. But

566
00:45:53.990 --> 00:46:02.570
yeah. Okay. We have a few minutes left. Do you wanna do closing thoughts? Do you wanna maybe start with Juwan? I wanna ask Oh. URL versus ball 12.

567
00:46:03.005 --> 00:46:10.225
Oh, okay. Well, let's rephrase the question real quick. Instead of doing closing thoughts, let's just do lnurl versus ball 12. Let's get into it.

568
00:46:12.260 --> 00:46:20.265
Let's let's let's I'll I'll I'll I'll sit here. Y'all y'all go for it. Yeah. Just from a service provider, there's a lot of demand for this type of stuff.

569
00:46:20.585 --> 00:46:23.085
So I know lining at Lightning Labs is a position.

570
00:46:23.865 --> 00:46:26.525
See, lining has the the other position. So I'm

571
00:46:26.984 --> 00:46:30.045
just curious to hear both your thoughts about why

572
00:46:30.410 --> 00:46:36.350
you want to invest in Bold 12 and why you don't want to invest in Bold 12 right now. Just curious. I'm the moderator now.

573
00:46:40.735 --> 00:46:44.435
So, you know, like, I like, Lalu Lalu published his his thoughts,

574
00:46:44.895 --> 00:46:47.855
on this, and I think he stated it well. It's like we're,

575
00:46:48.750 --> 00:46:53.170
you know, a small team. We have something like 26 people. There's there's only so many engineers,

576
00:46:53.870 --> 00:46:55.490
and, like, the priority is

577
00:46:55.790 --> 00:46:58.565
is doing Taproot stuff. And I think in particular

578
00:46:59.265 --> 00:47:01.365
one thing that we've talked a lot about

579
00:47:01.744 --> 00:47:02.244
is

580
00:47:03.664 --> 00:47:14.240
responding to the developers in particular that are building on our stuff. And we haven't had a bunch of developers beating down our door saying, this is wrong, we need you to focus on Vault 12 instead,

581
00:47:14.565 --> 00:47:16.665
Right? Because they're kinda happy with lnurl.

582
00:47:17.365 --> 00:47:21.940
Right? And I you know, like, it's it's it's bad business to tell your customers that they're wrong.

583
00:47:22.579 --> 00:47:31.855
And so that's you know, we're we're focused on Taproot, and I think that's that's gonna it. I think I don't I don't and I I wanna be clear. Like, I don't think we think whole 12 is necessarily

584
00:47:32.395 --> 00:47:37.055
a bad proposal. I think blinded routes are great. I think the static invoice is great.

585
00:47:37.995 --> 00:47:42.450
There's a bunch of good stuff in there. It's just not the priority for this quarter.

586
00:47:43.870 --> 00:47:46.530
I think we need both. I think we need both

587
00:47:47.365 --> 00:47:49.065
will facilitate payments between

588
00:47:49.365 --> 00:47:53.945
peers in the network without the need to have an HTTP web server.

589
00:47:55.280 --> 00:47:57.380
And Allen URL is great for

590
00:47:57.920 --> 00:48:07.444
for custodial services that has that have online presence, and it's great for merchants that have web presence. So whenever you have a web server,

591
00:48:07.744 --> 00:48:12.039
you can definitely build on ln, ln URL, but it doesn't solve

592
00:48:12.339 --> 00:48:14.680
the problem of the the ability

593
00:48:15.299 --> 00:48:18.839
to send payments to other user in the network without

594
00:48:19.214 --> 00:48:22.434
creating an invoice first. And for that, we need bolt well.

595
00:48:23.454 --> 00:48:24.994
And you still do have to, like,

596
00:48:25.375 --> 00:48:36.935
generate an invoice, Right? For both of them. Like, you have the static part, but you still need to go and actually fetch You need a pointer you need a pointer to to begin with, but the pointer doesn't need to be, like,

597
00:48:37.555 --> 00:48:51.760
an an HTTP server. Right? Yep. It's like AMP. What's the difference between, like, the essential core difference between both wealth and AMP? It's the ability to have proof of payment. That's, like, for me the big difference between both. And you guys have

598
00:48:52.060 --> 00:48:52.560
AMP

599
00:48:53.244 --> 00:48:58.065
and you don't have both 12. Well, but I think it is a little bit different because you still do need to do

600
00:48:58.605 --> 00:49:08.530
invoice fetching with both 12. Right? Like, you still do need to, like, get a secret to pay whereas with amp it's actually static like there is no interaction required you can just pay to a

601
00:49:09.835 --> 00:49:13.454
receive the pop key from somewhere. You again, you need a pointer. Hey.

602
00:49:14.315 --> 00:49:17.775
Not not to not to interrupt. The family conversation here,

603
00:49:18.315 --> 00:49:21.559
because I I I love this. And and and, you know, I feel like,

604
00:49:22.900 --> 00:49:27.720
we we we should have a bolt 12, l and euro pay kind of discussion, maybe. Fight.

605
00:49:28.225 --> 00:49:35.765
We need we need fiat, Jeff. We we we need yeah. We need we should like, WWE people start sliding in, bringing in chairs and stuff. But

606
00:49:36.380 --> 00:49:39.920
I we're we're out of time. I wanna I just wanna give everyone

607
00:49:40.380 --> 00:49:45.519
a few seconds just to do, like, a closing. How do people know about you if you wanna show your Twitter, if you wanna

608
00:49:46.015 --> 00:49:48.755
let people know how to follow you, whatever it might be?

609
00:49:49.055 --> 00:49:52.994
Yeah. Yeah. You can find us, open note dot com or open it on Twitter.

610
00:49:53.359 --> 00:49:57.380
You can find me, Zhuang Almeida. It's a hard name, so you're not gonna find it.

611
00:49:58.320 --> 00:49:59.859
Yeah. You can find me on Twitter.

612
00:50:01.904 --> 00:50:03.684
Yeah. I'm nifty n I

613
00:50:04.065 --> 00:50:06.244
f t y n e I, if you wanna,

614
00:50:06.785 --> 00:50:07.845
follow my Twitter.

615
00:50:09.020 --> 00:50:11.680
I also work with core lightning. So core_ln

616
00:50:12.780 --> 00:50:15.440
is our lightning node implementation. I work at Blockstream

617
00:50:15.740 --> 00:50:17.599
who obviously is also on Twitter.

618
00:50:18.895 --> 00:50:23.635
Yeah. You can find me on the Breeze various handles at Twitter, Breeze_tech.

619
00:50:24.895 --> 00:50:25.395
Breeze.technology.

620
00:50:26.335 --> 00:50:28.119
That's our website. You

621
00:50:28.579 --> 00:50:30.280
can join our Telegram group,

622
00:50:31.859 --> 00:50:32.359
Breeze.

623
00:50:32.819 --> 00:50:35.799
Breeze spelled b r e Without a c. Yeah. Without

624
00:50:36.135 --> 00:50:37.675
an e at the end. Yeah.

625
00:50:37.975 --> 00:50:39.595
Yeah. I'm Ryan Gentry.

626
00:50:40.135 --> 00:50:42.155
Ryan the Gentry on Twitter.

627
00:50:43.015 --> 00:50:44.075
Follow us on

628
00:50:44.530 --> 00:50:46.150
on Twitter as well at at lightning,

629
00:50:46.850 --> 00:50:48.790
and the website is lightning dot engineering.

630
00:50:49.890 --> 00:50:51.250
Thank you, Michael, for,

631
00:50:51.755 --> 00:50:55.454
such a well moderated How can we find you, Michael? Yeah. How can we find you?

632
00:50:55.914 --> 00:50:59.855
I'm Mike 20 spelled out with a 1 on the end. It's so obvious.

633
00:51:00.359 --> 00:51:00.759
And,

634
00:51:01.160 --> 00:51:01.660
I'm

635
00:51:02.200 --> 00:51:13.335
not that popular, but for some reason, they have tons of scammers. I'm not giving away free Bitcoin. And when when when's the Tapcom? The next Tabconf? If you well, not to shill too much because we're at a conference, but,

636
00:51:13.975 --> 00:51:19.359
Tabconf is a technical focused conference in Atlanta, Georgia. It's gonna be in October. Tabconf, tabconf.com.

637
00:51:22.140 --> 00:51:25.119
Yeah. Thanks for helping me show that, I guess. Yeah. Just go on.

638
00:51:27.075 --> 00:51:29.575
Yeah. Oh, alright. Thank you, everybody. Thanks for coming.

639
00:51:35.970 --> 00:51:36.470
Alright.

640
00:51:38.050 --> 00:51:44.230
So this is the future of lightning development panel. Sadly, we lost our our illustrious moderator,

641
00:51:45.005 --> 00:51:51.184
who couldn't make it to Miami in time. So instead, I get to moderate these these two lovely folks.

642
00:51:52.390 --> 00:51:55.450
So why don't we start with Hannah and we can do quick intros

643
00:51:55.830 --> 00:52:05.025
of who you are and what you work on, and then we'll dive right in. Cool. I'm Hannah Rosenberg. I work as a developer advocate at Lightning Labs, and I've been,

644
00:52:05.885 --> 00:52:11.540
say, in the Bitcoin space a while and obsessed with Lightning since it came out. So delighted to be here talking about it.

645
00:52:12.320 --> 00:52:14.260
Yeah. Hi. I'm Chris. I,

646
00:52:14.880 --> 00:52:18.445
been in this space for a long long long

647
00:52:18.905 --> 00:52:20.525
time, 20, 2009.

648
00:52:21.465 --> 00:52:27.005
And my hobby became my job. So now I'm working for Blockstream on for Lightning.

649
00:52:28.090 --> 00:52:29.150
And I'm Matt.

650
00:52:29.850 --> 00:52:33.390
Sadly, Christian predates me a little bit, but I did get into Bitcoin in in 2011.

651
00:52:34.090 --> 00:52:35.390
I have the the illustrious

652
00:52:35.785 --> 00:52:39.165
claim to fame of I actually wrote the 1st payments channel implementation

653
00:52:39.945 --> 00:52:45.160
anywhere long before lightning and before we had routing or or in fact bidirectional payment channels.

654
00:52:45.540 --> 00:52:52.523
And I don't think anyone ever used it. But that's okay. Oh, that's good. You're you're the only one. We had a student project working on it. So

655
00:52:52.927 --> 00:53:00.200
Oh, alright. Well, good. It was it was usable. Good job. Thanks. I might have tested it once.

656
00:53:01.160 --> 00:53:02.619
So we're gonna we're gonna

657
00:53:03.240 --> 00:53:05.020
talk very briefly about,

658
00:53:05.400 --> 00:53:09.900
kind of the history of lightning and how how it's grown, and then we're gonna get into

659
00:53:10.345 --> 00:53:11.725
how we see it maturing

660
00:53:12.025 --> 00:53:12.925
and and

661
00:53:13.705 --> 00:53:14.605
going from there.

662
00:53:15.065 --> 00:53:20.770
So I don't know if who wants to start with Hannah, you can start with that one. This one. This I think the past year

663
00:53:21.150 --> 00:53:23.490
just since we were I was at this conference,

664
00:53:23.869 --> 00:53:30.065
last year and until now, like, just watching the explosion in lightning. And it's been really interesting to me

665
00:53:30.444 --> 00:53:35.980
to watch lightning progress from, you know, just a proof of concept where everyone was like, is this even going to work?

666
00:53:36.280 --> 00:53:38.859
To, you know, then being very much in the hobbyist

667
00:53:39.480 --> 00:53:40.619
enthusiast territory,

668
00:53:40.920 --> 00:53:52.230
you know, where you're on the command line and, you know, only people that are, you know, nerdy enough to be on the command line can use it. So then we get much more user friendly stuff going on. And then now it's moved from

669
00:53:52.770 --> 00:53:53.270
hobbyists

670
00:53:53.570 --> 00:54:05.860
more into, you know, businesses really attempting to use this in their products and services and just spend this huge explosion, and and it's been really amazing to watch and to think about where it might go from here.

671
00:54:07.780 --> 00:54:08.280
Yeah.

672
00:54:09.380 --> 00:54:19.825
I would I would go further and say, like, yeah, it it's specializing. Right? So it it's it's gone from hobbyist, but they still exist. They're still there. They're still running running ClubNet and it's still routing a lot of payments.

673
00:54:20.365 --> 00:54:22.385
And we have so I I now work for

674
00:54:22.839 --> 00:54:28.460
for, I guess, Block is now our name, not on Cash App, but but, you know, Cash App now it's deployed

675
00:54:28.839 --> 00:54:29.660
deployed lightning,

676
00:54:29.960 --> 00:54:38.325
and that's that's a whole different world. And we just had the LSP panel and the mobile lightning world and the the LSPs also need a whole different set of things.

677
00:54:39.480 --> 00:54:43.820
So let's let's kinda split up the future of lightning development by those categories

678
00:54:44.120 --> 00:54:46.060
and then kinda dive in from there.

679
00:54:47.435 --> 00:54:49.775
So let's let's start with mobile. So,

680
00:54:50.555 --> 00:55:01.329
you know, we just had a bunch of discussion about LSPs and what they need, but maybe let's look more towards the future and talk about, you know, what what do these mobile clients themselves need. Yeah.

681
00:55:02.485 --> 00:55:03.465
Yeah. And I,

682
00:55:04.485 --> 00:55:06.505
LDK is a fabulous

683
00:55:07.045 --> 00:55:11.970
tool for mobile. That's really cool. And we're also talking about the problems,

684
00:55:12.990 --> 00:55:14.530
with mobile payments,

685
00:55:15.150 --> 00:55:25.695
enlightening, sort of sort of an app having to be on, you know, to receive a payment, which is a big issue at the moment. And then just trying to shove a lightning node

686
00:55:26.430 --> 00:55:29.650
into a mobile application is certainly quite a challenge.

687
00:55:30.510 --> 00:55:31.410
But that's why

688
00:55:31.710 --> 00:55:55.255
you know all the time you know it's like sorry I'm just gonna go off on this tangent, but it's like I love that, you know, I've spent so much time being obsessed with lightning and it's only been in the past year that when people come up to me and ask me, hey, Hannah, can you do x y and z on Lightning? I don't have to tell them theoretically, yes. I can tell them, yes, you can, and here's the library you should use to do that. And so that's been a really amazing change in the past year. But there's still

689
00:55:55.795 --> 00:55:56.695
this big issue,

690
00:55:57.155 --> 00:56:24.890
with with mobile payments that I don't know if any want to dive into that a little bit. But essentially, I think one of the problems there is just getting an app to, you know, because you have to be online to have payments. And one of the issues there is just how do you get that app to be online to receive payments? How do you solve that problem? And then shoving a note into a mobile application is not a problem. Yeah. Yeah. I I think we do see a lot of experimentation going on especially now, with regards to how do we want to integrate lightning into

691
00:56:25.224 --> 00:56:27.964
mobile apps, into web apps, into whatever.

692
00:56:29.224 --> 00:56:38.359
And, the experimentation we're seeing right now is, is going in direction of do we want to really want to shove a full node into, into a mobile app,

693
00:56:38.819 --> 00:56:39.880
potentially segmenting

694
00:56:40.180 --> 00:56:47.145
your funds across a multitude of app, basically locking in, the users into an individual app so making it hard to experiment.

695
00:56:48.085 --> 00:56:50.825
Or do we want to have a more centralized node

696
00:56:51.285 --> 00:57:02.945
that is still operated and run by you and where we just remote into it and, and I think those those are the trade offs we are currently seeing explored and we will see, how these work out in the future.

697
00:57:03.565 --> 00:57:22.244
Yeah. And and we also see, like, you know, we were talking about the the online requirements. I mean, obviously, if I I guess I can say this, you know, Cash App's, like, almost all of their payment failures are just the app wasn't open. It was being sent to a mobile client. The app wasn't open, and they didn't get the payment because the app wasn't open.

698
00:57:22.865 --> 00:57:25.025
So having having better logic there and then,

699
00:57:26.610 --> 00:57:37.775
enabling more you know, we've kind of seen this this first generation of mobile wallets that all kind of have this simple, you know, we took a lightning node or at least a payment channel and we put it in an app,

700
00:57:38.475 --> 00:57:42.415
and we shipped it and it works pretty well and we have this LSP and we wrote out payments through it and whatever.

701
00:57:42.875 --> 00:57:51.190
But, you know, we haven't gone down the route of, like, okay, well, what if we have, like, a server assist more server assisted lightning node, like,

702
00:57:51.515 --> 00:57:54.575
green light and like some of the other things core lightning is working on,

703
00:57:54.875 --> 00:57:56.575
and what it you know, do we have,

704
00:57:57.435 --> 00:57:58.895
better protocols for,

705
00:57:59.549 --> 00:58:00.770
papering over this,

706
00:58:01.150 --> 00:58:07.965
on chain requirement? Right? So I I had that proposal, whatever, 6 months ago, and we're still long ways from implementing it

707
00:58:08.685 --> 00:58:12.305
to do use onion messages as a base for doing,

708
00:58:14.285 --> 00:58:15.425
on doing payments

709
00:58:15.740 --> 00:58:19.440
such that you can kind of hide the fact that the nodes have to be online

710
00:58:19.820 --> 00:58:21.440
synchronously to receive the payment.

711
00:58:22.060 --> 00:58:24.080
And and you can actually do

712
00:58:24.914 --> 00:58:35.410
offline kind of payments, but, like, you know, it goes out and it sits pending, and then, you can actually receive it without it sitting pending across an entire route across the lightning network, and holding that capacity

713
00:58:35.869 --> 00:58:39.569
for, you know, potentially hours or days until the user opens their phone.

714
00:58:40.575 --> 00:58:47.635
So there's still, you know, we we finally have lightning on on phones, but we still have a lot to go to actually

715
00:58:48.089 --> 00:58:51.150
fix a lot of these UX issues that we've run into.

716
00:58:52.730 --> 00:58:57.230
And Yeah. And it So I say that, you know, lightning is is now usable,

717
00:58:57.735 --> 00:59:00.795
like in production in real services but just barely.

718
00:59:01.575 --> 00:59:06.850
Yeah it's it's definitely not smooth and and there there is a lot of infrastructure that we are working on

719
00:59:07.970 --> 00:59:12.150
and I'm speaking for all implementations here of course not just just core lightning.

720
00:59:12.930 --> 00:59:13.430
That

721
00:59:14.215 --> 00:59:17.995
where we are learning from the experience of operating lightning nodes

722
00:59:18.375 --> 00:59:18.695
of,

723
00:59:19.255 --> 00:59:19.915
of basically

724
00:59:20.295 --> 00:59:24.880
providing users with the ability to to make more of their lightning nodes

725
00:59:25.340 --> 00:59:25.840
and

726
00:59:26.300 --> 00:59:29.440
this experience will flow back into the spec process as well

727
00:59:31.195 --> 00:59:34.735
and inform where the directions are going to go in the future.

728
00:59:35.595 --> 00:59:36.495
And that

729
00:59:38.890 --> 00:59:44.190
it is going to continue to be interesting, you know, as the the amount of resources required

730
00:59:44.650 --> 00:59:46.430
to kind of maintain a lightning node

731
00:59:47.515 --> 00:59:56.970
will only continue to grow as we have multiple different completely divergent use cases for lightning. We have, you know, whether it's people trying to run it in enterprise

732
00:59:57.430 --> 01:00:19.670
and who want, you know, features that might help them, people trying to run it on mobile. And then you want to add onion messages and, like, onion message mailboxes so that you can do, you know, be offline all the time. All of a sudden you have all of these new features coming in that all the lightning implementations are at least kind of mostly need to support or at least look at it and and add chunks of it so that things can be interoperable.

733
01:00:21.250 --> 01:00:25.875
Just the the amount of resources required to maintain a lightning node is only gonna continue to increase.

734
01:00:26.655 --> 01:00:27.694
It's already whatever

735
01:00:28.255 --> 01:00:36.079
I think all the major implementations have at least 3 or 4 engineers full time on it, and that presumably will only continue to grow.

736
01:00:36.405 --> 01:00:41.385
Absolutely. So so there is definitely a scaling up of the engineering side of, of things,

737
01:00:42.165 --> 01:00:58.325
but I do think that, by us basically, as as Lightning implementations, concentrating on a common kernel that sort of builds the basis for all of the applications that we build on top. And I've been often asked what what sort of is the coolest thing you can imagine doing with lightning, and I usually

738
01:00:58.705 --> 01:01:05.180
say that I'm not the right one to ask. I'm I'm I'm the kernel guy. I'm not I'm not the cool fancy UI guy. So,

739
01:01:06.119 --> 01:01:12.825
but I think that, that keeping that kernel small will help us basically provide a basis for for whatever comes next

740
01:01:13.125 --> 01:01:13.785
and whatever

741
01:01:14.405 --> 01:01:16.345
maybe these guys will build here.

742
01:01:16.799 --> 01:01:17.299
Yeah.

743
01:01:17.760 --> 01:01:25.380
So let's talk a little bit about, you know, we talked a little bit about mobile, let's talk about kind of LSPs. Obviously, we we just had an LSP panel,

744
01:01:25.955 --> 01:01:26.855
but but what

745
01:01:27.955 --> 01:01:29.895
features in the lightning protocol

746
01:01:30.355 --> 01:01:31.175
might be needed,

747
01:01:31.875 --> 01:01:32.375
for

748
01:01:32.700 --> 01:01:36.000
looking towards LSPs and but the future of development

749
01:01:36.620 --> 01:01:37.120
that

750
01:01:37.420 --> 01:01:40.080
we have to do on a lower level might be needed for

751
01:01:40.445 --> 01:01:40.945
those

752
01:01:41.245 --> 01:01:43.825
services in the, over the next few years?

753
01:01:44.605 --> 01:01:47.185
I think very much of the groundwork is,

754
01:01:47.885 --> 01:01:49.105
is already started

755
01:01:49.610 --> 01:02:01.225
with with the liquidity ads, which is, which is a way for you to signal the availability of funds and the, and the readiness of of allocating those funds to a, to a channel that you'd

756
01:02:01.625 --> 01:02:03.165
that somebody would like to open.

757
01:02:03.839 --> 01:02:06.099
And I think that is sort of the direction that

758
01:02:06.400 --> 01:02:08.420
I would like to see things going forward

759
01:02:08.720 --> 01:02:12.180
where we have an open marketplace where everybody can participate,

760
01:02:12.515 --> 01:02:13.815
where there is no mediator,

761
01:02:14.675 --> 01:02:16.135
where we can

762
01:02:16.515 --> 01:02:18.615
just exchange our interest in

763
01:02:18.915 --> 01:02:21.495
opening or closing channels and what

764
01:02:22.230 --> 01:02:24.809
the set of costs are for for that.

765
01:02:25.270 --> 01:02:26.410
I mean, I guess that divides

766
01:02:26.789 --> 01:02:29.289
LSPs a little bit even further. Right? From,

767
01:02:29.885 --> 01:02:33.105
from from service providers who might be providing service to,

768
01:02:34.205 --> 01:02:52.135
hobbyist nodes or plug in nodes or always online nodes versus service providers who might be providing services to to mobile where, you know, some people might expect to use your experience where your client accepts the 0 cons thing. Right? Where suddenly you you need to actually know who your counterparty is. You can't just, you know, go to a liquidity ad and and select whoever.

769
01:02:52.515 --> 01:03:03.330
You do actually have to have some counterparty you have some amount of trust in. But but I mean that's that's very much part of signaling. Right? Their kind of channels are basically just a feature that you can signal.

770
01:03:04.385 --> 01:03:12.165
Having an identity attached to a liquidity add is something that you can use to basically make a decision of hey is this provider

771
01:03:12.640 --> 01:03:17.200
well connected in the network? Do I do I trust him to be a good,

772
01:03:17.599 --> 01:03:19.220
good counterparty for my channel?

773
01:03:20.455 --> 01:03:21.835
And that is

774
01:03:22.455 --> 01:03:28.315
basically just an additional information that we have to convey to whoever might take you up on the offer.

775
01:03:29.360 --> 01:03:33.380
So I don't think that different protocols here are in the solution.

776
01:03:35.360 --> 01:03:37.860
Yeah. No. I so I think

777
01:03:40.335 --> 01:03:43.955
it is ultimately up to the people building the user experiences, building the apps,

778
01:03:44.655 --> 01:03:46.970
what kind of UX they want there.

779
01:03:47.590 --> 01:03:48.730
Obviously, exposing

780
01:03:49.750 --> 01:03:50.250
different

781
01:03:50.630 --> 01:03:54.890
possible trust relationships to users tends to be a pretty poor user experience.

782
01:03:55.734 --> 01:04:00.214
Like, hey, you can pick between these nodes, and here's some information about whether you should trust them.

783
01:04:00.695 --> 01:04:08.069
You know, PGP Web of Trust kind of failed for a reason. PGP is great, but the Web of Trust part never went anywhere. Well, you know, the average user,

784
01:04:08.369 --> 01:04:27.750
you know, at least I think going forward in the future, right, the average user doesn't, you know, want to know anything about what's going on underneath. So it's important to extract that away for people as the Lightning Network continues to grow in use. But also with the different ways to do liquidity, again, you know, there's different use cases and different, you know, different users are gonna have different,

785
01:04:28.385 --> 01:04:29.925
you know, things they care about,

786
01:04:30.225 --> 01:04:45.390
in get gathering liquidity. And why do we need the liquidity? Is this a business that's accepting incoming payments? Is it a routing node? Like, what's the use case? So it's just things are getting just bigger and bigger. So it's, you know, now we get little pockets and different use cases here and there. Yeah. And, I mean, I think

787
01:04:45.885 --> 01:04:50.625
in the medium term and definitely in the long term, one thing I'm I'm really looking forward to the most

788
01:04:50.925 --> 01:05:16.350
is a proliferation of more different lightning apps and different lightning user experiences. And I think Yeah. You know, certainly that's that's kind of our pitch. Right? I mean, speaking from the LDK end, it's kind of our pitch of, like, look, we're gonna, like, do all the hard parts for you, and then you focus on how do you want to build a user experience around lightning? How do you want to, you know, do you wanna have 0Conf with which nodes? And do you want to use liquidity ads? And do you want to use this or that and whatever?

789
01:05:18.010 --> 01:05:23.875
And so, you know, maybe I'm a little biased, but like I'm looking forward to a world where we have, like, you know, some

790
01:05:24.255 --> 01:05:26.835
apps and some desktop clients, or

791
01:05:27.380 --> 01:05:32.359
browser extensions or mobile clients or whatever that use greenlight, and some of them that that

792
01:05:32.660 --> 01:05:44.305
let you choose which node to connect to and expose this whole, like, market place of liquidity ads, and some that, like, abstract a lot of that away, and then some that, like, just always connect to the predetermined LSP or whatever. Right.

793
01:05:44.684 --> 01:05:46.065
And kind of this this

794
01:05:47.310 --> 01:05:56.295
Cambrian explosion, I hope, is coming eventually, where we can have a lot of different options, and we can kind of see what succeeds in the marketplace while all still having,

795
01:05:56.835 --> 01:05:57.494
you know,

796
01:05:57.954 --> 01:06:19.525
this common base of, you know, one of these lightning implementations that's robust and tested and and has implements a lot of these features so that users can pick and choose kind of which ones they want. Kind of developers can pick and choose which ones they want. And the more tools that are out there, you know, the better to fit different use cases and all of this stuff. And it's yeah. I I also foresee sort of this explosion where I just

797
01:06:19.980 --> 01:06:29.775
imagine, you know, 5, 10 years from now, we'll have we'll be using lightning, you know, on the back end of quite a lot of different services, whether it's, you know, buying things online,

798
01:06:30.555 --> 01:06:31.695
streaming things,

799
01:06:32.315 --> 01:06:32.815
authenticating,

800
01:06:33.595 --> 01:06:34.975
for services, etcetera.

801
01:06:35.470 --> 01:06:36.670
So Yeah. Definitely.

802
01:06:37.150 --> 01:06:43.970
So so I definitely do share your your sentiment that, that we sort of will have a common core that we can pick and choose from.

803
01:06:44.845 --> 01:06:46.385
With Greenlight, we chose to

804
01:06:46.845 --> 01:06:52.625
take a bit of a different cut, where you guys are doing API level composition, basically.

805
01:06:53.570 --> 01:06:57.110
The thing that, that we want to do is basically provide a core node,

806
01:06:57.890 --> 01:06:58.790
hence the name,

807
01:07:00.265 --> 01:07:06.365
and, and allow users to, basically, then connect to it and, and experiment with different use cases.

808
01:07:07.224 --> 01:07:10.910
So we are going back to, basically, this topic of special, specialization

809
01:07:11.290 --> 01:07:11.790
where,

810
01:07:12.090 --> 01:07:24.095
where we as the lightning developers are sort of in charge of, of operating lightning node, the stuff that we do best, and freeing developers from actually having to even learn all of the intricacies

811
01:07:24.474 --> 01:07:24.795
of,

812
01:07:25.275 --> 01:07:26.015
of building

813
01:07:26.474 --> 01:07:29.055
both a beautiful UI and UX

814
01:07:29.560 --> 01:07:33.820
and managing a lightning node that has has to be bundled with with your app. So,

815
01:07:34.360 --> 01:07:39.100
and hopefully by by basically removing this this need to bundle

816
01:07:39.464 --> 01:07:44.984
a lightning node with your app, you're also freeing the user to basically experiment and jump from 1,

817
01:07:45.545 --> 01:07:47.565
front end application to another one

818
01:07:47.910 --> 01:07:53.130
And, whereas if you bundle the node with with the, with the app itself,

819
01:07:53.990 --> 01:07:57.565
trying out a new app means setting up a full, you know, so

820
01:07:58.205 --> 01:07:59.425
Yeah. I mean, that's that's

821
01:07:59.885 --> 01:08:24.030
always that that kinda highlights that debate that's been around forever in the lightning world of, like, do you have, you know where do you put the the node? Right? Do you have kind of the, I would say, the earliest designs and the earliest focus was kind of you everyone would host their own node at home on our Raspberry Pi, and everyone would give kind of part partial remote control access to that node to every app or whatever via, you know, this

822
01:08:24.889 --> 01:08:26.989
this the LND has the macro and system and

823
01:08:27.449 --> 01:08:31.389
and Corelightning has some similar stuff. Now you can do it over onion messages too.

824
01:08:33.175 --> 01:08:44.579
And you have kind of that world, and then you have this kind of movement towards well, you know, people actually seem to really like this UX of having a a node or at least having payment channels locally in in Moon or Breeze

825
01:08:44.880 --> 01:08:45.699
or or Phoenix,

826
01:08:46.559 --> 01:08:48.179
or maybe there's a few others.

827
01:08:49.405 --> 01:08:50.065
And then,

828
01:08:50.365 --> 01:08:52.305
kind of, maybe moving back,

829
01:08:52.685 --> 01:09:01.140
like, kind of the the core lightning, the the green light design's a little bit in between. Right? It's, hosted, but some of the signing is local, so there's less trust in the server.

830
01:09:01.600 --> 01:09:07.219
Or, you know, you keep it all hosted locally and do it. So I think,

831
01:09:07.824 --> 01:09:09.764
you know, as much as there's

832
01:09:10.945 --> 01:09:21.929
value in there being a standard and everyone doing the same thing, I think we're just gonna see different experiment. We're different we're gonna see different things. We're gonna see people use green light, and that's gonna be great. And then we're gonna see people who continue to have the the

833
01:09:22.230 --> 01:09:26.250
channels on the phone, and that's gonna be great for for those. And so, you know Well,

834
01:09:26.605 --> 01:09:43.290
and and and we have by no means seen all of the possible combinations. Right? No. A lightning node is very complex. It has very, very many, components, and you can basically distribute these components however you want. Right. With with Greenlight, we chose to have the node itself on, on a hosted system

835
01:09:43.665 --> 01:09:47.844
and the signer and the front end on on a different device. Maybe some, some other combination

836
01:09:48.145 --> 01:09:55.080
makes more sense. Yep. And, and we're just starting to see how these deployment strategies can work out.

837
01:09:55.460 --> 01:09:55.860
And,

838
01:09:56.260 --> 01:10:02.680
I'm very much looking forward to to seeing how all of this works out. Yeah. So we spent a little time talking about

839
01:10:03.275 --> 01:10:05.375
mobile and then a little bit of time talking about

840
01:10:05.915 --> 01:10:09.615
LSPs and getting into this kind of mobile and and server assisted model.

841
01:10:10.235 --> 01:10:18.320
Let's let's switch gears and talk a little bit about, like, what future designs and what future things have to come for the kind of enthusiasts to plug that nodes,

842
01:10:19.100 --> 01:10:20.560
this world. You know, what

843
01:10:20.865 --> 01:10:27.685
what what do we need to add to make that even better experience, and and where does that world go in the next year or 3?

844
01:10:28.040 --> 01:10:30.540
Yeah. Yeah. Pubnet is is awesome,

845
01:10:31.000 --> 01:10:49.460
especially, I think, because they're just enthusiasts that, like, test things out for us. You know? Like, they're just trying all the things, and then they report back. You know? You yeah. Go in the, Telegram groups, you know, and see what people are having trouble with, and it it's fabulous. You know, to have this group of enthusiasts that test things out. I think there's a lot of tools,

846
01:10:50.080 --> 01:10:51.060
you know, for,

847
01:10:51.680 --> 01:10:52.260
you know,

848
01:10:53.235 --> 01:10:58.455
for those enthusiasts, you know, things like Umbrel and, you know, my note and all those sorts of things.

849
01:10:58.755 --> 01:11:00.215
And I think a lot of them,

850
01:11:00.835 --> 01:11:01.330
wants

851
01:11:01.730 --> 01:11:03.430
to, you know, they get to sort of

852
01:11:03.810 --> 01:11:07.590
build with lightning. Right? And so when you make things that are really reliable,

853
01:11:08.130 --> 01:11:09.350
that they can just reliably

854
01:11:09.890 --> 01:11:20.600
use this to run their node or to manage their node and have these tools for liquidity. And then they get to experiment with building things on top of that. And that's really, really valuable, I think, to have that constant experimentation and testing

855
01:11:20.980 --> 01:11:21.720
in the space.

856
01:11:22.740 --> 01:11:30.315
Yeah. I think there, there is a point to be made that that we definitely need more tooling to to surface some of the information about your node as well,

857
01:11:31.815 --> 01:11:35.994
to really have an objective measure on, on what works and what doesn't.

858
01:11:36.620 --> 01:11:46.364
For the longest time we have, we have heard that rebalancings work, rebalancings don't work. How do how much do you spend on rebalancing? Should we make rebalancing free?

859
01:11:47.065 --> 01:11:49.485
How much privacy do we leak with that?

860
01:11:50.264 --> 01:11:54.780
Do we even care about leaking some privacy if it's not our own payments?

861
01:11:55.480 --> 01:11:58.680
Or do we use rebalancings to provide cover,

862
01:11:59.080 --> 01:12:00.995
traffic for really private,

863
01:12:01.455 --> 01:12:01.955
transfers?

864
01:12:02.495 --> 01:12:03.935
So all of these kinds of,

865
01:12:04.335 --> 01:12:04.575
of,

866
01:12:05.615 --> 01:12:08.355
details, that we want to surface to the user,

867
01:12:08.940 --> 01:12:16.400
to help them make an informed decision about whether something is for them or not is something that we definitely need to work on and

868
01:12:16.700 --> 01:12:18.000
make available to users

869
01:12:18.795 --> 01:12:21.054
in the future to help them

870
01:12:21.435 --> 01:12:22.975
make their own experiments, basically.

871
01:12:24.315 --> 01:12:36.115
Cool. Yeah. I don't think I have very much to add here because this is the one market that LDK just, you know, I think LND, Core Lightning work great for this market, so don't we don't really focus on it. Focus on your market. Yep.

872
01:12:38.335 --> 01:12:40.035
So let's let's talk.

873
01:12:40.430 --> 01:12:47.650
We have a ton of time left, but let's talk really briefly about enterprise, and then we'll see if we can talk a little bit about spec in the future too.

874
01:12:48.190 --> 01:12:49.490
So what what do we

875
01:12:49.950 --> 01:12:50.255
you

876
01:12:51.935 --> 01:12:56.835
you know, I we have a little bit of experience on the Cash App side, but, you know, what what do we need for enterprises,

877
01:12:57.375 --> 01:13:01.960
you know, as we just saw Kraken launch, Cash App only launched whatever a few months ago.

878
01:13:02.420 --> 01:13:19.080
As these enterprises, big enterprises, start really coming online in a big way, you know, what do we need for the next year for them? This is sorry. I'll jump in quickly. But this I love this one because this has been the past year of my life. I've seen a lot of this, and people are asking me, like, okay. You get businesses

879
01:13:19.460 --> 01:13:20.679
that, you know,

880
01:13:21.300 --> 01:13:40.655
need a really reliable service. Like, okay. We wanna use lightning. We need something really reliable, and, you know, we are expecting this volume or that, and we need it to be scalable. And then just like, you know, the amount of times I've had to explain to why you can't use Amazon Web Services horizontal scaling on, like, a lightning node. You know? Like, these sorts of things. Or you just I think

881
01:13:41.215 --> 01:13:42.514
scaling that infrastructure,

882
01:13:43.454 --> 01:13:50.890
for some of these use cases is gonna be something that'll be important in the next year or 2 as, you know, bigger businesses take this on.

883
01:13:51.610 --> 01:14:03.344
And then just, you know, reliability. You know, if you're tinkering with something and it works 90% of the time, you know, that's that's awesome. If you're a business and it only works 90% of the time, that's a big problem. So I think, you know, reliability and scalability

884
01:14:03.965 --> 01:14:10.210
are big things for for businesses that are trying to take on lightning. Yeah. Absolutely. I mean, one of the,

885
01:14:11.389 --> 01:14:19.635
one of the prototypes we had, we had internally for a long time is basically a system that, that is truly highly available for liking nodes.

886
01:14:20.255 --> 01:14:21.455
And, Val,

887
01:14:22.015 --> 01:14:25.060
recently published a a system that very much looks like it.

888
01:14:25.540 --> 01:14:33.960
Where you have where you have a set of boundary nodes and a virtual node behind it. And that that is definitely something that, that we are looking into because

889
01:14:34.925 --> 01:14:36.465
this reliability and availability

890
01:14:37.725 --> 01:14:54.195
is paramount for for big businesses. Imagine that if Amazon was unreachable 1% of the time. Right. All the money they would lose by just not being able to process payments. For a 100th of a percent of a time, they would still have Yeah. A huge problem. And and and this kind of this kind of innovation,

891
01:14:54.735 --> 01:15:00.160
is is is something that, that that we definitely need to look into, and we've come a long way.

892
01:15:00.620 --> 01:15:03.360
We we've very early on had a failover.

893
01:15:04.620 --> 01:15:08.875
A clear hat, had an implementation of failover that, that could take,

894
01:15:09.255 --> 01:15:11.515
30 seconds to recover if I'm not mistaken,

895
01:15:12.935 --> 01:15:15.515
which is good. I mean, 30 seconds,

896
01:15:16.150 --> 01:15:17.830
that's that's quite good. We,

897
01:15:18.870 --> 01:15:19.750
we can now,

898
01:15:20.470 --> 01:15:22.730
basically reduce that to a couple of seconds,

899
01:15:23.405 --> 01:15:23.905
failover.

900
01:15:24.284 --> 01:15:26.224
And with high availability setups,

901
01:15:26.925 --> 01:15:29.585
we can ensure that no single payment gets lost,

902
01:15:30.045 --> 01:15:33.890
because if any particular node is offline at the time,

903
01:15:34.510 --> 01:15:45.075
the sender will basically retry through a different route. And as long as any of these is online, then then you can you can still process payments. And that also gives you operational flexibility,

904
01:15:45.935 --> 01:15:48.035
because it means that you can basically just

905
01:15:48.495 --> 01:15:53.179
restart a node or upgrade a node and, and if, and do operational,

906
01:15:53.719 --> 01:15:57.739
management of of the node while still being, being overall available.

907
01:15:58.199 --> 01:16:19.155
Yeah. That's that's something that we didn't kind of appreciate going into LDK. We kind of built this thinking about kind of the mobile world and thinking about, like, people who want to integrate, especially integrate Lightning into existing on chain wallets. You know, you wanna hook it into your existing chain sync and your existing key store and blah blah blah. And that's kind of where we came at it, and then, you know, Cash App came to us. We didn't

908
01:16:19.535 --> 01:16:38.065
pitch them, really. We'd explain what what LEK was, and they came to us, and they said, hey. We're actually we wanna use this. We have a ton of you know, Cash App's a little unique. It's a lot of Bitcoin exchanges are more kind of standard infrastructure, and they're set up to run a lot of daemons and interact via RPC. Cash App's not. They're a big company with, you know,

909
01:16:38.525 --> 01:16:43.390
separate services for everything already in place that they already use for all of their existing

910
01:16:43.770 --> 01:16:44.270
web

911
01:16:44.570 --> 01:16:45.630
and and whatever services.

912
01:16:46.810 --> 01:16:50.925
And so they came to us and they said, you know, we want to use Total Decay with this, we think it makes sense.

913
01:16:52.284 --> 01:16:52.784
And

914
01:16:54.125 --> 01:16:57.344
so they ended up building a lot of that stuff using their existing

915
01:16:58.469 --> 01:17:03.210
platform. Right? So they already had high availability stuff and failover and all that kind of stuff. So they built

916
01:17:03.590 --> 01:17:07.475
a Lightning node custom with LDK doing kind of all all the

917
01:17:07.775 --> 01:17:19.219
Lightning specific stuff into their infrastructure and as a part a core part of their infrastructure instead of kind of having a daemon they talk to. And so then we have like the hand availability stuff that that we've

918
01:17:19.920 --> 01:17:22.260
shipped that they've looked at testing.

919
01:17:22.560 --> 01:17:33.365
It turns out once you start adding too many route hints in the the QR code just blow up and it it so we need we need bolt 12. We need the the onion messages so that we can request an invoice or

920
01:17:34.060 --> 01:17:38.000
because it doesn't really you get too big an invoice for a QR code

921
01:17:38.780 --> 01:17:43.360
or or l and URL. I guess both work in this in a kind of server assistant setup,

922
01:17:43.955 --> 01:17:44.455
But,

923
01:17:45.155 --> 01:17:47.095
yeah. So that's that's something that

924
01:17:47.475 --> 01:17:52.860
we didn't anticipate, but turns out LDKs works fairly well for them or at least they're pretty happy with it.

925
01:17:53.560 --> 01:17:54.060
So

926
01:17:56.040 --> 01:17:56.540
Awesome.

927
01:17:57.320 --> 01:18:01.395
I don't know how to read this clock. It went to 0 and now it says one minute. But Yeah.

928
01:18:01.855 --> 01:18:06.835
But it's going up. Yeah. It's not 11:30 yet. So I think we can keep going for a minute. Let's let's

929
01:18:07.450 --> 01:18:11.550
take another minute and talk about, the future of kind of the spec process,

930
01:18:12.890 --> 01:18:22.335
the the bolts process. You know, we talked a little bit about kind of having a common core and these things that that all the lightning node nodes implement, and then having users kind of experiment

931
01:18:22.635 --> 01:18:25.790
using those different kind of building blocks that exist within lightning.

932
01:18:27.770 --> 01:18:31.630
How does that fit into the future of how, kind of, the bolts evolve,

933
01:18:32.090 --> 01:18:34.190
and then there's now this new blip process

934
01:18:34.785 --> 01:18:36.565
to standardize some of these extensions.

935
01:18:37.425 --> 01:18:41.205
How do we see that process evolving over the next few years?

936
01:18:42.640 --> 01:18:57.045
Well, I think we have to, you know, see how it goes. Right? We just started using, you know, GLPs and all that. And I think that that gets more and more important as we get more and more activity, you know, and more and more innovation on Lightning. Trying to have a a method in a process

937
01:18:57.409 --> 01:18:59.110
gets, be very important.

938
01:18:59.489 --> 01:19:00.949
Right. Yeah. I mean, we've

939
01:19:01.330 --> 01:19:02.550
already we've already seen

940
01:19:03.010 --> 01:19:09.325
issue, you know, things getting exposed to users where it's like, well, you you wanna receive a payment. Okay. Now you have to pick,

941
01:19:09.705 --> 01:19:29.135
and you have to negotiate with the sender. Do you wanna receive Onchain? Do you wanna receive Lightning? And now there's, you know, some apps have added. You can you can pick lnurl, and then you can pick bolt 12, and, like, the user has to know these things, and they have to select the one that the sender can send, And like so, you know, that this there's there's a certain value to to standardization,

942
01:19:29.515 --> 01:19:32.735
but then kind of how do we balance that with

943
01:19:33.300 --> 01:19:39.960
experimentation and letting people run wild and and, you know, we don't know what the answer should be. So how do we balance

944
01:19:40.565 --> 01:19:43.705
having a standard that people can rely on with

945
01:19:44.245 --> 01:19:49.940
enabling people to experiment and try new things so that we can find a solution that works better in the market. Yeah.

946
01:19:50.320 --> 01:19:55.540
So so it's it's always been sort of this this, this process of expansion first during

947
01:20:05.120 --> 01:20:07.540
for from the for the lightning specification.

948
01:20:08.080 --> 01:20:11.060
I remember when we first met in Milan 2016,

949
01:20:11.895 --> 01:20:15.835
we all had different implementations. We all were experimenting on different, things,

950
01:20:16.135 --> 01:20:22.300
and we basically sat down and hammered out all of the different, different trade offs and came to what now is,

951
01:20:22.700 --> 01:20:24.240
is is the bold process

952
01:20:24.700 --> 01:20:28.060
and, the set of documents that we have for the bold process. And,

953
01:20:28.780 --> 01:20:55.655
so I'm pretty happy with the way it works. Basically, giving giving everybody the ability to experiment. You're the only one who's ever expressed happiness about the way it works. I've heard people think it works poorly for very different and divergent and opposite reasons, but you're the first person to ever say, oh this works great. Oh, I I definitely have my pet peeves too. Overall, the process works. It's Well, I mean, we're building and things are getting built, so it can't be that bad. Right? Yeah. Yeah.

954
01:20:56.390 --> 01:21:01.930
But I'm curious you're talking about this expansion and then consolidation. Where do you think we are right now in that?

955
01:21:03.985 --> 01:21:06.645
Probably just about to start the next expansion.

956
01:21:06.945 --> 01:21:07.445
Okay.

957
01:21:08.065 --> 01:21:14.840
So with all the excitement going on with all of the different use cases that that are being presented, with all of the different,

958
01:21:15.540 --> 01:21:16.260
ways to,

959
01:21:16.740 --> 01:21:41.105
to achieve the same thing, we are, we are now sort of seeing what, what this will eventually, look like. And from these learnings, we can then go back to the table and basically say, okay, this is the way we are going to do do it because of these trade offs that we've learned, while experimenting with And and and what so, I mean, obviously, the the big debate is that the invoice format and payment formats and payment protocols,

960
01:21:42.284 --> 01:21:46.625
being a key example of that. Are there other ones that you're thinking of too here?

961
01:21:49.570 --> 01:21:59.555
Yeah. I mean, part part of that discussion is, is the use of whether we want to use the Lightning Network itself to do negotiation of of payments. So the whole, onion messages process,

962
01:21:59.875 --> 01:22:00.375
over

963
01:22:00.755 --> 01:22:05.255
over the l n URL stack of, protocols is definitely something,

964
01:22:05.555 --> 01:22:07.175
to be to be looked at here.

965
01:22:08.099 --> 01:22:14.435
We are looking at replacing the gossip protocol. We were just talking about, this before that we have this gossip protocol that

966
01:22:14.835 --> 01:22:15.575
grew organically,

967
01:22:16.115 --> 01:22:17.575
for the last couple of years

968
01:22:18.595 --> 01:22:19.255
and has

969
01:22:19.795 --> 01:22:21.575
has shown its age by now

970
01:22:22.920 --> 01:22:27.500
with several different implementations sort of interpreting it slightly differently as well.

971
01:22:28.200 --> 01:22:31.340
And so it's time for us now to basically go

972
01:22:31.720 --> 01:22:38.845
and try to find a new protocol that sort of encompasses all of the good and leaves all of the bad behind.

973
01:22:40.185 --> 01:22:40.685
So

974
01:22:41.540 --> 01:22:45.480
inter message dependencies should be dropped. So you'd say we're we're kind of at a different,

975
01:22:46.020 --> 01:22:54.725
place in some of these different protocols is like we're Yeah. Absolutely. Yeah. So it's definitely different lanes that expand and contract in in different times. Yeah.

976
01:22:55.105 --> 01:23:00.250
Awesome. So I think we're getting waived off. I still don't know how to read this timer, but

977
01:23:01.590 --> 01:23:04.835
so, yeah, thank you, guys. Alright. Thank you. Thank you.

978
01:23:08.915 --> 01:23:14.775
Greetings everyone. Welcome to the roll your own crypto panel where we have a bunch of

979
01:23:15.780 --> 01:23:16.280
cryptographers

980
01:23:16.739 --> 01:23:19.000
or people that work on signature libraries

981
01:23:19.540 --> 01:23:23.545
and, you know, they're kind of unsung heroes when things go right

982
01:23:24.025 --> 01:23:25.485
and if things go wrong,

983
01:23:25.945 --> 01:23:27.725
they end up like Sony completely,

984
01:23:28.265 --> 01:23:28.765
pwned.

985
01:23:29.785 --> 01:23:33.020
So I'd like to first, like, get started

986
01:23:33.400 --> 01:23:41.100
in what is a signature? How does it work? Like, you know, are we are we using DocuSign here in Bitcoin Core? Like, what's going on?

987
01:23:42.265 --> 01:23:46.125
How do signatures work, Pionis? Like, what are the functions? What's needed?

988
01:23:47.375 --> 01:23:52.830
Mhmm. Okay. So what is a signature? A signature is something that in Bitcoin authorizes

989
01:23:53.210 --> 01:23:53.950
the spend

990
01:23:54.410 --> 01:23:59.065
of a coin such that the person who received the Bitcoin,

991
01:24:00.005 --> 01:24:03.545
can spend the coin and no one else. And

992
01:24:03.845 --> 01:24:04.345
this

993
01:24:05.560 --> 01:24:09.820
idea that no one else can spend the coin we call that, unforgeability.

994
01:24:10.440 --> 01:24:12.380
So we say the signature scheme,

995
01:24:12.840 --> 01:24:14.485
is not forgeable and,

996
01:24:15.105 --> 01:24:16.485
that means no one

997
01:24:16.785 --> 01:24:22.005
except the person with a secret key belonging to a public key can

998
01:24:24.350 --> 01:24:31.090
create a signature over a certain message, and in the case of Bitcoin the message is usually some

999
01:24:32.074 --> 01:24:34.094
variant of a transaction hash.

1000
01:24:34.715 --> 01:24:36.415
Got it. Got it. So

1001
01:24:37.435 --> 01:24:40.495
how has that maybe changed? You know, we recently activated

1002
01:24:40.875 --> 01:24:41.375
Taproot.

1003
01:24:42.060 --> 01:24:43.920
There's a bunch of new interesting

1004
01:24:45.260 --> 01:24:45.760
signature

1005
01:24:46.540 --> 01:24:47.040
interactivity

1006
01:24:47.420 --> 01:24:51.485
stuff I'll like to get into eventually. But what's the difference between ECDSA

1007
01:24:51.945 --> 01:24:52.845
and Schnorr?

1008
01:24:54.025 --> 01:24:58.365
And can you briefly touch on anyone here, can you briefly touch on, like, the discrete log problem?

1009
01:24:59.350 --> 01:25:00.090
That might too.

1010
01:25:00.470 --> 01:25:01.450
Go. I'll take that.

1011
01:25:02.150 --> 01:25:06.970
So as part of the new Taproot upgrade to Bitcoin, we have a new signature algorithm

1012
01:25:07.435 --> 01:25:08.255
called Schnorr.

1013
01:25:09.195 --> 01:25:12.415
The previous algorithm that was used in Bitcoin was called ECGSA.

1014
01:25:12.954 --> 01:25:19.190
And so as Jonas just said, right, the point of a signature algorithm, you take the message, which is your transaction,

1015
01:25:19.570 --> 01:25:33.895
you mix it up somehow with secret data in a way that anyone can verify. And the idea is that you have this unforgeability property. So only the person who have access to the secret data is able to sign the transaction. And if any part of the transaction changes, the signature is no longer valid.

1016
01:25:34.630 --> 01:25:38.810
And the specific way that that's done is by an algorithm called ECGSA,

1017
01:25:39.190 --> 01:25:40.730
which uses a whole bunch of

1018
01:25:41.245 --> 01:25:45.345
crazy moon math involving elliptic curves and complicated algorithms and stuff.

1019
01:25:45.885 --> 01:25:46.385
And

1020
01:25:47.405 --> 01:25:51.119
in the Taproot upgrade, we have replaced ECDSA

1021
01:25:51.739 --> 01:25:53.679
for Taproot output with Schnorr.

1022
01:25:54.139 --> 01:25:56.719
And the difference between the two is actually fairly subtle.

1023
01:25:57.035 --> 01:26:09.469
They both use elliptic curve. They both use a sort of linear ish equation. They both have a very simple algebraic expression, which if we were doing like a math talk I could write them both on the board and you'd almost wonder,

1024
01:26:10.409 --> 01:26:11.630
what the difference was.

1025
01:26:13.130 --> 01:26:17.265
And the difference is the difference ultimately comes down to history, I'd say, which is

1026
01:26:17.645 --> 01:26:20.465
that back in 1989 or so when EC

1027
01:26:20.845 --> 01:26:25.185
Schnorr was first developed by Klaus Schnorr, who is still a professor in Germany, by the way,

1028
01:26:25.540 --> 01:26:30.599
He developed this signature scheme. He put a number of patents on it. 1, that was the number. And

1029
01:26:31.059 --> 01:26:44.190
he then tried to collect royalties on the signature scheme and because it wasn't widely used anywhere it got no use. Right? Nobody wants to start using a cryptographic scheme that you have to pay to use basically and that's always been true pretty much for the history of modern cryptography.

1030
01:26:44.730 --> 01:26:46.730
Then nobody used this. So then,

1031
01:26:47.130 --> 01:26:48.030
a few folks

1032
01:26:48.489 --> 01:26:51.150
at NIST and particularly Neil Koeblets, I think,

1033
01:26:52.525 --> 01:26:53.665
developed ECDSA,

1034
01:26:53.965 --> 01:27:04.840
where they took the Schnorr signature algorithm, they rearranged it a little bit, and they made it just different enough that it no longer violated the patents. And so this then became a standard both because there was a big standard body behind it and,

1035
01:27:05.539 --> 01:27:15.645
also because it was patent free. And that was kind of the design. Right? It was supposed to have all the efficiency and security and all those good properties of Schnorr, but not be encumbered by this patent. But as it happened,

1036
01:27:16.360 --> 01:27:20.620
well, in practice that is true. In practice it accomplished all of those things. But

1037
01:27:21.000 --> 01:27:25.655
Schnorr's system, by being kind of designed for for cryptographic

1038
01:27:26.215 --> 01:27:29.115
with cryptographic goals in mind is a fair bit more elegant.

1039
01:27:29.495 --> 01:27:31.900
It has a security proof and

1040
01:27:32.280 --> 01:27:32.760
a,

1041
01:27:33.160 --> 01:27:37.740
theoretical model, which is much more plausibly related to real life.

1042
01:27:38.120 --> 01:27:38.620
It

1043
01:27:40.125 --> 01:27:51.120
also has a bunch of algebraic simplicity and that's the big thing that I think we'll get into a bit later that makes it possible to do all sorts of cool advanced tricks like multi signatures and threshold signatures and adapter signatures,

1044
01:27:51.580 --> 01:27:52.560
and all these different

1045
01:27:52.860 --> 01:27:58.125
new signature types. You can build them on top of Schnorr, and and it wasn't really practical to build them on top of ECDSA.

1046
01:27:59.785 --> 01:28:00.285
So

1047
01:28:00.665 --> 01:28:02.765
what is the difference between

1048
01:28:03.385 --> 01:28:06.520
multi signature and threshold signature?

1049
01:28:08.900 --> 01:28:16.074
Yeah. So kind of what was alluded to is one of the things that is much simpler to do now that we're using instead of ECDSA

1050
01:28:17.175 --> 01:28:18.474
is that you can have,

1051
01:28:19.415 --> 01:28:22.240
so I think most people who use Bitcoin are used

1052
01:28:23.100 --> 01:28:35.865
to having, like, a public key and that's like an address. It's where your funds are stored And then your private key is like the secret you know that then you can generate a digital signature in order to spend those funds from that address.

1053
01:28:36.620 --> 01:28:40.400
And now you can kind of have shared ownership of a single pub key.

1054
01:28:42.380 --> 01:28:47.525
Most Bitcoiners are well, some Bitcoiners are probably aware that you can have shared ownership

1055
01:28:47.985 --> 01:28:48.485
using

1056
01:28:48.785 --> 01:28:49.845
a Bitcoin script.

1057
01:28:50.225 --> 01:28:51.605
It's usually called multisig,

1058
01:28:53.200 --> 01:28:56.580
and that's kind of enabled by just putting multiple public keys on chain.

1059
01:28:56.960 --> 01:29:00.980
But what these kind of new protocols enable is

1060
01:29:01.875 --> 01:29:04.135
a way for multiple people to share,

1061
01:29:05.155 --> 01:29:13.170
just one public key that kind of represents all of them. But everyone who isn't involved doesn't need to know that it's multiple multiple people. It just looks like a normal public key.

1062
01:29:13.470 --> 01:29:14.130
And then,

1063
01:29:15.070 --> 01:29:24.565
multi signature is when you have say, like, 2 people and both of them need to kind of work together in order to generate just one signature for their one key.

1064
01:29:25.185 --> 01:29:34.860
And then threshold as the name suggests would be something more like you have 3 people, but only 2 of them are needed in order to generate. So it's like a subset of,

1065
01:29:35.500 --> 01:29:41.054
the parties involved in making that. Yeah. So in some sense, threshold is kind of this general thing and multisignatures

1066
01:29:41.514 --> 01:29:42.155
are just,

1067
01:29:42.475 --> 01:29:45.054
the special case where everyone needs to sign,

1068
01:29:45.380 --> 01:29:55.135
which is kind of confusing because object multisig, like, the way that we previously had of doing multisig on Bitcoin or what's called multisig is actually a threshold signature.

1069
01:29:56.155 --> 01:29:56.975
But yes.

1070
01:29:57.594 --> 01:29:58.975
So I think it's,

1071
01:29:59.594 --> 01:30:00.415
it's a different

1072
01:30:01.060 --> 01:30:09.480
state of mind now to perceive, like, the change from, like, a multi signature to now what's more like a interactive aggregate signature.

1073
01:30:10.304 --> 01:30:17.925
Can we briefly expand on how it works? The combination process, like, what are these rounds I hear of?

1074
01:30:19.930 --> 01:30:29.835
So right now in Bitcoin, if you want to create a multi signature, you use a check multisig opcode or in the Taproot world how it's called, check

1075
01:30:30.315 --> 01:30:31.375
sig sig add.

1076
01:30:32.155 --> 01:30:32.655
And,

1077
01:30:33.275 --> 01:30:34.235
the way that,

1078
01:30:35.835 --> 01:30:41.750
you are able to spend a coin is that you need to So everyone who is,

1079
01:30:42.630 --> 01:30:43.929
involved in that setup

1080
01:30:44.230 --> 01:30:48.170
needs to agree on a message which would be some kind of transaction

1081
01:30:48.655 --> 01:30:49.475
in our

1082
01:30:49.775 --> 01:30:50.415
case and,

1083
01:30:51.215 --> 01:30:52.435
then they just

1084
01:30:52.815 --> 01:30:55.475
sign with a secret key and send the signature

1085
01:30:55.855 --> 01:30:58.355
to some person that will aggregate the signatures

1086
01:30:58.880 --> 01:30:59.380
and,

1087
01:31:00.400 --> 01:31:04.660
then broadcast the transaction to the Bitcoin network, for example.

1088
01:31:06.365 --> 01:31:08.785
Now, if we want to use, the tricks,

1089
01:31:09.405 --> 01:31:10.705
that Nadav mentioned,

1090
01:31:12.445 --> 01:31:15.345
doing a real multi signature where

1091
01:31:15.710 --> 01:31:17.570
even though it's multiple people,

1092
01:31:18.270 --> 01:31:22.210
there is only one public key involved and there's only one signature,

1093
01:31:23.205 --> 01:31:26.505
the setup becomes a bit more complicated

1094
01:31:27.205 --> 01:31:28.105
because now,

1095
01:31:30.389 --> 01:31:31.349
we call this,

1096
01:31:32.230 --> 01:31:33.130
signing process

1097
01:31:33.670 --> 01:31:34.170
interactive,

1098
01:31:35.670 --> 01:31:38.570
because there are now multiple rounds involved,

1099
01:31:40.545 --> 01:31:41.505
Which means that,

1100
01:31:42.065 --> 01:31:44.005
the potential signers first

1101
01:31:44.545 --> 01:31:45.925
send some data around,

1102
01:31:46.385 --> 01:31:46.885
then

1103
01:31:47.500 --> 01:31:51.200
they receive the message and then they sign and,

1104
01:31:51.820 --> 01:31:54.320
this way we have like a a 2 step

1105
01:31:54.735 --> 01:31:56.995
process, you could say, in order,

1106
01:31:57.535 --> 01:31:59.795
to create a multi signature.

1107
01:32:01.135 --> 01:32:02.835
So are there some challenges,

1108
01:32:03.135 --> 01:32:07.360
I guess, like, if I had, like, a key and a safe, or

1109
01:32:07.740 --> 01:32:15.185
do they need to all be online, like, in certain instances? Like, how does this, like, look for, like, the average person? Yeah. There are,

1110
01:32:15.965 --> 01:32:16.945
some challenges

1111
01:32:17.405 --> 01:32:19.105
definitely which is why

1112
01:32:19.565 --> 01:32:23.680
we when designing these things we try to remove these

1113
01:32:24.320 --> 01:32:24.820
challenges

1114
01:32:25.440 --> 01:32:29.460
as much as possible but unfortunately they cannot be

1115
01:32:29.760 --> 01:32:30.740
removed entirely

1116
01:32:31.280 --> 01:32:32.260
in our universe,

1117
01:32:33.205 --> 01:32:35.385
in our laws of nature as far,

1118
01:32:36.245 --> 01:32:37.625
as as we know.

1119
01:32:39.285 --> 01:32:44.160
So just yesterday we published a Bitcoin improvement proposal draft

1120
01:32:44.620 --> 01:32:47.340
on the Bitcoin mailing list that,

1121
01:32:48.060 --> 01:32:50.880
contains a standard for how to create,

1122
01:32:51.485 --> 01:32:52.785
these multi signatures.

1123
01:32:54.125 --> 01:32:55.725
It's a 2 round variant,

1124
01:32:57.565 --> 01:32:59.505
as kind of the state of the art

1125
01:32:59.829 --> 01:33:03.289
research that we did previously. It was 3 rounds

1126
01:33:03.750 --> 01:33:04.150
and,

1127
01:33:04.869 --> 01:33:06.650
it tries to explain

1128
01:33:07.515 --> 01:33:13.455
all the different footguns. There aren't that many but you still need to understand if you want to implement this.

1129
01:33:14.074 --> 01:33:18.460
I'm not talking about users or anything, I'm talking about implementers of this specification.

1130
01:33:18.920 --> 01:33:24.360
There are a few things that you need to be absolutely aware of. You need to read certain parts of this,

1131
01:33:25.125 --> 01:33:27.145
Bitcoin Improvement Proposal. I think

1132
01:33:27.525 --> 01:33:29.784
if you boil it down it's just 2 or 3 things.

1133
01:33:30.645 --> 01:33:37.790
But if you follow them you will be able to create a Schnorr signature, so a signature for a transaction

1134
01:33:38.090 --> 01:33:40.590
that spends a Taproot output.

1135
01:33:41.344 --> 01:33:50.005
Got it. Got it. So what are some attacks? You know, I hear this thing called rogue key attack or some guy named Wagner, like, what is?

1136
01:33:50.989 --> 01:33:58.745
Alright. Yeah. 3 months to 10. Yeah. I'll I'll take the rogue queue 1, and then I'm I'm gonna Alright. I'm gonna make you talk about Wagner. That's a hard one to explain.

1137
01:33:59.844 --> 01:34:08.860
So the way that these signature schemes work, both ECDSA and Schnorr is that you have this what's called a linear equation. We have some secret data, you have a message digest,

1138
01:34:09.400 --> 01:34:17.455
you have, basically an ephemeral key that we call a nonce. You put them together into a simple equation, you add all the pieces together, and you're off to the races. And

1139
01:34:18.555 --> 01:34:29.780
when I say add there, I mean, like, something a little more technical than than familiar edition, but still it behaves algebraically in the same way. Right? If you add 3 things together, it doesn't matter what order you put them in. You can rearrange them, all that good stuff.

1140
01:34:30.275 --> 01:34:32.295
So what a rogue key attack is

1141
01:34:32.755 --> 01:34:35.735
is when you take one of these multi signature schemes

1142
01:34:36.115 --> 01:34:38.060
that Nadav and Jonas was talking about

1143
01:34:38.540 --> 01:34:39.840
where you combine

1144
01:34:40.700 --> 01:34:50.684
3 keys from 3 different parties, say, however many you want. Let's say you have 3 parties, they all combine the keys into 1. So the goal is you have one key, one signature, but you have 3 people behind it. Right?

1145
01:34:51.304 --> 01:34:51.804
And

1146
01:34:52.425 --> 01:34:54.425
the goal, of course, is that you don't want

1147
01:34:55.260 --> 01:35:01.200
you want the one key to actually represent the 3 people. Right? Like, certainly, they should believe that, but also it should be a true belief.

1148
01:35:01.580 --> 01:35:22.835
So what you can do during setup, if you're participating in this, say that we wanted to do like Vivek and me and Jonas, we're all doing one of these setups. The idea is that we would each throw a key in the pot, we would add them all together, and then we'd have our combined key. And then later when we're signing, we would each do a signature. We'd add the signatures together and then we get a single signature. We actually have to do that

1149
01:35:23.614 --> 01:36:03.275
in 2 stages. We throw some nonces in the pot, add them up. We throw some signatures in the pot, add them up. Everything's great. The rogue key attack is where what I can do instead is I can wait for both Vivek and Jonas to give me their keys. And then what I do is I make a key and then I subtract their keys from my key. And then I put that in the path. And so if you've been following everything what gets mixed together is my key minus Jonas plus Jonas minus Vivek plus Vivek and what's left is just me. And so all 3 of us, well all 3 of us contributed something and we added up something from all 3 of us, but I kind of ginned things up so that everyone else's contributions would be canceled

1150
01:36:03.575 --> 01:36:17.225
out. And now if I want to go move the coins without consent from either of them I can go ahead and do that because ultimately the final key is just me. So that's a rogue T attack. And the way to avoid it is to do what's called a re randomization

1151
01:36:18.085 --> 01:36:20.505
where when we mix the keys together we need to,

1152
01:36:21.739 --> 01:36:28.719
rather than directly adding them, we need to first multiply them by a random factor and you have to choose that random factor in a way that

1153
01:36:29.099 --> 01:36:39.905
that whenever I try to change what my contribution is it changes the random factors for every other party. So I can't wait for everyone else to do stuff and then contribute my thing. We have to

1154
01:36:40.530 --> 01:36:45.750
have to mix contributions from everybody. And so if I try to gin sync up my active ginning it up will change

1155
01:36:46.050 --> 01:36:46.790
3 randomizers

1156
01:36:47.330 --> 01:36:48.470
and thereby undermine

1157
01:36:48.850 --> 01:36:49.565
my gin.

1158
01:36:50.605 --> 01:36:55.425
So that's the RoTEA attack. So that's one thing that we've had to address as we've developed these multi signature schemes.

1159
01:36:56.205 --> 01:36:57.425
Wagner Okay.

1160
01:37:00.639 --> 01:37:06.079
First, perhaps, just to be clear, these attacks, they don't apply to the BIP that,

1161
01:37:06.560 --> 01:37:08.020
were proposed yesterday.

1162
01:37:09.185 --> 01:37:11.365
We're talking about this I think because,

1163
01:37:13.265 --> 01:37:15.445
these kinds of schemes they have a history

1164
01:37:16.100 --> 01:37:18.360
and these attacks were discovered

1165
01:37:18.980 --> 01:37:19.800
on the way,

1166
01:37:20.340 --> 01:37:20.840
to

1167
01:37:21.219 --> 01:37:22.199
to the standardization

1168
01:37:23.465 --> 01:37:29.244
of of these schemes. One of these attacks would be a rogue key attack, but there are also other

1169
01:37:30.770 --> 01:37:32.790
attacks. Perhaps you are aware

1170
01:37:33.170 --> 01:37:33.650
that,

1171
01:37:34.130 --> 01:37:34.630
given

1172
01:37:34.930 --> 01:37:37.750
some byte string and a hash function,

1173
01:37:38.335 --> 01:37:39.555
let's say SHA 256,

1174
01:37:40.575 --> 01:37:43.475
it's very hard to find a pre image

1175
01:37:44.175 --> 01:37:47.235
or an input to that hash function that hashes

1176
01:37:47.640 --> 01:37:49.580
to a specific output.

1177
01:37:50.760 --> 01:37:51.659
That is hard.

1178
01:37:52.360 --> 01:37:58.395
However, what not many people are aware of is that if you have a sum of multiple hashes

1179
01:37:59.255 --> 01:38:06.739
that should sum into a value, a specific value, then finding the pre image for that sum of hashes

1180
01:38:07.120 --> 01:38:09.860
is actually not that hard.

1181
01:38:10.215 --> 01:38:17.095
And, in order to find these inputs to the hash functions, you can use Wagner's algorithm, but there are also,

1182
01:38:17.815 --> 01:38:18.315
more

1183
01:38:19.020 --> 01:38:20.800
efficient algorithms out

1184
01:38:21.260 --> 01:38:22.800
that have just been discovered,

1185
01:38:23.100 --> 01:38:24.719
last year. But this attack,

1186
01:38:25.805 --> 01:38:32.225
actually appears quite often in crypto systems that, we are interested in in in the Bitcoin world.

1187
01:38:33.060 --> 01:38:42.040
So just to I'm not sure if this is going to be helpful. This is a very technical thing. But one example of where that would appear is when you're trying to

1188
01:38:42.415 --> 01:38:43.875
do a multi signature,

1189
01:38:44.494 --> 01:38:49.074
what you're combining is a linear combination, of course, of secret data, but also the hashes of the transactions.

1190
01:38:49.375 --> 01:38:51.315
So if you can find a number of transactions

1191
01:38:52.130 --> 01:38:55.510
whose hashes all add up to the hash of another target transaction,

1192
01:38:56.130 --> 01:38:59.510
you can potentially get signatures on a bunch of good transactions

1193
01:39:00.065 --> 01:39:01.685
where the good ones were chosen

1194
01:39:02.065 --> 01:39:12.550
such as those signatures could be added up to get a signature on a bad one. And so that, and that is actually connecting this to a real system gets pretty hairy and technical, but because of this linearity property

1195
01:39:13.010 --> 01:39:18.685
that I haven't defined, but I'm gonna keep coming back to over and over, You can you can use this very abstract

1196
01:39:19.065 --> 01:39:22.685
Winger attack and actually produce forged signatures using it,

1197
01:39:23.065 --> 01:39:23.885
in some

1198
01:39:24.344 --> 01:39:25.804
long, like some previous

1199
01:39:26.880 --> 01:39:28.820
iterations of of this kind of research.

1200
01:39:29.360 --> 01:39:32.260
So now that that state of art research is out,

1201
01:39:33.225 --> 01:39:37.405
what are some efficiencies gained? Like, I like to sync my full node and,

1202
01:39:37.865 --> 01:39:41.325
you know, really brag about it. Is it faster now? Like, what's going on?

1203
01:39:43.810 --> 01:39:45.350
So it won't change,

1204
01:39:46.370 --> 01:39:50.310
past transactions, obviously. So the the kind of current sync time,

1205
01:39:51.055 --> 01:39:54.355
isn't all that affected by by Taproot. But new,

1206
01:39:55.215 --> 01:39:57.635
transactions, if people are using Taproot,

1207
01:39:58.610 --> 01:39:59.670
are going to,

1208
01:40:00.130 --> 01:40:05.190
well, I mean, Schnorr itself is just faster to verify already on its own,

1209
01:40:05.885 --> 01:40:07.344
by a little bit. But then,

1210
01:40:07.965 --> 01:40:09.505
with kind of the new standardization

1211
01:40:09.885 --> 01:40:10.385
process,

1212
01:40:10.925 --> 01:40:15.390
you can also now kind of aggregate a bunch of signatures that you want to verify

1213
01:40:16.590 --> 01:40:23.010
together in a way that then you can verify them all at once in a way that's faster than verifying each signature individually,

1214
01:40:23.815 --> 01:40:25.195
and that'll lead to,

1215
01:40:26.215 --> 01:40:28.555
I mean, it it will mean that

1216
01:40:29.175 --> 01:40:32.235
as opposed to the universe in which we didn't implement Schnorr,

1217
01:40:33.410 --> 01:40:36.790
we're we're faster than that universe in in syncing.

1218
01:40:37.490 --> 01:40:38.950
So I can essentially

1219
01:40:40.575 --> 01:40:45.315
verify maybe one signature for a whole block or one signature for entire, like,

1220
01:40:46.094 --> 01:40:57.489
15 multi sig, something like that? Well, all of them do have to be Schnorr signatures. So people who are still using EC and VSA, you still have to verify each of those individually. But I believe, and I guess correct me if I'm wrong,

1221
01:40:57.915 --> 01:41:21.885
that you can kind of just batch in as many of these Schnorr signatures that are using the same standard together. And kind of get benefits that grow with the number of signatures that you're verifying at once. So there there are actually there are 2 pieces to that just to to clarify. So one is this notion of batch verification where if you have a whole pile of signatures in a block and they're all snore signatures, you can verify that much faster than just verifying each one in a row.

1222
01:41:22.270 --> 01:41:40.440
And if you've got, like, 3 or 4 of these, you can probably verify it, like, twice as fast, but if you've got a 1,000 of them, you could potentially verify it, something like 8 or 10 times as fast. It's not a simple curve. It can just give you a multiplier, but it gets better the bigger your batch is. The other cool thing though that we'll see with Schnorr signatures is because we can do this multisig

1223
01:41:41.060 --> 01:41:42.040
kind of constructions,

1224
01:41:42.660 --> 01:41:46.200
oftentimes you won't even have so many signatures to verify.

1225
01:41:46.545 --> 01:41:53.925
And I think that's probably in practice where we're going to see the bulk of the savings is in the signatures that aren't even on the blockchain because they no longer need to be. Yeah.

1226
01:41:54.909 --> 01:41:55.489
I think

1227
01:41:55.869 --> 01:41:56.769
one of the,

1228
01:41:57.949 --> 01:42:01.650
more immediate applications of this multi signature

1229
01:42:02.190 --> 01:42:02.690
technology

1230
01:42:03.150 --> 01:42:03.650
is

1231
01:42:03.955 --> 01:42:06.295
opening and closing lightning channels

1232
01:42:06.835 --> 01:42:11.494
because there you are already in the setting where you have a 2 of 2 and,

1233
01:42:13.860 --> 01:42:14.920
the Lightning Network,

1234
01:42:15.540 --> 01:42:20.520
already is a very interactive and, stateful process, very

1235
01:42:20.915 --> 01:42:24.675
different to, like, hardware wallets signing in your,

1236
01:42:25.075 --> 01:42:27.895
bank using your bank vault or or whatever.

1237
01:42:28.275 --> 01:42:28.775
And

1238
01:42:31.390 --> 01:42:32.590
this would, I think,

1239
01:42:32.990 --> 01:42:33.490
benefit,

1240
01:42:34.910 --> 01:42:46.125
Lightning quite a bit because right now you need to, write 2 public keys to the, chain as well as 2 signatures when you want to close a Lightning channel,

1241
01:42:46.510 --> 01:42:47.250
And, with

1242
01:42:48.110 --> 01:42:49.010
multi signature

1243
01:42:50.030 --> 01:42:55.170
schemes, you can reduce that to 1 public key, 1 signature, which would make it cheaper

1244
01:42:56.344 --> 01:42:57.244
to, use Lightning.

1245
01:42:59.545 --> 01:43:01.724
Are there any other cool applications,

1246
01:43:02.665 --> 01:43:05.380
with these? I know Nadav works on DLCs.

1247
01:43:07.040 --> 01:43:09.220
I know, like, there's also a preimage

1248
01:43:09.600 --> 01:43:11.860
or hash reuse along the path.

1249
01:43:12.535 --> 01:43:13.835
What what's possible now?

1250
01:43:14.935 --> 01:43:16.795
Yeah. So one really exciting

1251
01:43:17.655 --> 01:43:18.155
application,

1252
01:43:19.095 --> 01:43:21.355
that is made much easier by Schnorr signatures,

1253
01:43:22.410 --> 01:43:28.270
is a variance that I believe Andrew came up with called adapter signatures. Oh, yes.

1254
01:43:29.130 --> 01:43:30.910
And they kind of allow

1255
01:43:31.735 --> 01:43:32.875
you to,

1256
01:43:34.775 --> 01:43:37.035
say, bake in some more

1257
01:43:38.615 --> 01:43:39.115
logic

1258
01:43:39.510 --> 01:43:51.265
in into your signatures than just kind of saying like, yes, this person can spend this, you can kind of make it a bit more complicated. So essentially, what DLCs do is we utilize adapter signatures

1259
01:43:51.965 --> 01:43:53.025
in order to,

1260
01:43:54.525 --> 01:43:55.025
make

1261
01:43:55.560 --> 01:43:56.060
Bitcoin

1262
01:43:56.600 --> 01:43:57.100
payments

1263
01:43:57.720 --> 01:43:58.220
that,

1264
01:43:58.760 --> 01:44:01.100
pay different amounts depending on

1265
01:44:01.400 --> 01:44:04.380
what, say, an oracle says happened in the real world.

1266
01:44:04.695 --> 01:44:13.595
So say like if, someone won an election or something like this then, you know, there might have been multiple candidates, people can put money into a Bitcoin address

1267
01:44:13.960 --> 01:44:20.140
that will pay to a different person depending on who wins that election or all sorts of variants on this kind of thing.

1268
01:44:21.385 --> 01:44:24.925
And, I believe this also affects lightning. You can essentially

1269
01:44:25.465 --> 01:44:29.165
perform lightning routing in a much better way than previously

1270
01:44:29.465 --> 01:44:31.165
or than it currently is done

1271
01:44:31.690 --> 01:44:36.590
using these adapter signatures. And one of the main benefits of this is that you don't have to use,

1272
01:44:36.890 --> 01:44:37.950
Bitcoin's native

1273
01:44:38.645 --> 01:44:46.505
scripting language, you kind of bake it all into the math of the signature itself and it all kind of just looks like normal signature activity on chain,

1274
01:44:47.239 --> 01:44:53.659
but it kind of makes it so that only the people who need to know kind of do the math and and do all of the contract

1275
01:44:54.395 --> 01:44:56.175
logic and everything else.

1276
01:44:56.955 --> 01:44:59.295
Really, you only use the Bitcoin blockchain

1277
01:44:59.835 --> 01:45:03.135
for the actual transfer of funds, which is what it's best at.

1278
01:45:03.890 --> 01:45:04.390
Yeah.

1279
01:45:04.850 --> 01:45:12.070
So one thing that we've been dancing around through a lot of this conversation is that there's not just a scalability benefit here, there's a privacy benefit as well.

1280
01:45:12.530 --> 01:45:26.620
So one place that the privacy comes from is just like, just from using multisix directly. That already gives you a privacy benefit if you've got one key that potentially represents multiple people and potentially represents some complicated policy where it could be a threshold or

1281
01:45:27.080 --> 01:45:39.645
some other arbitrary set of signers. In the lightning case, things get a lot more interesting because as you say, with these adapter signature constructions, you're able to start embedding some kind of non trivial logic into the signatures themselves.

1282
01:45:40.425 --> 01:45:40.925
And

1283
01:45:41.300 --> 01:45:42.760
adaptive signatures themselves,

1284
01:45:43.620 --> 01:45:49.080
what they are one way to think of them is a form of verifiable encryption. And what I mean by that is that I can take a signature,

1285
01:45:49.385 --> 01:45:54.205
I can encrypt it in some way where I can prove that the data that I'm encrypting

1286
01:45:54.905 --> 01:46:03.710
satisfies some algebraic properties that let me hook it into some other cryptosystem somewhere or something. But ordinarily, the point of encryption, right, is that you basically completely scramble your data.

1287
01:46:04.010 --> 01:46:04.510
And

1288
01:46:05.450 --> 01:46:05.850
if you

1289
01:46:06.875 --> 01:46:17.030
the idea is that this intended recipient can decrypt it and get the data out. But until they do the decryption, if they don't have a decryption of queues, there's nothing they can, they can't even tell that it is encrypted data, right, it could just be noise.

1290
01:46:17.330 --> 01:46:18.630
With verifiable encryption,

1291
01:46:19.250 --> 01:46:20.550
you can,

1292
01:46:21.145 --> 01:46:24.045
you know, provide some more substance to that. So in particular,

1293
01:46:24.585 --> 01:46:26.845
when you are using the lightning network,

1294
01:46:27.225 --> 01:46:35.800
the way that your payment channels work, well, the way that Lightning works is you're actually chaining multiple payment channels off of each other and you have these paths through Lightning Network and you're routing money through all this.

1295
01:46:36.395 --> 01:46:37.935
And along a certain path,

1296
01:46:38.315 --> 01:46:40.495
you have to maintain this,

1297
01:46:41.355 --> 01:46:51.260
kind of fixed identifier. I think it's an invoice ID or something in the UX. But what it is in the current lightning indication is it's some hash, some random hash of some data.

1298
01:46:51.719 --> 01:47:10.670
And this hash is put into the scripts in all the payment channels and it has to be the same and that's how the payment channels are linked. The idea is that when you update 1 payment channel, it causes a preimage that has to be revealed and the revelation can then be used in the previous payment channel, which then, you know, and everyone before that. With adaptive signatures,

1299
01:47:11.455 --> 01:47:17.315
rather than using script to require that your signature has to come along with revealing this hash privilege,

1300
01:47:18.255 --> 01:47:27.620
you can use this form of verifiable encryption. You can say by signing, you can say my signature itself is an encryption key or a decryption key, more importantly, it's both.

1301
01:47:28.305 --> 01:47:34.725
So by signing this update to this payment channel, I am now revealing a decryption key in the form of a signature

1302
01:47:35.160 --> 01:47:50.795
and that decryption key can be used to reveal some secret data, which I can then take and use in the previous payment channel and chain it forward. And even cooler is that you can actually re randomize it at each step. So now rather than having a whole path, we have the same random ID in each one

1303
01:47:51.150 --> 01:47:58.610
that somebody who had a God's eye view of the network could tell that it was all one path. You now have this re randomization where even the people in the path itself

1304
01:47:59.114 --> 01:48:09.490
might not know where it starts and where it ends because there's re randomization happening at the hop after them and the hop before them. So there's a privacy benefit there even within the Lightning Network. So

1305
01:48:09.970 --> 01:48:15.465
That sounds interesting. Pretty cool. So we have about 15 minutes left, and,

1306
01:48:16.085 --> 01:48:18.745
I'd definitely like to discuss scriptless scripts,

1307
01:48:20.725 --> 01:48:21.225
MUSIG

1308
01:48:21.525 --> 01:48:24.345
DN, or perhaps even CISA.

1309
01:48:25.370 --> 01:48:25.870
And

1310
01:48:26.330 --> 01:48:28.510
then, there was a recent paper put out,

1311
01:48:29.210 --> 01:48:32.110
and also some libraries from, Jesse Posner

1312
01:48:32.650 --> 01:48:35.085
regarding a threshold scheme called frost.

1313
01:48:35.385 --> 01:48:35.705
So,

1314
01:48:36.585 --> 01:48:38.205
let's try to rush through this.

1315
01:48:39.465 --> 01:48:45.200
Well, scriptless scripts generally refers to the use of adapter signatures. So I think we've covered that one.

1316
01:48:45.580 --> 01:48:46.320
Makes sense.

1317
01:48:46.700 --> 01:48:58.870
Well, I have one more minute. Okay. Yeah. Go for it. I'll be quick though. I promise. Yeah. I was I was on another panel a couple of weeks ago, and I gave a 28 minute answer to the question, how long have you been writing software? So, but I'll try to

1318
01:48:59.490 --> 01:49:00.790
I'm sorry, I'm doing it now.

1319
01:49:01.970 --> 01:49:06.070
To finish my spiel about adaptive signatures. So adaptive signatures give you this kind of,

1320
01:49:07.175 --> 01:49:18.840
this verifiable encryption property, which you can use in the Lightning Network just to feed data through there. But what you can also do is encrypt other signatures, for example. So you can do arbitrary forms of atomic swaps and stuff

1321
01:49:19.300 --> 01:49:20.200
where you

1322
01:49:22.500 --> 01:49:25.000
where you have, say, 2 transactions on 2 different blockchains,

1323
01:49:25.445 --> 01:49:34.520
for example, and you want to swap. Right? You're trying to trade some Bitcoin for some something worthless. Right? And the the worthless thing has its own chain. Right? That they do usually.

1324
01:49:34.980 --> 01:49:35.300
And,

1325
01:49:35.940 --> 01:49:52.980
so you want to do this fairly. Right? You don't want, you know, one person to give their money away and then the other to just take it and then walk away. So the way that you do this is you set things up so that when the first person signs to take their money, that signature then decrypts a signature that gives the other asset away on the other side. So you get this atomicity

1326
01:49:53.599 --> 01:49:54.420
in that form.

1327
01:49:54.880 --> 01:49:55.380
Another

1328
01:49:56.159 --> 01:50:01.305
more general application of this would be something called a 0 knowledge contingent payment.

1329
01:50:03.445 --> 01:50:03.945
ZKCP.

1330
01:50:04.805 --> 01:50:06.265
ZKCP. Thank you.

1331
01:50:07.460 --> 01:50:07.960
Where

1332
01:50:08.820 --> 01:50:34.620
what you are encrypting rather than being another signature or something is basically some arbitrary piece of data and you provide this extra object called a zero knowledge proof. And a 0 knowledge proof is a very general, very powerful cryptographic object, which are very slow to create. They have weird security models. There's lots of questionable things about 0 knowledge proof. But the cool thing here is we don't put them on the blockchain and we don't need them for long. They're kind of an ephemeral thing here. So what I could do is supposing

1333
01:50:34.920 --> 01:50:35.980
say that

1334
01:50:36.360 --> 01:50:36.860
I

1335
01:50:37.465 --> 01:50:46.285
meaning of trying to come up with a noncontracted example. Right? I have some satellite imagery. Okay? And I claim that I found some oil deposits. Okay? And I'm trying to sell those to Chevron

1336
01:50:48.170 --> 01:50:52.670
and I don't want to just give them the satellite images because then they'll take it and run away.

1337
01:50:53.130 --> 01:51:00.574
And for some reason they're really into high-tech, like bleeding edge cryptography and wanna play games with me, even though that's really not what they do.

1338
01:51:01.195 --> 01:51:05.454
And, so what I can do is I can take this satellite image, I can somehow

1339
01:51:06.010 --> 01:51:07.309
describe the

1340
01:51:07.690 --> 01:51:09.389
evidence of oil in

1341
01:51:09.929 --> 01:51:13.949
a verifiable computationally verifiable way and produce a zero knowledge proof.

1342
01:51:14.865 --> 01:51:26.949
Well, I'll take the image, I'll encrypt it. I'll produce a 0 knowledge proof that what I encrypted is a satellite image, which satisfies these criteria, which Chevron agrees actually indicates evidence of oil. And Now we do a 0 knowledge contingent payment

1343
01:51:27.330 --> 01:51:29.590
where the 2 of us jointly create a transaction

1344
01:51:30.130 --> 01:51:32.710
where in order for them to take my money,

1345
01:51:33.315 --> 01:51:36.135
I have to sign a transaction and my signing of that transaction,

1346
01:51:36.514 --> 01:51:42.970
well, I know it's going to give me the money because that's the transaction that gives me money. My signing will then decrypt the image,

1347
01:51:43.350 --> 01:52:00.260
which Chevron knows will be what they expect, and so we can execute a transaction that way, even if the 2 of us don't really trust each other, and even if, like, nobody should trust either of us. The the zero knowledge proof will step in there. So this general framework of of playing games like this with adaptive signatures is what we call scriptless scripts.

1348
01:52:00.800 --> 01:52:09.625
Got it. Got it. So we're gonna take a step back. Actually, no more music DN. I think we got our z k p, crypto cat out of the way.

1349
01:52:10.405 --> 01:52:11.705
Let's let's take

1350
01:52:12.085 --> 01:52:12.905
a bit more

1351
01:52:13.365 --> 01:52:18.185
applicable thing. Like, I know, you and Tim Rufing also work on

1352
01:52:18.600 --> 01:52:20.699
half ag music too. What are these,

1353
01:52:21.400 --> 01:52:27.820
advantages and, efficiencies potentially gained for things like lightning gossip? Can you touch on this? From, aggregation?

1354
01:52:29.094 --> 01:52:29.994
You mean? Okay.

1355
01:52:31.175 --> 01:52:36.394
I think would make first sense to distinguish what we call signature aggregation

1356
01:52:36.830 --> 01:52:39.890
from, multi signatures or threshold signatures.

1357
01:52:40.510 --> 01:52:43.170
And, for us, the main distinction

1358
01:52:43.870 --> 01:52:45.375
is that in multisignatures

1359
01:52:45.915 --> 01:52:47.135
or threshold signatures,

1360
01:52:47.515 --> 01:52:49.855
you only have a single message.

1361
01:52:50.955 --> 01:52:51.515
In the,

1362
01:52:52.155 --> 01:52:53.455
Bitcoin use case,

1363
01:52:53.770 --> 01:52:54.429
that is

1364
01:52:55.130 --> 01:52:57.949
dependent on the input that you're spending,

1365
01:52:58.809 --> 01:53:03.309
or dependent on the coin that you're spending, which means you have some

1366
01:53:04.155 --> 01:53:08.575
set of people and they have shared ownership over a single coin.

1367
01:53:09.035 --> 01:53:11.695
Now when we go to the signature aggregation world,

1368
01:53:12.090 --> 01:53:16.990
there are multiple signers and each with different messages.

1369
01:53:18.010 --> 01:53:22.245
Right? So this corresponds to a transaction with multiple inputs,

1370
01:53:22.785 --> 01:53:23.025
and,

1371
01:53:23.745 --> 01:53:26.165
this transaction must have multiple signatures,

1372
01:53:26.625 --> 01:53:29.605
and each signature will be over a different message

1373
01:53:30.050 --> 01:53:30.550
because,

1374
01:53:32.210 --> 01:53:36.390
because the signature is used to authorize the spend of a different coin.

1375
01:53:37.775 --> 01:53:39.935
So we call this, these schemes,

1376
01:53:40.335 --> 01:53:41.395
signature aggregation.

1377
01:53:43.695 --> 01:53:46.755
What they are doing is they act really aggregate

1378
01:53:47.230 --> 01:53:48.270
signatures and,

1379
01:53:48.910 --> 01:53:51.090
this doesn't have privacy benefits,

1380
01:53:52.110 --> 01:53:54.690
in general at least, but it has

1381
01:53:55.045 --> 01:53:56.265
scalability benefits

1382
01:53:56.885 --> 01:53:57.385
because,

1383
01:53:58.965 --> 01:54:00.665
a big part of transactions

1384
01:54:01.125 --> 01:54:03.145
right now are actually signatures.

1385
01:54:03.845 --> 01:54:04.345
So

1386
01:54:06.590 --> 01:54:07.730
what would be

1387
01:54:08.590 --> 01:54:13.730
we could try to aggregate these signatures into a smaller signature.

1388
01:54:14.865 --> 01:54:15.185
And,

1389
01:54:15.745 --> 01:54:18.245
there we again basically distinguish

1390
01:54:18.545 --> 01:54:20.405
2 different types of schemes,

1391
01:54:21.905 --> 01:54:23.525
mainly half aggregation

1392
01:54:24.400 --> 01:54:28.960
and full aggregation. And full aggregation is a bit simpler to explain because,

1393
01:54:30.240 --> 01:54:31.280
that works by

1394
01:54:31.945 --> 01:54:38.525
or or the output of the full, signature aggregation algorithm is a single signature. So in an ideal world,

1395
01:54:38.985 --> 01:54:42.628
every Bitcoin transaction would have a single signature,

1396
01:54:43.504 --> 01:54:45.380
unlike today where,

1397
01:54:45.760 --> 01:54:48.580
there's a signature for every input, basically.

1398
01:54:51.715 --> 01:54:52.935
But creating these

1399
01:54:53.315 --> 01:54:53.815
signatures

1400
01:54:54.435 --> 01:54:54.935
has

1401
01:54:56.994 --> 01:54:57.494
similar

1402
01:54:57.960 --> 01:54:58.460
interactivity

1403
01:54:58.840 --> 01:55:00.140
properties than,

1404
01:55:00.760 --> 01:55:01.660
multi signatures.

1405
01:55:02.120 --> 01:55:08.755
So it's not so easy to do, and how to exactly do that is, still an open research problem.

1406
01:55:10.255 --> 01:55:11.795
For half aggregation,

1407
01:55:12.335 --> 01:55:17.630
we don't get the benefits of having only a single signature in the end. We basically

1408
01:55:18.250 --> 01:55:22.830
are only able to aggregate half of the original signatures together,

1409
01:55:23.135 --> 01:55:25.715
but this process is non interactive,

1410
01:55:26.095 --> 01:55:28.815
so anyone can do that. And,

1411
01:55:29.855 --> 01:55:31.075
that would be something,

1412
01:55:32.020 --> 01:55:33.719
that could be added to

1413
01:55:34.020 --> 01:55:35.960
Bitcoin consensus perhaps,

1414
01:55:36.579 --> 01:55:37.559
at some point

1415
01:55:37.860 --> 01:55:38.760
in the future,

1416
01:55:39.165 --> 01:55:39.665
but,

1417
01:55:40.205 --> 01:55:42.225
it may have also implications

1418
01:55:42.925 --> 01:55:43.985
on protocols

1419
01:55:44.364 --> 01:55:47.425
on top of the Bitcoin network such as,

1420
01:55:48.450 --> 01:55:48.950
Lightning

1421
01:55:49.810 --> 01:55:55.670
because, Lightning, at least right now, gossips a lot of signatures around to prove,

1422
01:55:56.844 --> 01:55:59.905
that nodes actually have open channels.

1423
01:56:01.485 --> 01:56:04.545
And these signatures are just bare single signatures,

1424
01:56:05.270 --> 01:56:10.650
So what could happen is that instead of each sending a single signature for,

1425
01:56:11.270 --> 01:56:13.050
in order to do a single proof

1426
01:56:13.425 --> 01:56:13.585
that,

1427
01:56:14.305 --> 01:56:15.445
a channel exists,

1428
01:56:16.385 --> 01:56:18.965
some party, could be anyone, could just aggregate

1429
01:56:19.425 --> 01:56:23.140
these signatures into a single half aggregated signature then,

1430
01:56:23.780 --> 01:56:25.080
in order to reduce,

1431
01:56:25.780 --> 01:56:30.120
the size of the messages that need to be sent around in the Lightning Network.

1432
01:56:32.324 --> 01:56:32.824
Fascinating.

1433
01:56:33.445 --> 01:56:35.545
Hopefully, we'll get that sooner than later.

1434
01:56:36.405 --> 01:56:38.425
Alright. Nadav, what is frost?

1435
01:56:39.670 --> 01:56:41.290
Well, frost is a specific

1436
01:56:41.989 --> 01:56:45.290
proposal for threshold signatures on top of Schnorr.

1437
01:56:45.909 --> 01:56:47.610
I believe it stands for

1438
01:56:48.175 --> 01:56:49.395
flexible around

1439
01:56:50.255 --> 01:56:50.755
optimized,

1440
01:56:52.495 --> 01:56:53.315
what's the s?

1441
01:56:55.590 --> 01:56:58.010
The signing signature. Something threshold.

1442
01:56:58.710 --> 01:57:01.210
Oh, Schnorr threshold signatures. There we go.

1443
01:57:03.105 --> 01:57:04.245
Yeah. So essentially,

1444
01:57:05.905 --> 01:57:06.565
it is,

1445
01:57:06.945 --> 01:57:08.085
so it's a 2 round,

1446
01:57:08.865 --> 01:57:10.485
proposal meaning that,

1447
01:57:11.500 --> 01:57:12.239
well, I

1448
01:57:12.699 --> 01:57:17.840
guess there's a pre computation you can do so that it kind of looks like there's only a single round where,

1449
01:57:18.219 --> 01:57:19.039
that kind of

1450
01:57:19.385 --> 01:57:24.365
looks like normal signing where you just do something once, like, everyone generates their,

1451
01:57:24.745 --> 01:57:27.805
part of the signature and then someone puts it all together.

1452
01:57:28.620 --> 01:57:29.340
But really,

1453
01:57:30.380 --> 01:57:36.480
there's also kind of like a setup round. So there's a setup round and then a signing round. It's maybe a high level way to think about it.

1454
01:57:37.505 --> 01:57:38.005
Essentially,

1455
01:57:38.625 --> 01:57:40.165
what you do is,

1456
01:57:40.865 --> 01:57:43.685
everyone kind of generate or has their own

1457
01:57:44.385 --> 01:57:49.790
private key is how you could think of it or or secret share and then, together they they

1458
01:57:50.730 --> 01:57:52.590
have one private key.

1459
01:57:52.935 --> 01:57:56.155
It's not as simple as just adding all of those keys in a pot,

1460
01:57:56.775 --> 01:58:00.074
but you you do a little bit more math and you end up getting

1461
01:58:00.375 --> 01:58:01.594
a key which

1462
01:58:02.280 --> 01:58:09.340
then could in theory be derived by any, say, 2 of 3 participants or 3 of 5 or t of n.

1463
01:58:10.625 --> 01:58:18.325
But then rather than actually doing that because you don't want people to just know what this private key is because then they can sign for the group. So what you do instead

1464
01:58:18.750 --> 01:58:19.650
is you collaboratively

1465
01:58:20.030 --> 01:58:20.530
any,

1466
01:58:20.989 --> 01:58:25.489
2 or 3 2 of 3 or 3 of 5 or whatever threshold you want

1467
01:58:25.844 --> 01:58:29.545
of all of the people can get together and collaboratively generate,

1468
01:58:30.565 --> 01:58:33.225
like, they each person generates a partial signature

1469
01:58:33.765 --> 01:58:34.985
using their own

1470
01:58:35.820 --> 01:58:38.960
secret share and then it's all put together

1471
01:58:39.260 --> 01:58:40.560
and if you have

1472
01:58:40.860 --> 01:58:44.480
at least t people, at least 3 of the 5 people, for example,

1473
01:58:45.365 --> 01:58:51.065
then you generate just one normal looking Schnorr signature for the one kind of group key.

1474
01:58:52.725 --> 01:58:53.225
And

1475
01:58:54.790 --> 01:59:00.570
it's kind of done in a a simple enough way that it it works well with a lot of other

1476
01:59:01.945 --> 01:59:03.645
things that you might wanna do.

1477
01:59:04.985 --> 01:59:09.325
I actually I don't know if it works with adapter signatures. I imagine that you would be able

1478
01:59:09.889 --> 01:59:19.265
to hack that together if you wanted or similar approaches could Adaptive signatures mostly only work with 2 of 2 set up. There's not room to do a threshold.

1479
01:59:20.125 --> 01:59:22.545
Right. Right. Right. Right. Okay. Yeah. Well, it

1480
01:59:23.245 --> 01:59:24.305
kind of is

1481
01:59:24.740 --> 01:59:27.960
similar in nature to how multi signatures look, but it's

1482
01:59:28.340 --> 01:59:29.480
done more generally.

1483
01:59:29.860 --> 01:59:39.515
And I guess if Jonas wants to talk about the trade offs between using something like music and frog. We can have a bonus round about blind signatures or ring signatures if you'd like to.

1484
01:59:41.130 --> 01:59:42.909
I think one thing that's also,

1485
01:59:43.369 --> 01:59:43.869
interesting

1486
01:59:44.170 --> 01:59:48.820
to to get across is what are the different stages that these proposals are,

1487
01:59:49.935 --> 01:59:55.074
right now. Because people in the audience might be interested to to use this eventually.

1488
01:59:55.455 --> 01:59:56.495
Mhmm. And,

1489
01:59:57.215 --> 01:59:57.715
so

1490
01:59:58.190 --> 02:00:03.409
what we're mostly talking about right now is only the lowest level that you're really interested in,

1491
02:00:03.869 --> 02:00:04.610
which is

1492
02:00:05.575 --> 02:00:12.715
the cryptography part. Right? But there are more parts before you can actually use this in your wallet. Right? There needs to be standardization

1493
02:00:13.175 --> 02:00:14.715
first of the crypto scheme,

1494
02:00:15.170 --> 02:00:15.410
And,

1495
02:00:16.010 --> 02:00:17.510
in for multisignatures,

1496
02:00:18.610 --> 02:00:19.350
we are

1497
02:00:19.810 --> 02:00:22.550
as I said, we we published a standard yesterday

1498
02:00:22.930 --> 02:00:23.990
for Frost.

1499
02:00:25.114 --> 02:00:29.355
I would say there it's, a bit more early, but there are also standards,

1500
02:00:30.395 --> 02:00:30.895
progressing,

1501
02:00:31.650 --> 02:00:36.390
that will be eventually usable with, Taproot and tweaking and and whatnot.

1502
02:00:37.170 --> 02:00:43.405
But then there is also the other layer of how does this integrate with wallets really, that you can have multiple wallets

1503
02:00:43.945 --> 02:00:44.445
independently,

1504
02:00:45.705 --> 02:00:47.245
or independently implemented

1505
02:00:47.705 --> 02:00:50.719
from different vendors that work together and create,

1506
02:00:51.099 --> 02:00:52.159
such a signature.

1507
02:00:52.539 --> 02:00:52.860
And,

1508
02:00:54.139 --> 02:00:55.280
that is, I think,

1509
02:00:55.739 --> 02:01:00.045
a really interesting thing in the future how to exactly do that.

1510
02:01:01.065 --> 02:01:01.305
And,

1511
02:01:02.505 --> 02:01:08.850
that might be more difficult for some schemes than for others. Right? For multi signature, which is a more,

1512
02:01:09.710 --> 02:01:13.310
specific scheme, n of n, that might be a little bit more,

1513
02:01:13.875 --> 02:01:15.895
a little bit easier to do for,

1514
02:01:16.595 --> 02:01:19.655
wallet implementers than something, for example,

1515
02:01:20.035 --> 02:01:21.495
like, like Frost.

1516
02:01:22.699 --> 02:01:33.594
And you asked about blind signatures? Blind and ring. Whatever you think we can kill a minute 30 with. Okay. I say ring. Do rain. I I I'd say blind signatures. Let's do it. Yep. Blind.

1517
02:01:34.775 --> 02:01:37.255
Okay. So what blind signatures are, they,

1518
02:01:38.700 --> 02:01:41.040
are basically a client in a server protocol

1519
02:01:41.420 --> 02:01:45.040
where the server signs some sign signs some message

1520
02:01:45.795 --> 02:01:49.335
that came from the client without knowing what this message is.

1521
02:01:49.875 --> 02:01:51.895
And also such that the signature

1522
02:01:52.355 --> 02:01:52.995
won't be,

1523
02:01:53.715 --> 02:01:54.215
correlated

1524
02:01:54.770 --> 02:01:59.010
with, the message in the future or even the signature in in the future. And,

1525
02:02:00.690 --> 02:02:01.829
how is this used?

1526
02:02:02.145 --> 02:02:10.005
This can be used for example for Federated e cash or e cash in in general, which is I think one of the interesting

1527
02:02:10.920 --> 02:02:13.420
direction that the Bitcoin community

1528
02:02:13.800 --> 02:02:17.739
is is looking into where you have much better privacy,

1529
02:02:18.695 --> 02:02:22.155
guarantees than anything you could achieve with, blockchains

1530
02:02:22.534 --> 02:02:23.034
or

1531
02:02:23.494 --> 02:02:24.074
or Bitcoin

1532
02:02:25.014 --> 02:02:25.675
in particular,

1533
02:02:26.969 --> 02:02:28.349
but you have other

1534
02:02:29.050 --> 02:02:33.550
trade offs. And, these blind signature schemes, they don't need to be

1535
02:02:34.325 --> 02:02:35.305
part of,

1536
02:02:35.765 --> 02:02:36.745
Bitcoin consensus,

1537
02:02:37.685 --> 02:02:41.545
which means that we could use can use more exotic schemes

1538
02:02:41.870 --> 02:02:43.489
that don't have the trade offs,

1539
02:02:43.949 --> 02:02:44.690
of interactivity

1540
02:02:45.070 --> 02:02:46.190
that we discussed with,

1541
02:02:46.750 --> 02:02:51.170
multi signatures or complicated setup like in, threshold signatures,

1542
02:02:51.505 --> 02:02:53.585
but, we can have more,

1543
02:02:53.905 --> 02:02:56.485
exotic cryptographic assumptions and then,

1544
02:02:57.025 --> 02:03:01.660
have a simp a scheme that is simpler to implement and harder,

1545
02:03:02.280 --> 02:03:03.340
to mess up,

1546
02:03:04.040 --> 02:03:09.340
and also that has properties like threshold blind signing, where you have a whole federation

1547
02:03:09.995 --> 02:03:10.554
that would,

1548
02:03:11.435 --> 02:03:12.655
require a signature,

1549
02:03:13.435 --> 02:03:15.215
on a token or whatever,

1550
02:03:16.715 --> 02:03:19.295
yeah. So that's, that's I think the

1551
02:03:20.020 --> 02:03:23.640
the the way how you could use blind signatures in in Bitcoin.

1552
02:03:24.500 --> 02:03:24.820
And,

1553
02:03:25.460 --> 02:03:28.360
this is essentially Mini Mint or similar applications.

1554
02:03:29.685 --> 02:03:31.065
Yep. Exactly. It is.

1555
02:03:31.525 --> 02:03:32.025
Well,

1556
02:03:33.285 --> 02:03:33.945
I guess

1557
02:03:34.645 --> 02:03:42.600
that's pretty much it. I'd like conclude this panel. Let's get a huge round of applause for Andrew Polstra, Jonas Nyck, and Nadav Cohen.

1558
02:03:50.065 --> 02:03:56.085
Thank you so much for joining, and, Lisa, thank you for coming in last minute as a co moderator.

1559
02:03:58.239 --> 02:04:00.020
I I wanna start off by

1560
02:04:00.560 --> 02:04:01.860
I I I would assume

1561
02:04:02.239 --> 02:04:07.114
a lot of people here don't know what covenants are. I, myself, have never even

1562
02:04:08.295 --> 02:04:09.355
really studied covenants

1563
02:04:09.815 --> 02:04:12.955
really, really deeply. I know about them, obviously, but

1564
02:04:13.370 --> 02:04:22.350
I wanna take this time where we can all learn you can essentially teach Lisa and I about covenants. This can be an educational panel so then the audience can learn with us what are covenants.

1565
02:04:23.035 --> 02:04:28.175
And I wanna start with when I first started doing research, I said, what was the first covenant?

1566
02:04:28.875 --> 02:04:34.420
And what came up with what came up on Google was the first covenant was between God and Abraham,

1567
02:04:35.040 --> 02:04:37.780
and the way this this covenant is satisfied is

1568
02:04:38.400 --> 02:04:39.780
Jewish men got circumcised.

1569
02:04:40.285 --> 02:04:41.505
So I wanna know

1570
02:04:41.965 --> 02:04:49.505
how how does this relate to Bitcoin? Maybe we can start there, work our way from, you know, a few 1000 years ago, and work our way here to Bitcoin.

1571
02:04:50.200 --> 02:04:50.920
Just kidding. But,

1572
02:04:52.120 --> 02:04:52.920
like I said,

1573
02:04:53.320 --> 02:04:56.620
few minutes on the clock. Let's do very, very quick introductions,

1574
02:04:57.115 --> 02:05:04.235
10 words or less kind of thing, and let's get rolling into the education. So let's start with Lisa. Hi. I'm I'm Lisa, also in.

1575
02:05:05.040 --> 02:05:08.820
I work on Nikon. Is we need mic for Lisa.

1576
02:05:10.240 --> 02:05:17.935
I'll I'll introduce myself in the meantime while we figure that out. Hi. I'm Jeremy. I like Bitcoin, and I like covenants, and I hope Bitcoin can one day have covenants.

1577
02:05:19.915 --> 02:05:21.534
Amazing. So my name is Burak.

1578
02:05:22.050 --> 02:05:31.095
I'm a Bitcoiner on Bitcoin dev. I think I started in Bitcoin, like, 5 years ago or more or less, you know, initially exploring and building around mining, wallets, payments,

1579
02:05:31.475 --> 02:05:39.255
and I initial and and I, you know, finally ended in this covenants rabbit hole. So it's it's a really interesting place.

1580
02:05:40.100 --> 02:05:40.600
Exciting

1581
02:05:41.140 --> 02:05:48.040
times. Yeah. Hello. I'm Sanket, and I'm excited about governance. And I like Jeremy, I want to see governance in Bitcoin.

1582
02:05:48.594 --> 02:05:49.975
Cool. Anyone on test the mic?

1583
02:05:50.355 --> 02:05:51.655
Hello? Hello? Okay.

1584
02:05:52.355 --> 02:05:52.855
Hello?

1585
02:05:53.395 --> 02:05:55.815
I think there's feedback. So so so,

1586
02:05:56.420 --> 02:06:01.639
Misty, if if you want, for now, if you, when you have a question, we'll just, yeah, we'll just repeat. Alright.

1587
02:06:02.179 --> 02:06:11.095
And then in in the sake of time, maybe we just kinda skip a little bit of the 2000 years of history of covenants and just kinda jump in it, for the sake of time. So,

1588
02:06:12.800 --> 02:06:19.395
how do we where are we at right now? How do we get here? Like what is a covenant in terms of Bitcoin, Jeremy? Yeah.

1589
02:06:19.955 --> 02:06:29.095
So one of the things that I use to explain covenants is that Bitcoin UTXOs, which hopefully we know what those are. That's like a a coin that you have. It's a little bit like a treasure chest,

1590
02:06:29.590 --> 02:06:31.530
and when you open it up usually

1591
02:06:31.910 --> 02:07:34.120
you get some coins out and you can put those into whatever new treasure chest you want, and that treasure chest could have whatever locks you wanna have on it. A covenant is like when you open it up, and then instead of gold coins or something, you see it's like Jimmy Hendrix's guitar, and it says please only put this into a guitar case in the future. And you're like, okay. So if I open this up, then you're gonna leave a little note maybe that says, yeah, when you open this up, please put it into a guitar case. Maybe after it's been opened 10 times, you say something like, take it to the guitar shop to get tuned. That's a covenant. It's like you open up these treasure tests, and then you find something that maybe has some additional restriction of what you can do with it, and that's maybe a little bit heady, but you can imagine in Bitcoin we would have something like, hey, open this up and then move it, and then after you've moved it you have 6 months before some other action can happen. Once you take that action, you have a 2 week grace period, that type of thing when because we're only thinking about Bitcoin. You can't transact Jimmy Hendrix's guitar on the blockchain. I I like that analogy. You have to put a guitar in a guitar good guitar case that's kinda like provisioning it. Did you Hello? Hello? Hello?

1592
02:07:34.755 --> 02:07:38.135
Hello? Hello? Can you hear me? Oh, great. Oh, sorry. Okay. Cool.

1593
02:07:38.595 --> 02:07:55.615
Try to do a quick end so Do do do a quick intro. Yeah. Yeah. I'm Lisa also, and I work on lightning at core lightning at. Cool. And I I didn't really do an intro for myself. So we'll we'll we'll be asking the questions here trying to learn with you guys about these covenants. I'm I'm Michael Tidwell. I work at Souty as an infrastructure engineer.

1594
02:07:56.950 --> 02:07:58.490
And and what you missed is,

1595
02:07:59.030 --> 02:08:05.050
Jimmy Hendrix guitar case. The the analogy here is if I give you this guitar, then you have to put it in a guitar

1596
02:08:05.405 --> 02:08:15.890
guitar case. Can't say that word today. Is that kind of Yeah. Like, you know, you have a special object, and you've gotta, like, preserve something of it's gotta be in a guitar case. You have keep it under some sort of special rule.

1597
02:08:16.270 --> 02:08:26.395
And, you know, rather than just, like, you know, gold coins that you could take out of your treasure chest and put into another treasure chest of your choosing, you You gotta keep it in something that has a special format. So is this I mean,

1598
02:08:27.175 --> 02:08:29.515
I think, like, most people have heard of NFTs,

1599
02:08:29.930 --> 02:08:36.750
which are, like, non fungible tokens. Right? So how are you gonna take Bitcoin and make it look like a guitar?

1600
02:08:37.050 --> 02:08:37.550
Like,

1601
02:08:38.105 --> 02:08:56.525
you know, like, like, why you know, the nice thing about Bitcoin is every Bitcoin is a Bitcoin. Right? Like, you can exchange 1 Bitcoin with another person. We call that fungible because you know that when you get Bitcoin it's the same as, like, any other Bitcoin and all Bitcoin is, like, pretty much equal. Right? So I'm willing to transact on Bitcoin

1602
02:08:56.905 --> 02:08:59.885
because I know that I'm gonna get Bitcoin in return. Right?

1603
02:09:00.185 --> 02:09:05.020
Like, if you're turning Bitcoin into guitar, like, how does Bitcoin become a guitar, 1?

1604
02:09:05.320 --> 02:09:28.935
And, like, 2, like yeah. Isn't that, like are you making, like, NFTs then? Like Yeah. Yeah. So we're just using the guitar as an example of something that has some additional restriction. Mhmm. An example of Bitcoin that's more like a guitar might be Bitcoin that you intend to give to your spouse when you die. Mhmm. And you might wanna have an additional covenant on that that says, well, if you claim access to this because you're claiming that I'm dead,

1605
02:09:29.475 --> 02:09:41.040
maybe there should be some time out period where I can say I'm not actually dead. And that would be more like, you know, there's some restriction on that. But why are you giving your money your Bitcoin to your spouse, Jeremy? Like, I don't have a spouse. I see. Thanks.

1606
02:09:41.580 --> 02:09:48.445
Otherwise, my spouse would have all my So so let me let me ask kind of, like, a higher level question. Do covenants do covenants currently exist in Bitcoin?

1607
02:09:52.105 --> 02:09:56.190
I can go with this, And the answer is we don't know.

1608
02:09:56.570 --> 02:09:57.070
Like,

1609
02:09:57.610 --> 02:09:59.390
Bitcoin script is,

1610
02:09:59.850 --> 02:10:03.275
like, complicated. We have this opcode called op check sig

1611
02:10:03.915 --> 02:10:12.015
which allows which is most fundamental opcode to Bitcoin where you check a signature, then the transaction has valid signature with respect to

1612
02:10:12.540 --> 02:10:13.760
the given public key.

1613
02:10:14.220 --> 02:10:16.640
And by its nature, this opcode

1614
02:10:17.020 --> 02:10:19.520
relies on some data from the transaction itself.

1615
02:10:20.204 --> 02:10:21.585
And in some way,

1616
02:10:22.844 --> 02:10:25.744
the the data from the transaction is available to the script.

1617
02:10:26.045 --> 02:10:31.410
And given all the different op codes we have today, there may be covenants may be possible.

1618
02:10:31.790 --> 02:10:33.730
We just don't know how to do them yet.

1619
02:10:34.750 --> 02:10:39.375
Good way might be to cleanly add support for covenants, but do we have covenants today or no?

1620
02:10:40.475 --> 02:10:51.640
I don't know. Like, for example, Andrew Postra has a good blog post on if you just had op cat, which is looks like a simple op code where you just add 2 concatenate 2 elements on stack,

1621
02:10:52.260 --> 02:10:54.200
with that, you can have covenants. Like,

1622
02:10:54.615 --> 02:11:05.830
yeah, just the nature of Bitcoin script itself is, like, I we can't answer this question. So I I would actually take the side of saying, that we that and this is maybe an important second topic is that we do have covenants,

1623
02:11:06.450 --> 02:11:13.875
that like, a a lock time, check lock time verify, or check sequence verify, in my opinion, are a covenant because it's saying here's a coin

1624
02:11:14.175 --> 02:11:22.100
that you can only spend after a certain amount of time. So it's something beyond just who the owner is about how the coin can be spent. I would consider that a covenant. The

1625
02:11:22.480 --> 02:11:28.305
thing that we're that we're talking about when we say we're not sure and we usually shorthand covenants for this is covenants that really restrict

1626
02:11:28.785 --> 02:11:30.485
where you can spend the coin to,

1627
02:11:31.345 --> 02:11:32.485
not just the how.

1628
02:11:32.865 --> 02:11:33.365
And,

1629
02:11:34.065 --> 02:11:37.285
that yeah. We don't know. As far as I can tell, we don't have them

1630
02:11:37.790 --> 02:11:44.050
at this point, but maybe somebody would find something we could do. Right. But, but by by the definition that we're kinda talking about, it seems

1631
02:11:44.670 --> 02:11:46.050
covenants, by definition,

1632
02:11:47.125 --> 02:12:03.680
have some kind of condition on how they're spent or how Bitcoin is spent. Is that is that okay as a layman term definition? I think you just wanna add more so than something like a simple list of signatures. Okay. Because that that's kind of like that's just who owns it. Because because that's every Bitcoin. And you can say that's a covenant, but that's just like who owns it. It is like an additional restriction.

1633
02:12:04.005 --> 02:12:16.489
Okay. And, Brock, did you wanna add anything? Oh, I think, we don't have NFTs on Bitcoin yet, but you take those or NFTs when you think about it. And I think, yeah, here's Jeremy's saying guitar analogy is, you know, the stuff. Yeah. You can constrain

1634
02:12:17.110 --> 02:12:27.175
in how they can spend. Right? Mhmm. And, yeah, and you can do covenants with some additional codes like checks not tricks, but the entry barrier of that doing that is extremely high. Right?

1635
02:12:27.795 --> 02:12:33.980
But, you know, covenants, in short, is pre committing to a transaction in advance of creating address. Right? In short.

1636
02:12:35.000 --> 02:12:43.035
And I think from what I, like, observe from the community, I think we'll get there at some point. Right? But the question is really in what capacity?

1637
02:12:43.735 --> 02:12:46.875
We we are seeing many competing ideas and proposals,

1638
02:12:47.335 --> 02:12:49.195
and more and more to come. Right?

1639
02:12:49.530 --> 02:12:53.070
But, you know, each proposal have a different level of complexity

1640
02:12:53.370 --> 02:12:54.510
and, you know, flexibility.

1641
02:12:55.370 --> 02:13:00.515
You know, each have their own trade offs. It will be interesting to see which ones pay the way for Bitcoin.

1642
02:13:01.054 --> 02:13:03.235
And can we talk about some of the proposals

1643
02:13:03.695 --> 02:13:06.355
that for covenants? I I know, what, in

1644
02:13:06.780 --> 02:13:15.760
2013 or some some Greg Maxwell made a post back in the day. There's been I don't know if that was quite a proposal, more of just an idea, but what proposals currently exist today

1645
02:13:16.275 --> 02:13:19.095
that are covenant proposals, I guess, you could say?

1646
02:13:19.955 --> 02:13:26.120
Is that for me? Alright. So anyone that wants to answer. I have a favorite one, which I'll tell you about last, but,

1647
02:13:26.840 --> 02:13:35.395
there are a lot of I think one thing that's important to understand when we say the word proposal, it means different things. So there is a BIP, which is a Bitcoin improvement proposal,

1648
02:13:36.014 --> 02:13:39.554
and that is a proposal that is it is, like, very structured,

1649
02:13:40.179 --> 02:13:45.159
and, they can be at different levels of readiness. And so when you talk about a proposal,

1650
02:13:46.179 --> 02:13:53.565
there's also a sort of idea, right, of, hey. What if we did this? So there are a lot right now of what if we did this's.

1651
02:13:53.945 --> 02:13:56.765
And as far as I'm aware, there's only, like, one

1652
02:13:57.270 --> 02:14:03.369
or maybe 2 things that are kind of more on the side of, like, here is a concrete thing that we could do.

1653
02:14:03.670 --> 02:14:09.534
So in the the scope of things that are, like, here are ideas, people are talking about what if we added, like,

1654
02:14:09.914 --> 02:14:10.414
a

1655
02:14:10.875 --> 02:14:20.400
language that itself in scripting was maybe, you know, like a lisp or some sort of, like, actual programming language to Bitcoin, then we could compute

1656
02:14:20.795 --> 02:14:40.565
any arbitrary covenant we ever could want. We could say all the possible covenants we could express. That's something people are thinking about, but nobody has, like, a code sample that you could run and try with. And then, there are some maybe, like, application specific covenants that are, like, rather than this big general purpose thing. Like, what if we just had a covenant that let us manipulate

1657
02:14:40.945 --> 02:14:56.065
Tapscript and manipulate the tree that we've seen? There's one called Taplyk update verify that people are getting maybe a little excited about. There are some other ones people have talked about as well, but all those things are kind of in the space of, hey. I've got a cool idea. Don't know exactly what it would look like.

1658
02:14:56.605 --> 02:15:00.945
The the 2 that have, some potential for covenants that are in the more concrete

1659
02:15:01.390 --> 02:15:01.890
phase

1660
02:15:02.270 --> 02:15:05.090
where it's something maybe that could be considered for merging,

1661
02:15:05.390 --> 02:15:25.490
and activation at some point in the next, like, year or 2 would be check template verify, which is the proposal that I work on. And Anyprevent, which is one that is in the Lightning community primarily, but has applications for covenants that are not, like, if you said we can remove covenants from any prevout, the Lightning community probably would do it because they're focused on it for a different application. So it's sort of a side effect.

1662
02:15:26.830 --> 02:15:29.155
And so for Check Template Verify,

1663
02:15:30.495 --> 02:15:32.995
I like covenants, and I think that generally covenants

1664
02:15:33.455 --> 02:15:47.605
are something we should explore, But a lot of people in the community, like Greg Maxwell in this original post where he shared it, had a lot of reservations around, are covenants good? Are they bad? Can they have bad, you know, bad things happen? And so when I designed CTV in 2019,

1665
02:15:48.545 --> 02:15:52.805
I said, can I make a covenant that is the simplest possible thing that

1666
02:15:53.150 --> 02:15:54.930
that basically if you don't

1667
02:15:55.230 --> 02:16:07.255
want CTV, then you will not want any covenant system ever, at least in terms of functionality? Maybe you'll disagree from a product management point of view. But if you say, CTV is bad, here's why CTV is bad, then we can rule out all covenants forever.

1668
02:16:07.555 --> 02:16:41.035
But if you're like, CTV is good, like, well, we'll get something done maybe, and then we can talk about the more sophisticated things. So so it's like CTV is, like, the smallest unit of covenant where it's like, hey. If we can prove that this is bad, then we know covenants are bad. But if this is good, there might be more opportunity. Yeah. I I think that's how I would describe it. And just in terms of, you know, like, the doneness of the proposal, it it is in a form where, like, you could merge, activate, and release it, you know, starting now if you wanted to. So it's more in the category of product management decision rather than there's still an engineering question around how would we actually implement this thing.

1669
02:16:42.774 --> 02:16:59.694
I Yeah. I think that's I think those are all really interesting things about how we, like, kinda move Bitcoin forward, etcetera, and, you know, this covenant proposal covenants will have to go through that process at some point. I think, like, as, like, a as a person who works on Bitcoin stuff though, I'm gonna be honest, like,

1670
02:16:59.995 --> 02:17:02.734
I'm not totally I think covenants are cool

1671
02:17:04.020 --> 02:17:07.561
technically. There's literally cool stuff I think that they enable

1672
02:17:08.101 --> 02:17:13.561
but I'm not totally sold that we need to make Bitcoin more complicated and add more

1673
02:17:14.165 --> 02:17:16.904
ways of making it harder to spend bitcoin.

1674
02:17:18.245 --> 02:17:23.225
So maybe I think there's 2 things here is like, you know, there's much different proposals about how to do covenants.

1675
02:17:24.020 --> 02:17:28.120
I think maybe we could talk about, like, what's how accessible are these? Like,

1676
02:17:28.740 --> 02:17:37.835
how, like, in terms of, like, you know, like, is it are these things that like everyday bitcoiners are gonna are we gonna make it easier for the is this gonna make it easier for them to, like,

1677
02:17:38.695 --> 02:17:39.755
secure their bitcoin?

1678
02:17:40.056 --> 02:17:40.775
Is it like

1679
02:17:41.720 --> 02:17:43.880
I don't know. Yeah. Like, if like, why

1680
02:17:44.439 --> 02:17:48.300
what about coming into, like So so let's let's start with, like, the major,

1681
02:17:48.815 --> 02:17:56.755
like, beneficial use cases maybe, where y'all can talk about, like, one one that you're interested in, for instance, is security. Like, how how does this benefit us?

1682
02:17:57.135 --> 02:18:23.070
Yeah. I think, yeah, we have some very I have some favorite proposals like CTV. I think it has many it enables many use cases. I think the primary one my favorite one is channel factories so that you can, you know, open thousands of channels in a single UTXO. And you you don't necessarily need to close them because they can they can source you in more liquidity later. But also I also, Tableau update verify also can, potentially bring, you know, channel factories as well,

1683
02:18:23.610 --> 02:18:38.540
so that you can open it's a shared UTXO model. You can open, like, tons of channels as well. But I think when you wanna close them, you only close the channel you are interested in as opposed to CTV when you have to you have to declare all channels first to call some. But, anyway,

1684
02:18:39.340 --> 02:18:39.920
I think,

1685
02:18:40.380 --> 02:18:43.120
one other interesting use case of CTV is vaults.

1686
02:18:43.820 --> 02:18:46.235
You can, as well as channel factories again.

1687
02:18:46.716 --> 02:18:49.056
But I think, you know, overall, when you look at covenants,

1688
02:18:49.596 --> 02:18:53.855
everyone can benefit from it. Like, if you're a Lightning enthusiast, you can benefit

1689
02:18:54.421 --> 02:19:03.320
because it can bring l 2 to channel factories and noninteractive channel setups. If you're a self custody guy, great. It's for you. It's it's great for you. I mean, it could bring bring Vols to Bitcoin,

1690
02:19:04.056 --> 02:19:07.035
and I don't know, some sort of advanced self custody.

1691
02:19:07.575 --> 02:19:16.091
If you're, you know, Bitcoin scaling nerd, it's good for you. Maybe it could bring later on, you know, some points to Bitcoin, maybe trust those SPV side chains and us.

1692
02:19:16.471 --> 02:19:17.211
Yeah. So,

1693
02:19:17.591 --> 02:19:20.171
yeah, first responding to Lisa's question,

1694
02:19:21.085 --> 02:19:29.105
where, like, why are we adding this complicated stuff? So, like, definitely, it should be determined like, defined by what use case you're adding.

1695
02:19:29.410 --> 02:19:40.585
So in this case, we have some scaling benefits by proposals like coin pools where one UTX source would be this is not specific to check template verify or any single proposal, but with generally

1696
02:19:41.205 --> 02:19:47.109
some governance. Suppose we could have coin pools where you have one UTXO, which is controlled by multiple parties.

1697
02:19:47.729 --> 02:19:51.909
Like, if you imagine Bitcoin scaling to the world, we need some sort of coin pool proposals.

1698
02:19:52.705 --> 02:19:53.364
Then secondly,

1699
02:19:54.064 --> 02:19:54.465
vaults.

1700
02:19:55.024 --> 02:19:59.845
And I'd like to, like, distinguish between CTV vaults and more powerful vaults.

1701
02:20:00.385 --> 02:20:01.205
And I think,

1702
02:20:01.950 --> 02:20:02.510
like, for

1703
02:20:02.990 --> 02:20:05.090
at least for me, covenants are kinda

1704
02:20:05.470 --> 02:20:06.609
like the end game.

1705
02:20:07.069 --> 02:20:13.565
Like, I like, we need to have some sort of self custody solution more powerful than you

1706
02:20:14.185 --> 02:20:17.965
than what we have today. I would not be comfortable, like, storing

1707
02:20:18.351 --> 02:20:20.830
huge amount of Bitcoins in what we have,

1708
02:20:21.471 --> 02:20:25.570
like, in the recommended security setups today. For example, in

1709
02:20:25.905 --> 02:20:30.385
governance, which were suggested in the original paper by our favorite professor,

1710
02:20:32.226 --> 02:20:35.686
we had a design where even if you lose your cold keys,

1711
02:20:36.690 --> 02:20:38.311
you could still, like,

1712
02:20:38.931 --> 02:20:47.165
get in a race with the attacker and try to burn your phones. So that offers a new level of security, which we currently don't have with,

1713
02:20:48.265 --> 02:20:52.525
like, any form of governance. Or even with CDB, we don't get that form of security.

1714
02:20:53.181 --> 02:20:56.720
And so there are these new use cases which governance

1715
02:20:57.420 --> 02:21:01.760
enable that we that we don't get if we don't have them. Secondly,

1716
02:21:03.205 --> 02:21:18.710
it is often. That's the most fundamental part. Like, if people are using covenants, and if you're not using covenants, then it doesn't affect you. Like, new proposals, sure. They do affect you. You should care about a few things when new proposals are suggested. Like, is your full not doing more work than

1717
02:21:19.255 --> 02:21:23.515
what it is getting like, is are there any denial of service concerns,

1718
02:21:24.055 --> 02:21:25.034
about it? Maybe

1719
02:21:25.415 --> 02:21:32.329
like, you could do weird funky stuff with, covenants, but when we suggest proposals, we should make sure that, you know, those concerns

1720
02:21:32.869 --> 02:21:34.090
are addressed properly.

1721
02:21:34.470 --> 02:21:34.710
So

1722
02:21:35.825 --> 02:21:36.325
Before

1723
02:21:37.104 --> 02:21:50.860
just just to kinda rephrase what we're talking about. I mean, we've talked about channel factories, so opening up thousands of channels in one transaction. Right now, if you open up a a channel on Lightning, that's one transaction. Right? So we we're we're talking about general scale.

1724
02:21:51.320 --> 02:21:52.301
We're talking about,

1725
02:21:53.000 --> 02:21:53.500
vaults,

1726
02:21:54.346 --> 02:22:00.365
which enable security. You you even said right now you don't feel comfortable with what's available. So you would actually

1727
02:22:01.760 --> 02:22:10.180
you you feel uncomfortable being a Bitcoin right now with the current technology is what is what you're saying, and and and you would feel more comfortable with vaults and and covenants that enable those things. So

1728
02:22:10.625 --> 02:22:22.119
those are those are some of the bit did you did you wanna add anything? Well, yeah. I I was just gonna add maybe 2 quick points. Sure. One is that, like, I hope in the next couple years we're able to add, like, tens or 100 of 1,000,000 of more Bitcoiners.

1729
02:22:22.659 --> 02:22:47.450
And even if we're, like, coming up with better things in the long run, I would really like if the story that we have for every one of those users coming on is that we get them started with something that's more secure or more scalable. And I think that that's why I, at least, you know, people critique that I say maybe, like, urgency, but, like, I try to do these things with urgency because for every user coming in, I wanna give them the best that we know how to do. And the second point that I would make, which is like should we be adding more complexity,

1730
02:22:48.105 --> 02:22:53.885
is, you know, like, sorry. The complexity is already here and people are doing these things, but either in more centralized,

1731
02:22:54.186 --> 02:22:54.686
trusted,

1732
02:22:55.511 --> 02:22:56.971
trusted means not trustworthy,

1733
02:22:57.590 --> 02:23:00.811
maybe a linguistic quirk, but using a trusted party

1734
02:23:01.431 --> 02:23:01.931
ways,

1735
02:23:02.870 --> 02:23:12.165
and these things I think are just completely worse. So if the market's already adopting solutions like that, we should do something that reduces the amount of trusted parties required for things people are already doing. So

1736
02:23:12.705 --> 02:23:14.245
now are you convinced?

1737
02:23:15.060 --> 02:23:18.200
I mean, it sounds like we're making a trade off here between complexity

1738
02:23:18.580 --> 02:23:22.580
and some amount of, like, security or, like, functionality. Right? So,

1739
02:23:24.186 --> 02:23:29.485
yeah, I don't know. I no. I don't I don't know if I am totally convinced. It is opt in though. Right? Well, actually,

1740
02:23:29.865 --> 02:23:31.645
just on the specific word complexity,

1741
02:23:33.051 --> 02:23:36.830
the the the protocol, for example, for opening up lightning channels with covenants is

1742
02:23:37.210 --> 02:23:49.436
simpler than the protocol for opening lightning channels without covenants. And so that's something where, actually, by having a slightly better technology, we can reduce complexity in other parts of the stack. So the overall complexity goes down. So I have a question for you, Lisa.

1743
02:23:51.220 --> 02:23:51.960
Is there

1744
02:23:52.500 --> 02:24:01.035
and maybe there's another way, but how do you how how can you open up and scale Lightning in terms of opening up a ton of channels without covenants? Is there another way?

1745
02:24:02.295 --> 02:24:05.755
Right now, every channel is represented by a UTXO.

1746
02:24:06.215 --> 02:24:06.615
Mhmm.

1747
02:24:07.250 --> 02:24:22.635
Which I I would say that's kinda simple in terms of, like, when people are in a channel, they understand what they own. It's a shared UTXO. Right? So maybe the complexity in opening it is a little hard, but the simplicity of what you own when you open a channel is very straightforward, I would say.

1748
02:24:23.780 --> 02:24:29.320
So, like, it's an on you know, it's on chain thing. You can go look it up on a block explorer. You can see where your channel funds are.

1749
02:24:30.580 --> 02:24:32.280
Yeah. So, like,

1750
02:24:32.645 --> 02:24:39.545
that's so it but that the limit on that then is that every channel open must be represented by an on chain

1751
02:24:40.085 --> 02:24:48.850
output. Is this, like, dichotomy or is this, like, trade off here, complexity versus scale? And is that kinda how we would see this, or is that not is that a bad

1752
02:24:49.455 --> 02:24:49.955
simplification?

1753
02:24:50.415 --> 02:24:54.415
Well well well, so one one of the things that I try to emphasize is that,

1754
02:24:55.455 --> 02:24:56.755
when you create a channel,

1755
02:24:57.135 --> 02:24:58.755
let's say that there are,

1756
02:24:59.681 --> 02:25:19.005
the maximum is something around, like, 20,000 people trying to open channels in a given block. Like, it's it's probably a little bit less than that, probably more like 5,000 people trying to open up channels. Sure. Probably, like, 4 or 5000. Yeah. That would be, like, the maximum. Right? And then what's interesting is as soon as you have 5,001 people, you will now over a long time have an infinite list of people trying to open channels.

1757
02:25:19.370 --> 02:25:57.920
And so you end up in a world where everybody who wants a channel is now not gonna have a channel. They're gonna have to go to, like, a trusted service that says, yeah. We're not gonna rug you on opening this channel. And then that, you can't look up in a block explorer either because it's and then you might say, oh, well, we can only support this many users. So I would rather have a pathway to supporting a larger number of users where they have to do something slightly different than, say, we're bounded by this constraint of Bitcoin, and we can only support top tier users at this amount. And I think we can still support people who are willing to pay for that 5,000 per block space if they want it, but now we're able to grow the pie and support more users overall. So so the human humanitarian

1758
02:25:58.540 --> 02:26:02.395
Jeremy Rubin wants even poor people to use Bitcoin. I'm for the.

1759
02:26:02.855 --> 02:26:04.855
Okay. Understood. So again, like

1760
02:26:05.815 --> 02:26:07.035
Thank you. This is

1761
02:26:07.815 --> 02:26:11.000
this is often, so you can still do what you are doing today. Like

1762
02:26:12.040 --> 02:26:20.540
and as long as what other people are doing with their UTXOs, you should only be concerned that it does not increase your verification costs, which can be evaluated per proposal.

1763
02:26:20.920 --> 02:26:34.880
It It actually should decrease your costs because, like, if there's 5,000 people, presumably, like, you know, half of them are probably okay with using the more scalable thing that, you know, it doesn't decrease block space demand, but it, like, lets you have more priority for if you really do need that space for an immediate open.

1764
02:26:35.635 --> 02:26:45.335
Yeah. But I guess, like so it sounds like if we're adding all this if we're but then you're changing the model then so it's not one UTXO per channel. Right? It's something else. So now you need, like,

1765
02:26:45.700 --> 02:26:46.520
more tooling and more,

1766
02:26:47.220 --> 02:27:03.870
like, ways to see, like, the visibility, etcetera. Right? So I think, like, adding adding cabinets is more like, you need more there's gonna be more we need more infrastructure for these things. Right? Yep. It's kind of what I think. We need more tooling for these kind of use cases.

1767
02:27:04.410 --> 02:27:06.330
And I think that this is sort of the,

1768
02:27:06.811 --> 02:27:12.305
and maybe this is, like, the magic of CTV as a covenant solution is that the thing that CTV expresses

1769
02:27:12.685 --> 02:27:24.650
is purely just a list of transactions that would get played in the future. And so there's no sort of really complicated infrastructural need for something like a Lightning node. All you have to do is say, okay. We're aware of these things that are pending transactions,

1770
02:27:25.030 --> 02:27:53.574
and we're able to see that they're CTV, so we can prove that they would happen in the future. And then you would just count those as fully confirmed rather than just sitting in the mempool unconfirmed. And that that's the only difference. For the more interpretive things, like, even things based in, like, any prevout or, like, those types of channel factories, well, then you've gotta, like, be, like, constantly, like, rebinding and scanning and things like that. And those have a lot more infrastructure requirements. But in terms of, like, an immediate migration path, we can, like, probably get something working pretty easily and then do the more complicated stuff in, like, the span of, like, decades or whatever.

1771
02:27:54.630 --> 02:27:59.370
I I kinda want oh, sorry. Go for it. Sounds good. Yeah. So, like, in terms of,

1772
02:28:00.480 --> 02:28:02.705
like, like, I know we are discussing CTV

1773
02:28:03.165 --> 02:28:05.345
a lot, but in like, I just like

1774
02:28:05.725 --> 02:28:06.945
to, like, you know, highlight

1775
02:28:07.325 --> 02:28:08.705
one of the things where,

1776
02:28:09.245 --> 02:28:10.790
like, I'm sort of,

1777
02:28:11.170 --> 02:28:14.069
trying to address to the crowd who think that

1778
02:28:14.609 --> 02:28:18.775
covenants or, in particular, some form of covenants are dangerous. And,

1779
02:28:19.716 --> 02:28:29.390
CTV in one proposal is, like, motivated by the design to avoid certain set of covenants, which we call as we don't have the time to get into it, but recursive covenants or unenumerated

1780
02:28:29.770 --> 02:28:30.270
covenants.

1781
02:28:31.050 --> 02:28:33.150
I think rather we should, as a community,

1782
02:28:33.610 --> 02:28:39.756
like, regardless we should have CTV or should not have CTV, we should try to address those concerns of people who are

1783
02:28:40.615 --> 02:28:41.115
against,

1784
02:28:41.655 --> 02:28:43.756
like, recursive covenant because they enable

1785
02:28:44.270 --> 02:28:46.110
new use cases, then,

1786
02:28:47.150 --> 02:28:52.290
like, c t it is independent of the issue of CTV, but I don't want the motivation for CTV to be,

1787
02:28:53.086 --> 02:29:01.426
oh, look. We are trying to avoid these dangerous things. The motivation can be, look. This is simpler. That's why we should do it. It's fine. But there are a lot of people who are advocating this because

1788
02:29:02.050 --> 02:29:03.510
they want to avoid something,

1789
02:29:04.850 --> 02:29:10.630
seemingly the dangers of recursive covenants. And if you refer back to the post from Greg Maxwell, you'd see that,

1790
02:29:11.364 --> 02:29:18.345
he does not say that there are dangerous thing. He actually chats in some way challenges everyone, like, what dangerous things can you do with governance?

1791
02:29:19.440 --> 02:29:54.025
So, yeah, I can't get into the technical details right now, but that's just Well, I I I kinda disagree. We're we're already over time, and I say we just keep going till we get kicked off because because I think this is kinda interesting. On time. So Yeah. So so, I mean, if y'all are cool with it I mean, if the audience is cool with it, I I I think this is super important to talk about because I was actually wanting to bring that up, the recurse like, let's play devil's advocate just a little bit here and talk about maybe some potential security issues with covenants, maybe are addressed with the idea, you know, with CTV or with other ideas. What what what could go wrong

1792
02:29:54.630 --> 02:29:55.449
with covenants?

1793
02:29:56.630 --> 02:30:11.905
Is there potentially a bounty? You know? Like, you know what I mean? Like I I think one thing that, like, look look, I actually believe in, like, doing this process to get towards as much covenants as we can do. So, like, I'm on board with that. I think I just wanna be a friend to the people who are, like, more conservative.

1794
02:30:12.340 --> 02:30:21.475
And I think a fair thing that they can ask is, okay, it's not enough that you can say there's some argument that, like, these things aren't bad. Please prove to me that it's safe.

1795
02:30:21.955 --> 02:30:23.494
And until we get to that level

1796
02:30:23.875 --> 02:30:24.534
of sophistication,

1797
02:30:25.314 --> 02:30:29.895
I think that a more conservative approach is ultimately what the community wants,

1798
02:30:30.435 --> 02:30:30.935
and

1799
02:30:31.260 --> 02:30:38.479
I am trying to cater to the community more than I'm trying to do the thing that I want, even though I I might want something more personally.

1800
02:30:38.895 --> 02:30:55.279
Overall, I just want something that's gonna let us do at least, like, half of the cool things. Okay. So I kinda disagree. Yeah. I kinda disagree with this over here. Let's, for example, take the example of, this is not a good analogy, but just for argument's sake, let's take the example of the tap root. If we

1801
02:30:55.705 --> 02:31:25.820
just, like, tried to address a subset of community that said that this is not quantum secure, for example, and we modified the route to, you know, do something dangerous and try to get everyone in. We would not have this proposal that we have today. Instead, what we work towards is, like, addressing concerns of people like, look. Quantum computers are going to come tomorrow. And even if we have them, we have bigger problems. Right? So it's not a fair critique because that would also make a complicated solution where a CTV is simpler. So coming back to the point, I think we should, like,

1802
02:31:27.240 --> 02:31:28.380
suggesting the community,

1803
02:31:30.395 --> 02:31:45.485
like, a wrong idea might get like, might backfire in future. Maybe earlier people believed that Bitcoin is free and had businesses built on top of it. And maybe today people think that, you know, recursive covenants are not secured and that's why we are supporting this. I,

1804
02:31:45.806 --> 02:31:49.825
like, I think I agree that CDP is simple and that is a good enough merit, but

1805
02:31:50.285 --> 02:32:06.075
we should also, like, address the community that, look, this is not dangerous and maybe we need more time for it. That's okay. Yeah. So so so I think one thing that's kind of interesting about that is that, like, you might you can agree or disagree, but at any point in getting the community convinced on the more complicated things, there will be a checkpoint

1806
02:32:06.455 --> 02:32:09.195
where you pass people being comfortable with CTV's functionality.

1807
02:32:09.575 --> 02:32:14.630
I agree with that. And then if that's true, the question becomes once we've surpassed that threshold,

1808
02:32:15.810 --> 02:32:30.904
how much time do we get to the point that we actually might want to go to, and then how many users come on board with, like, less secure, you know, custody solutions in the meantime between those two things. Why why would people be uncomfortable with this recursive stuff? Like, what are we what's the undiscomfort

1809
02:32:31.590 --> 02:32:32.250
that we're

1810
02:32:32.710 --> 02:32:34.490
like talking about here? So,

1811
02:32:34.950 --> 02:32:36.649
let's Good question. Yeah.

1812
02:32:37.430 --> 02:32:40.330
So this recursive covenants in particular,

1813
02:32:41.046 --> 02:32:48.360
they allow you to, like, wall guard on your coins. Maybe you can you can get into a covenant that you cannot escape out of.

1814
02:32:49.320 --> 02:32:59.075
And this, like yeah. This sounds dangerous. Right? Why would you put your coins into something which you cannot get out of? Like, you know, you're just We're not trying to make Bitcoin like Ethereum.

1815
02:32:59.455 --> 02:33:00.915
Yeah. Or maybe like you,

1816
02:33:01.295 --> 02:33:10.965
like one of the concerns is like just the US government goes to Coinbase and says put all your coins in this covenant, and it's a recursive covenant. So whenever you spend those coins, you need the signature of,

1817
02:33:11.925 --> 02:33:26.180
like, a cc. And whenever you want to transact you have to send a copy to them, and now they have everything. Why are we building this technology to help? That's a valid question. Right? And that's why people are scared. But the bad news is they can already do that today.

1818
02:33:27.085 --> 02:33:29.265
They can just do it with what we call multisync.

1819
02:33:29.645 --> 02:33:31.265
But but the well,

1820
02:33:31.645 --> 02:33:36.850
I was gonna say I think to address the question, I think it's like the idea of the recursiveness. It's like

1821
02:33:37.229 --> 02:33:51.315
you you pretty much have, like, a deadlock on that contract, which does what? Does that break Bitcoin, or does that just break that transaction? What does that actually do? Yeah. You know what I mean? So so I think that rec recursive is just, like, a little bit of a stand in for, like, hard to analyze.

1822
02:33:51.720 --> 02:33:57.180
And I think we're okay with any covenant that we know how to analyze to show that it's safe or that it's good or beneficial.

1823
02:33:57.800 --> 02:33:58.300
And

1824
02:33:59.655 --> 02:34:43.355
that that I think is is why, like, for for for certain purposes, something like CTV is okay because it's very easy to analyze. So we're saying, okay. The analyzability of this is very basic. So we could say we know all possible state transitions. We're good. For me, the concern with recursiveness is that when you have these more flexible things, like, you might not have properly proved that the covenant is actually correct and there might be some sort of like Ethereum has these things with, like, you know, recursive reentrant, you know, contracts where you call the thing and then you call into the thing and then the number doesn't get updated properly and then you burn all the money or you steal the money. And those are the at least from my perspective, those are the types of issues that our ability to prove and reason about these things. Like, we would need a lot better tooling and infrastructure to do it, safely. So so so no loops are,

1825
02:34:43.730 --> 02:34:59.965
like, enabled? Is that, like, a easy layman way of Yeah. No loops. It's you gotta know the entire Yeah. You you know the you know the Yeah. The whole span of the tree of possible states. And and that's a huge trade off to get that analyzability. There are other things that also might have some similar analyzability, but are more flexible.

1826
02:35:00.345 --> 02:35:02.910
But on all the choices, I just did conservative,

1827
02:35:03.450 --> 02:35:16.355
for this. And, you know, I I do think the conversation and defining the properties and not just having, like, one big stand in of recursive bad, you know, like, is is really important, but it's the analyzability I think is really the the thing we need. Yeah. So we can have analyzability

1828
02:35:16.735 --> 02:35:22.800
in, like, per particular smart contract basis. If user just want like, if they want to shoot themselves in the foot, they can do that today with

1829
02:35:23.600 --> 02:35:35.240
They should know if they're shooting themselves in the foot. That's that's, I think, the thing. Right? Yeah. If you if you are dealing with these type of things, you should know. Like, for example, there are, I think, could be things in lightning contracts which you can mess up. Right?

1830
02:35:36.440 --> 02:35:39.020
So, like You would hate that. Yeah.

1831
02:35:40.280 --> 02:35:42.061
So whenever you're dealing with scripts,

1832
02:35:42.695 --> 02:35:47.195
you can mess up. It's just the the thing sounds scary. It's like if you mess up, your coins are gone forever.

1833
02:35:47.655 --> 02:35:51.275
There are also similar, like, risks associated with smart contracts today.

1834
02:35:51.600 --> 02:36:05.125
So it isn't that we are adding some new thing which was not, like, some new attack vector which was not present today. And as I mentioned, like, for example, using maybe just a single signature today with music, maybe covenants are already on the way. Like, we

1835
02:36:05.585 --> 02:36:09.450
like, what what I I think the thing with lightning is actually kind of interesting

1836
02:36:14.263 --> 02:36:14.763
with

1837
02:36:19.155 --> 02:36:31.860
just with people enforcing it, and if you've got automated things running this, it's just a question of like, is it the Bitcoin blockchain shooting you in the foot, or is it the automated services you have that are doing it? And I think for an end user, it might not be terribly different.

1838
02:36:32.240 --> 02:36:38.585
The the the covenants and this is similar to what we said earlier. It would just be like while we're shifting it to something that requires less signatures.

1839
02:36:39.205 --> 02:36:55.955
I have, like, sort of a do we have time for, like, good? We're going till they kick us off. Okay. Yeah. If you're in the back and you're like, we need to kick us off, worry about until When they when they cut off the mics, we'll walk off stage. Okay. Sounds good. So, like, the so my question is, like, is this kinda maybe this is, like, totally not related, but I'd really like to hear

1840
02:36:56.915 --> 02:36:59.495
so Lightning Labs just released this thing

1841
02:36:59.796 --> 02:37:05.730
that they're gonna add to the annexes of Taproots, which is like a whole new UTXO tree

1842
02:37:06.351 --> 02:37:08.610
and, like, a whole new scripting language,

1843
02:37:09.631 --> 02:37:10.770
this thing called tarot.

1844
02:37:11.551 --> 02:37:12.530
Is that a covenant?

1845
02:37:13.065 --> 02:37:35.625
Like, maybe this is too I know it just got announced yesterday. You guys haven't had a chance to look into it. Is that are those covenants? It's like coloring it's kinda like coloring Bitcoins. Right? Is that is that does that count as covenants? Has, like, labs, like, basically launched covenants on Bitcoin already with their Taro stuff and their color coin things? Or is this stuff that we're talking about covenants wise, like, totally different?

1846
02:37:37.030 --> 02:37:41.610
I I have reviewed it, so I don't know if you guys have had No. No. I didn't have Okay. So, Jeremy,

1847
02:37:42.870 --> 02:37:51.016
you've been you haven't been doing any talking on this panel. Why don't you go ahead and Yeah. Also, I know I've talked too much, so like that's fine, like hopefully one of you had read it, but I've read it. So,

1848
02:37:52.695 --> 02:37:54.395
I would answer that

1849
02:37:54.830 --> 02:37:55.649
it is not

1850
02:37:56.189 --> 02:37:56.689
Bitcoin

1851
02:37:56.990 --> 02:38:02.905
validated covenants. It is client side validated covenants, which means that you're free

1852
02:38:03.285 --> 02:38:06.425
to if you own one of these things, you can definitely

1853
02:38:06.885 --> 02:38:07.385
burn

1854
02:38:08.085 --> 02:38:17.289
all the coins, and that will, you know, escape because you've just messed it up. Mhmm. But if you're running the the software, you will generate artifacts that somebody else could verify.

1855
02:38:18.149 --> 02:38:24.604
And that and, also, also, just a technical note, they're not in the annexes, which is important for something. But, anyways, they're

1856
02:38:25.785 --> 02:38:26.185
they are

1857
02:38:27.200 --> 02:38:37.226
they they internally can have their own covenants and things, but there's always a top level clause which says basically, well, you're free to mess it up if you want to. And so Bitcoin does not have covenants, but in their system,

1858
02:38:37.605 --> 02:38:52.466
it is kind of a covenant, if that makes sense. So if you could do covenants that way, why do we need to change the Bitcoin script itself if we can You could not build a vault with, with Terra. I see. So the one of the benefits of adding covenants to Bitcoin, like,

1859
02:38:53.006 --> 02:38:53.506
as

1860
02:38:54.086 --> 02:38:54.586
of

1861
02:38:55.165 --> 02:38:57.346
infra- inside, like, the Bitcoin infrastructure

1862
02:38:57.726 --> 02:39:03.390
itself is that now we can express things about Bitcoin, like your Bitcoin

1863
02:39:04.010 --> 02:39:05.310
hoard so to speak,

1864
02:39:06.010 --> 02:39:09.865
whereas adding stuff like the project that Lightning Labs announced,

1865
02:39:10.565 --> 02:39:13.545
doesn't give you that level of control is my understanding.

1866
02:39:13.925 --> 02:39:17.760
I'd say that's a correct understanding. I just wanna just to kinda

1867
02:39:18.140 --> 02:39:31.556
put a cherry on top of in terms of the devil's advocate stuff for CTV or whatever, I I just wanna include Barak here just a little bit here. I know I know you're currently using blockchain product liquid. Yes. What is something like CTV potentially missing

1868
02:39:32.000 --> 02:39:45.515
that you would wanna see? Or or what where how are you using covenants? Or how are you using liquid where it's maybe not even gonna be satisfied by some of the stuff? Oh, yeah. I think we can I just wanna Yeah? We can already, I think, emulate CTV in to some extent in the element subcodes, but I think

1869
02:39:45.895 --> 02:39:50.830
with CTV, that emulation would be more efficient because you can do, like,

1870
02:39:51.230 --> 02:39:53.971
the channel factories, for instance, in 1 byte

1871
02:39:54.645 --> 02:39:57.225
as opposed to, you know, 100 lines of bytes. Right?

1872
02:39:58.165 --> 02:40:09.131
I think, you know, elements of codes, right, are less controversial to maybe to bait pay it on some of them to pay the bill for Bitcoin because they are pretty much not well tested yet, but they're being tested.

1873
02:40:09.591 --> 02:40:14.905
And elements is based on a Bitcoin core code base and I think are less less controversial

1874
02:40:15.285 --> 02:40:25.660
to my observation. Like, things like c from stack for checking arbitrary signatures and caps, like data manipulations. And maybe some arabatics, right, could maybe potentially come to Bitcoin.

1875
02:40:26.520 --> 02:40:32.540
But I think CTV, I think, is really simple. Right? And from what I observed, like, from the community,

1876
02:40:33.596 --> 02:40:38.895
people don't really Bitcoiners don't really want these highly expressive, I mean, very complicated

1877
02:40:39.275 --> 02:40:41.296
proposals. Right? They rather

1878
02:40:42.260 --> 02:40:54.415
powerful yet simple proposals. And I think, you know, when you think about it, covenants, this whole thing is really a spectrum. Right? I think CTV per I mean, it fits really in this middle of the spectrum. Right?

1879
02:40:54.955 --> 02:41:03.279
Whereas, you know, we could have, very expressive stuff, on the high high end of the spectrum, but it doesn't really make sense to, you know, merge into Bitcoin.

1880
02:41:03.979 --> 02:41:05.039
Thank you. And,

1881
02:41:05.510 --> 02:41:06.010
in

1882
02:41:06.635 --> 02:41:13.215
60 seconds or less, what does CTV need to cross into Bitcoin? What does it need going forward?

1883
02:41:13.811 --> 02:41:15.430
Maybe you can talk a little bit about that

1884
02:41:15.970 --> 02:41:18.710
very quickly. So there's a website, utxos.org/signals.

1885
02:41:20.130 --> 02:41:29.414
This is kinda the best effort that I'm doing, which is just, like, making sure more people in the community want it, and if anybody doesn't want it, they express in a coherent way what their opposition is.

1886
02:41:29.795 --> 02:41:31.910
Right now, there's, like, a 130

1887
02:41:32.770 --> 02:41:42.345
people in organizations who have been, like, yeah. Seems good. There's, like, 2 people or 3 people who've been, like, I don't want it because I think we have enough to work on with Taproot.

1888
02:41:43.045 --> 02:41:50.425
That's been the main, you know, kinda complaint. I think there are other people who might say they don't want it for various reasons. They like, I would really like to see more people

1889
02:41:50.760 --> 02:41:59.580
give one of these things like, oh, we don't want top group because of quantum things so that we can actually rebut the arguments. If you don't make the argument in the, you know, right forum, then it can't be rebutted.

1890
02:41:59.915 --> 02:42:09.295
And then beyond that, I just need to do, like, a a binary release and pick some parameters, and that's it. You know? And it's like then the community can decide to signal for it. We'll do a soft fork just like Taproot.

1891
02:42:10.681 --> 02:42:17.580
Lisa, did we learn anything? I learned a lot. This is really informative. A ton as well. Yeah. I really quickly wanna go through,

1892
02:42:18.275 --> 02:42:21.495
show how people can contact you, your Twitter, whatever.

1893
02:42:22.515 --> 02:42:25.415
Lisa, we can start, and we'll work together. I'm on Twitter at nifty,

1894
02:42:25.720 --> 02:42:28.060
n I f t I n e I, nifty nye.

1895
02:42:28.600 --> 02:42:30.779
Also work on core lightning. That's core_ln.

1896
02:42:31.720 --> 02:42:32.955
So I'm just there.

1897
02:42:33.355 --> 02:42:36.895
I'm, at Jeremy Rubin on Twitter, and,

1898
02:42:37.675 --> 02:42:41.775
yeah, you can find me there. Yeah. I am Burak. Like, simple as that. Burak,

1899
02:42:42.150 --> 02:42:44.650
b u r a k. You can find me on Twitter and Medium.

1900
02:42:45.030 --> 02:42:49.530
You can also check out Bitmetrics on Twitter. It's a Conan based AMM on liquid.

1901
02:42:50.065 --> 02:42:51.285
Hi. Sanket.

1902
02:42:52.145 --> 02:42:56.726
Sanket 1729 on Twitter. And to final shout out, if you have any complaints

1903
02:42:57.190 --> 02:43:04.090
or concerns against recursive covenants, feel free to find me and DM me at all platforms. I'm always available to address those.

1904
02:43:04.425 --> 02:43:11.165
And I'm I'm Michael Tidwell, and Mike 20 one spelled out with a one on the end. I had the the worst username ever.

1905
02:43:11.860 --> 02:43:15.480
Thank you all so much for coming. Give it a round of applause. Thank you.

1906
02:43:17.141 --> 02:43:17.641
Alright.

1907
02:43:20.635 --> 02:43:21.854
Alright. So,

1908
02:43:22.635 --> 02:43:27.910
what's this lightning thing you guys work on, and you wanna give a brief introduction of who you guys even are?

1909
02:43:29.590 --> 02:43:32.330
Yeah. I guess I could start. So hi. I'm Matt.

1910
02:43:32.870 --> 02:43:42.194
I have worked on various things in Bitcoin over the years. I now work on the LDK project as a part of the Spiral team at Square. I guess we're blocked now.

1911
02:43:43.601 --> 02:43:52.555
So we have I guess we're unique in the the lightning implementations here where we're not actually a lightning node. We are a toolkit to build a custom lightning node.

1912
02:43:53.114 --> 02:43:58.335
So we support various people building different lightning nodes using LDK to do a lot of the hard work.

1913
02:43:58.955 --> 02:44:04.399
Yeah. Hi. I'm Chris. I've been in Bitcoin for 1 third of my life. I just realized,

1914
02:44:05.500 --> 02:44:06.479
since 2009.

1915
02:44:07.340 --> 02:44:09.359
And I'm now working

1916
02:44:09.755 --> 02:44:13.215
for a block stream on, core lightning and of course the specification,

1917
02:44:13.675 --> 02:44:16.255
which is probably why we are all here. Definitely.

1918
02:44:16.920 --> 02:44:40.020
Hey. I'm Lalo, cofounder and CTO of Lightning Labs, working on Lightning, for a while now too. Kinda like it involved in some of the earlier stuff on the spec side. I'm like we developed Relmd, which is an implementation of lightning. You know, one cool thing about it, it kind of runs everywhere. You can do it on mobile, iOS, Windows, free BSD, random other BSD you've never heard of, and, and obviously, you know, we participate in spec stuff as well. Let's, actually quickly get a round of applause for Lightning Labs for their recent

1919
02:44:40.395 --> 02:44:44.016
huge round of capital that they just raised. Right. Right. Right.

1920
02:44:47.835 --> 02:44:48.335
So

1921
02:44:49.610 --> 02:44:51.210
what's exciting now,

1922
02:44:51.690 --> 02:44:53.550
what comes to mind for me is

1923
02:44:53.930 --> 02:44:54.910
Bolt 12,

1924
02:44:55.370 --> 02:44:56.270
route blinding.

1925
02:44:57.545 --> 02:45:00.346
What's new in lightning? What do you guys care about,

1926
02:45:00.825 --> 02:45:01.565
these days?

1927
02:45:04.080 --> 02:45:08.980
Well, 12, obviously. I mean, we all got hats. Yeah. So that's what why. I like the decisions

1928
02:45:09.520 --> 02:45:11.540
around here is we just go by the hat.

1929
02:45:12.825 --> 02:45:18.925
And it's just the hats. Just the hat. Right there. Just the hat. Oh yeah. There's technology we don't know tech behind it. No. That's that's hard. No.

1930
02:45:19.990 --> 02:45:26.250
Yeah. I mean, I mean, Bolt 12 is awesome. You know, it has a few different parts. So like onion messages

1931
02:45:26.790 --> 02:45:33.015
by itself is cool, so the potential to to be able to do, you know, we have this this great network.

1932
02:45:33.395 --> 02:45:40.760
Obviously, it's not set up for high bandwidth messaging, but, you know, being able to use it to provide some privacy for

1933
02:45:41.860 --> 02:45:46.600
senders doing stuff like requesting invoices. Right? You have, like, lnurls really great if you

1934
02:45:46.955 --> 02:45:50.654
wanna know the client's IP address, but sometimes you don't care and you don't want that information,

1935
02:45:51.595 --> 02:46:02.200
so stuff like that. And then route binding, so improving privacy across the board there, plus Taproot with PTLCs. Like, we have a lot of these kind of small incremental privacy upgrades coming down the the pipeline,

1936
02:46:03.780 --> 02:46:07.895
that are all gonna be pretty great, and then hopefully, a bunch of UX improvements

1937
02:46:08.275 --> 02:46:09.815
on the side with that,

1938
02:46:10.435 --> 02:46:13.975
from messages and and other stuff that we can build using them.

1939
02:46:14.550 --> 02:46:18.569
Absolutely. And, one one of the more exciting things, that that I'm,

1940
02:46:19.029 --> 02:46:22.470
seeing in the near future is, the update of the gossip protocol too.

1941
02:46:23.510 --> 02:46:27.755
So the gossip protocol has been growing organically for the last couple of years.

1942
02:46:28.215 --> 02:46:34.790
We've seen a couple of places where we could improve it and try to improve it. But now the protocol is pretty much in monstrosity

1943
02:46:35.250 --> 02:46:40.790
and needs to be overhauled completely. And, while we're at it, we can we can add a lot of new features.

1944
02:46:41.485 --> 02:46:46.385
For example, we can, we can decouple now the or there's plans to decouple

1945
02:46:46.765 --> 02:46:49.025
the on chain footprint from the actual channel,

1946
02:46:49.859 --> 02:46:53.479
which, should help us make, make the entire network much more private.

1947
02:46:53.859 --> 02:46:59.455
And, in combination with some other things like route hints, we can can actually make this network,

1948
02:46:59.995 --> 02:47:23.780
much, much more, compact and much more usable for the end users as well. Definitely. Yeah. I'd say things I'm excited about are kinda, like, generally just Tapu related stuff, you know, as far as, like, being able to, you know, use Moochic 2 and also kind of, like, actually make, you know, certain components a lot more compact, basically, and certain things around kinda, like, make HLC a little bit easier to to handle as far as, like, not even payment hash. I think one other interesting thing would be kind of like, you know, the actual transition to Taproot. Because, like, say we have, like, you know, 80,000 channels, you know,

1949
02:47:33.455 --> 02:48:36.980
rather than kind of, like, everyone, like, open and close a channel at once, it's kind of, like, okay. Well, we'll kind of, like, you know, have another spread off chain and defer that. So 2 2 we need we still need to transact it eventually. We can at least kind of, like, defer that a little bit further out. Right? That'd be really cool because then people can just update, and all of a sudden they're they're way up to use Taproot stuff. Then the bigger thing is, like, the pTLCs, which actually fix a bunch of your issues as far as, like, privacy in my network. Today, you actually have the same identifier in the entire route. So therefore, I'm in 2 different places. We can arrive. We see what it is now. It's actually going to be randomized. And PTLCs can put things like DLCs as well, too. I think this year is going to be a lot of stuff working on the spec side. And I guess what I think is there's just so much stuff at the end of the day, too. And everything is almost immediately implementable as well, too. So you kind of have to say, okay, maybe some restraints, see what we're gonna do, whatever else, how we can, like, allocate our resources as well too. Because, you know, at the end of the day, like, you know, even though there's things a lot bigger, there's still a few people that really know this stuff very intimately, but we're trying to make that a lot, you know, a lot more widespread. You know, we will work I worked with Andreas and Renee on the Mastering Lightning Network as well too. Definitely get that. You know, if you haven't got it already, it has a bunch of really good information about as far as the Bolt as well. Because the boats are kind of, like, you know, written for people like us, basically. And you need kind of a little bit more accessible thing. Okay. Like, how do the feature protection work? How do, like, you know, writing work, things like as well. Teacher education getting a lot better. Just generally a lot to develop our education getting really good these days as well. So

1950
02:48:37.601 --> 02:48:40.020
Yeah. How how could I forget, of course, splicing,

1951
02:48:41.165 --> 02:48:45.425
which which we've now built the groundwork using with the dual funding proposal,

1952
02:48:46.205 --> 02:48:49.025
which basically allows us to collaboratively create a transaction

1953
02:48:49.841 --> 02:48:51.221
among a number of peers.

1954
02:48:51.601 --> 02:48:54.101
And, looking a bit for, further on,

1955
02:48:54.480 --> 02:48:58.900
I I think we, we are all waiting on on l two being a possibility.

1956
02:49:00.225 --> 02:49:03.205
Of course, it was had to be me mentioning l two here

1957
02:49:04.305 --> 02:49:12.420
because I'm known as the l two shell. Yeah. It's gotta get l n. And any prev out is required as, like, a soft work for that. Correct? So so any any

1958
02:49:12.800 --> 02:49:16.155
is, software that we need for, for Bitcoin on chain,

1959
02:49:16.556 --> 02:49:21.695
Though there are other mechanisms that we could, that we could use, of CTV in combination with,

1960
02:49:22.476 --> 02:49:27.859
check from stack or TX hash from and check sig from stack. Both achieve the same goals,

1961
02:49:28.800 --> 02:49:42.025
so we were pretty much just sitting and waiting for, for either of these 2 to happen and to give us that that capability of doing some some really interesting, child stuff. Exactly. Like, for example, multi party channels,

1962
02:49:42.420 --> 02:49:46.439
where any number of participants can basically share ownership of a single UTXO

1963
02:49:46.819 --> 02:49:47.560
giving us

1964
02:49:48.420 --> 02:50:08.120
a couple of more orders of magnitude on top of lightning. Definitely. TLDR, we all have about 5 years worth of engineering road map right now, and we'll start delivering this stuff. I don't know when we get to it. So maybe the sort of the head of, of what we're planning to do is go getting further and further away from us and Yeah. But to do list keeps growing. Like

1965
02:50:08.681 --> 02:51:16.585
Right. And I think one cool thing about lightning is, like, you know, there's certain things that can improve the protocol that aren't necessarily, like, kinda, like, protocol level changes. For example, like, in the past year, we've seen a lot of people actually working on things like pathfinding, which is a big thing for improving UX as well too. It's one of the things where, like, the the specs stage, you know, get from a to b doesn't really tell you how to do so. Right? So we've all been kind of, like, pulling in the gaps. Then some some people do, like, you know, some newer kind of, like, probabilistic approaches as well too. Nothing else can be really cool because, like, you know, once we can move larger amounts of payments and also, like, payments, like, reliably gets a lot better. Because, like, the worst thing is, like, someone tries and obviously it fails. Right? I think we're getting a lot better now. You know, people are also getting, like, really widespread deployments with, like, cache app as we're getting a lot more data. Now it's like, okay. Like, you can actually use Lightning now, which sounds really good for, like, developers and companies who can now say, okay. Well, I actually have distribution and keep a lot of fabrication versus, you know, picking from, like, 5 different wallets that, you know, all are a little bit different. So I think that's a really good thing as far as a mature user experience, you know, with kinda, like, things at the edges. Like, people can just update, protocol wise or sorry. Like, you know, algorithm wise versus protocol wise as well. And then more research across different types of routing, because there's different things you wanna optimize for, whether it's, like, speed of the payment, or maybe you wanna optimize for lower fees because you're, like, rebalancing or doing something in the background. Maybe you wanna optimize for privacy, which is somewhere that like how to do a good private routing is not something that's had really a lot of research. There's some intuitions, you can throw some ideas around, but no one's really kind of done a take a fork taken a formal approach.

1966
02:51:16.965 --> 02:51:36.245
So there's even angles where, like, we need more academic research in that sense. Like, academics have shown that a lot of the routing algorithms we have today are very non private, but how to fix it, a little less so. So, you know, there'd be a lot lot of room to improve there too. Definitely. Yeah. There's there's just so many different venues where we can actually make progress and try to start experimenting.

1967
02:51:36.625 --> 02:51:44.061
And, it it makes me a little bit giddy because it sort of is this huge playground where we can explore new, new trade offs and and sort of try to improve.

1968
02:51:44.681 --> 02:51:49.315
And and that's one of the achievements that we that we got by basically lifting off of the chain,

1969
02:51:49.855 --> 02:52:00.020
by no longer being on the consensus layer where every single change has to be approved by the entirety of the network because it is a strong consensus algorithm we have to run on the, on the base system.

1970
02:52:00.399 --> 02:52:04.180
But by lifting off of the chain, we can actually get this freedom to experiment

1971
02:52:04.645 --> 02:52:06.405
and, and basically get,

1972
02:52:06.965 --> 02:52:51.720
get different parties, try different trade offs, and then sort of come back to the table and sort of discuss what, what worked best, what didn't work, and sort of, sort of come to to a more creative picture of of what we what we should do going forward. Yeah. Yeah. There's so many problems. It's easy to get, like, nerd snipes. Just kind of, like, you know, go very, very deep in a particular, you know, problem. I think one of the cool thing I've seen over the past maybe, like, 2 or so, there's been, like, a lot of academic papers now. Like, I actually do stuff. I got, like, a Google Scholar alert. Like, every day I see a new paper, basically. And I got, like, a real research and I post in there. So really cool just, like, seeing people kind of recognize that this is, like, a thing to be working on. All the kind of interesting sub problems where, okay, I can do path planning. I can do kind of like, graph analysis. I can do channel selection. I can do optimization. There's so many different problems we're working on. And it's like you're saying that's just it's so fun to be able to, like, pick and choose all this different technologies and, like, kind of solutions, to take a look at.

1973
02:52:52.100 --> 02:52:58.975
So it seems like all the hype is currently taro. Can you talk about shit coins on lightning?

1974
02:53:00.395 --> 02:53:27.225
I don't know if my friends are like that. I mean, you know, people can feel what they want to do, but something that I was working on for a few months now, kind of inspired by like, okay, what can we do with Taproot? Right? So kind of like starts from these through the realization, okay, well, Taproot has, like, a script tree, so you can commit different paths. Okay. Maybe there's, like, a multisig, there's, like, a time line, something like that. So, okay, well, what if we committed other data in that tree? Right? So, okay, well, now that we have that other data, like, how do we actually structure it? It's kind of the thing where it's, like, this enables you to basically have, like, you know, you can hold assets within kind of a single cap rate output, basically. So I have, like, my Bitcoin, and I can potentially have,

1975
02:53:28.824 --> 02:54:55.775
you know, a 1000 different assets. Maybe I have, like, a, you know, holographic cards, baseball cards, something else like that as well too. And the cool thing about it is, like, it's, like, very kind of, like, a Bitcoin like. Right? So, like, rather than kind of, like, try, like, entirely new VM or other things where it's, kinda, like, reuse the existing Bitcoin script VM itself. So you can you effectively kind of, like, have this, like, virtual graphics embedded in the Taproot, script tree basically with a similar kind of, like, asset witness and output, you know, format. You use some some things as far as, like, multiple some trees, different ways to do, like, proofs. But, you know, the idea is, like, once you upgrade, basically and the cool thing about it is, like, it doesn't actually require any base layer base layer level changes. Right? So once it's rolled up, people can actually just upgrade and start using it, you know, on their own. And the cool thing also is that, like, because it's actually based on, like, the Tapuite script tree, like, if we have some, like, certain type of components, maybe, like, the, Tapuite update verify, that can actually constrain, you know, transitions basically because if you can recompute the entire commitment, basically, you can recompute the script tree, then you may say, okay, well, it must look like this. Right? So I think it's really cool where it's, like, even if Bitcoin doesn't actually know why explicitly, covenants can still eventually kind of, you know, manipulate the thing that's going on there. Right? The Lightning part of it is that, like, you know, given that it's actually based on Taproot and also has, like, a scripting layer in the actual system itself, this is what we're kind of like you're playing or pros and doing is kind of like having the assets at the edges, basically. Right? So having, like, an entire the network upgrade, basically, and you have a bunch of questions as far as, like, you know, routing, liquidity, blah blah, things like that as well too. So, like, only if the sender received or updated you actually do this thing. This is really cool because now you actually retain all the architecture of Bitcoin itself because now everything's actually crossed through Bitcoin the entire time. Right? So maybe, like, a router is okay. Well, I know what happened. I'm getting a lot more activity. I'm getting a lot more routing pieces. I'm getting a lot more revenue. That means a really cool feedback cycle as far as the network effect. We're looking at more demand at the at the edges, basically. Use more capacity, which means more running activity, which means more energy, which means more activity as well. I'm really excited about that. So you can shit coin. I could route your shit coin, and we could still be friends. Exactly. You know,

1976
02:55:06.735 --> 02:55:37.610
but, you know, indirectly, maybe it's gonna, like, actually improve, you know, you're writing no docs right right revenue as well too. Because you can say, okay. Now with this, maybe we can start positioning against, like, more directly, like, credit cards or something like that. Right? Because maybe people don't want that fiat balance. Maybe they want kind of, like, other currencies, something like that. But now it's okay. Well, Bitcoin line, it can be the massive crossing in network for everything else, kind of be the monetary backbone. You can do whatever you want to the edges, and the the support protocol just stays Bitcoin fully, and and that that makes a lot simpler as well. So you're gonna have to worry about other things, you know, as far as, like, you know, processing, different chains in the internal network, time locks, forks, things like that. That's all a nightmare. So it's the strike pitch but not not centralized?

1977
02:55:38.070 --> 02:56:01.160
Yeah. So so in theory, someone could take this and build a, you know, strike like thing as well. And I think that's a beautiful part about protocols and so then they can open protocols well too. And we published some, BIP drafts. You know, some of them, you know, working with others. Definitely working on putting some additional details, but the idea is anyone can basically start to use this thing and build, you know, the strike in Nigeria or, you know, wherever else they really want to. So it's kind of really the cool thing about open protocols where people can just start to use it and improve it, and then, you know, it goes from there.

1978
02:56:01.565 --> 02:56:09.105
What's going on in LDK land? I remember you and Andre were lecturing me at Socratic last year about

1979
02:56:09.540 --> 02:56:14.520
waking up mobile wallets when they're needed, async await. What's new, man? Yeah.

1980
02:56:15.460 --> 02:56:16.600
Oh, that's kinda loud.

1981
02:56:17.135 --> 02:56:17.875
So, yeah,

1982
02:56:18.895 --> 02:56:19.475
our our whole

1983
02:56:19.854 --> 02:56:24.150
pitch is kind of to improve the ability of mobile wallets to

1984
02:56:34.465 --> 02:56:36.245
But now you want them to add Lightning

1985
02:56:37.585 --> 02:56:51.985
and there's not really an option for them. They can start reimplementing Lightning from the ground up. We just talked about how we have 5 years of stuff to do, and all of us have teams of, you know, 3, 4, 5 people full time maintaining a Lightning implementation, keeping it running, and adding all the features,

1986
02:56:52.525 --> 02:57:00.810
that we want to add. So obviously, that's a pretty big ask for most mobile wallets. Our pitch is kind of like, here, we're going to do all the hard work for you. You can integrate this. You can run it.

1987
02:57:01.670 --> 02:57:09.756
And and our pitch being on mobile means we have to, like, fix a lot of the issues with mobile on lightning today. And anyone who runs a big lightning

1988
02:57:10.216 --> 02:57:36.760
payment processor today knows that a lot of your payments fail because they're going out to a node that's on a mobile phone and it goes out and then the phone is not currently on the Internet. It's sleeping. The app's not open in the foreground or the phone's locked and all of a sudden the payment bounces. Because turns out these phones are super, super battery life conservative. Anytime the phone's not on, it disconnects the wireless, it disconnects the LTE modem, and you can get no CPU access.

1989
02:57:37.779 --> 02:57:38.279
So

1990
02:57:38.835 --> 02:57:50.270
this is a major problem. You have payments that just fail, you can't actually receive a payment unless your phone is currently open and on the app. It depends on the device, but that is obviously a pretty unusable user experience.

1991
02:57:51.610 --> 02:57:59.335
So that's, you know, we were talking about exciting things about, you know, onion messages, and I think there's, as far as I know, the only proposal to do

1992
02:58:00.354 --> 02:58:02.455
relatively decentralized or at least trustless

1993
02:58:03.101 --> 02:58:04.960
Offline payment receipt in Lightning

1994
02:58:05.500 --> 02:58:06.561
was something I

1995
02:58:07.101 --> 02:58:11.985
proposed kind of loosely a few months ago, but it depends on Taproot and onion messages

1996
02:58:12.445 --> 02:58:20.860
and LSPs. So this, you know, it depends on these things that we have that are, you know, probably a year or 2 out because we have so much stuff to get done.

1997
02:58:21.640 --> 02:58:30.766
And then we can start fixing these more fundamental problems that a lot of people are facing today that that really hurt the user experience of lightning. That really destroy it for a lot of users.

1998
02:58:31.306 --> 02:58:33.726
And so, yeah. We we have a lot of work to do.

1999
02:58:34.425 --> 02:58:39.565
But but that's, you know, so things are are going well. We have Cash App shipped with LDK.

2000
02:58:39.980 --> 02:58:48.000
You know, they we were sitting there talking about mobile, and then Cash App said, like, well, we have all this complicated back end infrastructure. We wanna integrate our Lightning node super tightly with that.

2001
02:58:48.355 --> 02:59:06.466
And taking LND or Core Lightning off the shelf and running it is cool, but we want it actually really, like, we want the logging to go directly to our logging service. We want the database to go to the our database service, and we want blah blah blah. And so they built a node, you know, from scratch using LDK, and that wasn't

2002
02:59:06.846 --> 02:59:09.985
too hard for them. You know, you just kinda plug the things into the right place,

2003
02:59:10.365 --> 02:59:13.250
and they've been pretty happy with it. It seems to work pretty well.

2004
02:59:13.890 --> 02:59:14.550
That's awesome.

2005
02:59:15.330 --> 02:59:19.030
Christian, what's up with Core Lightning and plugins?

2006
02:59:19.730 --> 02:59:33.830
Can you talk about this CL boss thing I always hear about? What is green light? Can we start calling it sea lightning by the way? Or Yeah. I I I keep slipping up and and calling it sea lightning. But no, core lightning it is. So Hard core. Yeah. Hard core. Yeah.

2007
02:59:35.030 --> 02:59:35.690
So, yeah.

2008
02:59:36.710 --> 02:59:39.270
Core lightning, has always been sort of the,

2009
02:59:39.830 --> 02:59:41.875
the the bit of, the

2010
02:59:42.975 --> 02:59:50.490
the Lego block kind of, kind of node where you can, where you can switch out individual parts Or at least that has always been the goal.

2011
02:59:51.351 --> 03:00:09.320
And we, we started building out plugins. And some of the functionality that ships with with core lightning itself is actually a plugin. So so pay, the pay command, for example, is implemented in a plug in, and you can swap out the logic relatively easily. And, we've gotten some feedback from researchers that are looking into into how to optimize payments.

2012
03:00:10.740 --> 03:00:17.160
And and they could just take the, the pay plug in and reimplement it with their routing logic and, and and basically

2013
03:00:17.875 --> 03:00:23.015
experiment with that quite easily without having to have all of the knowledge actually assemble a full node.

2014
03:00:23.955 --> 03:00:28.220
And, we're going a bit further with that, now with a new project called Greenlight,

2015
03:00:28.600 --> 03:00:36.436
where we are actually taking the node and exploding it into a different a bunch of different parts and reassembling it, running it on different infrastructure,

2016
03:00:37.215 --> 03:00:48.400
the main node itself running on our, on our infrastructure. But the keys are kept on the user side, and the front end is kept on the user side. And so this is this is a different trade off from from what LDK does,

2017
03:00:48.940 --> 03:01:00.705
in that we don't try to bundle the note with the with the app itself, but we try to have every every user have one node and sort of remoting in, which allows you to have a multitude of interfaces.

2018
03:01:01.410 --> 03:01:01.910
And,

2019
03:01:02.290 --> 03:01:05.109
the way we approach the, the issue of,

2020
03:01:05.810 --> 03:01:18.505
being able to accept an offline, an offline payment is that as, you can have any number of, front ends, but you can also have any number of signers present. And as long as any of them is present, you can still receive a payment,

2021
03:01:18.900 --> 03:01:19.960
an incoming payment.

2022
03:01:20.500 --> 03:01:21.780
And so I think that,

2023
03:01:22.181 --> 03:01:22.681
that,

2024
03:01:23.061 --> 03:01:27.080
this is this is an interesting setup where we can where we can sort of redistribute

2025
03:01:27.715 --> 03:01:28.215
the,

2026
03:01:28.675 --> 03:01:29.175
the,

2027
03:01:29.875 --> 03:01:38.250
competencies and sort of we specialize in in doing what, what we do best. And app developers don't even have to learn about, about how to run lightning notes himself.

2028
03:01:38.790 --> 03:01:39.931
It's one trade off.

2029
03:01:40.551 --> 03:01:48.404
But I see a multitude of different ways to sort of redistribute these parts in the future, making more interesting setups possible,

2030
03:01:49.104 --> 03:01:51.205
where we can, where we can

2031
03:01:51.540 --> 03:02:00.979
actually tap into a multitude of different use cases as well. And this has been ingrained in in core lightning for the longest time. We've all already, always had the HSMD,

2032
03:02:01.525 --> 03:02:11.145
as a separate process because we were eventually hoping to to make it a hardware, security module, and now we're doing that step of of going in that direction of actually splitting

2033
03:02:11.480 --> 03:02:12.301
parts out and

2034
03:02:13.080 --> 03:02:13.660
and distributing,

2035
03:02:14.360 --> 03:02:14.860
responsibilities.

2036
03:02:15.561 --> 03:02:19.181
That's a great segue actually. The next thing I wanted to ask you guys,

2037
03:02:19.795 --> 03:02:22.295
no one ever shuts up about WASM.

2038
03:02:22.755 --> 03:02:25.895
I'd like to go around and ask how you think WASM

2039
03:02:26.755 --> 03:02:28.774
is, useful in your implementation

2040
03:02:29.075 --> 03:02:32.230
and how you approach remote signing as Christian was alluding to.

2041
03:02:32.610 --> 03:03:21.670
Cool. I guess, go this way. Yeah. So WASM definitely very cool. So we actually use it for this new project, that we had called, LNC Lightning Node Connect. Basically, the idea was, okay, like, I want people to have to kind of, like, have, like, a web application to kind of, like, securely connect that outdoor lightning node. I think before, people had, like, these, like, giant QR codes sending out makruins, all sort of roles. So we kinda, like, devised this, you know, protocol, kinda, like, devised off of, something called PAKE. So, like, password authenticated key encryption. So you just basically put in this kind of, you know, like pairing phrase, basically. And you have, like, a secure tunnel from your node into the browser itself. Which is really cool because I you can kinda have, like, a more native experience as far as building web app, keeping it like that as well. So what we had to do with Wasm at that point, we actually compiled, like, you know, most of L and D into Wasm, basically. Because we had a bunch of, you know, crypto as far as, like, you know, ECDH, things like that as well too. And all that's actually now in Go. Right? So we actually have, you know, a bunch of, like we have we have, like, a full gRPC client in Go. We have all the TLS stuff in Go. We have, know, all the Pake stuff as well too. I think it's a really cool way to kind of, like, be able to distribute things. It's kind of like this intermediate,

2042
03:03:22.050 --> 03:03:51.370
you can say, like, you know, IR binary layer, basically. Right? So it's kind of cool because you basically have an even language component which is kind of like, you know, single, you know, slightly modified interpreter VM. It can, like, just shoot that pretty easily. You know, for Go, it's kind of like a little bit larger. You have to, like because, like, you actually link the entire standard library, is a little bit larger, but we have a thing now where we're kinda, like, you know, doing, like, a just in time load of it where you can kind of have your own load as well too. Things will be flexible as far as, like, being able to, like, do more things on the web. I think the the dream is kinda, like, basically have, have, like, a fully, you know, Wasm, node in the browser itself have, like, a wide clanks. And now at that point, it's okay. Well, you know, user kinda, like, have, like, a very, like, sleek onboarding experience. They download maybe

2043
03:04:00.695 --> 03:04:08.760
I think once you have that, you basically have, you know, the potential to do things like, you know, streaming payments on the web itself, stream for video, you know, do the upvote thing, you know, destroy paywalls, things like that as well. So I think it's going to be really powerful moving forward.

2044
03:04:09.800 --> 03:04:15.260
Yeah. So, we're definitely looking forward to having some parts of, c lightning running in WASM.

2045
03:04:16.215 --> 03:04:16.875
Core lightning,

2046
03:04:17.335 --> 03:04:17.835
sorry.

2047
03:04:18.694 --> 03:04:20.154
I keep slipping. And,

2048
03:04:20.774 --> 03:04:21.274
but,

2049
03:04:22.615 --> 03:04:35.295
but what scares me about WASM is basically that that now it's possible to build to to have a full node run-in in a browser tab. And really want to get into the habit of suggesting users to enter their

2050
03:04:35.775 --> 03:04:37.635
seed phrase into a browser tab,

2051
03:04:38.175 --> 03:04:39.875
that might be just impersonating

2052
03:04:40.255 --> 03:04:41.475
your actual wallet.

2053
03:04:43.061 --> 03:04:45.080
But then again, like like said,

2054
03:04:45.540 --> 03:04:51.655
it is basically a requirement for for us to have something like a browser extension or something

2055
03:04:52.035 --> 03:04:52.775
like that. So, yes,

2056
03:04:53.235 --> 03:04:58.590
we we will probably not run the full node in inside of of a browser window

2057
03:04:59.149 --> 03:05:06.665
in the form of, of WASM. But we're definitely looking into having having sort of the, client libraries talking to core lightning and the signers

2058
03:05:06.966 --> 03:05:07.466
run-in

2059
03:05:08.485 --> 03:05:12.105
a in a Wasm context, be that a browser extension or a or a browser window,

2060
03:05:12.645 --> 03:05:14.025
such that you can still

2061
03:05:14.360 --> 03:05:19.740
remote into your node, whether that's, self hosted or or or we managed for you. And,

2062
03:05:21.080 --> 03:05:29.735
and that's definitely something that, that we need to do if we want to, if we want to reach all, all the all the users that we want to reach. Yeah.

2063
03:05:30.410 --> 03:05:36.830
So Lalo said that the the dream is to to maybe eventually have a a lightning node run-in Wasm. So so we have that. It works.

2064
03:05:37.210 --> 03:05:40.110
You can you can take LK. You can run it in Wasm today.

2065
03:05:40.655 --> 03:05:41.475
We've tested

2066
03:05:41.935 --> 03:05:45.234
running some nodes in the browser. It's super lightweight.

2067
03:05:45.774 --> 03:05:52.660
It doesn't it doesn't weigh anything as long as you're not downloading the full graph data. So if you you maybe have a smarter way of doing routing,

2068
03:05:53.280 --> 03:06:00.101
and you're not routing a lot of payments, you're just like a personal node sending and receiving things. It's super lightweight, it costs nothing.

2069
03:06:00.465 --> 03:06:02.324
The Wasm binary is pretty small.

2070
03:06:03.024 --> 03:06:04.404
So, yeah, it works great.

2071
03:06:04.944 --> 03:06:08.164
You know, we LDK doesn't take any stance on

2072
03:06:08.961 --> 03:06:12.740
whether people should do things. We just provide the tools that they can do them.

2073
03:06:13.520 --> 03:06:15.301
You know, certainly there are

2074
03:06:15.766 --> 03:06:27.680
obviously, run you know, down having your keys for your Bitcoin in a website tab is pretty sketch. Having your keys for your Bitcoin in a Chrome extension or

2075
03:06:28.060 --> 03:06:31.440
in React client where it's actually a

2076
03:06:31.995 --> 03:06:37.055
JavaScript web platform but a separate application on your computers is maybe a very different world.

2077
03:06:37.995 --> 03:06:43.700
So so yeah. We we do that. We support it. You can take the whole thing and run it in a in a web browser if you want.

2078
03:06:44.320 --> 03:06:51.435
Cool. I I don't handle, like, Bitcoin access PP network? Is that kind of an RPC thing in that context? Or Yeah. So so LDK does not

2079
03:06:52.055 --> 03:06:58.300
we have some some, pre built things that you can sync the, the chain via, like, Bitcoin Core.

2080
03:06:58.680 --> 03:07:09.645
But we otherwise just have a general interface for, like, hey, provide us graph data. And there's actually 2 different interfaces. There's one that's more like, and then there's one that's more kind of like Bitcoin core or like full node like.

2081
03:07:10.025 --> 03:07:21.220
So you can kind of like however you want to sync the blockchain, we have an API that's like pretty similar to the way you're already syncing the blockchain, and you just kind of feed it chain data. Okay. And then we tell you what you need. Can you serve it over DNS yet?

2082
03:07:22.034 --> 03:07:30.534
Full Blockchain data over DNS? No, but you can download the Headers over DNS. I do run a service to do that. So that's also fun. Or over wireless.

2083
03:07:31.040 --> 03:07:37.540
I don't know if NVK is here, but he he's been doing, like, Bitcoin stuff over ham for a while, so you could do that too.

2084
03:07:37.885 --> 03:07:47.399
That might not run-in a web browser, though. Yeah. Ham ham radio is gonna be hard to run it. How do you get to the web browser tab to talk to your satellite dish? Yeah. That that might be hard too. You need a dongle?

2085
03:07:47.779 --> 03:08:57.061
Right. You know, one type of thing about, like, kind of like layer, like, kind of protocols. People know about the Nutrienne protocol. It's kind of like a way to do, like, like, clients on Bitcoin. And the cool thing about it's actually kind of stateless. Like, the older protocols kind of, like, had you kind of, like, communicate with a node and kind of, like, you know, mess these filters interactively. But this, I basically download a filter. Right? So now, like, you know, one cool thing you can do with that is, okay, well, I can put that on like a CDM, maybe HTTP 2. I can download the headers, the filters on the blocks, basically just over the HTTP system itself. That's really cool because now, like, the browser already do HTTP. It's kind of harder to do kind of, like, you know, more advanced, like, you know, you don't really have, like, raw TLS, or TCP talk or something like that. So it's actually just, like, kinda, like, have that and download all the data over HTTP. It's gonna be super cache everywhere c n wise, so that could be like a cool way to kind of, you know, kind of navigate from the trade off security wise where we're okay. Like, we don't want people just to hidden, you know, some massive API like Metamask or something like that. They can actually get the data. And the cool thing about pow is, like, you know, it's objective. You can verify that, you know, you can verify the hashes, what are the numbers, you know, things like that. So it's a little bit, you know, better as far as security monitors compared to like everyone using, one centralized API that can just lie to you because there's no really assurances, you know, with, some of those other systems. Oh, yeah. I also provide the the bit 157 header chain via DNS. Oh, gosh. Oh, gosh. I downloaded that over DNS. You could do that guy. I forgot about that. Yeah. I mean, I I I find it really interesting how we, how we sort of started out with, with this, with this really small set of of transport protocols. Mhmm.

2086
03:08:57.840 --> 03:09:05.680
And, by the way that that that the Bitcoin metadata is structured, we can actually just swap out the the transport layer and, and offer different services,

2087
03:09:07.895 --> 03:09:09.595
DNS Yeah. Or HTTP

2088
03:09:09.975 --> 03:09:23.905
or, well, the Bitcoin protocol. Yeah. And, like, you know, in the people, I'd say, in the Bitcoin, it kinda, like, evolved that way, but there are other ways to do it. Like, for example, Matt's done a bunch of work in the past before he's, like, improved block properties, things like that as well too. So, like, you know, protocol work is just it's super fun. I mean, there's just so many things we can do. It's just

2089
03:09:25.825 --> 03:09:32.005
kind of, like, you know, all these puzzle pieces. Gotcha. So I think we all are grateful to wear bolt 11 got us.

2090
03:09:33.390 --> 03:09:35.250
But Some of the stuff I've learned.

2091
03:09:36.909 --> 03:09:42.585
You know, some of the application developers have even taken it into their own hands with certain things like lnurl,

2092
03:09:43.285 --> 03:09:44.186
lightning address.

2093
03:09:45.525 --> 03:09:49.145
I know right now there is a priorities contention going on,

2094
03:09:49.686 --> 03:09:50.905
between Bolt 12

2095
03:09:51.391 --> 03:09:52.290
and AMP.

2096
03:09:52.670 --> 03:09:53.570
Can you summarize

2097
03:09:53.950 --> 03:09:54.450
AMP

2098
03:09:56.190 --> 03:10:00.275
and maybe when or if we have a spec for it and the trade offs? Spec?

2099
03:10:00.915 --> 03:11:53.590
I mean, yeah, there's a spec, it's just kind of a little bit dated. It's actually pretty up to date now, but like, you know, AMP is basically people probably heard of KeyCents, which is kind of where you like spontaneous payments, you basically push payment over, right? That works by kind of including a preimage in, like, the onion pill which encrypts the endhop, and they basically decrypt them, and then they use that preimage to settle the actual payment itself. Itself. AMP is kind of like, you can say like the multipath analog of that. Multipath payment is basically a way to kinda like split people up in different pieces. This basically uses kind of something called secret sharing. So basically, I take the pre which I I, you know, kind of, like, extort it into a bunch of different different shares. I send you all those shares, then only after you have that final share can you extort it back. Basically, you get the pre which is everything else like that. Right? So So it kinda gives you, you know, push payments in, like, a multipath fashion. Right? And the one thing it has as well too, like, you know, given that, like, the the actual center's gonna actually make the preimage, you can have, like, a static invoice. It's kinda, like, you know, fully enclosed. Right? So, basically, given the invoice, I can just pay it over and over again. So, it works by kind of, like, having the identifiers. So you have, like, a payment address, or, like, payment secret, basically. We call it a set ID. So, like, you know, you this is, like, now your main identifier, and then every single new payment actually has a new set ID over there. Right? So it basically gives you, you know, spontaneous push payments, but also kind of like a a reasonable, you know, invoice around itself. And obviously, the bolt 12, you know, but 12 has a lot of other stuff, you know, with it as well. So Ambulance is kind of like, you know, okay, do the payments or whatever else. I think, you know, book 12, it's kinda to me, it's kinda like an invoice negotiation protocol. Right? It has a bunch of other things as far, like, negotiating invoices, all of this, like, option or, you know, refund stuff. You have this new format, things like that as well too. While this one is something that we can be deployed today because it kinda, like, just mostly, you know, at the edges. And obviously, like, maybe, like, you know, an address change in Bitcoin took a while to actually, you know, you know, work properly. So maybe the bolt 12 step back has a little more of a barrier, and there's other things that kinda, like, have, you know, similar functionality to ln and r overalls. I guess it depends on kind of the trade offs. If you want something that's more opinionated in the protocol or if you want something that's a little bit more at the edges, then people can maybe do what they do. Because things like l and address or whatever else, like, you know, people can update those on the fly and just release a new version versus kinda, like, you know, requiring, like, larger changes as well too. But, you know, Bushwaddle has a lot of cool stuff into it, but I feel like, maybe we can break it up and kinda, like, you know, do it a little more quickly and then see exactly how the use cases, turn out, like, you know, talk to the people via, you know, well operating services as well to see exactly how things can evolve in the future. Is it true that the main differentiation

2100
03:11:54.050 --> 03:11:57.565
is AMP doesn't have, like, a proof of payment? That's what I often hear.

2101
03:11:58.285 --> 03:11:59.266
Yes. So

2102
03:11:59.806 --> 03:12:08.449
I think to me I think the whole proof payment thing, it depends on what you mean, because I feel like I've been using Lightning for a while now. I've never had a thing where a service is asking for a preimage. Does it even know the preimages?

2103
03:12:08.750 --> 03:12:29.825
You know, is there even actually, like, a standardized format as far as, like, you know, actually serializing what a preimage is itself? So I think it really depends on what you want there, but that is true where, like, you know, I know, Boat 12 has a way you can worry. I think there's, like, a sender key, and you can use that key basically to, like, sign something to basically prove that you paid it. Well and because it's spontaneous payment, you know, there's not kind of, like, a way to, like, give you that capability. But once you add things like PTLCs, there's actually a way to do that because then you can

2104
03:12:31.745 --> 03:12:58.160
like, have a key in the invoice and kind of, like, add that to you the payment that you're sending out, there as well too. So kind of thing where where, like, you know, this is better for maybe something like a donation where I'm kind of, like, you know, pushing you money, maybe the kind of streaming thing. Maybe if I'm doing something where, you know, I want recourse, maybe, like, you know, I need, like, a shipping number or something like that, maybe you need that as well too. But I feel like at this point, I think this course is kind of missing that. I haven't really seen, you know, anything like that. Because I feel like, say people are There are some other, like, the You're probably asking for an invoice number. Right? And then you can go from there. If you wanna do an external signer, a verifying external signer, you need proof of payment. So actually, AMP and key send,

2105
03:12:58.900 --> 03:12:59.340
are

2106
03:12:59.780 --> 03:13:06.555
basically break stuff like green light, in, like, a secure model. Or if you or if you just wanna have a hardware wallet that's doing actual signing,

2107
03:13:07.335 --> 03:13:09.755
you need to not have that pre image in the onion.

2108
03:13:10.455 --> 03:13:57.165
Otherwise, you you have to, like, do more hops to have the onion decrypted on the thing. It it it's a lot more painful there. Yeah. I feel like for me, preimage is one of the things where it's I think us as developers think it's cool because we actually have a thing, thing, but then I feel like practically I've really seen people really demand it that much, which is because there's that extra step of, okay, how do you serialize it, how do I interpret it, versus just telling them, you know, what's my invoice number, which is probably what you're doing anyway. But I think it's definitely cool for me. I feel like we need to, like, you know, mature the concept basically and just, like, say, okay, what do we exactly do we need? People know Connor, who, you know, needs to provide stuff. You have this massive matrix, basically, you know, there's basically some type of payment. Right? For example, like, if I have the preimage, that proves that, like, someone paid maybe gave me the preimage, that doesn't really prove that I uniquely paid. You kinda, like, maybe need some digital signature scheme along that as well so that it's okay. Well, I have the preamble and I have the signature that's approved so I can pay as well too. But I think there's kind of, like, you know, a gradient as far as, okay, well,

2109
03:13:57.565 --> 03:14:21.930
proof payment as check reimburse is paid. There's proof payment. Okay. There's like a cryptographic proof basically that no one else could actually forge or produce. So definitely some nuance there. I think that's There's also just very different. Like, what what are you trying to accomplish? Right? There's, like, are you trying to do donations? In which case, like, key send AMP, Bolt 12 are all options. Are you trying to do, payments to a store? Well, key send and AMP aren't really, like, Bolt 12 or like Ellen URL or Bolt 11, but no one wants Bolt 11,

2110
03:14:22.330 --> 03:14:33.125
are options. You know, are you trying to do a payment to, like, a non custodial mobile? Okay. Now you need, like, Bolt 12 and then maybe some extensions on top of that, And like, lnurl and keysend in the app. Don't

2111
03:14:33.585 --> 03:14:34.885
do anything for you there.

2112
03:14:35.745 --> 03:14:36.725
There's a lot of

2113
03:14:37.825 --> 03:14:43.380
different potential things you want to pay, and different ways you want to pay in from different clients to different clients. And Bolt 12

2114
03:14:43.920 --> 03:14:51.385
forms a good base to build basically all of those. But then there's also, you know, more immediate term for different specific use cases.

2115
03:14:51.925 --> 03:14:58.830
There are good solutions like lnurl is great if you're paying someone who runs, like, an HTTPS server, like a web store. You know, keysend,

2116
03:14:59.770 --> 03:15:01.870
is is great for for donations.

2117
03:15:02.410 --> 03:15:07.945
AMP is is cool, but I'm gonna say something a little controversial. Oh. MVP doesn't actually really matter.

2118
03:15:09.045 --> 03:15:26.846
Payment doesn't matter. Does not make a big difference for for payment success, for payment I don't know about that. It it like, the your your biggest concern is network flow. But, I mean, but but you can say, like, there's certain payments that you can make with MPP that you could That is true. Yeah. Yeah. That is true. Those are yeah. I mean, do are you are you donating

2119
03:15:27.386 --> 03:15:27.886
$10,000?

2120
03:15:28.346 --> 03:15:46.815
Or just someone has fragmented payments. Doing a payment for $10,000. You might be. But specifically in the donation context. In in in the donation context, I I do have a point. I do have reason to to to want a proof of payment by the way. I I want to be able prove to my tax office that I agree. I just want to prove. Another another complication.

2121
03:15:47.915 --> 03:16:40.895
But for for for most for the most common values of lightning payments today, MPP doesn't really make any sense. For smaller amounts, def and I think it's always an interesting thing where, like, you know, we had MPP, then we had 1 boat. Now you have, like, really big there. We have, like, 1 or 2 MC channels as well. So, like, if I'm sending 1 strategy through, like, a 200,000,000 strategy channel, probably gonna work as well too. But I think the interesting part of MP is, like, you know, people are trying to do kind of, like, more, you know, complex kind of flow analysis for, like, you know, trying to have, like, the optimal route of, like, you know, particular, you know, things like that as well too. I think that's really cool in that domain. But sometimes, maybe, you can probably just try it if it's a very small amount. But I think once you get, like, much larger amounts, basically, you know, people doing, like, 1 b to c plus. Maybe they're doing, you know, things like loop like moving, you know, larger upfront around it. I think maybe that's more. There's kind of, like, a theoretical thing where you can say, okay. If you can split the payments, enough liquidity exists. In theory, you can get there eventually. But eventually, maybe, is a good UX wise. The bigger problem is the flow is the question. The the whole idea of of of doing main cost flow from from is basically based on as as you approach the minimum cut in the network.

2122
03:16:41.274 --> 03:16:42.335
When it comes to liquidity,

2123
03:16:42.690 --> 03:16:44.950
you have to have to get more optimal.

2124
03:16:45.410 --> 03:16:50.471
If you if you have a min cut that that is basically like 3 bitcoin and you want to send 10 10,000

2125
03:16:51.011 --> 03:16:51.511
satoshi,

2126
03:16:52.575 --> 03:17:12.226
Yeah. I do the work. Yeah. But If if I approach that, that min cut, you you basically are forced to to become very clever. The problem is if you approach that min cut, suddenly, it doesn't like, the your individual payment doesn't matter. It's the total flow through the network. Right? You have so much flow through the network that the gain the the relative gain of doing

2127
03:17:12.686 --> 03:17:20.050
something more complicated for an individual payment is substantially less. Like, you just your your payment has to be a small fraction of the total flow,

2128
03:17:20.510 --> 03:17:27.975
and thus, you don't really and because it's a small fraction of your total flow, you don't have to be quite as optimal on the individual payment.

2129
03:17:28.534 --> 03:17:39.819
Yeah. That that's true. But, interesting enough, your own capacity and the capacity on the recipient's end is usually the the actual main code. Right. So so if if you if you had a negotiation mechanism,

2130
03:17:40.680 --> 03:17:41.580
onion messages,

2131
03:17:42.520 --> 03:17:46.845
where you could sort of gossip this information back and forth. You could potentially

2132
03:17:47.385 --> 03:18:57.115
figure out quite quite quickly if a payment is possible at all because Right. It's either you or the recipient who is going to limit your capacity. Right. Or similarly, you're, like, you're MVP ing just based on your channels. Yeah. But, you know, I think as Matt said as well, like, payments have a lot of different parameters. So maybe, like, depending on the payment size, depending on, like, in latency as well. You know? I think there's gonna be, like, in the future probably different algorithms people will choose based on maybe payment size or kind of their own parameters. And it's kind of like a wide open thing where it's like, you know, you can do whatever you want, basically. And I think the cool thing is, I think, intent wise, as your algorithms algorithms are developed, maybe the routers themselves, like, are which is, like, more or less depending on the be which, like, you know, the client's getting smarter. So, okay, like, you know, is the edge gonna get smarter or kind of, like, are their internal routers gonna get smarter and smaller? Like, you know, manage the liquidity better, deep, you know, the balance as well. Definitely, you know, still really wide open, I think, and really cool to see, like, you know, more research in this area. Because, like, you know, this is the kind of thing I can say probably have the most leverage, increasing payment UX basically in speed and latency. That just makes it work, and that's what makes it, you know, seem magical. So so as as Samantha was pointing out before, there there there is a wide a wide spectrum of of different preferences users might have when it comes to payments. Right? If I'm, if I'm if I'm standing in front of a point of sale, I really do care about latency. I don't want to be there waiting for for a minute or so until my my payment goes through.

2133
03:18:58.455 --> 03:19:02.910
If I'd, if I'm interested in just doing some exploratory probing,

2134
03:19:03.350 --> 03:19:04.570
I don't care about latency.

2135
03:19:05.670 --> 03:19:06.410
If I,

2136
03:19:06.790 --> 03:19:10.226
if I care about, about getting the cheapest possible payment,

2137
03:19:10.926 --> 03:19:15.585
I might spend some more time actually computing the, the the the optimal route there. Mhmm.

2138
03:19:15.886 --> 03:19:17.105
Or if I'm

2139
03:19:18.000 --> 03:19:20.979
if I'm just interested in making sure this payment

2140
03:19:21.920 --> 03:19:26.180
goes through no matter what, then, then I might use a different, different algorithms.

2141
03:19:26.640 --> 03:19:27.140
And

2142
03:19:27.495 --> 03:19:38.770
there's not just the algorithm side, but also how do we expose that to users in a in a in a understandable fashion. Yeah. So for for example, we always took the stance that users shouldn't care about,

2143
03:19:39.171 --> 03:19:41.190
about fees too much. We,

2144
03:19:41.650 --> 03:19:45.431
before each payment, we give the routing algorithm. We give it a budget,

2145
03:19:45.775 --> 03:19:49.315
and it's free to do whatever it wants to do inside of that 0.5%

2146
03:19:49.695 --> 03:19:51.476
budget we get we give that algorithm

2147
03:19:51.936 --> 03:19:58.579
and part of that we actually use for for skating our roads by increasing c l t b's by basically

2148
03:19:58.960 --> 03:20:03.045
by by allowing ourselves not to take the just the cheapest route because

2149
03:20:03.365 --> 03:20:12.665
cheap cheap routes are easy to predict if Yeah. If if you see a partial payment and you know, oh, that's probably from this guy because I am his cheapest path. So

2150
03:20:13.170 --> 03:20:53.865
you're leaking some information there. Yeah. I think that's interesting for it as far as like cheap payments and privacy. For example, like, you know, they're kind of like these like 0 fee nodes, like not basically like completely 0 fee. And I think the interesting thing about it is they're kind of like a black hole because they circle payment attempts. Right? But if I was wanting to kind of monitor payments, wouldn't I just have completely zero fee notice as well too? So maybe you should want to avoid them because, okay, skin in the game. I would pay you to, like, you know, have some signal that you're not just collecting my stuff. So we go negative fees maybe? Yeah. Like, are you selling my data because it's 0 fee or something? Like, I don't know. Like I mean, yeah. Like, I expect chain analysis to properly cost what my payment and what my payment anonymity is worth to them. And if they pay me enough, I will de anonymize myself to them. Yeah. Yeah. They just I need them to pay me. So Yeah. I I would just stream my logs to them.

2151
03:20:54.325 --> 03:20:56.025
Well, how does that affect,

2152
03:20:56.885 --> 03:21:31.915
I guess, the channel DB? Because if there is, like, 0 fee, you're doing more payments. Right? If you're logging all that info I mean, you're getting forwarded more, probably. Yeah. Exactly. Or getting more forwarded. So there's nothing in lightning that, you know, you need a sufficiently sized disk, but it's a small amount of information per channel state update. And there's nothing and the total size of the things you need to be, like, actively dealing with as you update the state is constant size. So there there's no real scaling issues there in terms of history and logic. Funnily enough, the, the There are some application issues that need fixing. But sorry. Funnily enough, the the more limiting factor here is having to touch the disk at all. Right.

2153
03:21:32.455 --> 03:21:47.255
Having having to basically just flush out to disk and make sure that all of this data is actually written to disk, even even a relatively quick, SSD nowadays, that takes time as compared to just operating in in RAM. And that that is one of the reasons why,

2154
03:21:47.795 --> 03:21:50.055
why onion messages was created because,

2155
03:21:50.595 --> 03:21:51.095
the,

2156
03:21:51.795 --> 03:21:54.615
onion messages do not have, have to have

2157
03:21:55.080 --> 03:22:04.825
the node touch the disk at all. You can basically forget all of the information that an onion message told you. Maybe a reply might fail if if if if you're restarting in between.

2158
03:22:05.205 --> 03:22:10.080
But, but basically just removing that extra load that is currently used if you do

2159
03:22:10.561 --> 03:22:13.140
communication via key send or similar protocols,

2160
03:22:14.320 --> 03:23:08.489
is, is is a huge win already for us. Yeah. And I I think one open question that when I knew I was, like, you know, some people were saying, okay. Well, should it be free? Should it be priced? How do we, like, rate limited as well too? Because, like, at least, like, you know, attaching HLC, there's kinda, like, some cost. You know? Obviously, it's not the most efficient unit in the world, which is kind of a thing where it's like, okay. Like, you know, if I wanna be forwarding, you know, all of these, like, images or videos for free, basically, can I, like, charge for that? If if you can charge for the main business, it turns out, like, can now all of a sudden, like, it makes you, like, you know, make money off of routing, but you also make money off, like, forwarding bandwidth as well too. Let's not. Let's not. Bandwidth is a cost to light. Oh. Yeah. But the cost is already there. Every single payment is 1.3 kilobytes already. Right? So The the main device is trivial. Yeah. The main problem with, with, basically saying that PSEN has a cost. It has a cost, but the cost is more in 20 x by the network itself. The cost is mostly the wear out of my disk. Yeah. Yeah. Yeah. So so it's it's not like imposing a minimal cost to the sender of of a key send message,

2161
03:23:09.109 --> 03:23:12.170
makes it makes it so much better than than an audio message,

2162
03:23:13.015 --> 03:23:27.620
because the cost that this on that that is Keysend, is is having on the network itself is much much much greater. Yeah. And part of that is having to touch the disk, part of that is disk square, part of that is having to keep state across

2163
03:23:28.655 --> 03:23:54.564
over time Sure. Until the channel is closed. Yeah. But then, you know, you can raise, like, your mini HTLC if you say, okay, well, I want to do one more payments alone and things like that. But I think it's just, you know, worth at least kind of, like, weighing some of the trail from Like, they're gonna have a cost where it's okay. Like, free forwarding of messages. Like, maybe we try, like, an OC incentive wise. Can we wait a little bit of that maybe with, like, kind of, like, some, you know, congestion algorithm or we actually charge for App and Gecko. But if you can charge for it, maybe that's just, like, supplemental income as well too. Maybe you kinda, like, get this whole new new Internet, you know, thing from, like, Silicon Valley,

2164
03:23:55.310 --> 03:24:00.610
along along the way. Oh, we need that compression audio. Yeah, exactly. Get it loud, dude. That'd be nice.

2165
03:24:01.470 --> 03:24:09.890
Well, mid length. That's all, folks. We're done. Oh, but oh, we're right out of time. Time where it is. I didn't see that. Yeah. It is still counting up.

2166
03:24:12.050 --> 03:24:12.550
Yeah.

2167
03:24:12.930 --> 03:24:14.770
I I guess before we head off,

2168
03:24:15.489 --> 03:24:20.686
seems like the whole Lightning Network is mainly just Umbral people. Do you have one thing you wanna tell them, if anything?

2169
03:24:22.025 --> 03:24:40.140
Like the plans or the node runners. Yeah. I mean, hey. You know, we love y'all, basically. Right? Like, you know, I think it's really cool to kinda, like, have, like, grassroots community of people helping each other out, kinda, like, you know, spreading up knowledge. I think it's kind of a cool hobby. It's, like, oh, I'm, like, doing my part basically for the network compared to kind of, like, just, like, maybe something that isn't really contributing at all, or that's just kind of, like, you know, more, like, speculative or something as well too.

2170
03:24:40.540 --> 03:24:48.080
We we we need a world where we have a lot a lot of those to balance out the fact that we're getting increasingly more of these large,

2171
03:24:48.985 --> 03:24:54.125
you know, custodial sort of like cash up or whatever running very large nodes. Like, we need Absolutely. We need lots of to

2172
03:24:54.585 --> 03:25:00.890
to balance that out. Yeah. Yeah. So keep doing it. Definitely. Feedback from ClubNet has been awesome, and we need more of that.

2173
03:25:01.270 --> 03:25:17.550
This is where this is what gets us gets us going. This is what basically helps us develop lightning further. And this is the feedback that will get us, get us to a place where, where all of this is actually stable and not siloed into some weird big company.

2174
03:25:18.010 --> 03:25:18.510
So,

2175
03:25:19.530 --> 03:25:25.274
keep on doing it. Yeah. The users. Yeah. We're here for the users the other day. Yep. Well, awesome. Thanks, guys. Cool.

2176
03:25:28.375 --> 03:25:31.755
Good one. We're here to talk about defining the standards of taproot and multisig.

2177
03:25:32.215 --> 03:25:35.160
Why don't we start by doing a quick introduction for Emily across the

2178
03:25:35.940 --> 03:25:41.561
stage? Let's start with Keith. Alright. My name is Keith Mukai. I'm a contributor to the seed signer

2179
03:25:42.105 --> 03:25:47.485
DIY hardware wallet and the Spectre desktop, open source Bitcoin wallet software.

2180
03:25:48.345 --> 03:25:54.140
I'm Jamieson Lop, cofounder and CTO of Casa. We help people be their own bank,

2181
03:25:54.760 --> 03:25:55.260
using

2182
03:25:55.561 --> 03:25:56.061
multisignature

2183
03:25:56.920 --> 03:25:58.220
aspects of the protocol.

2184
03:25:59.175 --> 03:26:05.515
Hello, everybody. I'm Stic. I'm cofounder of Satosh Labs, the creators of Trezor, and I occasionally,

2185
03:26:06.220 --> 03:26:06.720
occasionally

2186
03:26:07.819 --> 03:26:09.680
contribute to Bitcoin Core as well.

2187
03:26:11.180 --> 03:26:14.720
Hi. I'm Oli. I'm with Lightning Labs on infrastructure

2188
03:26:15.260 --> 03:26:15.760
stuff.

2189
03:26:17.725 --> 03:26:23.220
And I'm Ashin. I'm the VP of engineering at Unchained Capital, a collaborative custody financial services firm.

2190
03:26:24.020 --> 03:26:34.154
Alright. So the reason we're here today is that all of us separately have an individual need for multisig and the products that we offer to customers and to software users.

2191
03:26:34.614 --> 03:26:37.114
But all of our needs are a little bit different. And

2192
03:26:37.895 --> 03:26:45.330
before Taproot, there was a pretty standard way for implementing multisig using op check multisig and op check multisig verify.

2193
03:26:46.030 --> 03:26:54.805
Now that BIP 3 40, 341, and 342 have been activated and Taproot and Tapsculpt are live, there's a sort of new way of doing things. Actually, there's several new ways of doing things.

2194
03:26:56.080 --> 03:26:56.580
And

2195
03:26:56.960 --> 03:27:01.700
there's no real hard standard to find. There's a bunch of different recommended paths.

2196
03:27:02.375 --> 03:27:12.190
And as all of us were evaluating which path to go forward with, each of us encountered a different set of trade offs. And we want to talk through the trade offs that we experienced, that we ran

2197
03:27:12.570 --> 03:27:19.070
into, and how we all came to a sort of consensus, if you will, on the way forward for implementing multisiv untapped root in the absence of a standard.

2198
03:27:19.385 --> 03:27:21.885
Actually, let's talk about that for a bit, the absence of a standard.

2199
03:27:22.984 --> 03:27:26.444
There's, like I said, 3 bps, 3 40, 3 40 1, 3 42

2200
03:27:26.770 --> 03:27:28.870
that govern the Taproot, Tapscreed upgrade.

2201
03:27:29.891 --> 03:27:35.750
There's nothing in there per se that draws a line in the sense that this is the Taproot way of implementing multisig.

2202
03:27:36.875 --> 03:27:45.080
Do you think that was an error or an omission? Does it make sense to have a BIP? Does it not make sense to have a BIP? What are the pros and cons there? Yeah. I mean, that that's

2203
03:27:45.400 --> 03:27:45.900
Keith.

2204
03:27:46.440 --> 03:27:47.640
The only way to go is,

2205
03:27:48.360 --> 03:27:49.420
the the BIP

2206
03:27:49.800 --> 03:27:51.580
approach is for when

2207
03:27:52.120 --> 03:27:54.565
everyone needs to agree for this thing to

2208
03:27:55.104 --> 03:27:57.604
work. But in the Taproot world,

2209
03:27:58.305 --> 03:27:59.925
we're adding so much flexibility

2210
03:28:00.625 --> 03:28:06.490
that it doesn't make sense to say this is the one and only or the one of the 3 only ways that you can go.

2211
03:28:07.110 --> 03:28:11.325
You know, without getting too technical, it's like the old world was

2212
03:28:12.425 --> 03:28:19.670
it it's a it's a train. You get on at a stop, you get off at a stop, but it's on rails and we all know where it's going and how it works.

2213
03:28:20.550 --> 03:28:23.370
And now in the in the tap were tap route world,

2214
03:28:23.830 --> 03:28:24.810
it's more like,

2215
03:28:25.510 --> 03:28:41.460
if you flip to the, the public transit tab of Google Maps, you know, and it's like, oh, you can walk a mile, take bus 10, hop on this train, and get your destination. Or you can ride a bike, 3 miles, get on this bus. Right? There's so many different ways that you can go,

2216
03:28:41.920 --> 03:28:47.220
and there's no way for any of us or the core developers to say

2217
03:28:47.545 --> 03:28:50.125
this is the one way that you need to go.

2218
03:28:50.745 --> 03:28:52.685
And so all we can do is figure out,

2219
03:28:53.225 --> 03:28:55.645
you know, for each of our individual use cases

2220
03:28:56.380 --> 03:28:59.359
what's the best way to go and make sure that we don't

2221
03:29:01.020 --> 03:29:05.335
lock people in to a dead end path they can't escape from.

2222
03:29:05.735 --> 03:29:10.795
I mean, this is the reason why we're here, I think, is because we're seeing parallels,

2223
03:29:11.335 --> 03:29:12.395
at least I am,

2224
03:29:13.080 --> 03:29:16.780
with our users where if you were around and you were building

2225
03:29:17.320 --> 03:29:20.140
during the SegWit activation period,

2226
03:29:20.785 --> 03:29:27.365
there was a rallying cry from a lot of users like, win SegWit, win SegWit, win SegWit. And that was fine because

2227
03:29:28.145 --> 03:29:28.645
I've

2228
03:29:29.800 --> 03:29:33.500
seen developer teams at multiple different multisig companies

2229
03:29:33.960 --> 03:29:34.460
implement

2230
03:29:34.840 --> 03:29:39.975
SegWit version of multisig with a handful of developers in maybe 1 or 2 weeks.

2231
03:29:40.354 --> 03:29:41.335
And it's straightforward.

2232
03:29:41.955 --> 03:29:43.975
Really, it's like from a script

2233
03:29:44.330 --> 03:29:44.830
perspective,

2234
03:29:45.210 --> 03:29:49.630
it's pretty much the same as doing old school legacy P2SH.

2235
03:29:50.810 --> 03:29:51.790
And so now

2236
03:29:52.205 --> 03:29:54.385
what we're seeing, of course, is

2237
03:29:54.845 --> 03:29:55.345
users

2238
03:29:55.725 --> 03:30:02.600
with the rallying cry of Win Taproot, Win Taproot, Win Taproot. And unfortunately, it's just not the same, straightforward path,

2239
03:30:03.140 --> 03:30:04.520
as we'll get into,

2240
03:30:05.140 --> 03:30:06.920
with a deeper dive here.

2241
03:30:07.505 --> 03:30:08.885
This additional flexibility

2242
03:30:09.665 --> 03:30:14.085
that Taproot gives us is great. But whenever you have additional flexibility,

2243
03:30:15.329 --> 03:30:16.550
take for example,

2244
03:30:16.930 --> 03:30:18.369
extreme example of,

2245
03:30:19.010 --> 03:30:20.789
like EVM smart contract

2246
03:30:21.329 --> 03:30:22.550
style languages,

2247
03:30:23.365 --> 03:30:25.064
that extreme level of flexibility

2248
03:30:25.365 --> 03:30:25.865
creates

2249
03:30:26.325 --> 03:30:27.064
a huge

2250
03:30:27.525 --> 03:30:28.425
design space.

2251
03:30:29.045 --> 03:30:33.720
And when you have a huge design space, that means there's also going to be

2252
03:30:34.020 --> 03:30:35.480
a lot of foot guns

2253
03:30:35.860 --> 03:30:39.320
and ways to implement things poorly. And we want to

2254
03:30:39.865 --> 03:30:43.165
prevent people from running into too many pitfalls.

2255
03:30:45.944 --> 03:30:47.645
Right. I I think you captured

2256
03:30:48.024 --> 03:30:48.380
that

2257
03:30:48.939 --> 03:30:50.720
very nicely, Keith. And,

2258
03:30:52.380 --> 03:30:54.720
why I'm I'm here is that we

2259
03:30:55.475 --> 03:30:57.234
we had this discussion earlier with,

2260
03:30:57.715 --> 03:30:59.734
James and and other people from,

2261
03:31:00.274 --> 03:31:01.255
Angel Capital

2262
03:31:01.715 --> 03:31:09.090
that we want to get into the room together and try to figure out what are the best options, for for everybody. I mean, the

2263
03:31:09.790 --> 03:31:13.810
the organizations that need MultiSig for their businesses to thrive

2264
03:31:14.325 --> 03:31:21.545
and hardware wallets, creators so they could can be used in this complex setup. And it wasn't very very straightforward

2265
03:31:21.925 --> 03:31:28.150
to to see which options to to choose. And what I really like about Bitcoin in general that there is this,

2266
03:31:29.030 --> 03:31:41.284
there is this, not this approach of design by committee and everybody's just, you know, using what the committee came up with, but there are these discussions and part of this discussion is happening right now. So

2267
03:31:41.841 --> 03:31:42.341
yeah.

2268
03:31:43.520 --> 03:31:48.181
Yeah. And the results will probably be just a list of new VIBs and proposals

2269
03:31:48.561 --> 03:31:49.860
and yeah. So

2270
03:31:50.585 --> 03:31:51.485
just just

2271
03:31:52.665 --> 03:32:02.480
grow. Yeah. And I think I'll add to Keith's statement. It would be nice to have a BIP in theory and practice, just the process of going through drafting a bit, and getting consensus from all the different stakeholders.

2272
03:32:03.020 --> 03:32:11.806
We've taken a tremendous amount of time with no clear path forward. I think any dip that we would all come together on, even if we were all in unanimous agreement, would be status informational.

2273
03:32:12.426 --> 03:32:16.660
There are several different ways to skin this cat, and I wanna dive into that now actually.

2274
03:32:17.280 --> 03:32:22.900
I'm thinking of first off the trade offs that James and you must have been thinking through at Casa versus Ali with lightning.

2275
03:32:23.355 --> 03:32:29.756
For those of you, I mean, it's easy to think of lightning as payment channels in a gossip network, but at its heart, it's multisig. It's,

2276
03:32:31.195 --> 03:32:32.815
construct between yourself and your counterparty.

2277
03:32:33.340 --> 03:32:36.160
Casa's the same way. You've got your customers and you've got Casa.

2278
03:32:36.779 --> 03:32:40.240
I mentioned in talking through the different trade offs that you

2279
03:32:40.635 --> 03:32:45.774
encountered and the migration path because you both have existing products and existing customers using multisig.

2280
03:32:46.154 --> 03:32:50.255
How you envision the path forward for them and enabling Taproot for your users?

2281
03:32:52.460 --> 03:32:55.840
Yeah. So, you know, Lightning, you're essentially getting

2282
03:32:56.220 --> 03:32:57.360
a 2 of 2

2283
03:32:57.735 --> 03:32:58.235
multisig

2284
03:32:58.936 --> 03:32:59.915
smart contract.

2285
03:33:00.615 --> 03:33:01.115
And

2286
03:33:01.976 --> 03:33:03.035
these are generally

2287
03:33:03.495 --> 03:33:05.436
between 2 different parties. Obviously,

2288
03:33:05.820 --> 03:33:12.080
one party on each end of the channel. And it's a highly interactive type of protocol. You're generally expecting

2289
03:33:12.540 --> 03:33:13.200
the other

2290
03:33:14.074 --> 03:33:16.415
end of that channel to be available

2291
03:33:16.795 --> 03:33:17.854
and communicative

2292
03:33:18.234 --> 03:33:22.095
and so, you know, you can send messages back and forth with each other.

2293
03:33:22.810 --> 03:33:23.310
However,

2294
03:33:23.850 --> 03:33:24.590
in a

2295
03:33:25.050 --> 03:33:28.590
vaulting solution, you know, something that's more cold storage,

2296
03:33:29.130 --> 03:33:34.315
where you're going for an extreme level of security at the expense of convenience,

2297
03:33:35.016 --> 03:33:35.835
then you

2298
03:33:36.215 --> 03:33:38.155
can't really have the same

2299
03:33:38.561 --> 03:33:40.020
high level of interactivity.

2300
03:33:41.520 --> 03:33:43.301
Basically when you have more interactivity,

2301
03:33:43.920 --> 03:33:48.604
that means you're probably gonna have to be going back and forth and back and forth between

2302
03:33:49.064 --> 03:33:52.525
either the different entities or just, the different key holders

2303
03:33:52.985 --> 03:33:54.445
in that particular Vault.

2304
03:33:55.811 --> 03:33:57.270
So one example

2305
03:33:57.730 --> 03:34:01.591
of a problem that we would run into with interactivity

2306
03:34:01.971 --> 03:34:03.270
and a larger

2307
03:34:03.936 --> 03:34:08.115
multisig quorum, say something like a 3 out of 5 or higher,

2308
03:34:08.735 --> 03:34:09.235
is

2309
03:34:10.976 --> 03:34:12.660
you may not know

2310
03:34:13.040 --> 03:34:15.939
when you start to sign

2311
03:34:16.399 --> 03:34:17.540
a given transaction,

2312
03:34:18.320 --> 03:34:20.979
which of the other keys are going to be participating

2313
03:34:21.976 --> 03:34:22.955
in that transaction.

2314
03:34:23.815 --> 03:34:26.315
And if you don't know which keys are participating,

2315
03:34:26.936 --> 03:34:31.400
then if you start going down one of the potential design paths for Tapscript,

2316
03:34:31.940 --> 03:34:36.760
which is trying to be more efficient and more private and creating all of these other logical branches,

2317
03:34:37.735 --> 03:34:44.315
you have to know exactly which one of those leafs, like all the way down that logical path you're going to be going

2318
03:34:44.750 --> 03:34:50.689
because you need to be signing that data and all of the keys need to be signing that exact same data. So

2319
03:34:51.150 --> 03:34:53.170
if you change your mind after

2320
03:34:53.675 --> 03:34:55.055
signing with 2 of the keys,

2321
03:34:55.515 --> 03:34:57.534
now you're in a lot of trouble

2322
03:34:58.154 --> 03:34:58.654
because

2323
03:34:59.354 --> 03:35:00.415
you now have

2324
03:35:00.760 --> 03:35:07.979
a partially signed transaction that's not going to become valid. You have to go back, start all over and get that different

2325
03:35:08.614 --> 03:35:09.114
Tapscript

2326
03:35:09.415 --> 03:35:09.915
path

2327
03:35:11.095 --> 03:35:16.314
and sign with however many keys that quorum requires. So that's just one of the potential

2328
03:35:16.950 --> 03:35:18.090
considerations which

2329
03:35:18.470 --> 03:35:20.570
it's not gonna be a problem for something

2330
03:35:20.950 --> 03:35:21.770
like Lightning,

2331
03:35:22.229 --> 03:35:22.729
because

2332
03:35:23.350 --> 03:35:26.170
if you have to start over again, it's not a big deal. We're talking

2333
03:35:26.525 --> 03:35:29.266
milliseconds, maybe seconds of lag

2334
03:35:30.686 --> 03:35:31.665
time. Yeah, exactly.

2335
03:35:32.125 --> 03:35:34.226
As you already mentioned, the situation

2336
03:35:35.160 --> 03:35:35.819
is pretty,

2337
03:35:37.080 --> 03:35:47.275
given in in Lightning that you have these 2 parties that communicate anyway. They're they're supposed to be online to to, establish the channel. So you can just add this,

2338
03:35:49.016 --> 03:35:49.756
non exchange,

2339
03:35:50.240 --> 03:35:58.580
a few new messages, or maybe not even new messages, which is the new data in existing messages, and you can come up with music

2340
03:35:59.845 --> 03:36:00.345
multisignature

2341
03:36:00.885 --> 03:36:03.145
pretty pretty easily. In fact,

2342
03:36:04.244 --> 03:36:05.784
there are already quite

2343
03:36:06.165 --> 03:36:06.665
concrete

2344
03:36:08.670 --> 03:36:12.930
proposals out there, either mailing list posts or even pull requests to

2345
03:36:13.310 --> 03:36:13.970
the vault.

2346
03:36:14.670 --> 03:36:15.810
Oh, sorry.

2347
03:36:17.775 --> 03:36:19.155
No. Yeah. Okay.

2348
03:36:19.855 --> 03:36:20.515
So there,

2349
03:36:21.135 --> 03:36:27.155
requests to the Bolt spec, and, basically, the decision to go with, music 2 was

2350
03:36:29.250 --> 03:36:38.395
an easy one. So there are a few places in in Lightning where this can be applied. The most obvious one is the 2 of 2 multisig for the funding transaction.

2351
03:36:38.854 --> 03:36:43.194
But there are other signatures in the protocol for the gossip, for example,

2352
03:36:44.460 --> 03:36:46.320
and also some of the revocations

2353
03:36:47.500 --> 03:36:50.080
pass could be music to set up.

2354
03:36:50.460 --> 03:36:52.160
And there, I guess, the main

2355
03:36:53.175 --> 03:36:54.475
goal is to,

2356
03:36:54.935 --> 03:36:58.234
get some additional privacy because you no longer have to

2357
03:36:58.615 --> 03:37:01.035
reveal what keys were were participating,

2358
03:37:01.800 --> 03:37:15.855
and they also get a nice benefit in the size. So, for example, in gossip, you can there are currently 4 ECTSA signatures that could potentially be cut down to 2 or even a single one depending on the,

2359
03:37:16.715 --> 03:37:17.775
use case. Yeah.

2360
03:37:19.790 --> 03:37:25.650
So what I'm hearing from you, Jameson, is the liveness and availability and coordination issues made mUsig

2361
03:37:26.110 --> 03:37:31.395
not the preferred option for you. Whereas, since these aren't an issue necessarily for lightning counterparties,

2362
03:37:32.016 --> 03:37:33.875
MuSig made a bit more sense. Right?

2363
03:37:34.575 --> 03:37:45.515
Yes. Exactly. I had a whole thing about, how the other consideration with USIG was, that hadn't been standardized yet. And this morning, a USIG 2 draft PIP was submitted, so that's out the window. I

2364
03:37:46.774 --> 03:37:49.354
guess we'll have to review it after the after we get off the stage.

2365
03:37:49.895 --> 03:37:51.515
Yeah. And and that's basically

2366
03:37:51.895 --> 03:37:52.455
it how,

2367
03:37:52.935 --> 03:37:53.835
the the lightning

2368
03:37:54.322 --> 03:38:00.850
the development stage looks like. It's basically waiting for music to be finalized, waiting for music to be implemented,

2369
03:38:01.605 --> 03:38:05.065
And then, I guess things will move forward from there. Yeah.

2370
03:38:06.726 --> 03:38:08.985
And I'm curious, Pablo and Keith,

2371
03:38:10.050 --> 03:38:12.070
Did you did music factor into,

2372
03:38:12.930 --> 03:38:17.510
your software development or hardware development plans at all from the start? Did you decide to take a different route

2373
03:38:18.335 --> 03:38:21.234
when you were evaluating things? Yeah. Maybe I can start.

2374
03:38:22.175 --> 03:38:28.180
We had this discussion with Jameson and he already, like, hinted at it that the main problem with this

2375
03:38:28.560 --> 03:38:30.420
more complex scheme is interactivity,

2376
03:38:31.199 --> 03:38:35.220
and the problem with the hardware wallet is this usually usually offline.

2377
03:38:35.825 --> 03:38:36.325
And,

2378
03:38:36.945 --> 03:38:38.005
it can be connected,

2379
03:38:38.545 --> 03:38:40.325
for a limited amount of time.

2380
03:38:40.705 --> 03:38:48.020
And, if something goes wrong with the setup, maybe you just change your mind and you want to use different set, then you need to start again.

2381
03:38:48.399 --> 03:38:56.725
And, especially if your hardware wallets are not located in one location, but they are spread around the world, then this might become a problem.

2382
03:38:57.104 --> 03:38:57.604
So

2383
03:38:57.985 --> 03:39:01.925
the most straightforward option is to use the simplest

2384
03:39:02.360 --> 03:39:04.860
Hopi checksig ad using KFM

2385
03:39:05.480 --> 03:39:07.260
keys, which is, like,

2386
03:39:07.640 --> 03:39:11.100
a straightforward upgrade from what we've been using earlier.

2387
03:39:11.625 --> 03:39:13.725
And the other option is to use,

2388
03:39:15.305 --> 03:39:17.705
second option described in the BIP 30,

2389
03:39:18.425 --> 03:39:18.925
342

2390
03:39:19.465 --> 03:39:19.965
document,

2391
03:39:20.471 --> 03:39:20.870
which,

2392
03:39:21.830 --> 03:39:25.051
describes how to use several k of k multisects.

2393
03:39:25.910 --> 03:39:28.490
But then you have to to choose

2394
03:39:29.165 --> 03:39:33.725
which k of k setup we want to use, and then there are a lot of,

2395
03:39:34.685 --> 03:39:36.625
a lot of user experience challenges.

2396
03:39:36.960 --> 03:39:43.700
So if the setup is too complex, you need to present it in a way that the user understands what they are choosing from.

2397
03:39:44.160 --> 03:39:45.220
And also,

2398
03:39:47.815 --> 03:39:48.315
also,

2399
03:39:49.415 --> 03:39:52.075
again, if you change your mind, you need to you need to start

2400
03:39:52.535 --> 03:39:53.516
from the beginning.

2401
03:39:53.950 --> 03:39:56.290
And there are also ways how to use

2402
03:39:56.750 --> 03:39:57.250
music,

2403
03:39:57.630 --> 03:39:59.230
and, there were other,

2404
03:40:00.670 --> 03:40:02.690
other implementations of music that uses

2405
03:40:03.305 --> 03:40:03.805
nuances,

2406
03:40:04.185 --> 03:40:05.005
and this

2407
03:40:06.425 --> 03:40:12.925
also was an option, but it seems the world is getting into music 2

2408
03:40:15.070 --> 03:40:19.410
music 2 option, which still can be used with hardware wallets,

2409
03:40:19.870 --> 03:40:20.370
but

2410
03:40:20.755 --> 03:40:24.055
under certain conditions. For for example, if

2411
03:40:24.435 --> 03:40:29.975
the the hardware wallet is the last signer in in the chain, so it sees

2412
03:40:30.400 --> 03:40:33.620
everybody else commitments and signatures that it can participate,

2413
03:40:34.320 --> 03:40:35.061
but that's

2414
03:40:35.601 --> 03:40:38.180
not probably the use case for,

2415
03:40:39.305 --> 03:40:45.485
for businesses like like Casa, where somebody needs to start the chain of, signatures.

2416
03:40:46.190 --> 03:40:48.050
So, yeah, these are the considerations.

2417
03:40:49.710 --> 03:40:50.210
Well,

2418
03:40:50.670 --> 03:40:55.705
I think at the end of the day, the hardware wallets are gonna have to support all the options.

2419
03:40:56.665 --> 03:40:59.405
We may be able to prioritize on the easiest, which is

2420
03:40:59.865 --> 03:41:02.285
replicating the k of n world,

2421
03:41:03.220 --> 03:41:04.600
you know, in in the Tapworld,

2422
03:41:05.300 --> 03:41:06.279
Tapscript world,

2423
03:41:06.580 --> 03:41:17.485
but that's the least satisfying option. And that's just taking what we already have and just doing it a slightly different way, but not really getting any of the benefits that we were all excited about for Taproot.

2424
03:41:19.540 --> 03:41:22.920
Like for for seed signer, the goal is always optionality.

2425
03:41:23.460 --> 03:41:25.720
So we don't have a single

2426
03:41:26.340 --> 03:41:32.045
user in mind. We don't have a single use case in mind, and, you know, I think that's probably likely for all the hardware wallets.

2427
03:41:32.505 --> 03:41:33.005
So

2428
03:41:33.945 --> 03:41:35.564
while we will have to prioritize

2429
03:41:36.024 --> 03:41:41.420
which approaches we support first, I think the long road in the long road, we just have to support all of them.

2430
03:41:41.800 --> 03:41:45.500
And, you know, there's no free lunch. Like, if we want some of the benefits,

2431
03:41:46.035 --> 03:41:51.095
there's gonna be a part of the user experience that's just worse just because of the nature of it. So

2432
03:41:51.875 --> 03:41:54.695
like with, between seed signer and Inspector Wallet,

2433
03:41:55.641 --> 03:41:59.900
with with this discussion of, you know, picking the right k f k path,

2434
03:42:00.280 --> 03:42:01.660
for this option 2,

2435
03:42:02.681 --> 03:42:04.460
we could have the Wallet software

2436
03:42:05.255 --> 03:42:10.154
send all the paths that you participate in, and you just sign all those paths.

2437
03:42:10.694 --> 03:42:25.335
But if that takes 2 minutes for your little, you know, $50 device to sign, and then on seed signer, you have to hold it up to the camera because it communicates over QR codes. So like, if I need to show 500 QR codes back to my laptop,

2438
03:42:25.715 --> 03:42:28.215
you know, I'm gonna get a tired shoulder. But

2439
03:42:28.675 --> 03:42:37.370
if that's the way to do it, that's gonna be the pain. But but it'll be up to the user to just to decide that their that level of pain is worth it for them.

2440
03:42:37.750 --> 03:42:39.770
And then the same thing with music where,

2441
03:42:40.325 --> 03:42:43.944
yeah, if your if your seeds are, you know, buried in different countries,

2442
03:42:45.125 --> 03:42:47.944
and you need to do, you know, 3 rounds, like,

2443
03:42:48.391 --> 03:42:53.851
I either get a lot of frequent flyer mile miles or that's not the best use case for for that approach.

2444
03:42:55.325 --> 03:42:58.625
You touched on something there that I wanna dig into, if you don't mind. So,

2445
03:42:59.485 --> 03:42:59.985
theoretically,

2446
03:43:00.605 --> 03:43:04.705
or they're both hardware WAD devices, hardware signing devices. Mhmm.

2447
03:43:05.500 --> 03:43:08.160
But under the hood, you're running on top of a Raspberry

2448
03:43:08.780 --> 03:43:09.280
x86,

2449
03:43:09.980 --> 03:43:20.705
and you got a PCB and a build materials to worry about. What's the difference between the software development life cycle and hardware development life cycle, and what impact did that have on your implementation of multi site on Taproot?

2450
03:43:23.830 --> 03:43:24.650
Yeah. So,

2451
03:43:25.830 --> 03:43:32.265
at first, we thought that the CPU power might be the limiting factor, but it seems that's not really the case.

2452
03:43:33.845 --> 03:43:35.705
We use USB communications,

2453
03:43:36.165 --> 03:43:37.225
so we

2454
03:43:37.685 --> 03:43:39.801
we don't have to deal with the problems,

2455
03:43:40.280 --> 03:43:44.141
like you mentioned, with the stability of the QR code transmission.

2456
03:43:45.000 --> 03:43:45.500
And,

2457
03:43:47.015 --> 03:43:51.675
so that's why we focus mostly on can focus mostly on the usability

2458
03:43:52.534 --> 03:43:57.310
side of side of things, how to present it, on on the computer.

2459
03:43:59.530 --> 03:44:00.030
Sorry.

2460
03:44:00.490 --> 03:44:00.990
And

2461
03:44:03.114 --> 03:44:05.935
I I get lost lost in trend of thought.

2462
03:44:06.314 --> 03:44:06.814
So

2463
03:44:10.770 --> 03:44:13.190
can you please repeat the the question?

2464
03:44:13.970 --> 03:44:28.910
Like Sure. So Yeah. Keith gets to run his code on Yeah. X86 standard software. You actually have to Mhmm. Get printed circuit boards and bake your code in silicon and deal with a supply chain that Keith doesn't have to worry about. I'm wondering about the trade offs that,

2465
03:44:29.551 --> 03:44:31.410
both you had to deal with when choosing

2466
03:44:32.591 --> 03:44:35.410
what method of multisig to on tap you to implement

2467
03:44:36.295 --> 03:44:40.235
and the ship time between when you made the decision and getting in the heads of your customers?

2468
03:44:40.615 --> 03:44:47.760
Yeah. Yeah. So so so like I said, we initially thought that this might be a issue, but it in the end, it turned out that that's that's

2469
03:44:48.141 --> 03:44:57.455
that's a nonissue, that even even our processor that is maybe 10 times slower than than the Raspberry Pi still have plenty plenty of of power to

2470
03:44:58.570 --> 03:45:05.470
students. So this, doesn't require an addition to the the hardware itself? It's it's also just a firmware that can,

2471
03:45:05.965 --> 03:45:14.450
like, music can just be implemented on top of the existing hardware then. Yeah. Yeah. And, also, we we have this advantage that we can ask,

2472
03:45:14.931 --> 03:45:16.230
for for the data

2473
03:45:17.010 --> 03:45:21.351
again and again and again and again. So the the memory limitation is probably

2474
03:45:21.945 --> 03:45:26.125
not not that big of issue because we can we can stream the data,

2475
03:45:26.665 --> 03:45:31.405
hash it, maybe compute the Merkle tree, and then if we need, it again,

2476
03:45:32.110 --> 03:45:38.645
then we ask for it again and compute the Merkle tree if we were served the same data. So we can circumvent that problem by

2477
03:45:39.364 --> 03:45:43.125
asking it again, which is not a problem since we are using fast,

2478
03:45:43.524 --> 03:45:44.345
fast connection.

2479
03:45:44.725 --> 03:45:45.685
On the other hand,

2480
03:45:46.005 --> 03:45:51.000
you at C Designer, don't have the problem with RAM because you have plenty of RAM. So

2481
03:45:51.620 --> 03:45:55.961
you have other things to worry about. Yeah. We're we're running on the what used to be a $5

2482
03:45:56.375 --> 03:46:02.875
Raspberry Pi 0, and now they're impossible to find in the market. So sky's the limit for what they cost on on eBay now.

2483
03:46:04.080 --> 03:46:06.260
But we're also looking to expand to

2484
03:46:06.880 --> 03:46:09.060
alternate hardware profiles. Because

2485
03:46:09.439 --> 03:46:16.454
if you can't source a Raspberry Pi 0, you can't build a seed signer, so all the work I'm putting into it, you know, isn't helping anyone.

2486
03:46:17.715 --> 03:46:18.215
And

2487
03:46:18.994 --> 03:46:25.380
I I don't think our approach to Taproot would affect our hardware choices. I think it's more that

2488
03:46:26.080 --> 03:46:27.940
the hardware that we end up supporting

2489
03:46:28.400 --> 03:46:30.340
will affect the user experience.

2490
03:46:30.800 --> 03:46:31.300
And

2491
03:46:31.705 --> 03:46:39.805
if you're a user that can only source, like, a really weak chip that we support, then you'll just have a bad experience. You'll be waiting a long time for computation,

2492
03:46:40.280 --> 03:46:41.181
but it'll work.

2493
03:46:41.720 --> 03:46:51.225
And I think it's just, you know, like I said, optionality. If you can if you can buy the the Cadillac processor, good for you. If you can't, it'll be spinning a little while longer.

2494
03:46:51.525 --> 03:46:53.625
I guess, kind of related to hardware,

2495
03:46:54.165 --> 03:47:05.740
have you played around with or are you familiar with with, like, what are the actual bandwidth limitations when it comes to the animated QR codes? I'm sure, like, the the quality of the screen, the quality of the camera.

2496
03:47:06.535 --> 03:47:09.475
I mean, a screen is only gonna be able to refresh so often.

2497
03:47:10.654 --> 03:47:13.074
Yeah. So and it it goes in 2 directions.

2498
03:47:13.570 --> 03:47:18.070
So so far, the Raspberry Pi camera has proven to be really good.

2499
03:47:19.490 --> 03:47:21.590
So Inspector for a big PSVT,

2500
03:47:22.135 --> 03:47:26.875
it shows an animated QR code. And however many frames it takes, it reads in the animation.

2501
03:47:27.734 --> 03:47:29.995
But to prepare for doing demos today,

2502
03:47:30.570 --> 03:47:35.470
I printed out the QR code as a single static image, and so it's much bigger.

2503
03:47:36.170 --> 03:47:40.315
You know, it's like I I can't I don't even know how many, you know, QR blocks across,

2504
03:47:40.955 --> 03:47:42.415
it was. And

2505
03:47:42.875 --> 03:47:48.256
the the Raspberry Pi camera could still scan it in. You know, it was like a a one of 2

2506
03:47:48.681 --> 03:47:53.261
spend to 3 recipients with change coming back, and 2 self transfers,

2507
03:47:53.960 --> 03:47:56.145
in this PSVT, and it could scan it.

2508
03:47:57.104 --> 03:47:58.484
But then the problem is

2509
03:47:58.864 --> 03:48:02.564
crappy laptop cameras. The built in cameras are garbage.

2510
03:48:02.944 --> 03:48:10.290
And so we hold up this little 1 inch screen to the to the laptop camera, and, you know, people are just, like, trying to find the right focus distance.

2511
03:48:11.710 --> 03:48:13.729
And before we had a brightness adjustment,

2512
03:48:14.335 --> 03:48:23.141
the only way I could get my brother-in-law to scan the screen was to hold a pair of sunglasses in front of it to cut down on the the glare, and that finally

2513
03:48:23.601 --> 03:48:27.620
worked. I I I took a picture of that and and tweeted that out as kind of a,

2514
03:48:28.400 --> 03:48:29.780
at least we got it to work.

2515
03:48:30.665 --> 03:48:40.365
Yeah. I remember we had we had the same issue when we were trying to to show the QR code on Trezor, that the contrast of OLED display is just so high

2516
03:48:40.730 --> 03:48:41.471
that these,

2517
03:48:42.650 --> 03:48:47.550
crappy cameras, they just can't focus on it because everything is just so blurred.

2518
03:48:47.985 --> 03:48:52.965
So one one of the ways how to fix that is actually increase the the brightness. So

2519
03:48:53.345 --> 03:49:04.340
I assume we are doing the same thing. I mean, the solution was instead of rendering white and black QR codes, we render shades of gray and black. So that's a lower contrast. It's similar approach. Yeah.

2520
03:49:04.785 --> 03:49:09.605
Yeah. So, I mean, you know, Multisig is obviously more complex than single signature.

2521
03:49:10.945 --> 03:49:14.870
A couple years ago, I did a number of tests on different hardware,

2522
03:49:15.490 --> 03:49:22.436
to to see like how well it could handle not only just multisig but like really, really absurdly large Multisig,

2523
03:49:23.695 --> 03:49:27.636
setups and transactions with many inputs and so on and so forth.

2524
03:49:28.070 --> 03:49:33.130
And and now what we're talking about today is just ramping up the complexity, you know, potentially

2525
03:49:33.510 --> 03:49:38.556
even by orders of magnitude if people start to get more creative. So you can only

2526
03:49:39.255 --> 03:49:39.755
imagine

2527
03:49:40.375 --> 03:49:42.235
where we're gonna start to see bottlenecks,

2528
03:49:42.615 --> 03:49:46.795
where we're gonna see parts of the user experience start to kind of crumble

2529
03:49:47.410 --> 03:49:47.872
under,

2530
03:49:48.335 --> 03:49:50.645
you know, larger data payloads,

2531
03:49:51.108 --> 03:49:52.710
more computational complexity.

2532
03:49:53.330 --> 03:49:53.570
And,

2533
03:49:54.625 --> 03:50:02.965
and it's actually kind of funny because in the grand scheme of things, we're still talking about fairly tiny Bitcoin transactions. Like, compared to most other computing,

2534
03:50:03.905 --> 03:50:10.471
you know, general internet related computing stuff, this is a drop in the bucket, but it's still,

2535
03:50:11.090 --> 03:50:16.295
it's reliant upon so many other moving pieces that, you know, something is probably gonna break.

2536
03:50:18.035 --> 03:50:29.160
You just touched on something that I wanna dig into with both you and Ali, actually, which is that multisync, one of the great benefits of it is that it provides users with peace of mind. You remove a single key from being a single point of failure.

2537
03:50:29.775 --> 03:50:42.830
So the thing is, if you've got a working multi sig setup, if it's not broke, why fix it? I know a lot of your users are asking you when Taproot. I'm sure you're asking yourself, why Taproot, and what's the path forward? How do you get from here to there?

2538
03:50:43.689 --> 03:50:45.870
Let's talk through how you work through those decisions.

2539
03:50:47.705 --> 03:50:51.702
Yeah. So, you know, we've been evaluating.

2540
03:50:52.024 --> 03:50:53.965
And in in the perfect world,

2541
03:50:54.665 --> 03:50:55.405
our users

2542
03:50:55.865 --> 03:50:57.005
would have

2543
03:50:57.400 --> 03:50:59.980
access to using, you know, MUSEG

2544
03:51:00.520 --> 03:51:02.860
and basically have aggregated signatures

2545
03:51:03.480 --> 03:51:05.340
so that from a on chain

2546
03:51:05.735 --> 03:51:08.395
perspective, you would have the best level of privacy.

2547
03:51:09.016 --> 03:51:14.000
You would also have the the smallest on chain footprint, which is also going to have,

2548
03:51:14.400 --> 03:51:16.900
lower transaction fees. You know, that

2549
03:51:17.920 --> 03:51:20.180
aggregated signatures is like the holy grail,

2550
03:51:20.720 --> 03:51:22.260
I think for any multisig

2551
03:51:22.720 --> 03:51:25.805
type of setup. But because of some of the aforementioned

2552
03:51:26.265 --> 03:51:27.965
reasons, we don't really see

2553
03:51:28.505 --> 03:51:31.645
a straightforward path, at least in the near future,

2554
03:51:32.200 --> 03:51:34.220
that is going to allow us to

2555
03:51:34.680 --> 03:51:37.100
retain the same user experience,

2556
03:51:38.840 --> 03:51:41.420
and be able to, you know, add all of these other benefits.

2557
03:51:41.945 --> 03:51:42.445
So,

2558
03:51:42.825 --> 03:51:43.806
you know, we prioritize

2559
03:51:44.426 --> 03:51:49.485
security, of course, above pretty much everything else, and then we're generally prioritizing,

2560
03:51:50.500 --> 03:51:51.479
user experience.

2561
03:51:52.100 --> 03:51:57.960
And then the things like better privacy or smaller on chain footprints are, they're nice to have,

2562
03:51:58.346 --> 03:52:01.485
but you know, it's more important that people can be confident,

2563
03:52:02.346 --> 03:52:10.020
that their money is going to be there and is going to be accessible then that they might be able to save a little bit on fees or have, you know, better,

2564
03:52:10.479 --> 03:52:11.780
privacy against certain,

2565
03:52:12.319 --> 03:52:14.020
surveillance actors on the network.

2566
03:52:14.426 --> 03:52:23.806
So I think it's most likely we're going to be going forward with the naive way of basically reimplementing the current, m of n,

2567
03:52:24.490 --> 03:52:25.470
you know, checksig,

2568
03:52:26.010 --> 03:52:27.069
type of functionality

2569
03:52:27.850 --> 03:52:29.450
just because of simplicity. And,

2570
03:52:31.050 --> 03:52:36.255
simplicity, you know, the the KISS principle, keep, keep it simple stupid. That's how we,

2571
03:52:36.955 --> 03:52:37.455
prevent

2572
03:52:37.915 --> 03:52:40.255
as many foot guns from getting introduced.

2573
03:52:40.910 --> 03:52:48.130
And I as a wallet engineer who have seen many people shoot themselves in the foot over the past decade,

2574
03:52:48.915 --> 03:52:52.056
that is what I'm generally more afraid of,

2575
03:52:52.436 --> 03:52:57.075
than I am of various types of attacks and, you know, people stealing,

2576
03:52:57.556 --> 03:52:58.056
Bitcoin.

2577
03:53:00.820 --> 03:53:03.960
Yeah, I actually have a huge respect for,

2578
03:53:04.660 --> 03:53:12.795
for the challenge of doing that in a in a hardware wallet setup. So, I see it, how much complexity that adds.

2579
03:53:13.415 --> 03:53:15.835
So on on the lining side, it's it's

2580
03:53:16.181 --> 03:53:23.641
comparatively easy. And as I mentioned before, the the plan is more or less laid out. There are many, many steps to go to a

2581
03:53:24.065 --> 03:53:26.485
fully Taproot Music, PTLC

2582
03:53:26.865 --> 03:53:28.565
enabled lightning network.

2583
03:53:29.186 --> 03:53:33.180
But the the main challenge there is probably that because there are so many steps,

2584
03:53:33.660 --> 03:53:39.600
and you touched the same code so many times, it will take a long time to to get there. And

2585
03:53:40.525 --> 03:53:43.025
these upgrade processes with compatibility,

2586
03:53:43.565 --> 03:53:45.025
backward, forward compatibility

2587
03:53:46.525 --> 03:53:47.345
will just

2588
03:53:47.726 --> 03:53:48.865
be a lot of effort.

2589
03:53:49.330 --> 03:53:50.630
But and,

2590
03:53:51.490 --> 03:53:54.069
the advantage is that the user experience

2591
03:53:54.370 --> 03:54:03.555
doesn't really necessarily have to change because, as I said, the communication is already there between the peers. So the the user basically gets free

2592
03:54:06.319 --> 03:54:06.819
upgrade

2593
03:54:07.120 --> 03:54:08.399
in terms of,

2594
03:54:08.800 --> 03:54:12.500
better privacy. You can't actually see the the public keys anymore.

2595
03:54:13.354 --> 03:54:16.255
Cheaper transactions because the signatures are smaller

2596
03:54:16.875 --> 03:54:17.535
and also,

2597
03:54:18.154 --> 03:54:23.990
less traffic on your note because, yeah, fewer signatures are sent on the Gossip network.

2598
03:54:24.450 --> 03:54:28.070
But, yeah, to to get there, it will be a multiyear

2599
03:54:28.530 --> 03:54:32.455
journey, and we'll probably learn along, a lot of things,

2600
03:54:33.075 --> 03:54:34.295
on the way. And maybe

2601
03:54:34.755 --> 03:54:41.080
something that we think now we'll do in a certain way, we'll do completely different because, yeah, we're just

2602
03:54:41.700 --> 03:54:53.725
collecting experience with these new protocols. And and, yeah, the design space with Taproot and music too is is so huge and large. And, yeah, I mean, that's that's why we're here. But,

2603
03:54:54.604 --> 03:54:55.104
fortunately,

2604
03:54:55.725 --> 03:55:04.050
yeah, as I said, that that in in lightning, the the plan is more or less there and now just need to need to attack it and actually

2605
03:55:04.351 --> 03:55:05.170
start implementing.

2606
03:55:06.030 --> 03:55:12.055
That's that's pretty exciting phase, to be honest. Yeah. I mean, I think in general you you should expect that

2607
03:55:12.835 --> 03:55:19.371
all Bitcoin development, not necessarily just protocol level development, but even people building on top of it,

2608
03:55:19.851 --> 03:55:21.311
they're going to take a

2609
03:55:21.770 --> 03:55:24.190
measured and conservative approach because

2610
03:55:24.846 --> 03:55:31.985
this is, you know, this is financial engineering. You should really approach it similar to something like aerospace engineering

2611
03:55:32.460 --> 03:55:34.479
where it's, it's a mission critical,

2612
03:55:34.859 --> 03:55:35.359
system

2613
03:55:35.819 --> 03:55:38.880
and it's more important that you are methodical

2614
03:55:39.556 --> 03:55:45.495
in how you go forward evolving whether it's the protocol or the wallet software

2615
03:55:45.796 --> 03:55:48.535
or even other layers, on top of that

2616
03:55:48.900 --> 03:55:49.400
because,

2617
03:55:49.780 --> 03:55:54.120
one mistake can be catastrophic, and we want to avoid catastrophe.

2618
03:55:57.675 --> 03:56:00.335
Okay. I wanna talk through how Pablo coordinated

2619
03:56:00.875 --> 03:56:03.615
with everyone on different options for how

2620
03:56:03.940 --> 03:56:09.400
multisig would be implemented on Trezor and what the pros and cons for each of us would be. But before we do that,

2621
03:56:09.780 --> 03:56:14.186
you raise something, James, and I would like to dig in with everyone, which is foot guns, potential

2622
03:56:14.726 --> 03:56:17.145
gotchas or booby traps with the new implementation.

2623
03:56:18.085 --> 03:56:25.430
Was there anything that jumped out at you when you were reviewing the bps and talking with the standards that you were wary of or concerned you, whether it's,

2624
03:56:26.210 --> 03:56:26.710
say,

2625
03:56:27.090 --> 03:56:38.324
seed phrase recovery or whether PSVTs and descriptors were adequate to handle the new multi sub construct, anything at all, they jumped out and said, hey. I have to think about this. There there would be dragons here.

2626
03:56:39.180 --> 03:56:40.000
Well, I gave

2627
03:56:40.540 --> 03:56:43.600
a a whole talk at MIT a few years ago,

2628
03:56:43.979 --> 03:56:46.479
which I believe was focused on

2629
03:56:47.565 --> 03:56:51.425
what I consider to be one of the bigger foot guns

2630
03:56:51.965 --> 03:56:53.745
in the design space, which

2631
03:56:54.205 --> 03:56:59.020
has to do with recovering wallets. More specifically, it has to do with how do we describe

2632
03:56:59.720 --> 03:57:01.740
the spending conditions for a wallet.

2633
03:57:02.200 --> 03:57:03.340
And I think everyone

2634
03:57:03.785 --> 03:57:05.965
in the room is probably familiar that,

2635
03:57:06.425 --> 03:57:07.725
you know, you have a seed phrase.

2636
03:57:08.025 --> 03:57:11.540
You keep that backed up and you can always recover from it.

2637
03:57:12.180 --> 03:57:15.160
That's all you need, right? Maybe a derivation path,

2638
03:57:16.100 --> 03:57:22.965
maybe a script type. But really, if you have the seed phrase, you should be okay, like you should be able to figure out some of the other parameters,

2639
03:57:23.825 --> 03:57:26.725
and essentially like even have to semi brute force

2640
03:57:27.345 --> 03:57:30.811
recovering your wallet. I've done that for countless people. It's

2641
03:57:31.351 --> 03:57:33.770
not too difficult to do. However,

2642
03:57:35.190 --> 03:57:35.690
if

2643
03:57:36.070 --> 03:57:37.450
you start creating

2644
03:57:38.735 --> 03:57:39.555
non deterministic,

2645
03:57:40.655 --> 03:57:41.155
script

2646
03:57:41.695 --> 03:57:42.195
locking

2647
03:57:42.575 --> 03:57:43.075
conditions,

2648
03:57:43.935 --> 03:57:46.835
by which I mean putting like random

2649
03:57:47.811 --> 03:57:51.190
or semi random numbers or other data.

2650
03:57:51.891 --> 03:57:55.431
The most specific example of this would be, like, time lock

2651
03:57:55.766 --> 03:57:57.466
related data into your

2652
03:57:59.045 --> 03:57:59.545
scripts.

2653
03:58:01.205 --> 03:58:03.945
How are you going to be able to recover that, you know?

2654
03:58:04.779 --> 03:58:05.840
It's no longer

2655
03:58:06.300 --> 03:58:08.000
data that can be deterministically

2656
03:58:08.939 --> 03:58:14.205
re derived from a seed phrase or really anything else or at least nothing that we have a standard for.

2657
03:58:14.686 --> 03:58:15.186
So,

2658
03:58:16.365 --> 03:58:17.265
wallet descriptors

2659
03:58:17.645 --> 03:58:19.665
I think are a great path forward,

2660
03:58:20.686 --> 03:58:28.500
and a standard that I hope that all wallets will eventually adopt. I think only a handful of them currently support importing and exporting

2661
03:58:28.960 --> 03:58:29.700
those descriptors.

2662
03:58:30.320 --> 03:58:31.540
But wallet descriptors

2663
03:58:32.945 --> 03:58:35.926
are not necessarily enough unless we all

2664
03:58:36.545 --> 03:58:38.806
agree to like only use the current

2665
03:58:39.426 --> 03:58:40.565
wallet descriptor

2666
03:58:41.750 --> 03:58:44.490
language and we never evolve it any further.

2667
03:58:45.830 --> 03:58:48.091
So while we hear,

2668
03:58:48.635 --> 03:58:49.295
I think,

2669
03:58:50.154 --> 03:58:57.774
fairly often from customers asking for things like, you know, can you help me time lock my coins? You know, I want to do like a

2670
03:58:58.120 --> 03:59:01.500
20 year trust or whatever. Make sure that I'm never

2671
03:59:01.880 --> 03:59:03.740
ever going to be able to

2672
03:59:05.296 --> 03:59:08.676
to be afraid and like panic sell or anything like that.

2673
03:59:09.535 --> 03:59:11.716
And it's an interesting idea.

2674
03:59:12.630 --> 03:59:19.930
However, I think when you start analyzing it from a security perspective, it actually has a number of downsides. And one of those downsides is

2675
03:59:20.325 --> 03:59:29.200
how do you recover those funds if you don't know the exact locking conditions. So I don't know. Maybe or maybe we even need like another,

2676
03:59:32.000 --> 03:59:33.780
v2 of wallet descriptors

2677
03:59:34.160 --> 03:59:35.460
or a way to

2678
03:59:37.335 --> 03:59:37.835
describe

2679
03:59:39.335 --> 03:59:40.315
semi deterministic

2680
03:59:40.695 --> 03:59:47.221
data. Maybe you could have some sort of script template that says, Okay, I'm going to do time walks, but I'm

2681
03:59:47.681 --> 03:59:54.420
going to minimize the design space. I'm going to minimize the potential values of those time walks so that you could kind of grind

2682
03:59:55.755 --> 03:59:59.775
all of the possible values in a few seconds on a CPU and be able to

2683
04:00:00.395 --> 04:00:00.895
find,

2684
04:00:01.435 --> 04:00:10.710
I guess the the right path to recover your coins. But, like, this is a whole potential area of exploration that I don't I haven't really heard anybody even talking much about. Yeah.

2685
04:00:11.795 --> 04:00:12.295
Yeah.

2686
04:00:13.314 --> 04:00:15.015
So first, let me talk,

2687
04:00:15.395 --> 04:00:15.895
about

2688
04:00:16.755 --> 04:00:19.814
how we implemented the protocol in in Tresor. Like,

2689
04:00:20.940 --> 04:00:27.200
obviously if you want a hardware wallet you want to connect it to a computer and Tresor was created in

2690
04:00:27.580 --> 04:00:28.080
2014

2691
04:00:29.355 --> 04:00:35.215
and we came up with our own protocol because it was years before there was such things as

2692
04:00:35.516 --> 04:00:37.135
log descriptors or PSBT.

2693
04:00:37.915 --> 04:00:38.395
And,

2694
04:00:38.960 --> 04:00:41.540
part of that protocol was also multi sig protocol,

2695
04:00:42.000 --> 04:00:42.500
which

2696
04:00:43.280 --> 04:00:44.900
worked out for us.

2697
04:00:45.360 --> 04:01:05.391
But then the other hardware came out and they came up with their own protocols for for single sig and multisig. And for single sig, it's probably not that of issue, but for multi sig, you don't really want to have a multi sig wallet that has to speak, like, 4 different languages if it wants to communicate with, 4 different hardware wallets.

2698
04:01:05.915 --> 04:01:06.415
So

2699
04:01:07.194 --> 04:01:09.375
then when Andrew implemented,

2700
04:01:10.035 --> 04:01:11.055
p PSBT

2701
04:01:11.755 --> 04:01:13.935
to create, like, a Esperanto

2702
04:01:14.314 --> 04:01:15.115
of of this,

2703
04:01:15.660 --> 04:01:16.561
of this hardware,

2704
04:01:17.580 --> 04:01:18.480
wallet languages.

2705
04:01:19.260 --> 04:01:19.760
And,

2706
04:01:20.460 --> 04:01:31.345
slowly, it got improved by the PSBT version 2, which removed some of the flaws, that PSBT version 1 had. And when, the top route got activated,

2707
04:01:32.125 --> 04:01:42.936
I just had this urge to talk, with people at, at Casa and Anchett Capital. Let's get into the same room and try to figure out how to do multisync,

2708
04:01:43.476 --> 04:01:49.735
so everybody can use it and we don't repeat the same mistakes that we did in the past that everybody

2709
04:01:50.290 --> 04:01:50.790
invented

2710
04:01:51.410 --> 04:01:55.189
their own protocol and their own ways how to use MultiSig.

2711
04:01:55.970 --> 04:02:00.905
So that's when discuss discussion started last last year,

2712
04:02:01.605 --> 04:02:13.290
and we came up to with the idea that already we have mentioned that first, let's start with this naive way, then consider implementing k of k, but then you would need to share,

2713
04:02:14.070 --> 04:02:14.570
which

2714
04:02:14.950 --> 04:02:21.105
which subtree do you want to work with. Unfortunately, PSBT version 2 has way

2715
04:02:21.565 --> 04:02:22.306
how to,

2716
04:02:23.245 --> 04:02:25.985
how to communicate communicate and share that,

2717
04:02:26.690 --> 04:02:29.590
And I think that's that's really the way forward.

2718
04:02:29.970 --> 04:02:37.854
Of course, we would need to improve the wallet, the scriptor language as well, and there has been some unofficial extensions

2719
04:02:38.234 --> 04:02:38.814
as well.

2720
04:02:39.354 --> 04:02:44.495
But I think it really makes sense to have a lot of discussions in that area as well because,

2721
04:02:44.860 --> 04:02:45.360
ultimately,

2722
04:02:45.820 --> 04:02:47.840
we are balancing this,

2723
04:02:48.620 --> 04:02:50.640
security, usability, and privacy

2724
04:02:50.940 --> 04:02:51.440
things,

2725
04:02:51.976 --> 04:02:53.676
and we cannot compromise,

2726
04:02:56.615 --> 04:02:59.835
on each other if we are going to forward.

2727
04:03:00.216 --> 04:03:00.716
So

2728
04:03:01.096 --> 04:03:06.750
so yeah. I think that that also that is a good example of, like, why standards are helpful,

2729
04:03:07.369 --> 04:03:09.310
at least from a developer standpoint.

2730
04:03:10.489 --> 04:03:11.470
Any of

2731
04:03:12.604 --> 04:03:16.145
us who are building wallets and also want to support

2732
04:03:16.524 --> 04:03:19.824
as many of the hardware key management devices as possible,

2733
04:03:20.590 --> 04:03:24.450
It was a lot more effort, for our engineers to integrate

2734
04:03:25.069 --> 04:03:29.569
Trezor's own API and Ledger's own API and so on and so forth. And these days,

2735
04:03:30.205 --> 04:03:37.104
with new hardware devices coming out that already support PSVT, that already support the animated, the UR spec,

2736
04:03:38.340 --> 04:03:46.359
We've already done it. So, like, there's almost no work for us to to do when we're going to add a new device now if if they're supporting

2737
04:03:47.075 --> 04:03:48.854
those standards. And

2738
04:03:49.875 --> 04:03:51.654
that makes it

2739
04:03:52.354 --> 04:03:54.614
a much more tenable proposition

2740
04:03:55.170 --> 04:04:04.815
for us as a company to add support for these things because we no longer have to ask ourselves the business question of, well, are enough people going to use it, that It's worth the

2741
04:04:05.435 --> 04:04:11.455
engineering hours and so on and so forth. So this is I think it's great for all companies in the space.

2742
04:04:12.051 --> 04:04:15.351
You adhere to the standard, you're more likely to get adopted.

2743
04:04:18.775 --> 04:04:21.575
Yeah. So maybe we have a chance to actually get,

2744
04:04:21.976 --> 04:04:28.950
adoption across, a lot of devices faster because we already have something like PSPT and PSPT version

2745
04:04:29.330 --> 04:04:37.175
2, which is now need to find out how we call these new fields, what they contain, and and find consensus on that. But at least, like, the main

2746
04:04:37.734 --> 04:04:38.234
transport

2747
04:04:38.774 --> 04:04:44.875
protocol you could call, PSPT is is there and is in use and shouldn't really fundamentally

2748
04:04:45.255 --> 04:04:46.075
need to change,

2749
04:04:46.840 --> 04:04:53.819
And and also on the libraries are there. So I hope at least on that front, we have have some some head start.

2750
04:04:54.824 --> 04:04:55.324
Yeah.

2751
04:04:55.705 --> 04:04:59.245
And from the the software side for, like, Spectro Desktop,

2752
04:05:00.505 --> 04:05:08.090
it'd be great to initially offer the different flavors. You know, these three approaches we've we've been talking about today, it's not the full fledged

2753
04:05:08.790 --> 04:05:09.930
madness flexibility

2754
04:05:10.390 --> 04:05:12.010
of a full tap tree,

2755
04:05:12.355 --> 04:05:16.295
but we could say, hey. Do you want flavor 1, flavor 2, flavor 3?

2756
04:05:16.596 --> 04:05:20.375
And at least in the beginning phases of this, like, we all know what that means.

2757
04:05:20.851 --> 04:05:25.590
We'll have you know, most or all the hardware wallets can support those those different flavors.

2758
04:05:27.170 --> 04:05:29.830
But then beyond that, if we want to support

2759
04:05:30.636 --> 04:05:31.375
fully flexible,

2760
04:05:31.995 --> 04:05:33.375
you know, decide your own

2761
04:05:33.835 --> 04:05:35.455
complex script however you like,

2762
04:05:35.995 --> 04:05:39.695
I get it as a Bitcoiner, it's hard for me to say

2763
04:05:40.220 --> 04:05:48.800
this open source Bitcoin project should put limits on what you're able to do. Right? That that just sounds that sounds wrong. That's not that's not how we do things.

2764
04:05:49.885 --> 04:05:55.425
But if we wanna throw open the doors to full flexibility, it it's gonna be foot guns 80% of the time.

2765
04:05:56.045 --> 04:05:58.780
So I I don't know how to solve that problem.

2766
04:05:59.800 --> 04:06:00.700
Yeah. I mean,

2767
04:06:02.360 --> 04:06:07.125
Casa is is kind of the opposite in that term, because we intentionally

2768
04:06:07.665 --> 04:06:08.405
do not

2769
04:06:08.865 --> 04:06:13.120
expose quite a few aspects of the Bitcoin protocol to our users,

2770
04:06:13.440 --> 04:06:14.260
because we

2771
04:06:14.561 --> 04:06:19.300
decided that there's too much potential for something to go wrong.

2772
04:06:19.601 --> 04:06:20.101
So

2773
04:06:20.535 --> 04:06:21.595
I kind of see

2774
04:06:22.055 --> 04:06:23.115
it from a software

2775
04:06:23.655 --> 04:06:24.875
development standpoint.

2776
04:06:25.815 --> 04:06:27.355
I see it as what we

2777
04:06:27.800 --> 04:06:37.905
need to do. 1st, we have to decide on standards. We have to figure out what best practices are for various things. And then we need to build those into the software.

2778
04:06:39.325 --> 04:06:41.585
And I see it as actually building

2779
04:06:42.045 --> 04:06:42.545
the

2780
04:06:43.005 --> 04:06:46.064
user experience as like guide rails

2781
04:06:46.681 --> 04:06:51.101
of like we, because we're so deep into this, like we see all the pitfalls,

2782
04:06:51.880 --> 04:06:53.101
but the average user,

2783
04:06:53.721 --> 04:06:55.740
they haven't been in the space that long,

2784
04:06:56.085 --> 04:06:59.145
or they just don't have the time to get that nerdy

2785
04:07:00.085 --> 04:07:04.185
to think of everything that could go wrong. So instead, we build the software

2786
04:07:04.610 --> 04:07:09.670
so that they can't veer off in one way or another. And like that,

2787
04:07:10.450 --> 04:07:13.910
that is, I think, is the best way that we as developers

2788
04:07:14.695 --> 04:07:15.995
can protect people.

2789
04:07:16.535 --> 04:07:19.355
Even in a system like this that values freedom,

2790
04:07:19.735 --> 04:07:22.875
and along with your freedom comes responsibility and comes

2791
04:07:23.560 --> 04:07:31.740
the potential for screwing up, there's a lot that we can do to guide users on, at least somewhat safer paths.

2792
04:07:32.665 --> 04:07:34.444
I I think you can do that as

2793
04:07:35.064 --> 04:07:40.444
a company offering a service. Yeah. Right? And and you're trying to offer certain guarantees that you can support.

2794
04:07:41.430 --> 04:07:50.250
But like I said, I think it's it's difficult for something like Spectra Wallet, something like Sparrow, Blue Wallet. Mhmm. If Bitcoiners want it to happen,

2795
04:07:50.615 --> 04:08:01.250
it's open source. Right? If we say no, fork the project, somebody else makes it happen. Yep. You know? So it it like I said, I don't I don't know what what's gonna happen in the next couple of years.

2796
04:08:02.670 --> 04:08:08.285
Yeah. Someone, mentioned this, this morning in the context of lightning that there's always some,

2797
04:08:08.825 --> 04:08:09.865
a phase of,

2798
04:08:10.265 --> 04:08:11.485
a lot of new possibilities.

2799
04:08:11.865 --> 04:08:14.319
So the design space grows, expands,

2800
04:08:14.939 --> 04:08:16.399
people are trying out stuff.

2801
04:08:16.859 --> 04:08:25.556
And then at later point, the you could see, okay, what are people actually using? What what, what what works, what doesn't work, and then you have its contraction

2802
04:08:26.256 --> 04:08:28.195
and back to defining new standards.

2803
04:08:28.575 --> 04:08:32.950
And it seems like we're we're in this expansion now because we we have this,

2804
04:08:35.110 --> 04:08:36.490
kit of new possibilities,

2805
04:08:37.590 --> 04:08:42.045
toolkit. We can, yeah, just do whatever. But, of course, if we already,

2806
04:08:42.585 --> 04:08:48.765
have some ideas what we we definitely should and should not do, that, yeah, would would help as well. Yeah.

2807
04:08:52.670 --> 04:08:57.970
So one of the things we've been talking about and talking around is the importance of building open source

2808
04:08:59.865 --> 04:09:01.325
and building for our users

2809
04:09:02.505 --> 04:09:08.530
and building towards a standard in the absence of a BIV. I'd like to actually talk to you the nuts and bolts how that process works with,

2810
04:09:09.570 --> 04:09:19.545
with tablet multisig because I think it'll be instructional for Bitcoiners in the future. This is not gonna be the last time that we run into this issue where there's something that all these different stakeholders need to coordinate on

2811
04:09:20.485 --> 04:09:25.145
and provide value to the users with in the absence of official firm technical guidance.

2812
04:09:25.820 --> 04:09:28.960
For me, at least, it started with reviewing BIP, 342,

2813
04:09:29.500 --> 04:09:41.235
going through it, and wrapping my head around Tapscopes and saying, well, okay. OBCheck multisig and OBCheck's multisig verifier out. And I think about that time, I got a GitHub notification from Pablo. So take it away from there, Pablo.

2814
04:09:44.110 --> 04:09:49.551
Yeah. You you mean should I recap what was happening from Sure. Just do it quick from the top. Let talk about

2815
04:09:50.245 --> 04:09:52.564
well, what were you thinking? What were your concerns? And

2816
04:09:53.045 --> 04:09:55.145
Yeah. Talk to you. Exactly. So,

2817
04:09:55.685 --> 04:10:03.670
so first, I had the discussion within my team because there are people that are much better with cryptography as as I am. So

2818
04:10:03.971 --> 04:10:07.330
I was, like, telling them we should we should have a have a look,

2819
04:10:08.050 --> 04:10:10.994
what what what how this music works and,

2820
04:10:11.715 --> 04:10:12.614
how these different,

2821
04:10:13.234 --> 04:10:14.215
different schemes

2822
04:10:15.234 --> 04:10:16.774
work, what what are the implications.

2823
04:10:17.360 --> 04:10:27.595
And at that point, we we realized that, the music, there are, like, several music standards, and we were a little bit confused because I always assumed it's just one thing.

2824
04:10:28.056 --> 04:10:28.955
And then we

2825
04:10:29.575 --> 04:10:36.149
realized that, there are different caveats to each other, and some of them were not, not being developed anymore.

2826
04:10:36.770 --> 04:10:38.689
And then the music too was,

2827
04:10:39.970 --> 04:10:44.444
seemed like it's the way forward, but it was not finalized at the time.

2828
04:10:45.145 --> 04:10:46.845
It was just finalized yesterday,

2829
04:10:47.944 --> 04:10:50.125
I thought. Drafted. Sorry. Sorry.

2830
04:10:50.641 --> 04:10:51.141
So

2831
04:10:52.080 --> 04:10:55.380
as as you can see, there are a lot of moving parts

2832
04:10:55.840 --> 04:11:00.505
and we didn't want to be the one to say, alright. We are going to,

2833
04:11:01.444 --> 04:11:01.944
go

2834
04:11:02.324 --> 04:11:12.760
this path forward because we, ironically, we don't even have the MultiSync in our product. I mean, the Trezor suite, we just support the MultiSync on devices because we want,

2835
04:11:13.399 --> 04:11:14.860
Trezor to be used in

2836
04:11:15.320 --> 04:11:16.540
institutional organizations,

2837
04:11:17.516 --> 04:11:21.915
and that's when we realized we should should have a discussion with,

2838
04:11:22.556 --> 04:11:24.495
with Jameson from Casa and

2839
04:11:24.851 --> 04:11:27.270
technical guys from, from Manchin Capital

2840
04:11:27.650 --> 04:11:28.230
because, ultimately,

2841
04:11:28.770 --> 04:11:29.531
this is,

2842
04:11:29.971 --> 04:11:31.270
or these are the, you know, environments

2843
04:11:32.051 --> 04:11:41.795
where treasures are being used in in in multi sig. And we wanted to know what were your thoughts about it. And we already had this hunch that

2844
04:11:42.630 --> 04:11:44.409
interactivity might be a huge problem.

2845
04:11:44.870 --> 04:11:48.409
But at the same time, we wanted to to hear if there is,

2846
04:11:49.029 --> 04:11:52.345
there is any solution. We are not, not seeing that.

2847
04:11:54.904 --> 04:11:58.364
And at that point, I think it lands on Jameson's desk. Jameson, take it from there.

2848
04:11:59.225 --> 04:12:02.160
Yeah. Well, you know, whenever we get pinged

2849
04:12:02.780 --> 04:12:05.280
by hardware manufacturers about

2850
04:12:05.900 --> 04:12:06.960
potential changes,

2851
04:12:08.140 --> 04:12:10.080
you always just freeze up for a second,

2852
04:12:10.905 --> 04:12:11.725
Especially because

2853
04:12:12.665 --> 04:12:14.845
as a multi vendor,

2854
04:12:15.225 --> 04:12:16.205
multi sig

2855
04:12:17.225 --> 04:12:17.725
wallet

2856
04:12:18.671 --> 04:12:19.171
software,

2857
04:12:19.710 --> 04:12:21.490
we have a lot of different dependencies.

2858
04:12:22.671 --> 04:12:27.490
And as I alluded to earlier about now it being a lot easier

2859
04:12:27.925 --> 04:12:32.024
to add support for new hardware if they're supporting the standards,

2860
04:12:33.125 --> 04:12:35.225
there are still additional complexities

2861
04:12:35.604 --> 04:12:36.104
where

2862
04:12:36.670 --> 04:12:41.010
once you're taking on the maintenance and support of that hardware,

2863
04:12:42.109 --> 04:12:43.810
if anything changes

2864
04:12:44.189 --> 04:12:44.689
about

2865
04:12:45.705 --> 04:12:48.925
how it just operates on a regular basis,

2866
04:12:49.386 --> 04:12:49.886
then

2867
04:12:50.266 --> 04:12:51.886
you may need to make changes

2868
04:12:52.505 --> 04:12:53.950
just to remain

2869
04:12:54.649 --> 04:12:56.989
in compatibility with it. So

2870
04:12:58.010 --> 04:12:58.670
we were

2871
04:12:59.609 --> 04:13:02.670
wanting to make sure that we're all on the same page

2872
04:13:03.096 --> 04:13:03.756
and hopefully

2873
04:13:04.455 --> 04:13:11.195
a worst case scenario would be like if Trezor decided to go down one standard and Ledger did another and Coldcard did another.

2874
04:13:12.050 --> 04:13:12.870
Because then

2875
04:13:13.410 --> 04:13:17.590
we would be kind of reverting back to now having all of this conditionalized

2876
04:13:18.450 --> 04:13:21.806
logic on our end that's going to be even harder to maintain.

2877
04:13:22.345 --> 04:13:22.845
So

2878
04:13:23.785 --> 04:13:28.525
always happy to work with people just to try to keep some semblance of sanity.

2879
04:13:31.630 --> 04:13:34.370
I also feel like this is a little bit of an easier

2880
04:13:36.270 --> 04:13:40.450
challenge to tackle. You know, you said, like, what could we learn from this for for future,

2881
04:13:41.314 --> 04:13:42.375
coordination issues?

2882
04:13:43.155 --> 04:13:46.854
I I mean, I feel like if you put 20 Bitcoin engineers in a room,

2883
04:13:47.234 --> 04:13:54.410
it'll be fairly straightforward to agree, like, hey. These these three options make sense. This level of priority makes sense.

2884
04:13:54.790 --> 04:13:57.645
Okay. Maybe the priorities are different for for the lightning case.

2885
04:13:58.204 --> 04:13:59.984
But it just doesn't seem like there's anything

2886
04:14:00.364 --> 04:14:01.345
hugely controversial

2887
04:14:01.725 --> 04:14:05.824
about, you know, putting putting your your, your flag in the ground.

2888
04:14:06.601 --> 04:14:07.900
Yeah. And I mean, also,

2889
04:14:08.440 --> 04:14:15.261
I think there may have been some questions early on of, like, do we need to actually do a BIP? Do we need to write something formal?

2890
04:14:15.865 --> 04:14:17.485
And I don't think this really

2891
04:14:17.865 --> 04:14:19.405
rises to the complexity

2892
04:14:19.865 --> 04:14:25.620
that's required for something formal. What we're almost really more talking about may turn into something,

2893
04:14:26.160 --> 04:14:26.980
in the future,

2894
04:14:27.920 --> 04:14:29.540
maybe like sort of like

2895
04:14:29.920 --> 04:14:31.195
script templates

2896
04:14:31.575 --> 04:14:37.435
or, you know, best practices for common use cases, common Bitcoin scripts.

2897
04:14:38.090 --> 04:14:42.750
I can see that becoming a thing, if we start to see a lot more crazy experimentation

2898
04:14:43.689 --> 04:14:44.189
where

2899
04:14:45.195 --> 04:14:47.056
it's only a matter of time before

2900
04:14:47.436 --> 04:14:52.016
some people do some really awesome but ultimately stupid things

2901
04:14:52.610 --> 04:14:53.190
and lose

2902
04:14:53.570 --> 04:14:54.070
coins.

2903
04:14:54.770 --> 04:14:55.750
Either they get

2904
04:14:56.130 --> 04:14:59.590
stolen or more likely they get locked up in perpetuity

2905
04:15:00.370 --> 04:15:00.870
because

2906
04:15:01.195 --> 04:15:03.215
of some poorly constructed script.

2907
04:15:03.675 --> 04:15:04.175
And

2908
04:15:05.275 --> 04:15:08.790
that's great, because we're going to learn from those experiences.

2909
04:15:09.649 --> 04:15:14.390
Hopefully, they'll get incorporated into our kind of common knowledge and best practices.

2910
04:15:14.930 --> 04:15:15.830
And then perhaps,

2911
04:15:16.450 --> 04:15:17.270
if this

2912
04:15:18.195 --> 04:15:24.135
space, this design space, continues to evolve, then we'll get to the point where it will make sense

2913
04:15:25.395 --> 04:15:26.056
to have

2914
04:15:27.150 --> 04:15:29.170
maybe a better version of wallet descriptors

2915
04:15:29.471 --> 04:15:31.730
or just a sort of

2916
04:15:32.190 --> 04:15:32.690
library

2917
04:15:33.150 --> 04:15:35.891
of recommended script templates. I mean, it's

2918
04:15:36.686 --> 04:15:39.025
kind of like hearkening back to the whole,

2919
04:15:40.125 --> 04:15:42.385
like EVM smart contract space.

2920
04:15:43.245 --> 04:15:46.570
They have standardized some of their like more common

2921
04:15:47.190 --> 04:15:52.410
types of smart contracts there, because their design space is so hugely complex.

2922
04:15:52.790 --> 04:15:53.690
There have been

2923
04:15:54.035 --> 04:15:55.255
innumerable catastrophes.

2924
04:15:55.875 --> 04:15:56.775
And if you're

2925
04:15:57.235 --> 04:16:01.735
going to roll your own smart contract, that's almost as risky as rolling your own crypto.

2926
04:16:02.101 --> 04:16:06.841
And and that's kind of what we're talking about here, when you're, you know, constructing more complex,

2927
04:16:07.620 --> 04:16:08.120
scripts.

2928
04:16:08.820 --> 04:16:11.775
Yeah. Almost have, like, a a taxonomy classification.

2929
04:16:12.315 --> 04:16:19.310
Like, here's our here's our basic script. Maybe you fiddle around the edges with it, but we kind of understand that species of it,

2930
04:16:19.869 --> 04:16:26.609
and then have have the, you know, other species documented and at least to give a kind of a common language and a a starting point.

2931
04:16:28.735 --> 04:16:44.710
Yeah. I really like the idea of sharing this, you know, best practices because there is a lot of lot of work being done but not shared, I would say. And a lot of experience didn't just somehow, you know, die somewhere. And

2932
04:16:45.824 --> 04:16:48.484
I think this is, something that should be really done.

2933
04:16:49.265 --> 04:16:49.765
Okay.

2934
04:16:50.864 --> 04:17:00.029
So we have less than 4 minutes left on the stage, which is a shame because I really want to grill Ali on music 1, music 2, and music DN just for my own benefit while I hadn't cornered.

2935
04:17:00.409 --> 04:17:03.790
But instead, I thought, why don't we go around and share

2936
04:17:04.405 --> 04:17:13.465
what you're most excited about about Taproom Multisig and what you're most, I don't wanna say, concerned about, but what you've got your eye on? The good, the bad, and the ugly.

2937
04:17:16.050 --> 04:17:18.790
So, yeah, just also catching up the

2938
04:17:19.250 --> 04:17:30.055
the previous question, what our plans are or, how we approached it. So, basically, we have, in L and D, a bit of a different situation because we are not going to use, the secp256k

2939
04:17:31.475 --> 04:17:34.070
library because we need everything to be in Go for,

2940
04:17:35.270 --> 04:17:39.845
the reproducible build. So we went ahead, Lalo went ahead and

2941
04:17:44.404 --> 04:17:44.904
we

2942
04:17:47.920 --> 04:17:53.380
And then he also created a PR for the music too, which, yeah, was by our

2943
04:17:53.760 --> 04:17:54.580
draft now.

2944
04:17:55.125 --> 04:18:07.850
And then we went ahead and end to end integrated these functionalities into LND and offered them as an RPC to to the developers. So with lnd 0 15, it will be possible to use, Tapscripts,

2945
04:18:08.470 --> 04:18:11.210
sign for Tap scripts, and also music too.

2946
04:18:11.535 --> 04:18:20.255
So we wanna put this, toolkit into as many developers' hands as possible so they can also try out and then help formulate these,

2947
04:18:21.739 --> 04:18:26.640
standards because, yeah, we might just not know yet what these standards all will look like.

2948
04:18:27.580 --> 04:18:34.015
So yeah. And so that's why I'm very excited about Taproot because we can actually give it to a lot of devs,

2949
04:18:34.635 --> 04:18:35.775
in in a very,

2950
04:18:36.475 --> 04:18:38.815
hopefully, touchable manner soon.

2951
04:18:39.810 --> 04:18:40.310
Yes.

2952
04:18:42.850 --> 04:18:43.350
Well,

2953
04:18:44.130 --> 04:18:45.029
one potential

2954
04:18:45.330 --> 04:18:48.310
construction that I've been thinking about for a while

2955
04:18:48.755 --> 04:18:51.495
is kind of building escape patches.

2956
04:18:52.595 --> 04:18:53.095
So

2957
04:18:53.555 --> 04:18:57.015
like we said, you can create this arbitrarily complex

2958
04:18:57.670 --> 04:19:02.729
tree of logical branches that you can go down to figure out

2959
04:19:03.909 --> 04:19:05.770
how you wanna spend your coins.

2960
04:19:08.306 --> 04:19:13.285
Well, you can that that means that now you're no longer locked into a single

2961
04:19:13.960 --> 04:19:15.500
security model or architecture,

2962
04:19:16.439 --> 04:19:18.380
that is just like these are the keys.

2963
04:19:19.319 --> 04:19:19.819
Instead,

2964
04:19:20.359 --> 04:19:24.455
you can you can put in conditions that will only activate

2965
04:19:25.155 --> 04:19:29.016
in other conditions. So like a relative time lock, that's like if

2966
04:19:29.476 --> 04:19:33.500
several years have gone by and these coins haven't been spent,

2967
04:19:33.960 --> 04:19:37.260
then perhaps we'll activate some other spending conditions.

2968
04:19:37.800 --> 04:19:39.900
And, you know, it's both

2969
04:19:40.814 --> 04:19:42.755
exciting and scary of

2970
04:19:43.535 --> 04:19:50.400
how you might be able to screw that up or make your security worse, but I think that there probably is a safe path,

2971
04:19:51.020 --> 04:19:52.400
to go down there to

2972
04:19:52.780 --> 04:19:56.301
to give people some additional peace of mind and,

2973
04:19:57.020 --> 04:19:57.615
you know,

2974
04:19:58.016 --> 04:20:01.315
other ways for them to be able to recover from certain,

2975
04:20:02.255 --> 04:20:02.755
catastrophes?

2976
04:20:04.175 --> 04:20:14.420
I'm gonna piggyback onto that for my one good thing and one bad thing. The good thing I think is what I'm looking forward to is increased privacy. Right now, it's a little bit too easy to look on chain and differentiate

2977
04:20:15.035 --> 04:20:15.535
a

2978
04:20:15.995 --> 04:20:20.575
open lightning connection or a casa multisig or an unchained multisig.

2979
04:20:21.195 --> 04:20:23.855
The idea of having the happy path being completely

2980
04:20:24.721 --> 04:20:28.660
indistinguishable from any other transaction and the escape hatches, you called it being

2981
04:20:29.440 --> 04:20:32.181
more visible, at least for now, when, CISA.

2982
04:20:33.445 --> 04:20:36.505
That's really what's most exciting to me. What's concerning to me is

2983
04:20:36.886 --> 04:20:46.190
the same thing you raised. This is aerospace engineering. If it's not broke, why fix it? We have a tremendous duty of care to our customers to make sure that funds aren't lost,

2984
04:20:46.785 --> 04:20:55.925
that they're not just getting the most benefit out of the latest technology upgrades, but that they they have the same peace of mind and security stability that they were able to depend on from OV Chip, while they still verify.

2985
04:20:57.641 --> 04:20:59.500
What I really like about

2986
04:21:00.520 --> 04:21:02.700
what's happening right now is that

2987
04:21:03.240 --> 04:21:03.605
this

2988
04:21:04.645 --> 04:21:18.735
this opens so many new options. And like you said, the design space is so great, so so great that other people are now thinking out, alright, so if the design space is so great, so how do we work in that new field? Because earlier,

2989
04:21:19.435 --> 04:21:20.735
when these updates,

2990
04:21:21.675 --> 04:21:31.360
were incremental, it was like, alright. So I just changed this little small thing here, and now it works out. For example, we had this xpubs which didn't encode,

2991
04:21:32.061 --> 04:21:35.920
how you should derive from them. So we came up with different prefixes.

2992
04:21:36.735 --> 04:21:39.555
But now, like, this doesn't really make sense,

2993
04:21:40.255 --> 04:21:45.235
because it's so much more complex. So the more descriptors were created, and

2994
04:21:46.660 --> 04:21:52.520
we we can't afford to do these small steps anymore and we just want to need to

2995
04:21:52.979 --> 04:21:54.215
hold back a little bit

2996
04:21:54.695 --> 04:21:56.955
back to the drawing board and design

2997
04:21:57.415 --> 04:21:58.555
new standards,

2998
04:21:59.175 --> 04:22:03.239
how we could effectively operate in these new options that we are,

2999
04:22:04.359 --> 04:22:08.540
working on. And PSBT 2 is one of one of such things as well because,

3000
04:22:09.535 --> 04:22:14.195
yeah, we we we have to start doing things right

3001
04:22:14.575 --> 04:22:18.195
because the the monkey patching is not, helping us anymore.

3002
04:22:20.921 --> 04:22:23.240
I'm just looking forward to the UI challenges. Yeah.

3003
04:22:23.801 --> 04:22:25.485
You know, I've I've spent the last 3 months,

3004
04:22:25.966 --> 04:22:27.505
trying to explain Bitcoin

3005
04:22:28.045 --> 04:22:42.580
to a potential new user on a 1 inch seed signer screen. Right? Like, what information do I need to convey? What can I hide? How do I explain it? Mhmm. And I think the the complexities that we've all been talking about, both, you know, having

3006
04:22:42.925 --> 04:22:54.880
the UI on something like the Spectre desktop side and then how that talks to and what you see on screen on your hardware device, I think it's gonna be incredibly difficult and just tons of fun.

3007
04:22:57.875 --> 04:23:05.814
Alright. And that is well over the time we have. I wanna thank all of our panelists, Keith, Jameson, Pavel, Ali, and I wanna thank you, the audience. You've been great.

3008
04:23:10.330 --> 04:23:11.470
Maybe you should clarify.

3009
04:23:12.250 --> 04:23:13.550
Hi. I'm Peter Todd.

3010
04:23:15.785 --> 04:23:20.265
Hi, everybody. So this is a panel on preventing attacks on Bitcoin, and,

3011
04:23:21.545 --> 04:23:26.850
we have a a nice group of people here with us. Luke Junior, the infamous, core dev,

3012
04:23:27.710 --> 04:23:29.810
Brian Bishop, the former CTO

3013
04:23:30.110 --> 04:23:31.410
of the bank,

3014
04:23:31.875 --> 04:23:40.135
as he calls it, and Jameson Lop, from Casa. The real Peter Todd. No. Okay. Okay. We'll stick with Peter Todd. Infamous troll.

3015
04:23:42.330 --> 04:23:43.150
So I guess,

3016
04:23:43.690 --> 04:23:44.910
you know, it's a start.

3017
04:23:46.250 --> 04:23:48.430
We're gonna talk a little bit about the development

3018
04:23:49.575 --> 04:23:52.716
Bitcoin Core, obviously, as the foundation

3019
04:23:53.335 --> 04:23:55.195
keeping all of this running and working.

3020
04:23:56.561 --> 04:23:59.860
There is potential for shenanigans there. And,

3021
04:24:01.120 --> 04:24:01.620
arguably,

3022
04:24:02.320 --> 04:24:04.980
past examples with things like,

3023
04:24:05.775 --> 04:24:06.516
Gavin Andresen,

3024
04:24:07.375 --> 04:24:09.155
Mike Hearn, and the the

3025
04:24:10.175 --> 04:24:11.635
whole Bitcoin XT,

3026
04:24:12.095 --> 04:24:13.235
block size wars

3027
04:24:13.721 --> 04:24:15.421
that, culminated in 2017.

3028
04:24:16.520 --> 04:24:18.940
So I guess, to start, I guess,

3029
04:24:19.561 --> 04:24:20.761
go this way, and,

3030
04:24:21.320 --> 04:24:23.261
what are each of your thoughts on

3031
04:24:23.945 --> 04:24:31.005
a way where you can see somebody involved in the development process kind of trying to pull a fast one and,

3032
04:24:31.870 --> 04:24:33.489
you know, make things go wrong.

3033
04:24:35.950 --> 04:24:37.810
But we saw it last year when

3034
04:24:38.189 --> 04:24:49.235
the Bitcoin community had decided to go with if they to deploy TETRAO, and then some developers decided, no. We're gonna do a speedy trial instead and basically ignore what the community had come to consensus on.

3035
04:24:52.020 --> 04:24:52.520
So,

3036
04:24:52.900 --> 04:24:58.520
if that wasn't, clearly audible to anybody, you're you're talking about the speedy trial deployment

3037
04:24:59.165 --> 04:25:01.265
with Taproot last year and the

3038
04:25:01.645 --> 04:25:05.104
complete refusal to consider bit 8 in the deployment?

3039
04:25:05.805 --> 04:25:09.070
Especially after the community had already come consensus on it.

3040
04:25:09.870 --> 04:25:10.931
So kind of like,

3041
04:25:12.270 --> 04:25:13.490
arguably, developers

3042
04:25:14.830 --> 04:25:16.130
stepping away from

3043
04:25:16.665 --> 04:25:17.485
community consensus

3044
04:25:17.945 --> 04:25:22.285
arguably and kind of doing their own thing in defiance of that? Right.

3045
04:25:22.745 --> 04:25:23.245
Okay.

3046
04:25:25.130 --> 04:25:29.070
Brian, what what's your your best brainstorm on how to kill Bitcoin?

3047
04:25:29.850 --> 04:25:31.870
Well, in the development process specifically,

3048
04:25:32.715 --> 04:25:37.694
I'm quite interested in deterministic builds and build signing and and things like that.

3049
04:25:38.074 --> 04:25:48.560
I think that's a really interesting area for preventing some attacks on Bitcoin, certainly not all. But, essentially, the idea is that if you are a user of Bitcoin, you have to download the Bitcoin software somewhere.

3050
04:25:49.020 --> 04:25:52.635
How do you verify that you're actually getting the real Bitcoin software?

3051
04:25:53.015 --> 04:25:54.395
How do you verify that

3052
04:25:54.854 --> 04:26:03.210
this is the one that everyone else is using? If you just download something from the first ad you see on Google, you might be getting something quite different from what everyone else is getting.

3053
04:26:03.910 --> 04:26:04.730
So with

3054
04:26:05.830 --> 04:26:08.170
both deterministic builds and also build signing,

3055
04:26:08.645 --> 04:26:16.471
And, specifically, it's multi party build signing. You're able to verify through techniques such as web of trust and others,

3056
04:26:17.011 --> 04:26:18.051
whether the,

3057
04:26:18.450 --> 04:26:21.190
code you are running is actually the one that,

3058
04:26:21.811 --> 04:26:24.950
you think you are running. I think that's a really interesting method.

3059
04:26:25.795 --> 04:26:30.695
If you don't do that, there are all sorts of interesting attacks that can be done against you.

3060
04:26:31.315 --> 04:26:32.056
For example,

3061
04:26:32.580 --> 04:26:39.080
you know, you you, travel to a country, not the United States. You have a hotel. You have Wi Fi,

3062
04:26:39.460 --> 04:26:41.479
and you're downloading Bitcoin software.

3063
04:26:42.035 --> 04:26:49.175
Well, if you are not using HTTPS, if you are not verifying hashes and signatures on on the binaries that you're downloading,

3064
04:26:49.500 --> 04:26:52.640
it is possible for attackers to intercept your connection

3065
04:26:53.260 --> 04:27:03.925
and replace it with a version of Bitcoin that maybe steals your coins or does other nefarious things, such as spy on you or something less drastic than stealing your coins, which are still problems.

3066
04:27:04.306 --> 04:27:06.806
So that's one of the attacks I find on the development

3067
04:27:10.960 --> 04:27:14.020
kind of the whole point of deterministic builds is just you have

3068
04:27:14.335 --> 04:27:15.715
each developer independently

3069
04:27:16.095 --> 04:27:28.950
build from the source code what what they assert is, like, the latest build, and everybody kind of just cross compares that and signs it so that you have all the independent machines used to build that software,

3070
04:27:29.330 --> 04:27:31.510
like, cross compare. And if anybody has

3071
04:27:31.875 --> 04:27:34.615
a result that deviates or something. Like, it's

3072
04:27:35.715 --> 04:27:38.375
not just trusting one source or claim to something.

3073
04:27:39.080 --> 04:27:51.175
The the fun part about that is knocking out areas of nondeterminism in your in your build process. Because if you have something that changes based off of the environment that you're building on, for example, a different operating system or or something,

3074
04:27:51.635 --> 04:27:58.750
then the binary that you're gonna generate at the end of the build process is gonna be different. So you need to eliminate all the sources of variability in the build environment.

3075
04:28:01.290 --> 04:28:03.631
Peter Todd, how how would you kill Bitcoin?

3076
04:28:04.386 --> 04:28:06.325
Well, I tell you how I'd kill bitcoin.

3077
04:28:06.865 --> 04:28:08.485
I had sowed discontent

3078
04:28:09.426 --> 04:28:09.926
throughout

3079
04:28:10.625 --> 04:28:11.525
the community,

3080
04:28:12.380 --> 04:28:12.880
throughout

3081
04:28:13.260 --> 04:28:14.640
the GitHub repositories.

3082
04:28:15.739 --> 04:28:16.720
I would

3083
04:28:17.340 --> 04:28:18.880
be so angry

3084
04:28:19.500 --> 04:28:25.345
about every little thing that I would make people afraid to suggest even the slightest change.

3085
04:28:25.725 --> 04:28:28.145
And then we would have to ossify

3086
04:28:28.990 --> 04:28:32.210
and we could no longer upgrade any of the protocols.

3087
04:28:32.590 --> 04:28:34.530
So it would take a very long time,

3088
04:28:34.910 --> 04:28:35.410
but

3089
04:28:35.950 --> 04:28:40.035
bitcoin would not be able to improve any more. And therefore,

3090
04:28:41.855 --> 04:28:43.556
it would become stagnant,

3091
04:28:44.016 --> 04:28:52.859
and people would move on. Ossification, good or bad. But but I mean, that's suspending Bitcoin. That that's not attacking Bitcoin, Peter. That that's defending it.

3092
04:28:53.160 --> 04:28:53.660
No.

3093
04:28:54.375 --> 04:28:58.635
That that is why it's the perfect attack is because many people consider it to be a defense.

3094
04:28:59.335 --> 04:29:02.055
I mean, that, you know, that kind of though ties into, like,

3095
04:29:02.455 --> 04:29:08.350
Luke's concerns with speedy trial last year with the entire taproot activation. I mean,

3096
04:29:09.529 --> 04:29:10.750
how how do you really

3097
04:29:11.455 --> 04:29:16.675
ascertain in a situation where you have the sense of disagreement and confrontation

3098
04:29:17.135 --> 04:29:18.435
in the development process,

3099
04:29:18.895 --> 04:29:20.274
like, the difference between

3100
04:29:21.450 --> 04:29:25.551
an attack on Bitcoin and just legitimate disagreement. Like,

3101
04:29:26.011 --> 04:29:30.030
where do you draw that line? How do you assess that? And and more importantly,

3102
04:29:31.115 --> 04:29:33.215
how do you react to that?

3103
04:29:33.595 --> 04:29:38.575
Like, if if you can't really ascertain whether something is an intentionally malicious action,

3104
04:29:40.570 --> 04:29:48.590
then you're you're kinda stuck in a rock and a hard place. Like, you engage in good faith and try to settle something that could be a dispute or in your reaction,

3105
04:29:49.455 --> 04:29:50.835
maybe actually inadvertently

3106
04:29:52.175 --> 04:29:53.795
become the attacker yourself.

3107
04:29:54.495 --> 04:30:00.971
Can you steel man why you're saying, speedy trial was an attack for for for Luke? Well, I mean, Luke, if,

3108
04:30:01.670 --> 04:30:03.270
you wanna take that one? Or

3109
04:30:03.750 --> 04:30:05.290
I'm just supposed to be moderating.

3110
04:30:05.830 --> 04:30:09.595
Is is oh, for the first part, it is minus

3111
04:30:10.095 --> 04:30:10.595
the

3112
04:30:11.095 --> 04:30:16.165
the ability to reach our software, which is presumably already come to consensus within the community.

3113
04:30:16.750 --> 04:30:17.409
And secondly,

3114
04:30:18.430 --> 04:30:23.649
the community had already decided to move forward with TeptuEdge with the 50 deployments.

3115
04:30:24.756 --> 04:30:28.535
And the developers who are pushing to the trial decided to essentially disregard

3116
04:30:29.155 --> 04:30:35.939
what the community had already determined and come to consensus on I'm just going to form something else without even getting community

3117
04:30:36.640 --> 04:30:37.140
behind.

3118
04:30:37.840 --> 04:30:42.100
That's right. We didn't actually start with the bay for Taproom, did we?

3119
04:30:43.425 --> 04:30:44.625
No. No. I mean, that's

3120
04:30:45.186 --> 04:30:46.005
the entire

3121
04:30:46.625 --> 04:30:52.939
process was really just arguing over activation once everything was finalized, and nobody could agree. And, I mean,

3122
04:30:54.760 --> 04:30:56.140
you know, to kinda throw

3123
04:30:56.680 --> 04:31:02.605
the idea out here in how to mitigate that if you view something like speedy trial as an attack,

3124
04:31:04.025 --> 04:31:07.726
the potential for user activated soft forks and

3125
04:31:08.090 --> 04:31:10.989
the viability of actually coordinating that and hitting

3126
04:31:11.609 --> 04:31:15.790
enough of a a level of adoption that that's actually gonna affect something.

3127
04:31:16.170 --> 04:31:19.984
It's not just gonna be a few people in the corner that everyone ignores.

3128
04:31:20.444 --> 04:31:23.505
Like, what are your guys' thoughts on that going forward versus

3129
04:31:24.125 --> 04:31:25.345
what happened in 2017?

3130
04:31:26.440 --> 04:31:28.540
Well, I mean, from your perspective,

3131
04:31:29.160 --> 04:31:30.221
does an attack

3132
04:31:31.480 --> 04:31:33.340
require malicious intent?

3133
04:31:33.925 --> 04:31:35.385
Because I think in hindsight,

3134
04:31:36.244 --> 04:31:38.585
you can certainly say that certain things

3135
04:31:39.125 --> 04:31:42.265
were attacks on various principles

3136
04:31:42.830 --> 04:31:46.050
that most of us hold dear when it comes to bitcoin.

3137
04:31:46.670 --> 04:31:50.610
But really, the problem was that just some of those attackers

3138
04:31:51.305 --> 04:31:53.085
simply didn't hold those same principles.

3139
04:31:54.665 --> 04:31:57.005
Well, I mean, that's a a sticky question.

3140
04:31:58.024 --> 04:32:00.205
Look at Gavin Andresen. I mean,

3141
04:32:01.050 --> 04:32:02.029
was he an intentionally

3142
04:32:02.410 --> 04:32:07.630
malicious actor or just had a very different idea of where Bitcoin should go?

3143
04:32:08.605 --> 04:32:10.545
Well, has he disavowed the

3144
04:32:11.085 --> 04:32:11.585
signature

3145
04:32:12.045 --> 04:32:13.585
that he claimed was real?

3146
04:32:14.045 --> 04:32:23.029
Has that happened or not? I'm actually not sure. I a lot of people just kind of quietly stopped mentioning that and didn't really

3147
04:32:23.409 --> 04:32:25.109
come out and say they were wrong.

3148
04:32:27.875 --> 04:32:29.814
Well, that was an interesting attack.

3149
04:32:30.354 --> 04:32:33.575
And, you know, if if you take the story at face value,

3150
04:32:33.930 --> 04:32:37.949
the attack here was someone, said that, hey. I can produce the signature

3151
04:32:38.250 --> 04:32:40.909
for a certain key. And I'm gonna prove it to you,

3152
04:32:41.765 --> 04:32:44.185
and we're gonna go to the store first and buy some hardware.

3153
04:32:44.564 --> 04:32:50.345
And we're going to we're gonna pick out a box on on the shelf, and you're gonna you're gonna help there.

3154
04:32:50.761 --> 04:32:58.700
Actually, I think part of the attack was that he was not there. It was just, hey, here's a new box of a new computer and new laptop. We're gonna put in some software to do signature verification,

3155
04:32:59.245 --> 04:33:01.985
and this is going to prove that I am in control of this key.

3156
04:33:03.325 --> 04:33:05.824
Now, apparently, what happened was

3157
04:33:06.125 --> 04:33:07.904
there was software that was installed

3158
04:33:08.270 --> 04:33:09.969
on the laptop that actually,

3159
04:33:11.150 --> 04:33:17.809
I believe it had a bug, a very subtle bug that when you look at the code and you're glancing at it, you're like, yeah. This is signature verification.

3160
04:33:19.057 --> 04:33:19.875
But anyway,

3161
04:33:20.416 --> 04:33:22.516
because of the way the bug in this code worked,

3162
04:33:22.896 --> 04:33:26.516
the signature verification was always gonna say, yes. It is a valid signature.

3163
04:33:26.980 --> 04:33:28.920
And so that was a very interesting attack,

3164
04:33:29.780 --> 04:33:33.000
and we haven't heard much since from that particular individual.

3165
04:33:33.756 --> 04:33:35.355
Yeah. I mean, I I do believe that,

3166
04:33:36.396 --> 04:33:40.096
Thomas from Electrum actually checked the download bugs,

3167
04:33:40.557 --> 04:33:41.535
from his server

3168
04:33:42.121 --> 04:33:47.980
and found no downloads of of genuine Electrum software when Craig supposedly

3169
04:33:48.361 --> 04:33:49.980
showed the signature to Gavin.

3170
04:33:50.535 --> 04:33:53.115
Interesting. I didn't know he kept logs. Good to know.

3171
04:33:54.055 --> 04:33:54.855
Yep. But,

3172
04:33:55.734 --> 04:33:56.875
I don't know. I think

3173
04:33:58.740 --> 04:33:59.480
from a,

3174
04:33:59.940 --> 04:34:01.640
like, class of attack

3175
04:34:02.020 --> 04:34:02.520
standpoint,

3176
04:34:03.860 --> 04:34:05.080
it seems like

3177
04:34:05.380 --> 04:34:05.880
social

3178
04:34:06.340 --> 04:34:07.400
slash mimetic

3179
04:34:07.860 --> 04:34:08.360
slash

3180
04:34:08.846 --> 04:34:09.346
narrative

3181
04:34:11.404 --> 04:34:13.105
have much greater potential,

3182
04:34:13.885 --> 04:34:15.506
or at at the very least,

3183
04:34:16.460 --> 04:34:21.440
it's more difficult for me to reason about how to defend

3184
04:34:21.740 --> 04:34:22.640
against them.

3185
04:34:23.266 --> 04:34:25.045
It's a much bigger gray area,

3186
04:34:25.824 --> 04:34:33.871
whereas we can talk about all types of technical attacks. And usually, the defenses against various technical attacks are very logical and straightforward.

3187
04:34:34.650 --> 04:34:36.270
But this much more fuzzy

3188
04:34:37.050 --> 04:34:37.550
social

3189
04:34:38.090 --> 04:34:39.070
attack vector

3190
04:34:40.465 --> 04:34:44.244
is something you just sort of have to to deal with as it comes.

3191
04:34:44.945 --> 04:34:50.480
You know, I was recently, in Austin, Texas going to some Bitcoin conferences related to, like, South Buy and everything.

3192
04:34:51.020 --> 04:35:09.240
And I have to say, I was really impressed by the number of new developers that I met there that introduced themselves to me as anonymous developers. You know, they gave me their pseudonym, you know, and they and I asked them, oh, do you do you just use that? And they they said, yeah. And the reason for that is as a Bitcoin developer, maybe that's the optimal strategy.

3193
04:35:09.860 --> 04:35:13.960
If people don't really know who you are and you don't maybe you don't even attend conferences.

3194
04:35:14.416 --> 04:35:16.996
Maybe that helps protect it. Maybe that helps protect Bitcoin.

3195
04:35:17.695 --> 04:35:19.156
Yeah. That is

3196
04:35:19.615 --> 04:35:25.719
something I hope to see a lot more of going forward. I mean, I I know you wanted to kinda touch on this, but the,

3197
04:35:27.780 --> 04:35:29.240
like, insane litigation

3198
04:35:29.620 --> 04:35:30.920
from people like,

3199
04:35:31.299 --> 04:35:32.074
Craig Wright,

3200
04:35:32.955 --> 04:35:36.635
directed at a bunch of core developers and the, legal defense fund that Jack,

3201
04:35:38.154 --> 04:35:39.693
graciously set up recently.

3202
04:35:40.900 --> 04:35:41.400
That

3203
04:35:42.460 --> 04:35:42.960
is

3204
04:35:44.260 --> 04:35:49.640
without some kind of mechanism to finance legal defense against things like that,

3205
04:35:50.266 --> 04:35:55.326
that could very easily just burn out and push developers out of the space because

3206
04:35:56.105 --> 04:36:04.440
are you gonna wanna be here and contribute to Bitcoin if you just have to burn money constantly to defend yourself against ridiculous litigation?

3207
04:36:05.219 --> 04:36:05.719
Well,

3208
04:36:06.020 --> 04:36:07.000
that's an interesting

3209
04:36:07.379 --> 04:36:09.479
point because I I think

3210
04:36:10.645 --> 04:36:12.426
the the litigation against COBRA,

3211
04:36:13.605 --> 04:36:17.545
shows that even being anonymous is not necessarily protection

3212
04:36:17.846 --> 04:36:23.330
against a legal attack. Mhmm. Well, you know, I I suppose COBRA could have

3213
04:36:24.111 --> 04:36:26.451
stayed out of the whole thing, you know, never,

3214
04:36:27.186 --> 04:36:30.404
touched any of the court orders or

3215
04:36:30.945 --> 04:36:32.086
hearings or whatever.

3216
04:36:34.441 --> 04:36:36.861
But at at some point, I guess because

3217
04:36:37.640 --> 04:36:43.566
they're operating a website, you know, that is a property that could be seized or or otherwise

3218
04:36:44.006 --> 04:36:48.826
And there's a name tied to it somewhere in the registrar even if it's not public.

3219
04:36:49.205 --> 04:36:49.705
Yeah.

3220
04:36:51.299 --> 04:36:56.680
But I mean yeah. Like, that that is a a huge way that I think you could slowly

3221
04:36:57.139 --> 04:36:57.639
erode

3222
04:36:58.064 --> 04:37:05.710
Bitcoin's ability to to deal with, you know, the shortcomings that it has. Like, actually solve problems like privacy scalability if

3223
04:37:06.271 --> 04:37:11.330
developers don't wanna work on it because you have to worry about the crazy egomaniac

3224
04:37:11.791 --> 04:37:14.932
just throwing 1,000,000 of dollars at you in court.

3225
04:37:15.545 --> 04:37:16.525
Like, that

3226
04:37:16.984 --> 04:37:18.924
you know, death by a 1,000 cuts.

3227
04:37:19.465 --> 04:37:21.885
Well, that's partly a conundrum, which is bitcoin.org,

3228
04:37:22.504 --> 04:37:24.125
you know, is someone's property,

3229
04:37:24.750 --> 04:37:25.410
and it's

3230
04:37:26.190 --> 04:37:28.049
where people go to learn about Bitcoin.

3231
04:37:28.430 --> 04:37:33.170
But at the same time, though, you know, maybe there shouldn't be a single place called bitcoin.org

3232
04:37:33.916 --> 04:37:35.615
where people can go learn about Bitcoin.

3233
04:37:35.996 --> 04:37:37.695
But when you do that, the conundrum

3234
04:37:38.076 --> 04:37:46.230
is suddenly there's all this room for fraudsters to attack people by saying, no. My website's, you know, the main Bitcoin one. Maybe I call it bitcoin.com,

3235
04:37:47.410 --> 04:37:48.150
for example.

3236
04:37:49.650 --> 04:37:51.766
Yeah. I mean, it's All I know is bitcoin.page

3237
04:37:52.465 --> 04:37:56.725
is the one and only official Bitcoin website. Is that yours?

3238
04:37:57.750 --> 04:37:58.570
Could be anybody's.

3239
04:37:58.950 --> 04:37:59.450
Oh,

3240
04:38:00.790 --> 04:38:03.610
okay. I mean, you know, all of this kinda just keeps

3241
04:38:04.070 --> 04:38:05.645
slowly sliding in the direction

3242
04:38:12.125 --> 04:38:15.559
ask you guys a I'm gonna ask you guys a question

3243
04:38:16.020 --> 04:38:20.920
and hear your thoughts on whether or not this constitutes an attack. And if it does,

3244
04:38:21.299 --> 04:38:23.398
like, how do you think it should be dealt with?

3245
04:38:25.395 --> 04:38:25.895
This

3246
04:38:26.275 --> 04:38:30.615
this growing narrative over maybe the last 2, 3 years

3247
04:38:31.760 --> 04:38:33.700
of Bitcoin isn't money.

3248
04:38:34.160 --> 04:38:36.180
It's not competing with the dollar.

3249
04:38:36.719 --> 04:38:39.780
It's just a a financial asset or a collateral,

3250
04:38:40.205 --> 04:38:44.465
and that's how people should look at it instead of looking at it as money.

3251
04:38:45.404 --> 04:38:46.625
And, like,

3252
04:38:46.926 --> 04:38:49.824
is pushing a narrative like that an attack on Bitcoin?

3253
04:38:50.430 --> 04:38:54.850
Like, trying to just push and brainwash people into not directly

3254
04:38:55.229 --> 04:38:56.049
using it,

3255
04:38:56.750 --> 04:38:59.570
you know, as a native value transfer network

3256
04:39:00.736 --> 04:39:07.475
and trying to just keep framing this narrative and get people thinking, like, no. No. You just park this somewhere with a custodian

3257
04:39:07.950 --> 04:39:17.936
and get a loan against it in dollars. Or, like, don't think about competing directly as a a money or a payment rail. Just think of it purely as number go up

3258
04:39:18.736 --> 04:39:20.436
and and that's it. Like,

3259
04:39:20.736 --> 04:39:21.875
is that an attack?

3260
04:39:22.496 --> 04:39:24.916
I don't think I would classify it as a tag.

3261
04:39:25.670 --> 04:39:28.010
Even if you look at Bitcoin as money,

3262
04:39:28.549 --> 04:39:32.410
that's just how these people are deciding to use or not use their money.

3263
04:39:33.275 --> 04:39:35.135
Yeah. I mean, I think it makes more sense

3264
04:39:36.395 --> 04:39:39.455
if you're positive rather than negative about the narratives.

3265
04:39:39.756 --> 04:39:40.256
So

3266
04:39:41.100 --> 04:39:48.158
if you want yield generating asset or whatever and that's your use case, then go for it. But if you start being negative

3267
04:39:48.756 --> 04:39:58.910
and you're saying, no, you can't use it as a currency or as a money or whatever, I mean, the rest of the the users on the network who do want that are just going to ignore you

3268
04:40:00.010 --> 04:40:00.670
or perhaps

3269
04:40:01.209 --> 04:40:06.510
swarm upon you on Twitter, depending on if you're in the small minority.

3270
04:40:08.324 --> 04:40:11.225
This is, I guess, the mimetic warfare

3271
04:40:13.045 --> 04:40:16.266
and why social media can be a very

3272
04:40:17.630 --> 04:40:23.090
negative place to hang out, if you're trying to push views that are controversial.

3273
04:40:23.390 --> 04:40:25.605
And they're going to be controversial if you're

3274
04:40:33.285 --> 04:40:34.986
Bitcoin has a very impressive

3275
04:40:35.830 --> 04:40:39.209
social immune system that has been developed. And

3276
04:40:39.510 --> 04:40:42.010
if you try to coerce Bitcoiners,

3277
04:40:42.310 --> 04:40:44.730
try to change the protocol unilaterally,

3278
04:40:45.430 --> 04:40:51.514
the immune system will spit you out and reject you. And that's just a really fascinating social phenomenon.

3279
04:40:52.135 --> 04:40:54.270
Now it's just really interesting to see that in process.

3280
04:40:55.070 --> 04:40:58.049
It might actually be one of Bitcoin's great assets, really,

3281
04:40:58.350 --> 04:41:07.584
is is this just layer, this immune system of people that defend Bitcoin voluntarily. You know? And they're not coordinated at all, but it's all people who believe in Bitcoin.

3282
04:41:09.260 --> 04:41:10.959
Is it an attack on Bitcoin

3283
04:41:11.260 --> 04:41:11.920
to donate

3284
04:41:12.459 --> 04:41:14.879
$5,000,000 to Greenpeace with stipulations

3285
04:41:15.580 --> 04:41:18.000
of exactly how it must be spent in

3286
04:41:18.324 --> 04:41:18.824
performing

3287
04:41:20.324 --> 04:41:21.625
a social narrative?

3288
04:41:22.244 --> 04:41:23.924
Yes. I I would say so.

3289
04:41:25.045 --> 04:41:26.404
You know, that that's actually

3290
04:41:27.510 --> 04:41:30.890
if you wanna get into that real quick, the last couple minutes,

3291
04:41:32.070 --> 04:41:36.969
I see the potential for that very quickly to spiral into government lobbying.

3292
04:41:37.656 --> 04:41:39.035
Sure. Legal bills,

3293
04:41:39.416 --> 04:41:39.916
regulations,

3294
04:41:41.096 --> 04:41:41.596
and,

3295
04:41:43.016 --> 04:41:45.390
you know, that kinda gets into a sticky territory

3296
04:41:51.070 --> 04:41:51.570
laptop.

3297
04:41:52.895 --> 04:41:53.715
If jurisdictions

3298
04:41:54.094 --> 04:41:55.555
really just start dominoing

3299
04:41:56.254 --> 04:41:57.475
in, say, the West

3300
04:41:58.014 --> 04:41:58.514
and,

3301
04:41:59.455 --> 04:42:00.290
you know, enforcing

3302
04:42:07.654 --> 04:42:09.434
take that off grid and disappear,

3303
04:42:10.135 --> 04:42:11.594
to do that in secret.

3304
04:42:12.773 --> 04:42:15.273
I I for I think it was a a Chinese

3305
04:42:17.030 --> 04:42:22.090
group of researchers, but I I actually saw a paper last year. We're just looking at the modulation

3306
04:42:22.790 --> 04:42:25.610
along the power lines from the grid to your house.

3307
04:42:26.295 --> 04:42:27.994
They can see that you're running,

3308
04:42:28.375 --> 04:42:29.115
an ASIC

3309
04:42:29.574 --> 04:42:32.635
just based on the unique signature of that over the wire.

3310
04:42:33.174 --> 04:42:33.674
So

3311
04:42:35.361 --> 04:42:37.541
how would we react in that type of situation?

3312
04:42:38.320 --> 04:42:40.580
The passing would be a lot of mine

3313
04:42:41.201 --> 04:42:42.660
who are already on solar,

3314
04:42:43.717 --> 04:42:45.016
not exposed to the grid.

3315
04:42:45.797 --> 04:42:49.576
And if they have really bad, there are other alternatives like

3316
04:42:59.064 --> 04:42:59.805
I mean,

3317
04:43:00.264 --> 04:43:05.004
does anyone up here on stage actually think we could pull off a proof of work change,

3318
04:43:05.785 --> 04:43:07.300
get consensus on that?

3319
04:43:12.102 --> 04:43:19.967
If the situation was dire enough, I think we could do a proof of work change. If the whole chain is halted, if there is some sort of catastrophe,

3320
04:43:20.506 --> 04:43:24.605
if SHA-two fifty six is broken, I think we could come together to figure out a solution.

3321
04:43:25.260 --> 04:43:28.959
But it's hard. And, you know, it's very unlikely that that would happen.

3322
04:43:30.620 --> 04:43:33.840
I mean, you you have the problem of if even if we

3323
04:43:34.645 --> 04:43:38.023
wind up with consensus that something's wrong with shot 256,

3324
04:43:38.324 --> 04:43:38.824
then

3325
04:43:39.523 --> 04:43:41.145
what do we replace it with?

3326
04:43:41.740 --> 04:43:44.000
And that's the whole next can of worms.

3327
04:43:45.740 --> 04:43:46.240
Obviously

3328
04:43:46.700 --> 04:43:50.880
a quantum proof algorithm that will make everybody happy.

3329
04:43:53.035 --> 04:43:53.695
You know,

3330
04:43:54.234 --> 04:43:55.535
there's going to be

3331
04:43:55.996 --> 04:44:00.016
challenges over the long term. I'm sure there will be some

3332
04:44:00.590 --> 04:44:01.090
insane

3333
04:44:02.110 --> 04:44:02.610
attacks

3334
04:44:02.910 --> 04:44:03.410
or

3335
04:44:03.950 --> 04:44:06.690
just weaknesses that become uncovered

3336
04:44:06.990 --> 04:44:08.209
over the decades.

3337
04:44:09.936 --> 04:44:15.076
You know, kind of I was joking about the quantum computing stuff, but

3338
04:44:15.455 --> 04:44:16.195
it is

3339
04:44:16.656 --> 04:44:19.236
likely that at some point in the far future,

3340
04:44:19.840 --> 04:44:21.620
we will have to have discussions

3341
04:44:21.920 --> 04:44:27.299
around what to do with the really, really early pay to, pubkey coins

3342
04:44:27.936 --> 04:44:29.314
And like whether or not

3343
04:44:29.615 --> 04:44:30.596
they should be somehow,

3344
04:44:31.055 --> 04:44:32.035
like, protected

3345
04:44:32.895 --> 04:44:41.890
or whether we should just consider it to be like a new form of mining if people start to be able to crack them. You know, it's it's an interesting long term,

3346
04:44:42.430 --> 04:44:42.930
issue.

3347
04:44:44.775 --> 04:44:49.275
Might not. Might not. Uh-oh. Uh-oh. Did the mic die?

3348
04:44:53.250 --> 04:44:54.871
Good. There was no stage.

3349
04:44:55.810 --> 04:44:59.750
Might also note that, it's not just the very old beta Puff TV

3350
04:45:00.555 --> 04:45:05.135
of coins anymore. All of them capture points are also similarly effective.

3351
04:45:07.510 --> 04:45:08.250
Well, I mean,

3352
04:45:08.870 --> 04:45:10.250
honestly, I don't I don't

3353
04:45:11.270 --> 04:45:14.889
think that should be looked at any differently than an exchange hack.

3354
04:45:16.705 --> 04:45:20.084
Somebody gets those coins and they're able to confirm them in a block.

3355
04:45:21.264 --> 04:45:22.725
That's really a fundamental,

3356
04:45:24.500 --> 04:45:25.320
you know,

3357
04:45:25.940 --> 04:45:33.480
quality of Bitcoin to go tinkering with just because of being nervous that these many coins were just acquired by

3358
04:45:33.904 --> 04:45:39.844
some nefarious actors. That's fine. We'll find them when they start publishing their rap videos about, how gangster they are.

3359
04:45:40.943 --> 04:45:42.885
Seriously, check them out. They're awesome.

3360
04:45:44.900 --> 04:45:51.814
And that's why it's relevant that it also affects Kepler coins is that this could potentially be nearly all points from Bitcoin at some point.

3361
04:45:53.334 --> 04:45:54.555
Well, you know, actually,

3362
04:45:56.135 --> 04:45:56.635
factoring,

3363
04:45:57.334 --> 04:45:59.115
the discussion on tap redesign,

3364
04:46:01.940 --> 04:46:03.240
I was very hesitant

3365
04:46:04.660 --> 04:46:06.041
when when that first

3366
04:46:06.420 --> 04:46:08.840
got pitched just the the raw pub key.

3367
04:46:09.300 --> 04:46:11.764
But the reality is when you look at

3368
04:46:12.064 --> 04:46:13.604
on chain address reuse

3369
04:46:14.225 --> 04:46:17.824
and then also think about the fact that any kind of light wallet

3370
04:46:18.240 --> 04:46:23.940
I mean, even if you have a wallet, you're connecting to your own full mode. Like, there's still some network communication

3371
04:46:24.400 --> 04:46:31.764
that could get played with that's just passing the master pub key back and forth in most wallets cases. So

3372
04:46:32.865 --> 04:46:34.164
in some way or another,

3373
04:46:34.730 --> 04:46:48.174
most coins already do have their public key exposed either through address reuse or just the balance fetching mechanism on the back end. Oh, yeah. I mean, fundamentally different from exchange hack where it's just a minority of coins that are effectively different from exchange hack where it's just a minority of coins that are

3374
04:46:48.875 --> 04:46:51.934
But, I mean, if if you still have your coins in a

3375
04:46:52.234 --> 04:46:53.854
a raw pub key output

3376
04:46:54.360 --> 04:46:55.580
from 2,009,

3377
04:46:56.120 --> 04:46:56.620
2010,

3378
04:46:56.920 --> 04:46:59.180
and you're not moving them at some point,

3379
04:46:59.639 --> 04:46:59.879
all

3380
04:47:01.080 --> 04:47:05.074
you know, those coins are lost. Those those people don't have the keys anymore.

3381
04:47:05.615 --> 04:47:12.969
Possibly, though, and you you never know what assumptions you may make. Though kind of going back to classes of attacks on bitcoin,

3382
04:47:13.590 --> 04:47:14.809
and related to this,

3383
04:47:16.389 --> 04:47:20.875
is it an attack on bitcoin if you build a wallet that intentionally

3384
04:47:21.975 --> 04:47:29.355
does not follow good practices? Like, there are still wallets out there that are only one single address. They won't even do deterministic

3385
04:47:30.170 --> 04:47:30.990
address generations,

3386
04:47:31.610 --> 04:47:36.350
and and thus, all the money keeps coming in and out of the same address, thus exposing the users,

3387
04:47:36.970 --> 04:47:41.346
to to this issue. Well, it's definitely an attack on Bitcoin users. Yeah.

3388
04:47:42.445 --> 04:47:47.025
Mhmm. But didn't didn't we decide backstage, though, attacking Bitcoin users is attacking Bitcoin?

3389
04:47:50.900 --> 04:47:53.139
Alright. So I guess we're, down to the last,

3390
04:47:53.780 --> 04:47:54.580
20 seconds.

3391
04:47:55.059 --> 04:47:57.295
Anybody have, some smart ass comments,

3392
04:47:57.695 --> 04:48:01.475
your your one trick to to guarantee Bitcoin's invincibility?

3393
04:48:02.334 --> 04:48:05.690
Bitcoin is the greatest bug bounty program of all time. Good luck.

3394
04:48:17.096 --> 04:48:17.596
Alrighty.

3395
04:48:25.262 --> 04:48:26.480
Cool. My clock started.

3396
04:48:27.182 --> 04:48:43.680
Hey. My name's Lalu, so you may know me as Rose Pfeiff. I'm the CTO of Lightning Labs. I'm here to talk to you about Taro. A few different Taro, so we'll get into kind of like this Taro, the one that we release a little bit later, and then kind of go from there, kind of explain kind of the high level exactly what it is, the motivation, how things work, and also kind of how it's different from other solutions. But now we can get into

3397
04:48:44.960 --> 04:48:46.740
I don't know if the spine is clicking.

3398
04:48:47.281 --> 04:48:47.781
Alright,

3399
04:48:52.215 --> 04:50:41.355
Here we go. So first, I'll go into exactly what is tarot itself, how actions created in structures, and then how to transfer to them, which is a bigger thing as far as the way it works generally, what are the universe, and obviously the most important thing, kind of like how does it integrate with the Light network and stuff. Right? So first, we'll start, exactly what is Taro. Right? You know, here's the little shout out. So Taro is actually a root vegetable with a tap root structure. It's eaten across many parts of the world, you know, Africa, South America, Asia. It's actually one of the most, like, ancient kind of, like, staple crops going back 1,000 and 10th of 1000 years. That bottleneck was actually something from, like, 6th century. It's a great source of, you know, manganese, potassium, and also fiber. So here's, you know, for the Bitcoin vegans, Bitcoin vegetarians. Actually, Nigeria is one of the largest producers of taro in the world as well too. On the right, you can kinda, like, see some different depictions. That's the actual taro plant, you know, these chips here. And bottom line, it's something I eat, you know, way back in the day. Like, it's kind of like yam, I would call it Nigeria, and egg, that's like a big meal, basically, kind of like a very easy thing to do, and it's really tasty as well too. But, I guess you maybe you mean, the other tarot. Right? So what tarot is, it's basically kind of like a new protocol we developed at Lightning Labs, you know, over the past few months. What it is, it basically uses tack which kind of like allow individuals to issue assets, you know, on the actual Bitcoin chain itself. Right? And does it in a cool way because, like, given that you use the tap root structure, whenever you see an output, you don't actually know what's actually, you know, held in the asset itself. But But also, it actually uses the Taproot trip tree to basically allow you to commit to effectively an unbound amount amount of assets in a single, in a single output, which is really cool. And one of the most important things is that, like, the protocols oriented, so it can actually be transferred over the, like, network. Right? So for example, now I can basically I can in theory, paste someone on Bitcoin, basically, with my own, like, mining wallet. Maybe they receive, you know, something like a l USD or USD on the other side as well too. So this is a really big step from kind of, like, you know, moving forward. Bitcoin is actually as far as kind of, like, Bitcoin being the massive project center for all of the other, you know, currencies and assets of the world as well too. Then all of a sudden, like, everything is still Bitcoin center, but at the edges, people can kinda opt into these new protocols as well too. I think it's really gonna bring, you know, expand the network effects of Bitcoin itself, also bringing more and more people into Bitcoin. And also, like, a lot of them, like, kinda, like, either way into maybe they're initially doing the stable coin, and beyond that, they get into more into the core Bitcoin itself. But now let's start to dive into some of the details.

3400
04:50:41.710 --> 04:50:45.890
So what is Taro? Right? So it kinda like has, like, a cool background, you know, in addition to being, you know, a nutritious

3401
04:50:46.271 --> 04:51:56.709
vegetable. It's the the taproot asset representation overlay. Right? What's an overlay? Right? So what we mean by by asset overlay is basically is basically something called embedded consensus. Right? Embedded consensus. So rather than kind of, like, you know, including all the data executives in the chain, like, think like, you know, Omni and counterpart things like that, which kind goes to chain itself. So we basically commit to kind of, like, hash of data into the chain itself. Right? And we say better con consensus because we basically, okay, like, we're gonna, like, make up rules as far as how things work and then interpret them and kind of, like, add additional validation logic and and alongside this as well too. So effectively, it's using Bitcoin kind of, like, most secure these are, like, blockchain in the world as a publication system, basically. I'd commit the data to the chain that we interpret ourselves. This is really cool because all of a sudden, now we don't have to worry about double spends or, you know, we need we don't need a consensus network. We're gonna need a proof stake or else. We just use the Bitcoin as is today. Right? And the one kinda like a little trick, you know, in tower, basically, like, rather than actually commit out to all the data on the chain, outright, we actually and set commits to things in the the script tree itself. Right? And as you see in a little bit here, this this is really cool because this kind of, like, you know, has, like, a very nice structured commitment format but allows it to be, very sensible as well too. And so Tower supports 2 different types of assets. One is basically normal assets, like maybe things are divinibles. Maybe these are things like, you know, cool points, beef bucks, or, you know, USD, not really of realms. Also supports collections, which are kind of like, you know, like a limited edition, kind of a collectible asset. And maybe it's like a holographic beep beep star card, maybe it's a baseball card, things like that as well too. So you can basically do both of those things, you know, within, the actual protocol itself, which is pretty cool.

3402
04:51:57.406 --> 04:53:25.695
So, people ask me exactly, you know, why Taproot? Is it actually needed for Taproot? Is it just, like, a marketing thing? You know, it's actually you know, it's it's essential in my opinion. Right? So some people have in the past, something called paid contract password p 2 s h. Right? The way it worked, it basically kind of like you have, like, a key, then you have some data, and you basically, you know, high level, you don't get lost in the math, you know, or these stuff. Basically, you can kinda commit to some data within a public key itself. Right? This is really cool because the public key to a third party observer looks like just like a normal public key. I don't really know what data is actually included with it as well too. There was a paper, I think, by Timo Heineke in, like, 2013 or so, but it never really got used in practice. I think his use case is kind of like using it as, like, a receipt, basically, like, you know, you have, like, some, like, metadata, and you could use that manager to drive Bitcoin interest. Now it would give you kind of proof of publication. It never really came on as well too. But, you know, one thing about, like, you know, doing something like this, just far as, like, you know, p 2 s h loan or p or paid a contract cash alone is that you kinda, like, intermingle the actual contract details or the action details lying inside the script and stuff. Right? So let's say I was kinda committed to, like, the metadata in the in the actual script. All of a sudden, I need to kinda, like, have that directly on all my other scripts. That's why it's gonna, like, bloat me with the information as well too. But the cool thing about Tapware is, like, Tapware kinda gives us, like, a very structured commitment format. Right? And, like, the way the way Tapware works is that, like, you know, you can actually commit to several different things, but the things that you don't reveal don't actually need to be published onto the chain itself. Right? So this is, like, okay, like, you know, well, what if we actually commit to other data within the actual Tapri Tree itself? That's kind of where the idea has been born somewhat. Right? And the cool thing about this, as well, too, we can actually have a, separation of layers, because we actually have a new asset script or a kind of scripting language in the tarot system itself, too. So we see Bitcoin scripting, we have asset scripts as well too. This is really cool because for example I can have an asset and maybe it'll require like multisig or other information as well to actually properly move it. So it's definitely, like, you know, really cool, way things are set up.

3403
04:53:25.996 --> 04:54:26.613
So here's kind of, like, a however overview of the way things work. Right? So it's basically this new data structure. I'm calling it new. Maybe someone has invented it. Maybe it's a Bitcoin talking from 2012. I don't really know, but for now, we'll say it's new. Right? So it's basically something called a Merkle sum of sparse Merkle tree. Right? And what a Merkle sum, tree is like, you know, people have seen Merkle Merkle tree before. You kind of, like, have, like, a series of items. You hash them up pure lines. You have, like, an initial root a hash itself. Right? But the merkle sum property basically allows you to, like, commit to what exactly is, like, a value. Right? So now, alongside of committing to a hash, I'm also committing to a value. So let's say I have, like, a series of elements. They all have, like, a value of 1. The root of the tree commits to 4. Right? Now listen, I can say, okay, well, prove to me you have an element of the tree. You give me the actual, hash of the data itself. You also give me this value. Whenever I combine the proof up, I actually add that value along Tariff as well too. That's a really cool thing because in the in the concept, Tariff will be using this for things like, okay, I want I want you to prove to me that you have 5 beef bucks. Right? You can basically prove that to me as well too. The other thing we use in Taro, this also lets me ensure ensure that whenever we do transfers, there's not actually asset inflation going on. Right? I wanna make sure, okay, you sent me 5, you should have 3 left. Right? You're not actually making anything out of thin air on the on the other side. Then the other part we have is a sparse Merkle tree. So this is kind of like another thing. Sparse Merkle tree is effectively like an index,

3404
04:54:36.365 --> 04:54:42.625
going left or right depending on that 1 or 0. So if it's 0, I go left. If it's 1, I go right. And then we go all the way down to 256 levels because it's 256

3405
04:54:43.246 --> 04:55:50.916
bit tree. We get into, like, a unique location within the tree itself. This is really cool. The one other cool thing about Sarsaparco tree is the way it works. We can actually do, like, a very efficient proof of non inclusion. Right? So, you know, for for in this case, like, one other thing I discovered just now is, like, all the elements are initially nil. Right? So for you for me to prove to you that's not something's not in the tree, I show you a path down to a nil element. Right? And that means, okay, well, it's actually in the tree. This is really cool because otherwise, you know, if you're doing it from Merkle tree because it's insertion ordered, I mean, we need to give you a bunch of other leaves aside and things like that as well too. The other cool thing about a, sparse Merkle tree is actually history independent. Right? Meaning that, you know, if you and I insert elements into a tree in arbitrary order, we get the exact same root hash. Right? So you can almost view it as kind of like being able to, like, you know, maybe do like a git clone iplot on my commits on top of it. We check the same head, and we know things are are correct like that. So this is how it kind of looks on the right over here. So in the top, you kind of have my initial pub key with the script group. That's kind of like the way Taproot works. We have the regular Merkle tree, so you can kind of see I have like, hash for a preimage, a delay or 2 or 2, whatever else. Then we get to the tower part. Right? So the tower part is actually now a series of other nested, you know, sparse Merkle trees. Right? So first, we have the first level, and that's where we have, like, all the assets. So bringing up by 25 $1,000,000 and a 100 cool points. Right? And, you know, so we'll have, like, kind of, like, an additional leaf for every single asset we have here. This is kind of where you get some this is where you get some of the scalability. Because If you look at other systems, whenever you're actually making assets, you need to manifest

3406
04:55:51.375 --> 04:56:08.145
fully, like, a massive map of the asset onto the chain. So if you have, like, a 1,000,000 entry, you basically have a 1,000,000 items in the chain as well too. Maybe it's gonna cost $100,000 to make an asset in this case. But in Taro, it's basically one transaction. One transaction can move an unbounded asset and also create an unbounded asset as well too. So once again, we're using this, like, in a very cool tree scale and property to amortize all of these

3407
04:56:17.830 --> 04:57:17.690
So if you see that I have, like, you know, 10 big bucks and the 15 big bucks, and then when I hash those up, I get 25 as well too. And then the the final layer is basically this, like, asset, you know, tree, or leak TLB. Right? The TLV is a format we made from lightning protocol. It seems like a protobump. It's kind of like an sensible key value, you know, system, so it's really cool from that point. And the way everything works is that, like, you basically need, like, an asset ID. Right? So it's kind of one of the tricky parts I think we found that really, you know, cool, which we can do. You know, typically in other systems, there's kind of like a global system or maybe the contract system system is actually aware of, like, a contract hash or an asset ID. But in tower, we basically need all the asset IDs to be unique. So it's okay. Well, how do we get a unique value? Once again, we basically use the blockchain itself. Right? Something called bit 34 back in there, but kinda like, you know, fix an issue in Bitcoin itself. Basically, make sure every single transaction is actually properly unique. Right? And the way they do this, the combinational dot can now commit to the height, you know, of the actual block, which makes things unique. They don't need to get to that too far. Now because we worry, we say, okay. Well, we can use that first import, you know, call the genesis point, apply the asset tag, which maybe is like the name of the asset, maybe it's like hash or something else. There's some asset metadata as well too. Then all of a sudden, we can basically use that topic unique identifier. Right? We can actually ensure this is, like, you know, globally unique because we know the assets are going to be repeating.

3408
04:57:18.215 --> 04:57:28.940
You know, and so we know Jess's points are going to be repeating in the chain because you never repeat a txid. That's kind of how we do something to get, you know, global unique, you know, asset IDs. This is really cool, and there's some other things as well that you kinda, like, can manifest asset IDs in the in the similar,

3409
04:57:29.260 --> 04:57:35.355
tree and also kinda do thing where I can, like, you know, issue b bugs v1 and then v2, but I still have v1 and v2 be actually fungible along part of each other.

3410
04:57:36.455 --> 04:57:43.016
So one of the questions, okay, like, exactly how do transfers work. Right? So I mentioned a little bit earlier that, you know, things are kinda, like, you know, Bitcoin like, and they kinda, like, you know, really take up from, like, Bitcoin,

3411
04:57:43.470 --> 04:59:43.670
design principles as well too. One of my goals, you know, in creating this new system was to make it very friendly to Bitcoin developer. Right? It it should be, you know, it should full bear your name. I don't wanna, like, learn some new language or VM paradigm. I just wanna like, you know, do use all my existing tooling. And when we set things up, basically, everything can be reused, for for the most part. Right? So, like I was saying, alongside the TL, we actually have like inputs and outputs. Right? The outputs are kind of, like, you know, my splits, similar to the UTXFR. They all have inputs. Right? And the inputs themselves are actually like a new, another version like a witness. Right? Depending on what you do, maybe you need kind of just to prove to me that you're part of something else, else, but pilot with the basic inputs and output similar to Bitcoin is like a witness. Right? So the one question, okay, like, exactly, like, okay, we're just gonna add for reliability. What do you wanna do as far as the VM? So it was like, okay, you know, I I feel like one thing I think happened to a bunch of other product in past. Like, they got a little bit copied as far as the VM design space, and that, okay, well, you can do anything. Right? But I think one kind of, like, you know, kind of a good trait as far as the protocol is try, like, simplify as much possible, make things, you know, as really simple to kind of control yourself to have something that's, like, a little more elegant. So what we end up doing, we actually have tap root within tap root. Right? So first, you basically have the top of the tap root key that's, you know, showing everything, and committing to asset itself. But in the actual script, we then what we do, we basically make a a virtual. It should act like a one input, one output. Use a merkle sum commitment of the apples and all the inputs as well. So verification says, okay. Well, you know, this this value should be equal. Right? So I have, like, 10 over here and then 10 over here. This so, like, if you give me, like, 10 to 15, I mean, basically, I know you're inflating something. Right? That's a really cool thing. Then we basically take that transaction. We actually run it through the regular Taproot script VM. So we basically gain all the capabilities of Taproot today, without really having to, you know, write new new code, and we and we know this stuff has been very well reviewed as well too. So basically the version 1 system, version 2 depending on how you're how you're counting it. In the future, we can actually add new functionality. So, you know, we could add Wasm. We could add an entire new VM or we can basically even introduce things like we can add covenants or even add new app codes at at the, tower VM layer, which is really cool as well too. So one other thing we wanna make sure, like, we wanna make sure that this this thing's actually, like, very familiar to people and it's, like, very easy to use. Right? So we actually have this address format. So if if if you if I was trying to send to you a tar asterisk on chain, we just use the Vic Vic 32, like the similar format that we use for separate addresses. And there's a complex of information that's actually encoded in that, like, address itself. That's all the information I actually need in order to recreate the, the the script tree and then recreate the output key that's attached to that on chain as well too. Right? So using the internal key, which is a part of TypeScript, you ask a script key, which is kind of like exactly,

3412
04:59:44.049 --> 05:00:45.960
you know, how your unlocking works, and also ask an s I d. I can reconstruct the tree base again and create an output and then be able to send you that output on chain as well too. This is really cool because it enables client support. So when passing through some of the private versions, like, you know, they actually use something called Oportun, which when you act you have to had to actually scan the entire chain, kinda like looking for these updates to see, okay, anything, you know, spying for me at all. In this case, I can basically put that address into my, you know, my neutrino filter, which is lacking. From there, I can say, okay, well, I received an asset. Let me go and then get the the 100 proof, and I could be able to suspend it as well too. So what where I think that we did make things things a little more like client friendly as well too, like, so every single asset can, like, define by its proof. So as I mentioned earlier, it's kind of like a Genesis point. The Genesis point is basically what's used to, drive asset IDs. Right? So, you know, so for in this case, beef bucks are defined by every asset kind of like, you know, that's, descended from this particular Genesis point. Similar to their words, like, you know, Bitcoin is depend descended from the Genesis block. Anything that doesn't have genesis block in is in the Bitcoin chain. Anything that doesn't have, you know, my out point and it isn't, you know, beef box as well too. Right? So this the so this kind of, like, lets you kind of, like, you know, prove and also put provenance directly at the kind of, like, head of the protocol itself. So anytime I'm, like, you know, sending something something else, I can then use that to verify to make sure I have a legit asset. I'm not getting a scam, I'm not getting inflated, or anything else like that.

3413
05:00:46.875 --> 05:00:55.055
There's another, you know, component in the system we're calling a universe. Oh, cool. These are the updated slides. Right? So question is exactly what is universal. So I had mentioned a little bit earlier. You actually need to kinda, like, bootstrap,

3414
05:00:55.550 --> 05:02:57.640
what's effectively, in my knowledge, like, knowing that the chances point a particular asset. Right? So this is kinda, like, actually, like, an on chain structure that indexes into the set of spent hot points and then map that metadata that is basically the proofs, into the chain itself and then also the proofs of the witnesses, you know, as well too. Right? The way it works though, like, within the BIP, you kind of, like, define, like, some special rules as far as how you, after you create the output, the initial asset matching transaction itself, when you require the second, output of the next transaction to actually commit to the root hash of which is what the universe is itself. This is really cool because obviously now I can actually watch instead of outpoints on chain. So when thing new things are being created alongside things, as well. 2, the other cool thing about universe is that, you know, once I have this commit and I have the extra data, I can then audit I can, like, audit the supply of, like, a particular asset. So I can say, it's okay. Well, there's 1,000,000,000, you know, beatbox in existence, basically. Right? I can then use this to verify anytime something's been created and make sure I'm not accepting 2,000,000,000 There's only 1 billing, with with that as well too. So the cool thing is, like, you know, someone can kinda maintain, like, canonical universe. You can view this kinda like a federated matrix server, maybe copy a git repo. But the same time, because SMTs are, history independent, I can collect all data myself and also make sure I'm verifying that we have the exact same path. So this is kind of, okay, well, everyone's kinda run the number to supply all your assets in real time as well, which is another really cool trade environment as well. Then you can say, okay, well, I can also kind of combine multiple assets, multiple universes into a multiverse, which is kind of like a assets, maybe some of the history as well too. So running with this system in there, which is, calling a POC universe, which is a key way to kind of aggregate a bunch of proofs, you know, as far as, transverse off chain. Right? So you kind of have, like, a federated system. Maybe it sounds like making a game, and the game is closer to any way. Like, maybe we have, like, some trading card games as part of the game itself. The operator can basically run this POC universe. We can actually save a bunch transfers. Because with a single transaction, they can do effectively an unbound number of, transfers within the system as well. There's different, you know, things that are occurring around as far as making it possible to exit things as well, but also different flavors for our security model. So here's the big question. How does tower work on l on l n itself? Right? So, you know, in the past, we did some things, you know, around, you know, like Litecoin swaps on Bitcoin. It sounds like way way back, you know, the 2 chains. I mean, people remember that. But, you know, we're kind of taking a different approach here. Right? Rather than actually having all the assets in the core of the network, the assets are basically fully at the edges. Right? Which is really cool because now, like, the core of the network doesn't actually need to update. They're still using Bitcoin as normal, basically. They don't even know this thing is actually updated. Right? But instead, we actually push the complexities all the way to the edges and basically have, just Alice and Carol and their initial

3415
05:02:57.941 --> 05:03:39.115
first and last mile being aware of the the the assets themselves. Right? This really cool because now we don't actually need an entirely new network for every single asset we're creating. Right? We basically use, you know, the $100,000,000 or, you know, 3.7 k BDC plus that's probably out of date already, you know, on the network of today. Right? This is really cool. Now we can actually, you know, retain all the network effects, actually reuse all that liquidity. So now we have, like, more demand transfers, which means more demand for activity, which means more free revenue, which means the network grows, becomes more useful. Now there's a, kind of, like, very cool flywheel, basically. Once again, keeping Bitcoin at the center. Now this kind of positions Bitcoin is kind of like the global, you know, crossing layer for any other value. Right? I don't really care what's at the edge, but any any in any case, everything is actually crossing in Bitcoin. People in the in the short network in the short network, they're actually actually getting all the routing fees in Bitcoin as well. And that's, like, a really, you know, dark part about the way things are set up.

3416
05:03:39.871 --> 05:04:45.955
The other really important thing is obviously multi hop. Right? Multi hop is kinda like what changed everything when Lightning came out. Okay. Because I like to correct channel, it's not really cool. We wanna be able to make sure we're actually riding across the entire network. So, you know, if you recall, actually, Tara has, like, a scripting system within within itself. So we actually remap the existing HLC structure in the Tara scripting system and actually then just have HLCs working normal. Right? So now my multisig commits to a, a asset tree which basically out of your mind and your balance. HLCs now manifest, you know, both on the HLC lib and also on the entire layer as well too. We then we then actually use this actually handle a multi hop, whatever way it works. And the thing the way it works is kinda like you you can do, like, kind of a little trick of, like, the invoice kinda does most of the work. Right? So today, like, whenever you're using Bitcoin, maybe you're using, like, lightning. Maybe it stays, like, USD on the left side, but then you actually get a Bitcoin invoice. Right? Someone quoted. Right? Some converted happened there. People would probably just pay it. They don't really think about it. Right? But the way this works is, like, okay, now, like, if I'm sending from Dave, Dave gives me an invoice. That invoice now has that USD amount, basically. Now it's my job to kinda, like, you know, route everything properly with the network in order to date. So if I send too late, Dave's gonna cancel back. It's okay. I want a 10 set. You you just send me 9 set. Right? So it's a pretty elegant way of kind of pushing and collapsing the edges, also making sure that everything is primarily on the wall as well too. Really excited about this. And, like, so it's giving us a kind of a series of extensions onto the Bolt protocol. Right?

3417
05:04:46.754 --> 05:05:46.846
You know, maybe kind of a book format. We can kind of, like, add additional metadata to, you know, funding and also HLCs as well too. So it's kind of a really cool thing where people can opt into it. If no one people wanna use it, that's fine. They can enjoy, you know, the increased transfer and the the increased demand activity from all these new tower tower transfer, but now all of a sudden, we can do things, like, you know, go up more directly after credit cards. Maybe if people can, like, you know so I get in theory, I can send, you know, BTC, and the merchant receives USD at the other side. So now everything's fully onto the, actual Bitcoin system as well. The other thing is, well, too, this is gonna really dramatically reduce any of the cost on and off ramps. Right? Because now all of a sudden, it's already kind of, like, you know, in the, Bitcoin lane. Right? They don't need to worry about, like, going to an exchange, build that separate over can actually do a bunch of really cool things. The other cool thing, by the way, is how it works because it's all, like, in a fully Bitcoin input and output, we can actually kind of, like, have, like, non custodial swaps of anything, you know, on the actual Bitcoin chain itself. What's a swap? It's a multi input, multi output transaction, basically moving things back and forth, and that's Taro. And if you think this is cool, we're hiring at Lightning Labs. You know, many different positions, you know, researchers, engineers, people on front end, managers, talent engineering as well too. You can check out our job listings on the website and also maybe email us if you don't see anything that's on there that you think is cool and you wanna kinda, like, get into.

3418
05:05:47.360 --> 05:05:49.139
But, yeah, that's Taro. Thank you.