CD178: JUSTIN AND BRAD - FEDIMINT OPEN SOURCE PROJECT
Justin and Brad are contributors to the Fedimint open source project. Fedimint is an open protocol providing easy to use, private, programmable, and offline bitcoin payments using bitcoin powered federated chaumian ecash.
Justin on Nostr: https://primal.net/p/nprofile1qqspg8fq209jj56663d2n6r9ehkyjffy7rkqqejfdwvtwzva426avkqxtxxuv
Fedimint Website: https://fedimint.org/
Fedimint on X: https://x.com/fedimint
The E-Cash App: https://ecash.love/
Fedimint Observer: https://observer.fedimint.org/
Bitcoin Mints: https://bitcoinmints.com/
Harbor Desktop App: https://harbor.cash/
Iroh: https://www.iroh.computer/
EPISODE: 178
BLOCK: 914982
PRICE: 863 sats per dollar
(00:03:11) Happy Bitcoin Tuesday
(00:04:13) Fedimint and Cashu
(00:10:49) Fedimint's On-Chain and Lightning Integration
(00:18:46) Challenges and Solutions in Fedimint's Development
(00:39:08) Fedimint Operator Setup and Challenges
(00:51:00) Backup and Recovery in Fedimint
(01:02:02) Future Developments and Community Engagement
Video: https://primal.net/e/nevent1qqsvswtcudcf2j55ac4yrphsm37ep9acp27ctap9dt8zvy6p5wzywgcrax3wu
more info on the show: https://citadeldispatch.com
learn more about me: https://odell.xyz
03:11 - Happy Bitcoin Tuesday
04:13 - Fedimint and Cashu
10:49 - Fedimint's On-Chain and Lightning Integration
18:46 - Challenges and Solutions in Fedimint's Development
39:08 - Fedimint Operator Setup and Challenges
51:00 - Backup and Recovery in Fedimint
01:02:02 - Future Developments and Community Engagement
NOTE
Transcription provided by Podhome.fm
Created: 09/16/2025 22:19:50
Duration: 4888.192
Channels: 1
1
00:00:02.960 --> 00:00:08.740
Outskirts of Addis Ababa, thousands of servers work on solving complex mathematical challenges
2
00:00:09.040 --> 00:00:10.820
that'll be rewarded with Bitcoins.
3
00:00:11.519 --> 00:00:12.019
Zero.
4
00:00:12.400 --> 00:00:15.035
I will just mount to think This mining
5
00:00:15.415 --> 00:00:16.555
is energy intensive.
6
00:00:17.895 --> 00:00:19.515
Here, they're using surplus electricity
7
00:00:19.815 --> 00:00:21.275
from Ethiopia's dams.
8
00:00:21.575 --> 00:00:24.235
The Bitcoin mining has a great advantage.
9
00:00:24.775 --> 00:00:26.235
The capability to consume
10
00:00:27.080 --> 00:00:33.180
huge amount of energy to deploy fast and to do it very close to the source, like, for example, here near the substation.
11
00:00:33.880 --> 00:00:40.620
After many years, when the distribution grid deployed, other industries come. Probably, the power will be redistributed.
12
00:00:42.204 --> 00:00:49.504
Ethiopia's recently inaugurated Grand Ethiopian Renaissance Dam or GERD will more than double the country's electricity output.
13
00:00:50.045 --> 00:00:57.184
But Ethiopia doesn't yet have the distribution network to take this power to the half of the population that doesn't have electricity.
14
00:00:57.960 --> 00:01:01.980
The idea is that the fees paid by the Bitcoin miners to use the surplus
15
00:01:02.280 --> 00:01:04.600
energy, some $220,000,000
16
00:01:04.600 --> 00:01:08.940
worth in the last twelve months, will go towards funding the expansion of the grid.
17
00:01:09.640 --> 00:01:12.140
The government had a target of 2030
18
00:01:12.275 --> 00:01:14.135
for universal access to electricity,
19
00:01:14.595 --> 00:01:17.735
but now says meeting that will be extremely challenging.
20
00:01:18.354 --> 00:01:27.939
Until the people have full access and, the economy start to consume all this, power, we are using Bitcoin for transition. It's not, permanent,
21
00:01:28.799 --> 00:01:35.220
endeavor. So they're not getting preference over domestic industry or No way. No way. Yeah. No way.
22
00:01:35.920 --> 00:01:40.035
The cost of mining 1 Bitcoin in Ethiopia is about $20,000
23
00:01:40.275 --> 00:01:44.455
when hardware, staffing, and other costs added along with the cheap electricity.
24
00:01:45.315 --> 00:01:46.295
But that Bitcoin
25
00:01:46.675 --> 00:01:49.895
then sells for around a $114,000
26
00:01:50.035 --> 00:01:51.015
at current prices.
27
00:01:51.475 --> 00:01:53.815
It's very profitable because 80%
28
00:01:53.960 --> 00:01:56.860
of the operating expenses for a Bitcoin miner,
29
00:01:57.399 --> 00:01:59.020
is related to electricity.
30
00:01:59.799 --> 00:02:07.579
And in parts of the European Union, they're looking at 15 or 20¢ kilowatt hour. So to come to Ethiopia and get 3¢,
31
00:02:08.195 --> 00:02:09.175
or sub,
32
00:02:10.115 --> 00:02:17.815
4¢, I think is extremely lucrative. We'll see. For now, the price of Bitcoin is climbing and has become less volatile.
33
00:02:18.995 --> 00:02:29.250
As more countries, notably The US, become more receptive to digital assets like Bitcoin, then Ethiopia's appeal as a crypto mining hub is likely to grow.
34
00:02:30.189 --> 00:02:32.610
Bernard Smith, Al Jazeera, Addis Ababa.
35
00:03:11.205 --> 00:03:16.185
Happy Bitcoin Tuesday, Freaks. It's your host, Odell, here for another CIL dispatch,
36
00:03:16.570 --> 00:03:17.390
the interactive live show
37
00:03:18.010 --> 00:03:22.030
focused on actual Bitcoin and Freedom Tech discussion.
38
00:03:23.050 --> 00:03:27.950
As always, dispatch is brought to you without ads or sponsors. It is supported
39
00:03:28.615 --> 00:03:31.435
by viewers like you sending Bitcoin donations
40
00:03:31.735 --> 00:03:32.555
to the show.
41
00:03:33.095 --> 00:03:36.075
All relevant links are at citadeldispatch.com.
42
00:03:36.455 --> 00:03:37.995
The largest Zap we got
43
00:03:38.375 --> 00:03:44.760
last week was from ride or die freak Trazyn. That's t r a z y n.
44
00:03:47.780 --> 00:03:49.240
And they said
45
00:03:50.260 --> 00:03:51.560
oh, I lost it.
46
00:03:51.860 --> 00:03:53.640
Thanks again for the awesome rip.
47
00:03:54.580 --> 00:03:56.520
Cheers. I'm glad you found it helpful.
48
00:03:58.015 --> 00:04:00.355
The easiest way to support the show is
49
00:04:00.895 --> 00:04:02.595
through your favorite Nostra app.
50
00:04:04.175 --> 00:04:09.315
I'm particularly fond of Primal. I've been helping build it out. You can search Primal in your favorite App Store
51
00:04:09.670 --> 00:04:11.849
and simply search Citadel.
52
00:04:13.829 --> 00:04:18.250
Freaks, we have a great show lined up today. We'll be talking about the Fedimint open source project.
53
00:04:18.949 --> 00:04:20.010
I got two of,
54
00:04:21.430 --> 00:04:22.889
two prolific Fedimint
55
00:04:23.444 --> 00:04:26.824
contributors here today. We have Justin. How's it going, Justin?
56
00:04:27.604 --> 00:04:35.865
Hello. Nice to be here. Thanks for having me on. Great to have you. And we have Brad. What's going on, Brad? Hey. Thanks for having us. This will this will be fun.
57
00:04:36.724 --> 00:04:37.865
Cheers to that.
58
00:04:39.860 --> 00:04:41.720
So, I mean, we've talked
59
00:04:42.340 --> 00:04:44.920
I've had a I've had a couple shows on Fediment
60
00:04:45.380 --> 00:04:46.520
very early on,
61
00:04:48.100 --> 00:04:52.760
and I've had a cup I've had many shows relatively recently on Cashew.
62
00:04:55.085 --> 00:04:59.104
Both Cashew and Fedimint to the freaks that are not aware share the same,
63
00:05:01.005 --> 00:05:04.544
overarching principle of using Charming eCash with Bitcoin.
64
00:05:05.900 --> 00:05:07.040
But then there are
65
00:05:07.500 --> 00:05:09.600
significant differences in actual implementation.
66
00:05:12.380 --> 00:05:14.639
So I think a interesting place to start
67
00:05:15.820 --> 00:05:17.199
is just in general,
68
00:05:17.685 --> 00:05:23.705
And you guys have made a lot of progress, which is, I think, why it's important that we're having this show. And, also, last but not least,
69
00:05:24.325 --> 00:05:26.825
just for people to be clear, there is a
70
00:05:27.205 --> 00:05:29.225
venture backed company called Fetti,
71
00:05:30.005 --> 00:05:31.625
which plans to
72
00:05:32.170 --> 00:05:34.670
open source their front end client
73
00:05:35.210 --> 00:05:42.510
for Fediment, which is a open source project that is not VC backed and is available to the public as free use software,
74
00:05:43.370 --> 00:05:51.105
that you can use any client as the front end for. But, anyway, I think a great place to start here is why should people why should people care about Fedimint?
75
00:05:51.645 --> 00:05:53.025
Why does the project matter?
76
00:05:54.525 --> 00:05:55.885
Yeah. Sure. I can start with that.
77
00:05:56.445 --> 00:05:59.425
So I think I think Fedimint offers a
78
00:06:00.110 --> 00:06:03.170
nice set of trade offs for, like, using Bitcoin,
79
00:06:04.030 --> 00:06:05.090
different from what
80
00:06:05.550 --> 00:06:06.910
maybe other projects have.
81
00:06:07.470 --> 00:06:10.610
Doesn't replace, you know, on chain self custody Bitcoin,
82
00:06:11.310 --> 00:06:13.010
or even probably running your own,
83
00:06:13.675 --> 00:06:19.294
Lightning node, but it does offer, like, a really easy and private option for,
84
00:06:20.315 --> 00:06:21.615
holding and spending Bitcoin.
85
00:06:22.794 --> 00:06:27.275
And that's kinda down to the, like you mentioned, the the Xiaomi and e cash cash part,
86
00:06:28.039 --> 00:06:29.979
and then also integrating with Lightning because,
87
00:06:30.919 --> 00:06:35.979
it's important. Like, Lightning is kind of the glue for the rest of the the Bitcoin ecosystem,
88
00:06:36.680 --> 00:06:39.819
and Lightning's already already pretty private too. So,
89
00:06:40.885 --> 00:06:43.545
yeah, I think it's just a nice nice set of trade offs.
90
00:06:44.645 --> 00:06:48.025
Yeah. I definitely echo all that Justin just said there.
91
00:06:48.965 --> 00:06:59.409
Maybe zooming out a touch. I bet a lot of freaks have some knowledge on Chomping and eCatchments. I may hand off this conversation to some folks that are not so well versed in the history of Chow Me and eCash Mints.
92
00:07:00.509 --> 00:07:06.770
The way to think about it in a nutshell and why would you wanna engage with one of these systems is you have this system
93
00:07:07.455 --> 00:07:08.595
that you can
94
00:07:09.135 --> 00:07:12.915
deposit funds into. You can send Bitcoin to in the case of Fedimint,
95
00:07:13.375 --> 00:07:28.170
multisig wallet, and then you can do some cool stuff. You might get some eCash notes that don't have an account identifier or simply notes with the denomination that you can swap out. You can swap those notes out for either another on chain payments or a payment over the Lightning Network.
96
00:07:28.790 --> 00:07:34.150
And if that's interesting to you, then the system might actually be pretty interesting to you in general.
97
00:07:34.695 --> 00:07:38.635
And then one of the biggest differences between something like Cashew and Fedimint
98
00:07:39.095 --> 00:07:53.000
is that Cashew took a beautiful approach for simplicity, a single server that doesn't have to concern itself with a bunch of consensus mechanisms of how do you figure out, like, what is the state of the blockchain? Like, what is the state of my internal database?
99
00:07:53.620 --> 00:07:54.360
Where Fedimint
100
00:07:54.900 --> 00:07:58.920
tries to distribute that. That's the federated part of the the Fedimint.
101
00:07:59.700 --> 00:08:03.160
It splits that across multiple peers, sometimes referred to as guardians,
102
00:08:03.465 --> 00:08:13.085
and then you have the ability to tolerate some faults. So let's say one server goes down and you have three out of four total servers running, the federation just continues.
103
00:08:13.625 --> 00:08:18.765
We could go into a lot of those guts there, but, yeah, at at a high level, that's kinda how I like to think about the system.
104
00:08:20.780 --> 00:08:22.139
Yeah. I mean, it also means
105
00:08:23.419 --> 00:08:26.879
I I like I like the idea of thinking about it as fault tolerance.
106
00:08:27.180 --> 00:08:30.240
I mean, a lot of people think about it from a point of, like,
107
00:08:30.699 --> 00:08:31.840
rug pull resistance
108
00:08:32.140 --> 00:08:33.680
from, like, a malicious actor.
109
00:08:34.834 --> 00:08:39.894
But in these types of systems, it doesn't even have to be a malicious actor. Right? It could just be
110
00:08:40.195 --> 00:08:44.454
someone's server went down or they messed up backups or something to that effect.
111
00:08:44.995 --> 00:08:48.695
Yeah. Which is actually probably much more common in the space.
112
00:08:49.340 --> 00:08:49.840
Yeah.
113
00:08:50.460 --> 00:08:59.200
The upgrade Oops. Upgrade oops. The upgrade case is the most common. Right? You know, we're upgrading the software, and you wanna be able to upgrade with with no downtime. And,
114
00:08:59.740 --> 00:09:05.735
yeah, with the federation sort of built in, you can do that very, very easily. Just upgrade one node at a time.
115
00:09:08.435 --> 00:09:09.975
Yeah. I mean, when I think about
116
00:09:11.235 --> 00:09:14.215
when Charmaine and ECASH in general, whether it's Fedimint or Cashew,
117
00:09:17.220 --> 00:09:23.880
I mean, I think I think it's we're gonna be diving into, like, deep technical specifics. But the cool part to me
118
00:09:24.260 --> 00:09:26.360
is that from a user point of view,
119
00:09:26.740 --> 00:09:27.459
it is actually
120
00:09:28.020 --> 00:09:30.839
it it can be and it's already close to being
121
00:09:31.654 --> 00:09:39.595
the easiest way to use Bitcoin in a very powerful way. It's programmable. It's offline. It's seamless. It can be seamless UX,
122
00:09:40.214 --> 00:09:42.235
and it has strong privacy guarantees.
123
00:09:42.774 --> 00:09:44.954
And, historically, when you look at
124
00:09:47.240 --> 00:09:50.700
trying to get the most amount of users to use something
125
00:09:51.480 --> 00:09:52.620
in a privacy
126
00:09:53.320 --> 00:09:55.980
in a private way or freedom oriented way,
127
00:09:57.000 --> 00:10:05.065
it doesn't really matter how many podcasts you do or tweets you send or education you try and do. What really gets more users
128
00:10:06.805 --> 00:10:11.065
using technology in more powerful ways is when it's the easier cheaper option.
129
00:10:11.445 --> 00:10:15.065
And we've seen the project I always highlight is signal.
130
00:10:16.139 --> 00:10:26.319
And and the reason my 90 year old grandmother is sending encrypted messages with me is because it's a seamless, easy way for her to get baby pictures.
131
00:10:26.620 --> 00:10:35.425
She's not thinking about any of the technical specifics. It's just a pretty app that works and is reliable and is easy to use. And when I when I think about,
132
00:10:36.765 --> 00:10:37.985
you know, onboarding
133
00:10:38.685 --> 00:10:39.425
the next
134
00:10:39.805 --> 00:10:45.505
next billion people onto Bitcoin or something and you want them to use it in a powerful freedom oriented way,
135
00:10:47.600 --> 00:10:52.819
we're we're gonna need something like that. And I think I think Chong and Ecash plays a key part here.
136
00:10:53.519 --> 00:10:56.819
It'll probably be a combination between Cashew and Fetterman.
137
00:10:57.120 --> 00:10:59.860
I will say Cashew has had a lot more momentum lately.
138
00:11:01.045 --> 00:11:02.824
But you guys have seemed to have
139
00:11:03.204 --> 00:11:06.185
been really putting the work in, so I wanna really dive into
140
00:11:06.644 --> 00:11:08.425
to to what has gotten done,
141
00:11:09.445 --> 00:11:13.384
on the the Fedimint side. But real quick, the other big differentiation
142
00:11:14.160 --> 00:11:18.819
since we're, like, kinda starting off the bat with differentiations between cashew and
143
00:11:19.759 --> 00:11:23.779
FEDAMENT is Cashew made a very distinct decision early on,
144
00:11:24.959 --> 00:11:26.819
to kinda be lightning native.
145
00:11:27.555 --> 00:11:28.295
Well, FEDIMENT
146
00:11:28.595 --> 00:11:31.575
is almost it's, like, built on top, and I'm a little
147
00:11:31.955 --> 00:11:37.575
over my skis here, so I'm gonna need your guys' help here. But it's it's to me, it's like it's on chain native
148
00:11:38.755 --> 00:11:39.255
with,
149
00:11:39.699 --> 00:11:45.720
like, Lightning gateways. Can we talk about that difference in like, how how does that affect things in practice?
150
00:11:46.180 --> 00:11:52.040
Sure. I'd love to dive into the on chain side and then maybe hand it off to Justin for the Lightning gateway side. Awesome.
151
00:11:52.375 --> 00:11:53.115
So easy.
152
00:11:53.895 --> 00:11:55.275
So when you set up the federation,
153
00:11:55.895 --> 00:12:07.035
let's just use the canonical example of a three out of four federation. So when I say three out of four, that means that it only requires three of the four members to continue operating in order for everything to run smoothly.
154
00:12:07.480 --> 00:12:14.300
But when you do this initial setup, DKG distributed key generation, you get a bunch of different private key material that gets generated.
155
00:12:14.920 --> 00:12:17.180
Part of this setup process will generate,
156
00:12:18.680 --> 00:12:19.180
a
157
00:12:20.055 --> 00:12:21.675
pay to witness script hash
158
00:12:22.215 --> 00:12:22.715
threshold
159
00:12:23.095 --> 00:12:45.480
where you say three out of four of these keys need to be combined in order to move funds on chain. And so you have this static descriptor that's like, hey. This is the descriptor for this federation. So It's basically an on chain multisig. Right? It's an on chain yeah. That's a fancy way to say it's just an on chain multisig. The canonical example is three out of four. You could have five out of seven that continues to scale.
160
00:12:46.485 --> 00:12:52.505
But the the it's really just that in a nutshell. So funds do get sent into this multisig.
161
00:12:53.045 --> 00:13:04.959
We don't have a ton of time to turn this into a Balaji style podcast. We also have to add them to Please no. Yeah. I'm happy to if folks want to and if you would've skipped your haircut now, but totally understand if you don't.
162
00:13:05.579 --> 00:13:11.835
But the in a nutshell, it's really cool how you do a deposit on chain. I'll just do a quick tangent into there.
163
00:13:12.395 --> 00:13:27.040
You say, well, that's the descriptor for this federation. I would love to send some funds into this federation, but I'm not gonna just send it to that address. What I'm gonna do is I'm gonna tweak that. I'm gonna generate another key pair on my side as a client, and then I'm gonna tweak their descriptor using
164
00:13:27.340 --> 00:13:36.800
this public key. And then I'm gonna go ahead and send funds to this address that's been tweaked. So the federation actually has no clue that this address exists because it's just a tweet,
165
00:13:37.565 --> 00:13:41.985
a tweet descriptor using some crazy random private key, public key pair.
166
00:13:42.605 --> 00:13:46.945
And then once the client observes, oh, cool. My funds have been sent on chain,
167
00:13:47.325 --> 00:13:48.945
I wanna prove to the federation
168
00:13:49.325 --> 00:13:57.490
that I actually sent those funds, and I would love some e cash in return. So the client does this all on your behalf. It monitors the chain, and it's like, sweet. My funds
169
00:13:57.790 --> 00:13:59.810
showed up at this address that I generated.
170
00:14:00.110 --> 00:14:05.970
Let me go ahead and construct a proof to the federation that says, take a look at this Fedimint transaction.
171
00:14:06.675 --> 00:14:15.175
This is my claim that I tweaked your descriptor using this key pair. I'm actually gonna sign this FEDIMIT transaction transaction
172
00:14:15.635 --> 00:14:17.015
with the private key
173
00:14:17.395 --> 00:14:28.110
used in this key pair. Therefore, you can verify, like, the signature and make sure the tweak all matches. And if that all works, go ahead and give me some ecash, please. So that's the like, in a nutshell, how
174
00:14:28.490 --> 00:14:38.584
a deposit works with Envademy. So, yeah, that's completely on chain native, and then there's it's a much more simple process in order to do a withdrawal where you just say, hey. I got some eCash. Would you please
175
00:14:38.885 --> 00:14:47.545
satisfy an on chain transaction that sends to this address that I'm requesting? And as long as it's valid eCash, you're good to go. So I'll I'll go ahead.
176
00:14:48.020 --> 00:14:48.680
I mean,
177
00:14:49.140 --> 00:14:52.120
from my correct me if I'm wrong, but from my perspective,
178
00:14:53.780 --> 00:14:57.320
this choice of of of making it on chain native,
179
00:14:59.300 --> 00:15:08.735
to me, adds a lot of user benefit. It makes it easier to load the wallet at first. It makes it easier to withdraw if you wanna if you wanna leave. Right? Because,
180
00:15:09.755 --> 00:15:12.894
I've I received from, like, a let's just use a standard,
181
00:15:13.195 --> 00:15:17.055
you know, users buying Bitcoin on Coinbase. They have on chain Bitcoin.
182
00:15:17.595 --> 00:15:19.375
It's like, how do they get it into
183
00:15:20.250 --> 00:15:24.990
into something that is lightning only? Right? That which is what Cashew is.
184
00:15:25.370 --> 00:15:28.510
So they first need to find some kind of intermediary wallet.
185
00:15:29.050 --> 00:15:40.175
I mean, I guess Coinbase might offer withdrawals on lightning now, but a lot of places don't. Yeah. And you don't know if there'll be liquidity. So then first, they have to get into a lightning wallet, and then they have to do that. And then on the reverse, when they're leaving,
186
00:15:41.355 --> 00:15:44.095
when they wanna leave when they wanna leave a mint,
187
00:15:44.955 --> 00:15:48.930
they need to make sure that they have somewhere they can send it that has inbound
188
00:15:49.310 --> 00:15:50.209
Lightning liquidity,
189
00:15:50.990 --> 00:15:57.009
from that Mint operator, which is easier said than done. And as small amounts, it works pretty well,
190
00:15:58.910 --> 00:16:04.955
but there's a lot of UX headache that happens there. So you have the benefits to the user by going on chain native.
191
00:16:05.415 --> 00:16:06.475
But then from
192
00:16:07.095 --> 00:16:10.955
a protocol operator standpoint, it adds a ton of complexity.
193
00:16:11.495 --> 00:16:13.275
Right? Like, that's the trade off, basically.
194
00:16:13.670 --> 00:16:28.330
Hey. What are my coins, and what coins am I gonna use to satisfy this? What's your request? Now we have consensus. It's like, oh, shoot. Review of the law looks different than mine. Review of the law. Yeah. Well, cash is just like a single you're just like running a lightning node. It's like relatively straightforward.
195
00:16:28.790 --> 00:16:29.290
Mhmm.
196
00:16:29.645 --> 00:16:30.545
Yeah. For the
197
00:16:31.245 --> 00:16:34.225
on the lightning side for for Fedimint, basically,
198
00:16:34.925 --> 00:16:42.225
the decision comes down to, like, the on chain part is sort of complex enough with, like Brad said, making sure the consensus
199
00:16:42.525 --> 00:16:43.025
is,
200
00:16:43.885 --> 00:16:45.425
working between all the nodes.
201
00:16:46.519 --> 00:16:50.779
If you were to sort of, like, make that lightning native, you would have to essentially build,
202
00:16:51.160 --> 00:16:52.940
like, a federated lightning node,
203
00:16:53.720 --> 00:16:56.380
which I think there's been sort of some interest in doing,
204
00:16:57.240 --> 00:17:03.105
but it's it's really hard. Right? You have to have you said you have to put all that, like, the lightning logic
205
00:17:03.805 --> 00:17:07.025
into a federation, which is which is difficult.
206
00:17:08.605 --> 00:17:12.845
So I don't wanna I don't wanna say that, like, Fetamin's not lightning native. It's just not,
207
00:17:13.165 --> 00:17:16.910
like you said, the backing of the Mint. The backing of the Mint is always,
208
00:17:17.770 --> 00:17:18.510
the on
209
00:17:18.810 --> 00:17:20.350
chain the on chain, like, multisig.
210
00:17:21.850 --> 00:17:25.450
So the the approach that we took or that, you know, Eric took in the beginning was,
211
00:17:26.365 --> 00:17:29.105
essentially, the Lightning support is kind of an extension.
212
00:17:29.565 --> 00:17:32.225
You can think of, like, Fedimans at, like, these gateways
213
00:17:32.845 --> 00:17:34.784
that provide the Lightning functionality
214
00:17:35.085 --> 00:17:36.945
as an extension to the Lightning Network.
215
00:17:37.965 --> 00:17:39.904
So the gateway is kind of like the last
216
00:17:40.650 --> 00:17:41.150
hop
217
00:17:41.770 --> 00:17:44.270
in, like, in like, if you're sending, like, an HTLC.
218
00:17:44.890 --> 00:17:47.150
So these gateways will essentially do the translation.
219
00:17:47.610 --> 00:17:48.990
They'll do swaps essentially.
220
00:17:49.450 --> 00:17:51.950
So you're sending some ecash out of a federation.
221
00:17:52.585 --> 00:17:57.645
You will at first lock up some ecash in an outgoing contract.
222
00:17:58.345 --> 00:18:00.525
And you can think of this contract like an HTLC.
223
00:18:00.825 --> 00:18:01.805
It has a,
224
00:18:02.425 --> 00:18:08.169
a hash, and you can claim that ecash with a preimage, And it also has a time out.
225
00:18:08.649 --> 00:18:10.830
And so you then, essentially, you tell a gateway,
226
00:18:11.370 --> 00:18:12.110
hey, gateway.
227
00:18:12.730 --> 00:18:14.190
You can have this e cache
228
00:18:14.649 --> 00:18:17.470
as long as you pay this lightning invoice for me.
229
00:18:17.850 --> 00:18:25.535
And that and, you know, that process is atomic. Essentially. The once the gateway pays the invoice, it comes back and gets the e cash for,
230
00:18:26.975 --> 00:18:28.835
that outgoing contract to get paid.
231
00:18:30.575 --> 00:18:35.700
So the yeah. As far as the trust model goes, the the gateways don't have to be don't have to be trusted.
232
00:18:38.179 --> 00:18:41.059
Very similar to running a a Lightning node.
233
00:18:41.460 --> 00:18:43.559
But the gateways do have to trust the federation,
234
00:18:44.019 --> 00:18:46.760
because you're obviously dealing in ECash at that point.
235
00:18:47.299 --> 00:18:48.765
And so the, you know,
236
00:18:49.165 --> 00:18:53.265
the the gateway needs to trust the federation not to not to rug it as well.
237
00:18:53.645 --> 00:18:57.025
And the gateway doesn't have to be one of the guardians.
238
00:18:57.325 --> 00:19:00.065
It doesn't have to be one of the Fedimin operators. Correct.
239
00:19:01.245 --> 00:19:03.185
And you can actually as a gateway,
240
00:19:04.230 --> 00:19:06.490
you can connect to multiple federations.
241
00:19:07.270 --> 00:19:08.250
And so we
242
00:19:08.790 --> 00:19:10.650
we do some shortcuts where,
243
00:19:11.190 --> 00:19:12.250
say you're a gateway
244
00:19:13.110 --> 00:19:15.450
and you're connected to two different federations.
245
00:19:16.150 --> 00:19:17.290
If you wanna pay,
246
00:19:18.845 --> 00:19:20.705
from one federation to the other,
247
00:19:21.245 --> 00:19:27.345
the gateway actually won't even do the payment over the Lightning Network and will instead just do an e cash swap.
248
00:19:27.805 --> 00:19:29.745
They're basically like a bridge at that point.
249
00:19:30.125 --> 00:19:31.105
Yeah. Exactly.
250
00:19:32.530 --> 00:19:35.910
I mean, the the original dream was that, basically,
251
00:19:36.450 --> 00:19:38.390
gateway operators would be,
252
00:19:39.570 --> 00:19:47.955
you know, a relative free market that you'd have, like, multiple gateways for for each Fediment. Is that still implied? Or
253
00:19:48.995 --> 00:19:49.495
Yeah.
254
00:19:50.275 --> 00:19:53.095
The the tricky point you get into is that
255
00:19:53.395 --> 00:19:57.575
gateways kind of provide, like, the quality of service for the Lightning payments.
256
00:19:58.640 --> 00:20:03.620
And so you run into this scenario where if you have, like, a truly, like, oh, anyone can provide,
257
00:20:05.200 --> 00:20:09.620
like, liquidity for the Lightning Network, you can you have this attack where someone would just, like,
258
00:20:10.080 --> 00:20:27.645
a very bad Lightning node, you know, connects and then all of a sudden you It's like a denial of service attack. Like, the users are trying to send a lightning payment or receive a lightning payment and continues to fail because Exactly. You're sitting there as a nonfunctional gateway. Yeah. So we have we have a concept of, like, vetted gateways where,
259
00:20:28.880 --> 00:20:35.940
anyone can run one, but in order to get sort of, like, approved by the federation, the the the Guardian numbers will,
260
00:20:36.559 --> 00:20:39.059
will vet you and say, hey. You know, this
261
00:20:39.440 --> 00:20:41.700
we think that this gate will will provide,
262
00:20:43.575 --> 00:20:46.554
a good quality of service. And how does that work in practice?
263
00:20:48.855 --> 00:20:52.154
Just the the operators need to get in touch to
264
00:20:52.455 --> 00:20:56.955
it's just like a a setting, a config setting, essentially. And so what, like, a user's client
265
00:20:57.640 --> 00:21:05.020
that when a user is sending or receiving a lightning payment, they're not, like, choosing a gateway. The app is automatically choosing for them? Yeah. Correct.
266
00:21:05.960 --> 00:21:08.200
There the app can make sort of some
267
00:21:09.160 --> 00:21:10.460
right now, it's not exposed
268
00:21:10.760 --> 00:21:13.179
as far as, like, when you're sending a lightning payment.
269
00:21:15.934 --> 00:21:19.315
Later, but we have a we have a new Fedimint, wallet,
270
00:21:19.934 --> 00:21:34.899
that we launched on Friday, actually. That was my next question. And, we expose it through there. We we don't actually we don't let users choose yet, but we show, like, here are the gateways that are connected, and here's their lightning node, and here's what fees they charge and things like that. Okay. So let's talk
271
00:21:35.519 --> 00:21:37.779
let's talk about this wallet first,
272
00:21:39.200 --> 00:21:45.675
and then so let's we'll start with the user side. Right? Like, the user facing stuff. And then I wanna kinda dive into
273
00:21:46.775 --> 00:21:55.240
what it looks like currently from, like, the Fedimint operator side and, like, what their software stack looks like and what that burden looks like. Yeah.
274
00:21:56.020 --> 00:21:58.200
So what is this wallet that you launched?
275
00:21:58.980 --> 00:21:59.380
Yeah.
276
00:21:59.780 --> 00:22:01.880
So we're calling it the eCash app.
277
00:22:03.220 --> 00:22:05.000
Really, really creative name.
278
00:22:05.300 --> 00:22:08.600
Shout out to Justin Moon on that. That was his idea.
279
00:22:09.495 --> 00:22:12.395
Yeah. We have so it's, it's a Fedimint wallet.
280
00:22:13.095 --> 00:22:19.275
We have lightning on chain and e like, full e cash support. So you can kinda choose which way you
281
00:22:19.655 --> 00:22:20.615
interact with,
282
00:22:21.175 --> 00:22:21.915
with payments.
283
00:22:23.159 --> 00:22:25.019
Let's see what we have lightning address.
284
00:22:25.720 --> 00:22:27.899
It's only for Android right now.
285
00:22:28.919 --> 00:22:30.139
So you can go to either
286
00:22:30.840 --> 00:22:31.340
Zapstore
287
00:22:31.720 --> 00:22:32.220
or,
288
00:22:32.759 --> 00:22:34.059
ecash.love
289
00:22:34.279 --> 00:22:37.065
to download it is our is our domain. Oh, ecash.love
290
00:22:37.065 --> 00:22:38.205
is a great domain
291
00:22:39.225 --> 00:22:40.525
name for, like, a non
292
00:22:41.065 --> 00:22:43.805
non top tier suffix. Yeah. Yeah.
293
00:22:45.225 --> 00:22:49.720
So we have, evolved that. We tried to integrate some Nostra features. So we have,
294
00:22:50.280 --> 00:22:51.260
Nostra WalletConnect.
295
00:22:52.760 --> 00:22:55.420
We have NIP 87. So that's, like,
296
00:22:56.040 --> 00:22:59.420
that's Cashew as well where you can use Nostra to, like,
297
00:22:59.745 --> 00:23:00.645
discover federations.
298
00:23:01.025 --> 00:23:04.725
There's kind of this problem when you first download the app. You know? Is that the rating thing?
299
00:23:05.425 --> 00:23:11.045
That the ratings part of it, we don't have ratings in there yet. That's you know, we'd like to add that. But,
300
00:23:12.150 --> 00:23:12.650
the
301
00:23:13.190 --> 00:23:20.429
we we use the announcement part where you're kinda announcing, like, hey. This is a federation you can you can join. Like, that's what the front end for it
302
00:23:20.870 --> 00:23:21.370
that's,
303
00:23:21.910 --> 00:23:23.110
bitcoinmints.com.
304
00:23:23.110 --> 00:23:24.490
Right? Isn't it 57?
305
00:23:25.030 --> 00:23:26.515
I believe so. Yeah.
306
00:23:27.055 --> 00:23:30.435
Yeah. So it's it's like a discovery mechanism. These are the mints available.
307
00:23:30.735 --> 00:23:34.435
And then ideally, you're also doing kind of like a web of trust.
308
00:23:35.535 --> 00:23:36.835
Odell likes this FEDIMENT.
309
00:23:37.855 --> 00:23:38.355
Yeah.
310
00:23:39.600 --> 00:23:43.120
Yeah, we don't have the recommendations in there, but I think that's a cool idea.
311
00:23:43.520 --> 00:23:49.860
And it's kinda, yeah, it's the way of sort of bootstrapping it. If you download it, you don't have a federation to join. You can join one of those.
312
00:23:50.320 --> 00:23:51.620
I mean, that's the biggest
313
00:23:51.920 --> 00:23:54.179
one of the biggest UX hurdles is.
314
00:23:55.295 --> 00:23:58.195
I'm I've talked about this in the past. I just had Eggie on,
315
00:23:59.135 --> 00:24:00.355
Yeah. CashU contributor,
316
00:24:01.455 --> 00:24:04.355
working on CDK and and pub.cash.
317
00:24:04.815 --> 00:24:07.795
And, like, the biggest hurdle is the app providers,
318
00:24:08.810 --> 00:24:13.790
I and I respect it, don't wanna pick a mint for you. So, like, every user's first question
319
00:24:14.730 --> 00:24:20.750
is, like, what what do I choose? Right. Which mint do I pick? And so trying to mitigate that without
320
00:24:22.065 --> 00:24:24.465
defaulting to, like, one big mint is,
321
00:24:25.904 --> 00:24:28.485
will will probably always be a problem, but
322
00:24:29.345 --> 00:24:36.799
it's we can smooth it out. We can make it a little better. Yeah. And in in the app, we have things like you can view the UTXOs
323
00:24:37.179 --> 00:24:37.679
because
324
00:24:38.140 --> 00:24:50.559
everything's on chain. So we have, like, links to if you try try to join a federation, they'll give you a little preview, and they'll show you how many guardians there are. And then, That's cool. Where the UTXOs are on the in the blockchain.
325
00:24:52.465 --> 00:24:55.125
Probably talk about so we also have a backup recovery,
326
00:24:55.825 --> 00:24:59.285
which is kind of our, it's built into the feminine protocol,
327
00:25:00.304 --> 00:25:05.045
and then the app our app supports it as well. So we have, like, a pretty familiar, like,
328
00:25:05.659 --> 00:25:07.919
BIP 39, like, seed phrase,
329
00:25:08.700 --> 00:25:11.740
that all your e cash is derived from. So you just,
330
00:25:12.860 --> 00:25:19.200
it's kind of a nice experience. I mean, you you say the seed phrase, and then you can use that to get your your e cash back.
331
00:25:20.705 --> 00:25:22.245
The one caveat is
332
00:25:22.625 --> 00:25:25.605
in at least at the phenoment protocol layer,
333
00:25:25.905 --> 00:25:28.485
you need to remember, like, which mints you've joined,
334
00:25:29.585 --> 00:25:32.820
because your your ecash is specific to a particular mint.
335
00:25:34.659 --> 00:25:37.159
But for what we did in the app is that we actually
336
00:25:37.700 --> 00:25:42.919
encrypt that information and and save it as a replaceable event on on Master.
337
00:25:43.539 --> 00:25:44.360
So you're
338
00:25:44.980 --> 00:25:47.960
we essentially derive a Master key from your
339
00:25:48.375 --> 00:25:49.275
c backup,
340
00:25:50.455 --> 00:25:55.115
encrypt which means you've joined, save it to save it to, and then
341
00:25:55.415 --> 00:25:58.775
can retrieve that information later when you enter your seed phrase.
342
00:25:59.495 --> 00:26:04.710
So it gives, like, a nice experience where you just enter your seed phrase, and then all your e cache comes back immediately.
343
00:26:07.330 --> 00:26:19.425
Yeah. So we have that that The alternative is you would need, like, an you'd be needing to run, like, an additional server to be able to do that kind of functionality. Right? Or just, like, remember, like, remember, oh, you know, my e cash is with,
344
00:26:20.545 --> 00:26:25.045
Bitcoin principles or whatever, and then you'd have to, like, manually recover that way.
345
00:26:25.745 --> 00:26:27.845
This is kind of a nice little shortcut.
346
00:26:30.225 --> 00:26:36.510
And, yeah, I mentioned, a few of the other nerdy sort of, like, sediment specific features. We have the the UTXOs
347
00:26:36.889 --> 00:26:37.710
of the federation,
348
00:26:38.889 --> 00:26:42.750
the gateways. So you can kind of view the gateways for each federation.
349
00:26:43.929 --> 00:26:45.789
And then we also have, like, a note breakdown.
350
00:26:47.175 --> 00:26:48.395
I don't know how many,
351
00:26:49.095 --> 00:26:52.475
like, Ecash wallets in general expose that, but, like, in,
352
00:26:53.255 --> 00:26:59.435
all Ecash is, like, fixed denomination notes. Right? And you're you're it's similar to, like like a paper wallet.
353
00:26:59.950 --> 00:27:01.890
Right. And it's similar to kinda like a UTXO
354
00:27:02.190 --> 00:27:02.830
as far as,
355
00:27:03.470 --> 00:27:06.450
when you make a payment, the the wallet is sort of doing,
356
00:27:07.230 --> 00:27:10.690
like, note selection, like, analogous to coin selection.
357
00:27:11.870 --> 00:27:15.070
So we we expose that. We expose a view. We don't expose, like,
358
00:27:16.245 --> 00:27:22.345
note selection yet. That'd be something we'd we'd even wanna add at some point. I mean, why would we why would the user even need that?
359
00:27:23.045 --> 00:27:23.545
Just
360
00:27:25.765 --> 00:27:27.145
as a as a convenience.
361
00:27:27.845 --> 00:27:32.540
One one feature we'd want to maybe add is, like, having the ability to, like, print
362
00:27:33.080 --> 00:27:36.860
just in general in impediment, like, print paper e cash.
363
00:27:37.480 --> 00:27:39.580
Got it. And if if you have to, like,
364
00:27:41.320 --> 00:27:45.100
you kinda have to, like, reverse engineer the algorithm if you wanna know
365
00:27:46.215 --> 00:27:51.995
how many notes it's gonna like, how big the QR code's gonna be based on the algorithm for the the note selection.
366
00:27:52.775 --> 00:27:56.395
So just having those selection for that would would be a little bit easier. But,
367
00:27:56.935 --> 00:28:00.235
and, yeah, the the idea is to kinda just give a bit more, like, transparency
368
00:28:00.615 --> 00:28:01.640
and as far as,
369
00:28:01.940 --> 00:28:07.000
like, here's what your wallet's actually doing. Here's how the notes are stored. Here's what the gateways are doing.
370
00:28:07.940 --> 00:28:09.480
Not all of it is maybe, like,
371
00:28:12.020 --> 00:28:19.595
not all users will maybe even know what that info is for, but, like, if you if you want, you can you can go find it in our in our app. So,
372
00:28:21.415 --> 00:28:27.355
yeah, that's that's mostly that's most of the features I'd say. Yeah. Like I said, ecash.com. What are your thoughts on, like,
373
00:28:29.140 --> 00:28:32.040
so, like, when an ecash wallet has, like, a lot of,
374
00:28:33.940 --> 00:28:40.040
lot of tokens in it, a lot of individual tokens in it, it, like, causes all sorts of performance issues.
375
00:28:42.054 --> 00:28:43.034
Is there, like,
376
00:28:43.495 --> 00:28:45.115
is there a negative to, like,
377
00:28:45.815 --> 00:28:48.235
an easy consolidate button that just
378
00:28:49.174 --> 00:28:49.995
kinda, like,
379
00:28:50.855 --> 00:28:53.515
takes a thousand tokens and turns it into
380
00:28:54.215 --> 00:28:55.355
50 or something?
381
00:28:55.830 --> 00:28:56.570
Yeah. Potentially.
382
00:28:56.950 --> 00:28:58.710
We could talk about some of those trade offs.
383
00:28:59.190 --> 00:29:07.690
So if you have fees on the mint, which no mints out there are collecting mint based fees at the moment, but in the future, you can imagine a world where they will,
384
00:29:08.495 --> 00:29:19.554
that kinda sucks. You're paying money to consolidate. It's like, I don't really wanna pay money. Just I still have the same amount of money with a little bit less. So I think that's one of the major drawbacks. You also do kinda have, like, a very
385
00:29:19.980 --> 00:29:24.960
obvious timing footprint of, like, here's all the eGash notes that I care about
386
00:29:25.260 --> 00:29:32.800
spinning Right. Now. So stuff like that is not ideal. But But that's why, I mean, that's why manual consolidation
387
00:29:33.260 --> 00:29:34.320
has a bunch of
388
00:29:35.245 --> 00:29:39.105
timing risks, but, like, if there's an easy consolidate button
389
00:29:39.405 --> 00:29:42.625
that kinda I don't know. Like, did it over time or something.
390
00:29:46.684 --> 00:29:50.700
I I I there's look. And the fee thing makes sense to me, but also, like,
391
00:29:52.280 --> 00:29:52.940
we consolidate
392
00:29:54.120 --> 00:29:55.740
on Bitcoin on chain,
393
00:29:57.160 --> 00:30:00.060
and in fact, to save on fees in the long term,
394
00:30:00.615 --> 00:30:02.315
which I think would probably be
395
00:30:02.935 --> 00:30:08.475
if you were deliberate about it, would be a similar scenario now because, I mean, mint fees could increase over time.
396
00:30:10.215 --> 00:30:12.955
Not yet. It's a tricky technical problem.
397
00:30:13.255 --> 00:30:22.820
Fair enough. Future, they would be able to trick so they can't. So at launch, once you launch a Fedimint, you're not changing your fee structure. As of right now. Yeah.
398
00:30:23.600 --> 00:30:27.220
It's again, that's where we get into the tricky consensus issues.
399
00:30:28.000 --> 00:30:30.179
We sort of have to deal with a lot of similar,
400
00:30:30.935 --> 00:30:35.115
like, software problems that Bitcoin has to deal with because we're a consensus system.
401
00:30:36.135 --> 00:30:38.075
And, you know, that, you know, that's
402
00:30:38.455 --> 00:30:44.235
part of what makes us go a bit a bit slower, like, maybe in in comparison to Cashier because there's those challenges.
403
00:30:46.260 --> 00:30:47.320
But, yeah, that's
404
00:30:48.580 --> 00:30:58.625
I do wanna circle back to your point, though, Matt. I think it's excellent to consider just like the trade offs. Like, yeah, it might be like a a really small fee if you're paying, like, a SaaS Yeah. Or something.
405
00:30:59.085 --> 00:31:11.005
Then now all of a sudden, you don't have to if you wanna, you know, go spend a $100 worth of e cash, like, you're not gonna have to have a giant string of text or have an animated QR code that needs to scan, like, a 150
406
00:31:11.005 --> 00:31:13.745
little parts. Because you know where you see it.
407
00:31:14.200 --> 00:31:15.420
It's because of Nasr.
408
00:31:15.960 --> 00:31:18.220
Like, if I in my day to day transactions,
409
00:31:18.840 --> 00:31:35.655
you know, okay. People are sending me $5, $10, $20, whatever. I'm going to I mean, I wish my farmer's market accepted eCash, but I'm going to the farmer's market. I'm paying $20 for steak or whatever. But, like, on Nostr, they're sending me 42 sats or 20 sats, and then you end up with, like, thousands
410
00:31:36.035 --> 00:31:37.555
thousands of tiny, tiny,
411
00:31:40.595 --> 00:31:41.095
amounts
412
00:31:41.790 --> 00:31:45.570
that always have to be constant. It's just like a constant challenge.
413
00:31:45.870 --> 00:31:48.670
Yeah. Our our algorithm right now does try
414
00:31:48.990 --> 00:31:55.170
when you transact, it does try to consolidate, but, yeah, you you you still run into that situation. So,
415
00:31:56.295 --> 00:31:56.795
And,
416
00:31:57.335 --> 00:31:58.315
specifically, I think
417
00:31:59.335 --> 00:32:02.875
and, you know, obviously, I'm more bullish on Nostra than most people.
418
00:32:04.535 --> 00:32:08.820
And, you know, it's still an open question of of how successful Nostra will be.
419
00:32:09.940 --> 00:32:13.240
But, specifically, both Fedimin and Cashew kinda solve that
420
00:32:14.740 --> 00:32:15.639
first problem
421
00:32:16.019 --> 00:32:22.715
in a very elegant way, which is, like, new user comes to Nostra and wants immediately to receive Bitcoin. Doesn't have a lightning node.
422
00:32:23.015 --> 00:32:24.795
Obviously, on chain is not practical,
423
00:32:25.495 --> 00:32:28.235
for that situation because they're receiving 42 sets.
424
00:32:29.175 --> 00:32:30.635
So I think if if
425
00:32:31.015 --> 00:32:35.760
if these projects are successful, that's gonna be it's like, it's either we're not successful
426
00:32:36.380 --> 00:32:37.920
or that's gonna be a big problem.
427
00:32:39.420 --> 00:32:43.520
So just just to point it out early is my point. Yeah. It's a good point.
428
00:32:46.460 --> 00:32:49.680
Okay. I'll just let go of Greg. Quick 100%.
429
00:32:50.134 --> 00:32:54.955
Sweet. On the the previous topic of how do you know what Mint
430
00:32:55.414 --> 00:33:05.115
do you wanna join? Like, is there any rating system? So that's not currently in the eCash app, but there is a separate system, a different website you can go to, observer.fediment.org.
431
00:33:05.350 --> 00:33:10.409
So this is an entirely separate system that Eric Sirian, started to build out. I chipped away,
432
00:33:10.870 --> 00:33:17.049
making some contributions on as well. It's a really cool way to take to connect to a mist.
433
00:33:17.365 --> 00:33:19.784
And without getting too much into the nitty gritty,
434
00:33:20.164 --> 00:33:25.945
you can essentially scan the entire history of that mint and then observe everything that is observable
435
00:33:26.245 --> 00:33:28.664
for that mint from a third party perspective.
436
00:33:29.044 --> 00:33:38.180
If anybody is curious about that topic in-depth, I gave a talk at BTC plus plus Berlin last year that's on YouTube that you could take a look at the types of things that you can observe.
437
00:33:38.480 --> 00:33:48.175
But this also gives you a really nice way to explore, like, oh, look at the number of transactions that we're seeing on each of these different mints. What's the total number of assets and liabilities held on these mints?
438
00:33:48.555 --> 00:33:54.975
Then what's the rating system? So that's another cool resource that's not currently in the eCash app. Observer.fediment.org.
439
00:33:55.115 --> 00:33:59.995
Correct. Oh, yeah. I'll put all these links there. I mean, I also think bitcoinmints.com
440
00:33:59.995 --> 00:34:01.615
is great because it has the reviews.
441
00:34:02.730 --> 00:34:08.990
That's obviously not FEDIMENT only. It also has cashew mints in there. And that does bring up an interesting point,
442
00:34:10.490 --> 00:34:15.310
that because FEDIMENT is on chain native, you do get that additional data point of
443
00:34:16.105 --> 00:34:18.285
how much Bitcoin is actually in the multisig.
444
00:34:19.625 --> 00:34:22.205
Totally. And on that point too,
445
00:34:22.665 --> 00:34:27.325
part of the consensus mechanism, whenever there's something being updated in the system,
446
00:34:27.720 --> 00:34:37.340
it will do a full audit. So, hey. Let's take a look at all of the assets and all of the liabilities I have across this Mint and make sure that my liabilities do not exceed
447
00:34:37.880 --> 00:34:43.260
the assets. If there is an issue with the accounting there, I'm panicking and everything shuts down.
448
00:34:43.795 --> 00:34:55.815
So that's something that the operator doesn't really know that they're doing. But each time that there's any type of update, there's actually a full audit that's run on them. And then other users, if they're curious, can essentially perform But then we're you're trusting the operator
449
00:34:56.390 --> 00:35:02.730
in live load drive. All at the end of the day, we'll go how much e cash is out there. Yeah. Yeah. Exactly. So you can
450
00:35:03.030 --> 00:35:03.530
you
451
00:35:03.990 --> 00:35:09.130
people can play games. They can fork the software, and if they're clever, can do naughty things.
452
00:35:09.595 --> 00:35:24.850
Where reputation systems come in handy. And, again, it's it's too going back to kinda, like, why would anybody wanna use this system and you explore the trade offs, that's a trade off you're uncomfortable with. I I wouldn't touch it. Like, that's totally Yeah. I mean, there's there's a lot of focus on the idea of just, like,
453
00:35:25.250 --> 00:35:26.790
one and done rug pull.
454
00:35:27.410 --> 00:35:30.950
But, the, like, the scarier trade off with both Cashew and Fediment
455
00:35:31.570 --> 00:35:32.710
is, like, the
456
00:35:33.410 --> 00:35:34.470
silent inflation,
457
00:35:35.335 --> 00:35:41.755
you know, like, the slow the slow rug pull. You're running, like, a fractional reserve for a while. Yeah. The office space protocol.
458
00:35:45.575 --> 00:35:49.095
Yeah. That's kinda where the go. Like, Kyle, I had that idea with,
459
00:35:49.850 --> 00:35:51.390
like, the automated bank runs,
460
00:35:51.850 --> 00:35:53.390
where you have, like, the window.
461
00:35:54.170 --> 00:36:00.250
I that idea is cool. I'm not aware of anyone working on that, but that's that would be kind of the mitigation on the,
462
00:36:00.890 --> 00:36:02.890
the silent or the slow run pull. But
463
00:36:04.085 --> 00:36:05.285
No. But it still doesn't
464
00:36:05.845 --> 00:36:08.664
I mean, like, it's better than all these things are better than nothing.
465
00:36:08.964 --> 00:36:11.224
And I think you put all the pieces together,
466
00:36:11.845 --> 00:36:13.305
and you have a relatively,
467
00:36:15.365 --> 00:36:32.420
particularly if you're using this as, like, a, using these as as spending wallets, right, and not, like, life savings, which is how I think most people should approach it. It's like once you hit a certain amount. I think Zeus does a really cool job with this. Actually, like, building it into their UX. Once you hit a certain amount, then it goes out to self custody,
468
00:36:32.835 --> 00:36:37.815
Mhmm. Whether that's lightning. I ideally, I mean, on the in a Fedimint side, I think it'd be really cool
469
00:36:38.435 --> 00:36:39.494
if it just, like,
470
00:36:39.955 --> 00:36:43.974
in in the eCash app or whatever the front end app is. Like, once you hit a certain amount,
471
00:36:44.275 --> 00:36:52.800
it it prompts the user to put in an on chain address and just sends out to an on chain address. And if the user needs to reload it, they can always just send it back,
472
00:36:53.260 --> 00:36:56.720
maybe even build an on chain wallet directly into the app and just
473
00:36:57.195 --> 00:37:01.295
you can kinda just make it one click, just goes into the on chain self custody portion.
474
00:37:01.995 --> 00:37:04.735
I think that is pretty cool way of reducing risk.
475
00:37:05.595 --> 00:37:11.215
But, like, even his e it's long winded, but even his, like, Cashew Auditor thing, the round robin,
476
00:37:12.359 --> 00:37:19.819
it kinda doesn't you can, like, fake it out. It's just checking to see if if lightning payments are going through in a reliable way.
477
00:37:21.240 --> 00:37:30.675
So you can fake it out for a bit while you're doing things. And then, also, second of all, like, it definitely does not stop like the one and done rug where you can have, like, a cashew mint that is awesome.
478
00:37:31.055 --> 00:37:32.835
It could be awesome for five years,
479
00:37:33.135 --> 00:37:52.300
and then it could hit a certain amount. And then the operator's like, nice. You know, I'm gonna go take a trip to a Visa, and he's just out. And, like, there's no way for you to stop that with the auditor thing. Yeah. Totally agree. Yeah. I am not, I've never considered a way to solve those problems. They may be Yeah. Solvable. And Just just mitigations.
480
00:37:52.605 --> 00:37:59.345
That's all. Yeah. You can add a bunch of little pieces that, like, educates the user, allows them to make more educated decisions, reduce their risk.
481
00:38:01.325 --> 00:38:03.585
And I really like the idea of, like,
482
00:38:04.860 --> 00:38:09.120
like, building it into UX flow, like, the balancing of, like, how much is in
483
00:38:09.820 --> 00:38:12.720
e cash versus how much is in on chain or lightning,
484
00:38:13.260 --> 00:38:15.100
self custody. I think that is
485
00:38:15.660 --> 00:38:23.835
I I I think that could be, like, the holy grail of kind of the balancing act here. If if you if you do it in a seamless way for the user where they're not even really
486
00:38:24.535 --> 00:38:37.240
kind of considering how it's happening behind the scenes, they're just like, okay. I got my checking account, and I got my and maybe that's not even a good analogy anymore because I don't know if Gen z even knows what bank account is. Like, I have my checking account and I have my savings account,
487
00:38:38.500 --> 00:38:42.440
and it's two separate pools of money with different different trade off balance.
488
00:38:45.954 --> 00:38:54.375
Okay. Let's go to the operator side because I think the biggest issue I mean, Fedimint has, let's be honest, has had multiple issues in terms of organic adoption.
489
00:38:55.954 --> 00:38:59.015
I think partially has been the front end side.
490
00:38:59.369 --> 00:39:03.630
But I think probably, which is great to see another Federman focused
491
00:39:04.089 --> 00:39:07.150
front end with your Ecash app get released.
492
00:39:08.009 --> 00:39:13.150
And the immunity guys are working on it for a while on the front end side. They got burnt out,
493
00:39:13.529 --> 00:39:14.730
pivoted to AI,
494
00:39:15.905 --> 00:39:18.005
which is actually not the worst thing in the world
495
00:39:18.305 --> 00:39:22.085
for us as users because I really I really like Maple now.
496
00:39:23.505 --> 00:39:24.005
So,
497
00:39:24.865 --> 00:39:35.340
all power to Tony on that. Two of them actually, they're making Harbor Wallet, which is gonna be a Federman front end. I think it's out right now. I don't know. I haven't tested it. Yep.
498
00:39:35.720 --> 00:39:37.580
I think they had a one o release.
499
00:39:38.040 --> 00:39:39.020
Yeah. Yeah.
500
00:39:39.880 --> 00:39:41.260
But have you tested it?
501
00:39:41.720 --> 00:40:05.549
I have not. I have a friend that did, though. Yeah. So part of the release process testing that I do, I help coordinate, make sure that every time we create a major release that we try to test as many scenarios as we possibly can. Part of that is downstream clients being able to easily integrate with any changes. So, yeah, definitely spin up, couple VMs and have, dedicated ones just for building harbor and making sure the desktop client works well.
502
00:40:05.849 --> 00:40:10.269
Yeah. Yeah. It's harbor dot cache. I tested harbor before the one o release.
503
00:40:11.175 --> 00:40:16.715
Yeah. So that's Paul and Ben from the former Mutiny team, I believe. I've been working on Harbor
504
00:40:17.255 --> 00:40:20.875
Yep. While Tony pivoted to AI with, Marks.
505
00:40:23.335 --> 00:40:24.955
But, anyway yeah. Go on, Ben.
506
00:40:25.440 --> 00:40:27.200
Alright. Let's let's go ahead and,
507
00:40:27.760 --> 00:40:29.780
address some of the pain points
508
00:40:30.160 --> 00:40:48.515
and then kind of the the narrative, the arc of how we kinda got to some of the most recent changes. Yeah. It Okay. Yeah. What on the operator side? Right? So, definitely heard your feedback early on with Fedimint before you had even joined the project and us working at, North American Centralized Exchange being like, how cool that there's a
509
00:40:48.895 --> 00:40:52.915
a system that isn't doing KYC and all these fun things, and you can deposit
510
00:40:53.510 --> 00:40:56.170
some funds out of a a system like this.
511
00:40:56.869 --> 00:40:58.410
But, anyway, the the
512
00:40:58.710 --> 00:41:00.089
setup of a federation
513
00:41:01.030 --> 00:41:06.650
was tricky. Let's talk about what a setup of a federation looked like just a couple months ago. Shit. It's fucking horrible.
514
00:41:07.285 --> 00:41:17.625
Yeah. It's in, like, definitely no like, it's it's an iterative process. Software is really cool. You start with a thing and you're like, oh, crap. Let's see if we can, like, shape this marble into something a bit more beautiful.
515
00:41:18.725 --> 00:41:22.799
And the initial setup process is tricky. So, like, in general,
516
00:41:23.099 --> 00:41:27.119
you have, like, a client server model is one way to think about this.
517
00:41:27.500 --> 00:41:35.440
Each of the peers, the guardians that operate this, are essentially operating a server that needs to be reachable on the wider Internet.
518
00:41:36.325 --> 00:41:50.245
That's not great. You need a static IP address. Okay. Now you have a firewall. You have to make sure that inbound connections are allowed within your firewall. Okay. Let's go ahead and go to a domain name registrar and get a domain name. Oops. I chose a .xyz
519
00:41:50.245 --> 00:41:51.145
domain name.
520
00:41:51.510 --> 00:41:53.290
Okay. Now we have this this,
521
00:41:54.150 --> 00:41:56.010
hard coded domain name
522
00:41:56.390 --> 00:42:02.250
that will map my how how to connect to my specific server who like, traditional
523
00:42:02.550 --> 00:42:11.035
web software, we've been doing this for decades. Like, that is the common pattern, but that is not a very self sovereign pattern of of setting up stuff.
524
00:42:11.415 --> 00:42:17.575
And then there's also headache with the actual setup flow. Once you actually get everything set up and you try to do the the,
525
00:42:18.460 --> 00:42:21.520
DKG with your other peers to do the setup ceremony,
526
00:42:22.620 --> 00:42:24.800
lot of back and forth that's kinda clunky.
527
00:42:25.260 --> 00:42:32.560
So there's there's definitely some pain points. Heard the concerns, and we worked quite a bit to iterate on that, make it a much smoother process.
528
00:42:33.165 --> 00:42:33.665
So,
529
00:42:34.445 --> 00:42:42.925
let's also kinda fast forward a couple months after we launched. So and when I say launch, it's like a main net, supported version, which was officially 0.2.one,
530
00:42:42.925 --> 00:42:44.775
which was roughly, like, February
531
00:42:44.775 --> 00:42:45.665
2024.
532
00:42:45.805 --> 00:42:48.625
We'll fast forward about three months to May, and then
533
00:42:48.980 --> 00:42:50.359
you see certain,
534
00:42:51.299 --> 00:42:53.960
folks that interact with federation saying that, hey.
535
00:42:54.339 --> 00:42:56.359
I'm like I'm like, something's
536
00:42:56.660 --> 00:43:00.359
off. Like, we're we're down. Like, I can't like, one of our peers is offline.
537
00:43:00.995 --> 00:43:06.855
And then someone what's what's going on there? Why is the peer offline? And then you do some investigation, and it's like, oh my goodness.
538
00:43:07.475 --> 00:43:09.095
Somebody was able to file
539
00:43:09.395 --> 00:43:11.095
some kind of abuse complaint
540
00:43:11.475 --> 00:43:12.535
without any verification
541
00:43:12.915 --> 00:43:17.570
and a dot xyz domain, the registrar is like, yeah. We don't we don't care. We'll just take it down.
542
00:43:18.030 --> 00:43:25.650
Uh-oh. Like, all of a sudden, this previous assumption that it would take, you know, almost like a state level attack to bring down a domain name
543
00:43:26.030 --> 00:43:26.849
is trivial,
544
00:43:27.155 --> 00:43:30.055
and that's a big bummer. So you're like, okay. Well, domain name
545
00:43:30.355 --> 00:43:40.295
is not a good solution, so we have some quick workarounds to try to get everybody up up and running again, which includes just, essentially, here's an update system for this new,
546
00:43:41.090 --> 00:43:46.870
d n like, here's a new domain name which you can reach my server at. Let's go ahead and broadcast this, and people figure that out.
547
00:43:47.330 --> 00:43:49.350
Is the the quick fix in a nutshell,
548
00:43:49.970 --> 00:43:54.950
but that's not a long term viable solution, and that hasn't solved any of the original problems
549
00:43:55.325 --> 00:44:05.425
when it comes to, like, okay. This is kinda hard to set up, but, also, like, what if you use Starlink? Starlink is behind something called a c g NAT. C g NATs, you share a single IP address
550
00:44:05.885 --> 00:44:12.240
with everybody in your region. And so sorry, buddy. You're not gonna be able to have a static IP address that can be reachable,
551
00:44:13.180 --> 00:44:14.000
on the Internet.
552
00:44:14.380 --> 00:44:17.520
So what do you do for all of these different type of scenarios?
553
00:44:18.140 --> 00:44:21.520
Well, enter a really cool project called IRO.
554
00:44:21.820 --> 00:44:27.145
I won't give too much historical background, but, essentially, IRO was born out of the IPFS,
555
00:44:28.485 --> 00:44:28.985
ecosystem,
556
00:44:29.765 --> 00:44:31.625
which is Filecoin, IPFS.
557
00:44:32.405 --> 00:44:33.465
Really interesting
558
00:44:33.925 --> 00:44:41.520
experiments going on there. They were bumping into some boundaries of, like, look. If we wanna make it easier to establish, like, peer to peer connections
559
00:44:41.980 --> 00:44:47.359
anywhere on the Internet, like, we're hitting limits of what we can do without breaking IPFS.
560
00:44:47.819 --> 00:44:52.559
So we're gonna go ahead and, like, freeze this existing project, spin out,
561
00:44:52.940 --> 00:44:54.225
and start, like,
562
00:44:54.545 --> 00:44:55.045
simplifying
563
00:44:55.345 --> 00:45:04.245
and focusing on how do we make it easy to connect to other people on the Internet. And the approach that they ended up landing on
564
00:45:04.545 --> 00:45:25.985
is just a public and private key pair. So instead of using a domain name to look up how do I connect to the server, it's just a public key. That's really cool. They call that a node ID. And then there's some other technologies that they we could go deep on, but to keep it high level, essentially, it's like instead of, like, being blocked because you're behind a CG NAT or any kind of fancy firewall,
565
00:45:26.685 --> 00:45:31.745
how do we make it so we could still do some type of hole punching to establish a direct connection
566
00:45:32.125 --> 00:45:33.905
for different computers on the Internet?
567
00:45:35.330 --> 00:45:53.855
Voila, they released this thing called Aira that, for now, we'll just say, like, magically solves these solutions, and we can go into those details. So longer term solution for Fedimin is, like, how about we switch out our networking stack or at least make a parallel networking stack where we instead of doing just, TCP and TLS connections
568
00:45:54.234 --> 00:45:57.535
that use traditional DNS and all the headaches we just discussed,
569
00:45:57.994 --> 00:46:01.615
what if we just integrate Iro? And so when you set up Iro,
570
00:46:02.060 --> 00:46:02.960
you get an Iro
571
00:46:03.660 --> 00:46:06.640
key pair, and then Iro automatically
572
00:46:07.020 --> 00:46:11.119
handles publishing that key pair that makes it so your node becomes discoverable.
573
00:46:11.820 --> 00:46:20.775
Then anybody behind other connections should be able to establish a connection to you. So I'll I'll pause there. I can go into more details, or we can kinda you pull up questions if
574
00:46:21.395 --> 00:46:22.855
if I Yeah. I mean, specifically,
575
00:46:23.954 --> 00:46:30.934
just to provide I think that was a great rundown. Thank you for that. I mean, specifically, there was two large pediments,
576
00:46:33.280 --> 00:46:33.780
that
577
00:46:34.960 --> 00:46:36.339
effectively had an unintentional
578
00:46:36.720 --> 00:46:39.940
rug because their domains got shut down,
579
00:46:40.720 --> 00:46:43.460
and there was a there was a reliance on
580
00:46:43.839 --> 00:46:45.940
on those fixed domains.
581
00:46:46.265 --> 00:46:49.165
And, specifically, it was the dot x y z registrar
582
00:46:49.785 --> 00:46:54.125
that just, like, immediately honored whatever random spam list had put them on there.
583
00:46:54.665 --> 00:46:57.145
And it caused a whole slew of issues,
584
00:46:57.465 --> 00:47:01.725
both on the operator and the user side of trying to recover from that gracefully.
585
00:47:03.930 --> 00:47:08.350
This what you're explaining to me is, like, to me, the the holy grail
586
00:47:09.930 --> 00:47:11.150
of getting something
587
00:47:11.450 --> 00:47:12.590
like this to work
588
00:47:13.130 --> 00:47:16.590
is making it as easy as possible for someone to effectively
589
00:47:18.125 --> 00:47:18.625
self
590
00:47:19.085 --> 00:47:24.464
host, a guardian server. Like, in I mean, we we talked about the reliance on
591
00:47:24.765 --> 00:47:27.825
DNS being an issue with, like, the dot x y z registrar.
592
00:47:28.285 --> 00:47:30.704
But even more so, like, you also need to
593
00:47:31.619 --> 00:47:38.839
have, you know, a VPS provider, and you need to have a server in the cloud or whatnot. And that creates all sorts of friction, and it also creates all sorts of,
594
00:47:39.779 --> 00:47:44.595
threat model issues for the actual operators in terms of how to operate it privately. So
595
00:47:45.155 --> 00:47:47.734
correct me if I'm wrong. Does this mean
596
00:47:49.234 --> 00:47:54.375
that we're close to someone just being able to, like, run a Guardian on a start nine at home privately?
597
00:47:54.915 --> 00:47:58.855
I don't or it's not very close. You can do it today. Yeah. Totally.
598
00:47:59.660 --> 00:48:04.000
We have a we have an s nine p k package that you can side load on
599
00:48:04.380 --> 00:48:08.300
a on a start nine. And then on Umbrel, we're in the App Store right now.
600
00:48:08.860 --> 00:48:09.680
So you can install
601
00:48:11.100 --> 00:48:12.160
it. And, yeah, the
602
00:48:13.095 --> 00:48:20.155
the, you know, Brad's description of, like, the details is awesome. But from a dart like, a operator perspective, you don't need to know,
603
00:48:20.455 --> 00:48:23.035
like, any of that. You just run it. And,
604
00:48:24.295 --> 00:48:27.355
the actual setup ceremony, you're exchanging these strings.
605
00:48:27.910 --> 00:48:33.050
And the the strings are essentially serialized versions of, like, how you connect to your other peers.
606
00:48:34.070 --> 00:48:39.130
And once everyone has the connection to vote, you just hit launch and it that's when it does the DKG.
607
00:48:39.670 --> 00:48:42.010
And if it's successful, like, you're good to go.
608
00:48:42.605 --> 00:48:56.704
So the, yeah, the operating part is much easier. You can write it down. Like, copying so you're launching on your starting on or your Umbrel, then you're copying pasting strings between the guardians through signal or whatever. Yep. And then you press launch. Yep. That's it. Yeah.
609
00:48:57.099 --> 00:49:05.760
That's what I mean. Yeah. I don't I'm apologies. I'm not on Twitter. But if you do pull up the Fedimint Twitter account, there will be a screen recording that I made where,
610
00:49:06.140 --> 00:49:12.160
there's four separate Chrome windows. I'm operating all of these on remote home servers
611
00:49:12.585 --> 00:49:17.165
that, I'm using a mixture of start nine and Docker to do the setup ceremony.
612
00:49:18.025 --> 00:49:28.780
I do fast forward through the boring parts of, like, the copy and pasting and but you do get a a gist that if everybody's online and available to communicate these things, you get a set up process done in about a minute or two.
613
00:49:29.160 --> 00:49:41.720
Obviously, that's, like, optimistic case. There's, you know, communication and coordination, all that stuff. I didn't anticipate it takes a wee bit longer. But, yeah, it's it's a dead simple process. Yeah. And and and that too, we made a few changes to the,
614
00:49:42.575 --> 00:49:44.275
the actual DKG process,
615
00:49:44.575 --> 00:49:46.755
and the UI is all new as well.
616
00:49:47.775 --> 00:49:50.755
UI server side rendered, so it's also a lot simpler.
617
00:49:51.455 --> 00:49:57.875
So it kinda yeah. I wrote the new new UI and the DKG changes made made setup just
618
00:49:58.910 --> 00:49:59.810
so much easier.
619
00:50:00.190 --> 00:50:06.370
I remember the first time, like, we did it, like, on UniNet dev setup. Like, we had four of us that were,
620
00:50:06.990 --> 00:50:11.650
two on different continents, one behind the Starlink, and it just it just worked.
621
00:50:12.110 --> 00:50:13.090
It's pretty amazing.
622
00:50:13.795 --> 00:50:14.695
That's awesome.
623
00:50:15.395 --> 00:50:19.095
I well, congratulations, guys. Oh, thank you, Steve. Fantastic.
624
00:50:19.875 --> 00:50:27.415
I would like to circle back to a statement you made Matt about, it's kinda like the holy grail. I do not wanna oversell IRO.
625
00:50:27.900 --> 00:50:28.400
Right?
626
00:50:29.660 --> 00:50:31.680
Kinda we're getting close. My job.
627
00:50:32.059 --> 00:50:37.279
Yeah. It's not I'm not an iro dev. I'm an iro consumer and curious, excited fan.
628
00:50:37.900 --> 00:50:43.440
But my goodness isn't that cool freedom tech to allow peer to peer connections pretty much anywhere on the Internet.
629
00:50:43.795 --> 00:50:53.575
You could imagine all different kinds of use cases, not even just for, you know, Johnny and Nikesh Minh, but anything that's interesting to connect to different computers across the Internet.
630
00:50:54.835 --> 00:50:58.375
It's dead simple. It's a couple lines of code to get that started,
631
00:50:58.710 --> 00:51:09.290
and you're off to the races. I would And I assume that's an open source project itself. Open source project. And they're also as far again, I sound like I'm a a Iroshill. I'm definitely not paid by Iro.
632
00:51:09.750 --> 00:51:11.270
There's nothing going on there. But,
633
00:51:11.855 --> 00:51:18.994
they're a beautiful open source project in terms of their communication style. They have a lovely YouTube channel with excellent explainer videos that are very well
634
00:51:19.295 --> 00:51:20.275
polished. Their documentation
635
00:51:20.575 --> 00:51:21.555
is is excellent.
636
00:51:22.095 --> 00:51:23.234
Their thought process
637
00:51:23.775 --> 00:51:31.869
on road maps and making realistic expectations and adapting when they hit roadblocks, which is one thing we could discuss because we were
638
00:51:32.170 --> 00:51:37.630
we were hoping to wait until they reached their 1.0 release where a lot of these networking protocols
639
00:51:38.010 --> 00:51:42.270
have reached stability, and there won't be any breaking changes that are introduced in the IRO.
640
00:51:42.945 --> 00:51:47.045
We were anticipating that would happen, like, June or July roughly of this year,
641
00:51:47.425 --> 00:51:53.365
and then, you know, software. So stuff gets complicated, and it takes a lot longer than you'd expect. But they had a very clear,
642
00:51:53.745 --> 00:51:56.085
like, look on o dot 35.
643
00:51:56.730 --> 00:52:04.190
We will keep these stable, and then we're gonna do this canary series for o dot 90 that works our way up to this official final stable release.
644
00:52:04.730 --> 00:52:20.965
Don't don't play with that if you don't wanna be building on quicksand. Stay on o dot 35, and then you can upgrade to the official. So just in terms of, like, a open source project, communicating things beautifully to the community is yeah. They they they check a lot of boxes, so they're they're doing great. So, again, it's not the,
645
00:52:21.765 --> 00:52:32.230
not the magic bullet. It's it's, you know, not a panacea, but it's a very cool consourced project I am heavily Yeah. We we had most of this stuff for on the sentiment side. We had,
646
00:52:32.630 --> 00:52:37.609
I wrote pretty much fully integrated on our o seven release, which was back in, like, April.
647
00:52:38.505 --> 00:52:40.365
But as Brad said, we kind of waited,
648
00:52:41.385 --> 00:52:42.525
some time to
649
00:52:42.984 --> 00:52:47.164
see what they were doing as far as their breaking change. They were gonna do this breaking change,
650
00:52:47.464 --> 00:52:48.924
and we actually ended up
651
00:52:49.464 --> 00:52:49.964
integrating,
652
00:52:50.905 --> 00:52:57.140
both versions so that we're we'll be, like if they do because they're running some infrastructure that,
653
00:52:57.680 --> 00:53:00.500
these relays that do the direct connections.
654
00:53:01.840 --> 00:53:03.300
And we didn't want to, like,
655
00:53:03.680 --> 00:53:04.180
deploy,
656
00:53:05.275 --> 00:53:10.494
you know, an IRA version and then they would, like, rub their version and say, oh, we're not supporting that protocol anymore.
657
00:53:11.435 --> 00:53:18.815
So we're running we're actually running our own relay as well. I think we do we default to their relays, but you can point it at ours too.
658
00:53:19.539 --> 00:53:25.480
So we do So we actually it it does everything in parallel. So you are saying, like,
659
00:53:26.339 --> 00:53:36.165
we're about to get into the nitty gritty. Matt, do you think it's worth getting into the nitty gritty? Yes. Sure. Nitty gritty. The freaks the freaks love it. It's not a good dispatch unless you don't understand
660
00:53:36.545 --> 00:53:41.025
over 50% of it. Oh, we could go so deep on so many things. It's gonna be fun.
661
00:53:41.505 --> 00:53:46.405
So let's take a look at the perspective of what happens when an IRO node launches.
662
00:53:46.740 --> 00:54:00.920
So this is gonna start it's gonna be like, okay. What am I what's my goal here? Am I trying to accept connections, or am I gonna be trying to send connections? And then let's go ahead and bind this thing. It's really just, like, one or two lines of code. And then when you click when you do the bind,
663
00:54:01.464 --> 00:54:07.885
method, there's a bunch of magic that happens. So when the application starts up, it's gonna be like, okay. What relays
664
00:54:08.505 --> 00:54:17.420
am I aware of? What are those domain names that I can go reach out and and ping and see who responds to me fast enough? That's gonna be called your home relay. So
665
00:54:17.720 --> 00:54:21.260
anybody here, I'm gonna do just a quick tangent into something that's called Tailscale.
666
00:54:21.880 --> 00:54:24.680
I I'm not a Tailscale shill either.
667
00:54:25.080 --> 00:54:26.540
Definitely, like, a VC
668
00:54:27.160 --> 00:54:32.485
backed you know, it's a start up. You could get RUB, the free tier, all that good stuff. But a lot of the networking,
669
00:54:34.225 --> 00:54:44.430
tricks that are played within Niro are also used within Tailscale. So it's like, how do I SSH to a home server when I'm on the other side of the planet? You can do something like Tailscale.
670
00:54:44.890 --> 00:54:45.950
But, anyway, the,
671
00:54:46.810 --> 00:54:52.990
the fundamental design is very similar where it reaches out to a home server, and then this home server
672
00:54:53.450 --> 00:54:59.315
starts publishing details of, okay. This is how you can look up this public key
673
00:54:59.775 --> 00:55:08.435
and figure out how to dial it. And there's a bunch of additional magic. You could say, go ahead and publish some details to the mainline BitTorrent DHT.
674
00:55:09.020 --> 00:55:22.560
Okay. Let's go ahead and use some other services that are essentially just like glorified maps that map node ID to some way that you can dial me. So when your client starts up, it's like, okay. Let's see if I can check all of these different,
675
00:55:24.455 --> 00:55:36.315
the the different address books, essentially, like, for this node ID. Let's see if I can figure out where this public key exists. So it reaches out to that home server, and the home server is like, I got good news for you. Here's how you establish a direct peer to peer connection.
676
00:55:36.740 --> 00:55:38.500
If that doesn't work out, which it,
677
00:55:39.460 --> 00:55:41.619
their goal is 90 to 95%
678
00:55:41.619 --> 00:55:46.920
of all connections will end up in a direct peer to peer connection. But let's say you still wanna send packets
679
00:55:47.220 --> 00:56:00.675
and you can't establish that, direct peer to peer connection, it will still be relaying encrypted data across that relay. So if it knows the origin and the destination, however, it doesn't know the contents of the message that are being sent back and forth.
680
00:56:01.055 --> 00:56:04.620
So that's how you get this, like, very beautiful automatic,
681
00:56:06.520 --> 00:56:09.740
peer to peer networking system. If that relay goes down?
682
00:56:10.280 --> 00:56:24.825
Beautiful question. That's a central point of failure. I'm like, you know what? That would actually suck if we do all this work to integrate IRO. You can all of a sudden. Happens to their infra. So we also run parallel infra, and anybody can run parallel infra. So any other,
683
00:56:25.205 --> 00:56:28.825
orgs out there, and I would anticipate that as IRO gains in popularity,
684
00:56:29.559 --> 00:56:37.020
different people will be like, look. We will operate relays. Relays And then clients will gracefully switch between them on failure or something?
685
00:56:37.400 --> 00:56:37.900
Yeah.
686
00:56:38.280 --> 00:56:40.619
There's the discovery there's the discovery mechanism.
687
00:56:41.079 --> 00:56:46.265
So there's sort of two late the the relay is what helps set up the direct connection,
688
00:56:46.725 --> 00:56:50.265
and then the discovery part is how you sort of find the relay. So,
689
00:56:50.885 --> 00:56:51.785
Ira has
690
00:56:52.325 --> 00:56:54.745
I believe that the default is DNS discovery,
691
00:56:55.670 --> 00:56:57.450
but you can also use the PCAR,
692
00:56:58.710 --> 00:57:00.650
discovery method or the mainline,
693
00:57:01.190 --> 00:57:02.410
BitTorrent DHT.
694
00:57:03.510 --> 00:57:05.930
So, yeah, that that's kinda how you get around that.
695
00:57:08.335 --> 00:57:09.155
That's awesome.
696
00:57:11.615 --> 00:57:15.555
I mean, I wanna pull it back for a second on the Fetterman operator side.
697
00:57:15.935 --> 00:57:23.555
This arrow stuff seems awesome. And by the way, Freaks, the Freaks joining us in live chat, thank you guys for joining us in live chat. You guys make this show
698
00:57:24.210 --> 00:57:25.190
special and unique,
699
00:57:25.490 --> 00:57:30.390
and I love seeing a vibrant live chat. It's one of the reasons we prioritize,
700
00:57:32.369 --> 00:57:34.470
live streaming within the Primal apps.
701
00:57:34.930 --> 00:57:38.630
If you wanna join the live chat, you can do that through zap.stream.
702
00:57:39.744 --> 00:57:42.565
He has an iOS app as well or on web
703
00:57:42.945 --> 00:57:45.525
or any of the Primal apps, Android,
704
00:57:46.785 --> 00:57:47.285
iOS,
705
00:57:47.825 --> 00:57:48.325
web.
706
00:57:49.025 --> 00:57:52.085
There's a few other Napster apps that also support the live streaming.
707
00:57:52.465 --> 00:57:54.210
Napster is one, and,
708
00:57:55.010 --> 00:57:56.310
Amethyst is another.
709
00:57:56.930 --> 00:57:58.390
Hopefully, we will see more.
710
00:57:58.770 --> 00:58:00.869
And, especially, huge shout out to the freaks
711
00:58:01.250 --> 00:58:02.869
who have zapped the show.
712
00:58:04.290 --> 00:58:11.005
One of them who zapped lethally was how I found out how Ira was spelled, I r o h. He zapped 2,100
713
00:58:11.005 --> 00:58:11.505
sats.
714
00:58:12.605 --> 00:58:18.285
But I see a bunch of other zaps from other people here, including Greg Gee with the top zap of 2121.
715
00:58:18.285 --> 00:58:19.505
So thank you, sir.
716
00:58:20.765 --> 00:58:22.865
I wanna get back to the operator side.
717
00:58:23.310 --> 00:58:25.570
So when this DNS issue happened,
718
00:58:27.630 --> 00:58:30.370
some of the Federman operators, all of a sudden,
719
00:58:30.990 --> 00:58:36.370
we're in, like, a they were in they were in, like, a failure mode. Right? And they needed to recover.
720
00:58:36.984 --> 00:58:40.445
So if I'm if if someone's running as,
721
00:58:41.145 --> 00:58:42.925
a sediment on the start nine,
722
00:58:43.625 --> 00:58:46.125
what does that backup process look like?
723
00:58:46.585 --> 00:58:52.140
And what does the restore process look like? Let's Yeah. You know, let the start nine
724
00:58:52.440 --> 00:58:55.340
burns up. Right? Let's the thing catches on fire.
725
00:58:56.520 --> 00:59:01.340
So how did I back it up, and how do I restore it? And if I was lucky to have to
726
00:59:01.685 --> 00:59:17.800
play around with a bunch of Start nine VMs and kick the tires to see all the different ways you can do this. It's a really cool system they have. So as part of the Start nine dashboard itself, there is an integrated backup and restore functionality in there. So if you wanna back up your federation,
727
00:59:18.100 --> 00:59:25.320
all you have to do within the start nine specifically is go to that. You back up. You select the. So if you just do a start nine backup, it includes the.
728
00:59:25.940 --> 00:59:29.000
Yeah. If you're selecting all the applications by default. And then
729
00:59:29.535 --> 00:59:30.275
on restore,
730
00:59:31.694 --> 00:59:37.615
there's a nice little trick that we play where and it's not a trick, but it's a DB snapshot. So you could
731
00:59:38.335 --> 00:59:38.734
I'm gonna
732
00:59:39.694 --> 00:59:46.570
at the the risk of blasting, it's not actually a blockchain, but you could almost conceptually think of some of the sequence of events,
733
00:59:47.190 --> 00:59:55.050
within the federation as a separate chain. And the reason why it's not a chain is because there's no cryptographic hash that's pointing to the previous block, so,
734
00:59:55.430 --> 00:59:58.010
it's be incorrect to to make that statement. But, anyway,
735
00:59:58.835 --> 01:00:06.134
there's we call these things sessions, and so you have a Genesys session. Maybe the federation's been running for two years. It's gonna have a ton of sessions.
736
01:00:06.755 --> 01:00:23.859
If you just need to do a normal restore, you're actually going to parse through all of those sessions again, and you're gonna reach out to all your other peers that you're connecting to, the other guardians in the federation. And you're like, can you give me the session data? And you're just gobbling that up and parsing it and then getting back to TIP, essentially. You're like sync you're syncing.
737
01:00:24.160 --> 01:00:27.780
You're syncing. Yep. You're doing an IBD, essentially, on the federation.
738
01:00:29.015 --> 01:00:31.595
What's nice about, specifically, the start line integration
739
01:00:32.055 --> 01:00:34.635
is we can go ahead and say, when you do backup,
740
01:00:35.015 --> 01:00:37.195
just save the state of,
741
01:00:37.975 --> 01:01:00.095
our our directory, our data directory. And then when you do the restore, go ahead and consider the most recent snapshot in our database, and we'll sync from that instead of needing to go back from Genesys. So then the backup restore process is significantly faster. However, it has a fail safe, within the Guardian dashboard itself. It's not necessarily a fail safe, but the default pattern across all the different deployments
742
01:01:00.555 --> 01:01:01.855
is you can just download,
743
01:01:03.595 --> 01:01:11.380
tar of your data directory. And so long as you have that file, you will be able to restore your your single Guardian,
744
01:01:11.760 --> 01:01:14.260
and reconnect all your peers and then sync from Genesys.
745
01:01:14.960 --> 01:01:15.700
Got it.
746
01:01:17.839 --> 01:01:18.480
So that's,
747
01:01:19.359 --> 01:01:23.359
that is the backup restore process. Doesn't also, you're kinda dovetailing into,
748
01:01:24.444 --> 01:01:28.545
with the dot x y z domain failures that we're in a failure mode.
749
01:01:28.925 --> 01:01:33.265
That'd be a little bit different than specifically this backup and restore process.
750
01:01:33.565 --> 01:01:39.025
That Guardian could have just, you know, backed up and restored their their specific FEDMID d, which is the daemon
751
01:01:40.460 --> 01:01:42.240
that runs the the Guardian software.
752
01:01:42.780 --> 01:01:53.985
That wouldn't have changed anything. You need to define some other workaround in order to say, like, alright. I've updated my specific domain name, and here's how you can reach me now. And then that got the system going.
753
01:01:54.365 --> 01:01:55.345
However, not
754
01:01:55.885 --> 01:02:00.385
it's a a nice quick solution, but, a long term elegant solution. Viro
755
01:02:00.845 --> 01:02:08.359
is is this elegant solution Yeah. For that part. Well, I know that one of those there was two Fedimans that had the x y z issue,
756
01:02:09.300 --> 01:02:10.440
and one of them
757
01:02:11.060 --> 01:02:13.560
like, the funds have still not moved on chain,
758
01:02:15.780 --> 01:02:16.760
because of
759
01:02:17.060 --> 01:02:17.560
backup
760
01:02:17.940 --> 01:02:18.920
backup failures.
761
01:02:19.464 --> 01:02:21.484
Well, that is interesting. That is,
762
01:02:22.025 --> 01:02:27.405
news Like, it was it was not your traditional rug. It was like the operators actually
763
01:02:28.185 --> 01:02:29.085
rug themselves.
764
01:02:30.744 --> 01:02:34.845
Like, also Like, it they donated to the entire Bitcoin community with,
765
01:02:36.000 --> 01:02:41.300
Bitcoin stuck in a multisig due to failure. So conflicts the config file that Brad mentioned is important,
766
01:02:41.600 --> 01:02:45.840
and that's exposed in the UI now. So, yeah, making sure it's kinda that is your
767
01:02:46.640 --> 01:02:48.420
that's the private key for the,
768
01:02:49.055 --> 01:03:11.350
for the Bitcoin that's held on, Shane. So you need I mean, but for, like, less technical users, the one click start nine backup sounds like a fantastic solution. Yeah. Please go with that, Roush. If you Yeah. Don't know how to do a reverse tunnel over SSH, please just use the start nine. Yeah. And then it's for you. Also, just real quick on that note, in general, if there was a federation where you noticed that style of failure,
769
01:03:12.050 --> 01:03:15.830
as long as you have the if if you have that config backup,
770
01:03:16.805 --> 01:03:29.865
there's something that we built called the recovery tool. So since this is just a multisig wallet on chain, technically, that Bitcoin's not locked. There is a way to Right. Create a valid Bitcoin transaction to move those funds out of the multisig,
771
01:03:30.565 --> 01:03:31.065
and,
772
01:03:31.990 --> 01:03:33.450
that is something that
773
01:03:34.390 --> 01:03:40.410
if you go to GitHub and look at or reach out on Discord, I'm sure that somebody would be able to assist you with that process.
774
01:03:41.670 --> 01:03:47.050
And that's yeah. Those funds funds are not lost, but, obviously, the whole system of, like, here's some
775
01:03:47.424 --> 01:04:01.045
ecash notes that I was hoping to not tell you. These were my ecash notes. You have two pieces. Right? You have, first of all, like, the recovery of the actual funds on chain, and then second of all, the actual database of who owns what. Right? Yeah.
776
01:04:01.770 --> 01:04:03.150
Exactly. Exactly. Yeah.
777
01:04:04.410 --> 01:04:09.470
The I guess one other thing to highlight with the Aira thing in regards to backup is that
778
01:04:09.930 --> 01:04:15.470
because Aira kinda provides this your your note is identified by the node ID,
779
01:04:15.785 --> 01:04:20.365
and it's not the DNS name or it's not the IP address or anything, that can actually
780
01:04:21.225 --> 01:04:26.445
like, as long as you have the you have the same node ID, you can sort of move your Guardian.
781
01:04:26.825 --> 01:04:28.925
So you can cut like, if you wanted to,
782
01:04:29.310 --> 01:04:29.810
you
783
01:04:30.110 --> 01:04:36.530
could take down your guardian, restore it on another machine. It will cut you that classic file, it will come up with the same
784
01:04:39.070 --> 01:04:44.345
public key and you can just keep keep running like that. So it provides, like, easier migration,
785
01:04:45.285 --> 01:04:47.385
technique. One of the thing I wanted
786
01:04:47.685 --> 01:04:49.385
to mention on that is,
787
01:04:50.485 --> 01:04:57.050
you know, we've been talking about start nine and, Umbrel, and we also have a Docker image if that's where you're more comfortable,
788
01:04:57.670 --> 01:04:58.730
or Docker Compose,
789
01:04:59.670 --> 01:05:01.130
file if you wanna run that.
790
01:05:01.910 --> 01:05:07.450
But, like, because Ira's pretty cool. Like, you can get because it it's peer to peer, you can kinda run it on anything.
791
01:05:08.150 --> 01:05:09.210
So I have a project,
792
01:05:10.065 --> 01:05:10.805
that actually
793
01:05:11.105 --> 01:05:19.445
moves the Guardian into a phone. I made a little Flutter app that you can run a Guardian, like, on an Android. It's like an APK that you can install
794
01:05:20.224 --> 01:05:25.350
and run a Guardian from your phone. So it would give you the same UI as what's in,
795
01:05:25.970 --> 01:05:27.110
start nine in Umbrel.
796
01:05:28.210 --> 01:05:32.450
And, yeah, for you know, I probably wouldn't recommend anyone doing that for production right now.
797
01:05:32.930 --> 01:05:34.210
It's kinda early. But,
798
01:05:34.895 --> 01:05:38.515
the idea would be, like, you could buy, like, a cheap phone or something,
799
01:05:39.775 --> 01:05:40.994
stick it in a corner
800
01:05:41.295 --> 01:05:42.115
on a charger,
801
01:05:42.734 --> 01:05:43.214
and,
802
01:05:44.095 --> 01:05:56.850
run a Guardian just from your phone. Because you don't really need to look at it that much, like, once you set it. Right. You would keep it, like, always on connected to Wi Fi. It wouldn't be, like, your daily driver phone that you're, like, walking around with. Yeah. And with with iRO,
803
01:05:57.710 --> 01:05:59.090
as That's incredible.
804
01:05:59.470 --> 01:06:01.025
I I think it's kind of fun. The
805
01:06:01.325 --> 01:06:04.145
I mean, you could imagine, like, a mobile mint where
806
01:06:04.605 --> 01:06:18.599
the whole mint is run off, say, four phones or something, and they're moving around or whatever. They're on, like, USB power banks and, like, the Serengeti or some shit. Yeah. It's very cyberpunk. But the What, what is the what is the, like, performance requirements?
807
01:06:18.980 --> 01:06:20.040
Is is it
808
01:06:20.900 --> 01:06:22.280
very performant? Or
809
01:06:22.819 --> 01:06:37.904
For the for the phone or just sediment in general? Yeah. Like, how should you have a phone how should you have a device can you run a Guardian on? That's I don't know the numbers off the top of my head, but it's not possible. Some inspects on our if you go to our, GitHub repo, you can take a look at that for the Docker setup.
810
01:06:38.365 --> 01:06:38.765
I wouldn't
811
01:06:40.150 --> 01:06:46.730
other beast. I don't even know how I Yeah. Would translate that and have to just go kick the tires on, like, the Google Pixel five or something.
812
01:06:48.070 --> 01:06:52.330
But, it's actually What would be the limiter? It's not storage.
813
01:06:54.985 --> 01:06:55.485
Right?
814
01:06:55.865 --> 01:06:58.605
Yeah. And compute wise, it doesn't use much,
815
01:06:59.225 --> 01:07:00.605
memory. I think it's around
816
01:07:00.905 --> 01:07:05.645
it's pretty small memory wise too. It might end up being storage at some point because
817
01:07:06.425 --> 01:07:09.270
As the bit gets more and more used. You have more
818
01:07:10.850 --> 01:07:11.350
history.
819
01:07:11.810 --> 01:07:13.350
Yeah. I I I don't have
820
01:07:13.650 --> 01:07:17.670
numbers off the top of my head. But I think on the on the phone part,
821
01:07:19.010 --> 01:07:23.090
like, Ira is really what makes that possible, and it it uses, like, the
822
01:07:24.275 --> 01:07:26.535
due to that, like, relay thing that Brad mentioned,
823
01:07:27.315 --> 01:07:28.935
it can sort of seamlessly,
824
01:07:29.315 --> 01:07:30.935
like, fall back from,
825
01:07:31.235 --> 01:07:32.375
like, a direct connection
826
01:07:32.675 --> 01:07:33.175
to
827
01:07:33.715 --> 01:07:34.615
over the relay.
828
01:07:35.075 --> 01:07:39.510
So if you're say if, you know, say your phone's moving around or something and you the network conditions
829
01:07:40.070 --> 01:07:43.770
change, Ira actually kind of it is supposed to adapt to that.
830
01:07:44.950 --> 01:07:51.569
So another cool thing about Fast Ira. Yeah. And I just pulled up our min specs. You
831
01:07:51.910 --> 01:08:03.025
like, this is bare minimum for a three or four. This doesn't translate to a five or seven or anything else. There's more complexity, all that good stuff. But one gig of memory, 10 gigs of disk, and one CPU
832
01:08:03.724 --> 01:08:06.705
is bare minimum to operate a guardian,
833
01:08:07.040 --> 01:08:11.700
which is not much. Like, obviously, like I said It's not bad at all. Yeah. Pretty minimal.
834
01:08:12.320 --> 01:08:14.500
And then, also, we need to consider, you know, a nice
835
01:08:14.880 --> 01:08:17.219
old Android that already has a UPS
836
01:08:17.520 --> 01:08:21.380
integrated with it and all these other lovely things. Like, it starts to look kind of attractive.
837
01:08:24.355 --> 01:08:25.015
Love it.
838
01:08:26.195 --> 01:08:27.975
I mean, while I have you, Brad,
839
01:08:29.715 --> 01:08:32.935
have you looked into, like, hole punch at all, like, Keith's stuff?
840
01:08:33.740 --> 01:08:40.720
Oh, I've looked into hole punching the technique to establish peer to peer connections, but not hole punch specifically that you're referring to.
841
01:08:41.180 --> 01:08:45.520
Fair enough. I don't think it's open source yet, but it seems to be trying to solve a similar
842
01:08:47.554 --> 01:08:49.255
thing as Tailscale and IRO.
843
01:08:49.635 --> 01:08:51.975
Yeah. The technique is the same, essentially.
844
01:08:52.675 --> 01:08:58.935
IRO is just a library. It's it's a, you know, open source Rust library that we use. So technically, it's the same. Yeah.
845
01:09:00.790 --> 01:09:04.170
I yeah. Go on. I was gonna say for more context for the freaks,
846
01:09:05.270 --> 01:09:11.850
hole punching is referring to to you have a router that you're on right now on your Internet. Everybody's probably listening.
847
01:09:12.390 --> 01:09:17.815
Well, I don't wanna make too many assumptions for mobile users. But if you're at your home network, you have a home router,
848
01:09:18.275 --> 01:09:25.175
and your router has something inside of it called the NAT, a a network address translator. It's essentially like an internal mapping of
849
01:09:26.034 --> 01:09:28.375
a, IP address internally to your LAN
850
01:09:28.969 --> 01:09:32.190
to something that is used outside of your LAN. So,
851
01:09:32.810 --> 01:09:35.370
when you pull that +1 921681
852
01:09:35.610 --> 01:09:42.510
whatever, and you're like, oh, that's my IP address. It's like, yeah. That's your IP address inside of your local area network. That's not your IP address outside.
853
01:09:43.265 --> 01:09:45.605
So all of the fancy stuff with hole punching
854
01:09:46.065 --> 01:10:07.630
is saying like, okay, world. What do I actually look like from the outside world perspective? Because if you can figure that out, then you can figure out how to dial specifically an IP address with a port to reach this computer. And so there's a bunch of magic. There's a bunch of specs that have been worked on for decades at this point to to try to solve that problem. And it still is like, there's a lot of complexities
855
01:10:08.010 --> 01:10:25.730
across different home routers just in the area of NATs that make this thing a very complex problem and unsolvable for a certain subset of NATs, but probably too much in the weeds. But, yeah, hole punching in general is just solving what is my internal IP address actually look like to the outside rule. Yeah. Tor Tor does not actually.
856
01:10:26.030 --> 01:10:26.530
Yeah.
857
01:10:28.750 --> 01:10:29.250
Yeah.
858
01:10:29.630 --> 01:10:30.130
I,
859
01:10:31.310 --> 01:10:32.190
first of all, I,
860
01:10:32.910 --> 01:10:39.330
wanted to shout out that in the Primal Live chat, we have both Cali, the father of Cashew,
861
01:10:40.315 --> 01:10:45.695
saying FEDIMENT rocks. You guys are legends. And we have Eric Sirion, the father of FEDIMENT,
862
01:10:46.554 --> 01:10:49.054
saying you want at least 500 mega
863
01:10:49.434 --> 01:10:50.494
megabytes of memory,
864
01:10:51.675 --> 01:11:02.960
and that CPU isn't much of a limiter. Right. Unless you wanna have multiple transactions. So that's cool, that they're both joining us in live chat. And then separately, Bitcoin Ranger zap 10,000 sets
865
01:11:03.580 --> 01:11:04.320
and use
866
01:11:05.180 --> 01:11:06.160
the default
867
01:11:07.545 --> 01:11:11.005
zap note of great post. Thumbs up. Thank you, sir.
868
01:11:12.665 --> 01:11:13.165
I,
869
01:11:14.344 --> 01:11:20.525
and then I've also I see a question here about signal being backdoored, which is completely random to our conversation.
870
01:11:21.150 --> 01:11:24.210
But if you want my opinion on it, I don't think signal's backdoored.
871
01:11:26.350 --> 01:11:40.525
I think it's it offers you reasonable security guarantees with very good UX. And I think the way they usually compromise signal is they compromise one of the phones of someone who's participating in signal, and then they can read anything that's on your phone, including your signal messages.
872
01:11:41.465 --> 01:11:47.245
So I think signal's a good option for secure messaging. Simplex is interesting. I think it's still pretty early.
873
01:11:50.100 --> 01:11:51.960
Is kinda interesting. You can obviously
874
01:11:52.340 --> 01:11:58.760
I I I there's a project called White Noise that is very, very early that is not reliable yet that will hopefully
875
01:11:59.380 --> 01:12:00.590
provide a good option there.
876
01:12:02.455 --> 01:12:08.315
The number one thing you can choose, by the way, when you're if if you actually care about secure messaging is using that
877
01:12:08.695 --> 01:12:09.915
auto delete feature,
878
01:12:11.574 --> 01:12:12.155
on whatever
879
01:12:12.614 --> 01:12:18.530
whatever client you're using, whatever app you're using. You know, delete after one week or delete after four weeks.
880
01:12:18.989 --> 01:12:21.810
Have that set. So if someone's phone gets compromised,
881
01:12:23.710 --> 01:12:29.170
it only has one week of history or four weeks of history or whatever. That's the single biggest improvement you can make,
882
01:12:30.190 --> 01:12:31.570
from my point of view.
883
01:12:32.055 --> 01:12:40.955
Obviously, the person you're talking to can still take a screenshot or a picture or something. So it's not protecting you from them, but it's protecting you for some external malicious actor.
884
01:12:42.135 --> 01:12:55.489
And, sir, Matt, I almost interrupted you there. This is also pretty scary when it comes if you have a smartwatch that connects to your device, and all of a sudden your threat model isn't just your phone. It's your watch that's connected. Watch do you have? It's a Garmin.
885
01:12:56.429 --> 01:13:01.489
The Garmins are the better like, out of all of them is probably one of the better ones. That company, like,
886
01:13:02.155 --> 01:13:02.895
is sneaky,
887
01:13:03.195 --> 01:13:04.975
relatively stay true to their roots
888
01:13:06.555 --> 01:13:07.935
It's in terms of
889
01:13:08.475 --> 01:13:10.655
of user privacy and security.
890
01:13:11.275 --> 01:13:12.335
Totally agree.
891
01:13:12.635 --> 01:13:24.370
Once these get kinda old in life cycle and the auto updates the security fixes stop rolling, and you're like, oh, man. Is somebody I'm a Casio, man. I don't I don't wear I don't wear a smartwatch. No smartwatch just for me.
892
01:13:24.909 --> 01:13:27.010
Yeah. But if you're gonna get a smartwatch,
893
01:13:27.550 --> 01:13:30.929
Garmin is sneaky, like, one of the best American tech companies.
894
01:13:32.315 --> 01:13:37.915
I'm a bit of a Garmin fanboy. Also, like, if you don't wanna use Google Maps anymore in your car, just get one of those, like, $400
895
01:13:37.915 --> 01:13:38.735
Garmin units
896
01:13:39.114 --> 01:13:41.455
completely offline. Stick it on your dash.
897
01:13:42.395 --> 01:13:43.534
Works like a charm.
898
01:13:46.410 --> 01:13:51.790
Okay. We got completely sidetracked. This has been a fantastic conversation. I'm pretty excited. You guys got me bullish.
899
01:13:53.210 --> 01:13:55.070
You guys have made real progress.
900
01:13:59.105 --> 01:14:17.220
If if Thank you. Yeah. Go kick the tires if you start a nine or an Umbrel or you know how to do docker. This is super simple to set up. If you actually wanted to play with Mutiny Net before you have Main Net funds, also super simple to to set up. Shout out Ben and everybody that does MeetMeNet stuff. I like testing on main net.
901
01:14:17.600 --> 01:14:20.660
It's it's fun. Game. Yeah. But,
902
01:14:21.920 --> 01:14:22.480
yeah, that's
903
01:14:23.440 --> 01:14:31.885
go go experiment. Go play with the Ecash app. We'd love to hear your feedback. We're very open to any bug reports. Best way for them to provide feedback?
904
01:14:32.505 --> 01:14:42.345
GitHub issues are great. We host multiple calls throughout the week. So if if, like, this I know this is a big lift if you wanted to join a call, but we're always available almost, like, office hours for,
905
01:14:42.750 --> 01:14:48.829
our weekly Monday dev call. All of this is on a public channel. I record it and upload it to bitcointv.com
906
01:14:48.829 --> 01:14:54.525
if you're ever curious. I'm sure some AIs are gonna be parsing all of that, and that'll be very interesting in the future.
907
01:14:55.245 --> 01:14:55.804
But the
908
01:14:56.364 --> 01:15:02.145
we also have, Tuesday review call where we go typically deep dive on a a PR review topic.
909
01:15:02.525 --> 01:15:07.505
Sometimes it turns into just like a generic deep dive discussion on some technical aspect of Fedimint.
910
01:15:08.150 --> 01:15:15.210
Thursdays, we also have another time chunked out for deep dives. So all of those were available. We're on Discord. You can always,
911
01:15:15.590 --> 01:15:19.770
hop in Discord, send a message. If you have a question, somebody will get back to you.
912
01:15:20.505 --> 01:15:25.165
But then yeah. Also, good old fashioned GitHub issues is a really good way to get our attention.
913
01:15:27.465 --> 01:15:30.285
Yeah. I'll make one one more comment about the gateways.
914
01:15:31.625 --> 01:15:35.659
So with all the Ira stuff we talked about on the guardians,
915
01:15:37.000 --> 01:15:41.260
we haven't yet done that with the gateways. So the gateways still have a
916
01:15:41.639 --> 01:15:47.565
similar requirement to what we had before with having a VPS and a public IP and a domain and stuff.
917
01:15:48.445 --> 01:15:50.625
That's something we're working on. We'd like
918
01:15:51.165 --> 01:15:53.425
to get gateways over iro as well.
919
01:15:54.445 --> 01:15:57.185
We already have a LDK based gateway.
920
01:15:58.364 --> 01:16:01.105
And so the kinda the goal there is to,
921
01:16:02.650 --> 01:16:13.305
yeah, make it so others can easily run gateways to it. I do like, using LDK or we have LND support too. So, like, the end goal is, say, on a start nine, you could
922
01:16:13.945 --> 01:16:16.985
run a gateway against your existing LND node or,
923
01:16:17.545 --> 01:16:21.645
with an integrated LDK node, and provide liquidity that way. So,
924
01:16:22.265 --> 01:16:27.485
that's coming. That'll be that'll take a little bit of time to to do, though. So That's awesome.
925
01:16:27.810 --> 01:16:31.990
I mean, that reminds me. So you said the gateways need to be approved by the Guardian.
926
01:16:32.530 --> 01:16:35.750
How does that actually Guardians, how does that actually work in
927
01:16:36.530 --> 01:16:38.950
practice? You gotta you gotta, you know,
928
01:16:39.490 --> 01:16:42.870
three or four Guardian set up. You wanna improve a gateway.
929
01:16:44.445 --> 01:16:58.465
Is that a GUI thing or is that are people doing it in the interface? Is that a command line thing? Like, how's that working? Yeah. It's in the it's in the UI. There's a Okay. For if you run a guardian dashboard, there's a little box to add a
930
01:16:58.860 --> 01:17:00.460
add a gateway there. And,
931
01:17:01.580 --> 01:17:08.480
yeah, I don't wanna get into details on that. We have we're we're sort of migrating our lightning protocol right now to a second version.
932
01:17:09.100 --> 01:17:12.560
But you actually don't need to be vetted. There's there is a way to,
933
01:17:13.725 --> 01:17:28.719
do it without being vetted, but those are sort of deep deprioritized because of the issue I mentioned before. So So all this is kinda that lightning gateway stuff is gonna change. It's kinda gonna get deprecated and be a new method anyway. It's, yeah. We've we're we're deploying it out now.
934
01:17:29.900 --> 01:17:33.659
The detail like, the Ecash app actually has support for the new version.
935
01:17:33.980 --> 01:17:35.679
Fetti does not yet. They'll
936
01:17:35.980 --> 01:17:38.239
hopefully, upgrade it at some point.
937
01:17:39.555 --> 01:17:43.335
But, yeah, the if you if you like you like you said, if you deploy Guardian,
938
01:17:44.115 --> 01:17:50.535
there's a little box in there for for adding a gateway. So and I'll I'll mention, we actually do run a,
939
01:17:50.915 --> 01:17:52.855
like, a Fedimint official gateway.
940
01:17:54.100 --> 01:17:57.080
Again, the the trust model is just that we need to trust
941
01:17:57.540 --> 01:17:58.600
the Guardian operators.
942
01:17:59.780 --> 01:18:09.385
So if you have a federation that you're you're running and you want some liquidity, you can reach out on on Discord, and we'll we'll try to get you connected and set up using the official one. Yeah.
943
01:18:11.605 --> 01:18:13.204
I see Archer secured cuss
944
01:18:14.324 --> 01:18:14.824
consulting
945
01:18:15.125 --> 01:18:15.625
zapped
946
01:18:16.965 --> 01:18:18.804
12,345
947
01:18:18.804 --> 01:18:22.505
sets. 12, three, 4, five sets for answering a signal question. So
948
01:18:23.180 --> 01:18:24.080
thank you,
949
01:18:24.540 --> 01:18:26.320
thank you for supporting the show, sir.
950
01:18:27.740 --> 01:18:31.040
Okay. That all makes sense to me. Guys, this has been great. I would love,
951
01:18:32.140 --> 01:18:36.880
you know, maybe in six months or so to do a catch up on where the project stands,
952
01:18:38.775 --> 01:18:46.955
have you guys back on, make it a little bit more of a recurring thing. I think that'd be a lot of fun. I mean, you guys seem to be making a lot of progress. A lot of things are moving, shaking.
953
01:18:48.135 --> 01:18:53.860
That would be awesome. Would love to do frequent check ins so that we is kind of abreast of all the some,
954
01:18:54.880 --> 01:18:58.100
term we use, and I'm sure some folks are familiar with.
955
01:18:58.480 --> 01:19:03.540
At previous start ups I've worked at, there's been a lot of sizzle and not a lot of steak.
956
01:19:05.040 --> 01:19:19.005
I'd say Fedimint, we got a lot of steak. There ain't as much sizzle as there could be. So, hopefully, these efforts will will keep everybody kind of abreast of all the technical updates that we've been doing to make it easier to set up and interact with these things.
957
01:19:19.465 --> 01:19:21.565
Love it. Well, great great chat, gentlemen.
958
01:19:22.105 --> 01:19:23.070
Before we wrap,
959
01:19:23.469 --> 01:19:25.730
do you wanna hit the freaks with some final thoughts?
960
01:19:26.270 --> 01:19:27.650
I guess we'll start with Justin.
961
01:19:28.750 --> 01:19:29.969
Yeah. Final thoughts.
962
01:19:30.429 --> 01:19:32.210
Go to ecash.love
963
01:19:32.429 --> 01:19:36.130
to download the ecash app. Give it a try. Give us some feedbacks,
964
01:19:37.545 --> 01:19:39.725
and give a shout out to the Minneapolis Bitcoiners.
965
01:19:40.425 --> 01:19:44.605
We actually have a meetup coming up tomorrow, so I'll I'll be there if anyone wants to
966
01:19:45.065 --> 01:19:45.725
to chat.
967
01:19:46.025 --> 01:19:49.245
It's at the O'Shaughnessy distillery in in Minneapolis.
968
01:19:49.865 --> 01:19:50.685
Great venue.
969
01:19:51.300 --> 01:19:54.920
That distillery is awesome, and our family is awesome. They're big winners.
970
01:19:55.220 --> 01:20:00.440
It's, we we have, like, a private room for the meetup, which is amazing.
971
01:20:01.540 --> 01:20:04.040
Yeah. They've been very generous to us. So,
972
01:20:04.660 --> 01:20:13.215
yeah. It should be a lot of fun. Thanks for having me on. Yeah. You guys, your meetup might have the best location in the country, and I say that as a cofounder of Bitcoin Park.
973
01:20:14.075 --> 01:20:17.195
So enjoy the meetup. And I saw someone ask when Odell
974
01:20:17.755 --> 01:20:21.935
I brought great shame to my family that I have not been yet, but I I will make it happen,
975
01:20:22.530 --> 01:20:24.389
sometime soon. Brad, final thoughts.
976
01:20:25.010 --> 01:20:30.710
Freedom money is cool. Freedom tech is cool. Being out in nature is grace. Go enjoy your life, people.
977
01:20:31.730 --> 01:20:32.369
Love it.
978
01:20:32.929 --> 01:20:36.790
Guys, I'm gonna put all the relevant links that we talked about in the show notes.
979
01:20:39.465 --> 01:20:41.965
Next week, we have Seth for privacy
980
01:20:42.585 --> 01:20:47.805
and Kate Walla joining again on Friday the twenty sixth at eighteen hundred UTC.
981
01:20:48.585 --> 01:20:51.065
All relevant links are still dispatch.com.
982
01:20:51.065 --> 01:20:56.300
If you don't have sats to spare to support the show, sharing with friends and family really does go a long way.
983
01:20:56.680 --> 01:20:59.100
Leaving reviews, subscribing on your favorite platform.
984
01:21:00.040 --> 01:21:01.980
We're available in all the podcast apps.
985
01:21:03.845 --> 01:21:08.825
I see Lethally just zapped 21,000 sets. Thank you, sir. He says great rip. Awesome project.
986
01:21:09.925 --> 01:21:10.905
Guys, pleasure.
987
01:21:11.925 --> 01:21:13.605
Keep crushing it, and,
988
01:21:14.645 --> 01:21:23.840
I'm gonna play around with with some of the things you guys built, and I'll give you feedback myself. And don't hesitate to reach out if I could be helpful in any way. Cool. Thank you.
989
01:21:24.620 --> 01:21:27.920
Love it. Much love, freaks. Stay humble, Stack Sats. Peace.