Stephan Livera | SLP384 ZeroFeeRouting — Zero Fee Routing on Lightning Network
Link to the YouTube (the timestamps are based on this): https://www.youtube.com/watch?v=arjmWVP2t6I
Stephan Livera: ZeroFeeRouting, welcome to the show.
ZeroFeeRouting: Happy to be here!
Stephan Livera: So Zero, I came across you on Twitter and I thought you had a really interesting business model, and what you’re doing with Lightning as well. And of course, I partly got the idea to interview you from my friend René Pickhardt when I was chatting with him about Pickhardt Payments. So let’s start with a little bit about you! I know obviously you’re under a Nym, so nothing personally doxxing, but do you want to just tell us a little bit about how you got started with Lightning and why you chose to run a Lightning node?
ZeroFeeRouting [0:37]: Yeah, of course. I first started with Lightning when BTCPayServer first came out supporting Lightning, so that was way back — I think four years back or something like that. I started it up, used it to buy some stickers from the Blockstream store and then basically did not do much about it afterwards. So the node sat around for a couple of years basically doing nothing — routing some payments by accident without me knowing it! And then when the El Salvador story hit, it reignited my interest for the technology, and I dug into it again, set up a node and thought about, Okay how can I use this technology to further the UX for users?
Stephan Livera: So it’s all happened very quickly then, because if you’re saying around the El Salvador story time, we’re talking September or so of 2021 and here we are in June 2022 and you have the third most connected Lightning node already!
ZeroFeeRouting [1:47]: Yeah it was crazy how well it took off, especially because I had to shut it down in March and completely start over again. So it really took off! What I thought about was my fee scheme: to basically gain traction really quick and grow fast.
Stephan Livera: Right, and I think that’s part of it because you had this big differentiating factor, of course — zero fee routing — and that’s definitely noteworthy amongst the community of Bitcoin and Lightning users who are following the discussion on Twitter and mailing lists and everywhere. So do you want to just talk us through how you got this idea for this zero fee routing business model? And what is the business model?
ZeroFeeRouting [2:38]: Yeah. Well, my idea was: usually in markets with little to no barrier to entry, the price approaches marginal costs. And marginal costs for forwarding a payment are basically zero! So it doesn’t cost my node anything to forward the payment from A-to-B. Okay — I’ve gotta store it for the duration of the channel, but that’s negligible. So for me, I came to the conclusion: Okay, if the costs for that are zero, the price for that will approach zero over time anyways because of all the pressure that’s coming into the market — fees are getting pushed towards you anyways — might as well start right off with it. And then, because capital costs money and and hardware costs money, I have to charge something for something! So I decided to charge for my liquidity, because that is actually something that that is costing me money, or at least opportunity costs.
Stephan Livera: Yeah, that’s really interesting. And so I mean, of course there are different arguments people could present here, right? And I’m just, obviously, for the sake of argument making this: Could somebody make an argument back to you saying, Well actually, part of the cost of running the routing node is also the hardware and the CPU and the hard drive space — those elements of it — and the risk that you’re taking? Or are you basically saying, Really, most of the cost is actually in the capital cost — tying up the opportunity cost. Is that basically the argument here? We’re saying that the opportunity cost of tying up my coins in this channel with X, Y, and Z person — that’s really the main cost? As opposed to the incremental cost of forwarding? Is that the argument?
ZeroFeeRouting [4:37]: Yeah, well basically the thing is: of course I have recurring costs! I have hardware that I have to pay for — it’s fixed costs per time — but those costs don’t rise if I route more. So if I route no payments or a billion payments, the costs are basically the same! So it’s really not the amount of forwarding that is causing the costs — it’s just a fixed amount of cost per time, and my capital.
Stephan Livera: Great. And so can you give listeners an idea of: what kind of upfront costs? I guess I’m thinking of it like it’s an upfront business model, right? The idea is: the person comes to you and they say, Hey Zero! I want a channel for 5 million sats. So can you just talk us through what the costs are for your customers?
ZeroFeeRouting [5:34]: Yeah that’s pretty straightforward: I charge 0.5% of the channel size — so a 5 million sat channel would be 25,000 sats. And I open the channel right after the payment, and then the channel stays open for at least 90 days, which is 3x of what others guarantee. After which, I might review the channel — I’ve not closed any channels that were paid for yet, but I reserve the right to do so.
Stephan Livera: Of course. Right, so let’s say that person sets up a node and it’s actually going offline all the time. In those cases, obviously, you’d do the minimum 90 days as you promised and then cut them off because, Hey! This guy’s a bad node, or whatever. Yeah, that’s interesting to see! So it’s this 0.5%, and so then, obviously — as the name goes it’s zero fee routing — so does that mean essentially that you have zero base fee and zero incremental or zero PPM fee for that specific channel?
Stephan Livera: Now I guess the other question people would have is: Is it zero fee routing on all of your channels? Or only those ones that you sell to somebody?
ZeroFeeRouting [6:49]: No, it’s on all of my channels. So the channels that I open for a fee and the channels that get opened to me — they are all zero fee. Since Lightning works with channel balances and you can only forward a payment if the channel has liquidity in it, I basically block channels that I have no liquidity in. Because: since I can’t forward to the peer, I have to let my other peers know that I don’t have any liquidity. So I set the max HTLC — which means the maximum size of the payment that I’m gonna forward — to [only] 1 satoshi. So, basically nothing.
Stephan Livera: I see. Is that custom scripting you’re running to do that? Or how do you achieve that?
ZeroFeeRouting [7:34]: Yeah, exactly: I have a script that runs every minute that checks all the channels and updates them in a way that the max HTLC gets set to 1 [satoshi] immediately after I drop below the threshold, and it will get raised up a maximum of two times a day so I don’t spam the network with gossip.
Stephan Livera: I see. Yeah, so this is something that people were chatting about — maybe we’ll get to that later as well. Now just for comparison’s sake, what are your competitors charging? So if we’re talking: in the market for selling an inbound channel — that’s essentially what you’re offering, in a way — what kind of fees are your competitors offering? And what’s the main difference between what you’re offering?
ZeroFeeRouting [8:27]: Yeah, there’s a handful of well-known competitors: the biggest is LNBIG — they sell channels for 0.2% plus about 3,000 sats fixed fee. And on the other hand there’s Thor — that’s Bitrefill’s service — they charge north of 1%? I think 1.2% or something like that? So I’m sitting in the middle between there. Breez has an integrated LSP that opens the Breez Wallet for mobile phones — that opens a channel to you on the fly: they charge 0.4%, so I’m basically in the middle of what others charge. But all of them are charging routing fees on top of that!
Stephan Livera: So that’s your big — obviously, as the name goes — that’s your big differentiator! And so I think the other aspect of it is the quality of the channel that you’re getting, because that’s maybe another area of distinction. Now, of course, pretty much all those ones you named — they are all well-connected nodes, also. But potentially, if somebody is trying to compete here, part of the game here is to have a well-connected node so that you can offer reliable payments to your customers. And so I think that’s probably an important point to understand, is that: in the Lightning Network, the more central you are, the easier it is for somebody to route through you, correct?
ZeroFeeRouting [10:05]: Yes, exactly. So the way the network works is: the better-connected the node is, the more the incentive is for new nodes to connect to it. So basically the large nodes win the game [that’s] played.
Stephan Livera: And that brings up this whole question as well that people say of, Oh Lightning is going to become this hub-and-spoke model! It will become very difficult for the average person to set up their own self-sovereign Lightning node, and users will be dependent on large services! I’m curious if you have any thoughts on that view?
ZeroFeeRouting [10:45]: Yeah. The way the network is built out, I think it will tend to develop towards that direction, so that you have a handful or two handfuls of very large, very well connected nodes that everybody that wants to connect to connects to if they want to have fast and probably cheap payments — but that’s not the end of the story! If you don’t want that and if you don’t want to connect to those nodes, you can connect to smaller nodes that are Tor-only, do a couple extra hops to obscure where the payment goes, and you’re good to go. So, it doesn’t force you towards [the largest nodes], but this is what I think most of the users of the network will want, also. So I think it will develop in that direction.
Stephan Livera: So in other words: the convenience layer for end users will push the network in this direction, but perhaps there will still be that opportunity for the self-sovereign Lightning node user who maybe wants to be more sovereign — he or she, they can still set up their own Lightning node and still find ways to get connected, I guess so long as they have enough capital and they have a good enough node in terms of uptime, availability, and things like this.
ZeroFeeRouting [12:11]: Yeah, especially about privacy, right? If you only have a channel with me, and you send and receive over the channel, I basically know everything that you send and receive because that’s your only channel! So if you don’t want that, you should have a couple of channels and obscure how you’re gonna pay. But that’s not a must — it’s just something that, the more private you want to be, the more it’s recommended to obscure what you’re paying, what you’re receiving, towards your peers.
Stephan Livera: Of course. And it’s probably fair to say that: if you want to be private with Bitcoin in general, you have to do a little bit more work, and you may have to pay more — that’s just the trade-off. That’s just the reality of it. And, to be fair, there are network and protocol improvements that may come down the line. So for example: trampoline routing, route blinding, BOLT12, that offers additional receiver privacy, Taproot channels with PTLCs — point time locked contracts, instead of HTLCs — so I think these are a few examples that, maybe down the line, they may help improve privacy as well.
ZeroFeeRouting [13:25]: Yes, absolutely. And this is not a fixed protocol! It’s growing, it’s being developed on — although it’s getting slower because stuff has emerged and it’s working. And now there’s different parties with different incentives trying to move the protocol their way, and we have to wait and see which way it’s going to end up.
Stephan Livera: Right. And in the bear market or dip — whatever we want to call this right now — as we speak, Bitcoin’s $21,000, around that range, down from the high of $69,000 last year: I’m curious, Zero, are you seeing any different behavior in the bear market? Are you seeing less activity on the Lightning Network compared to earlier in the year?
ZeroFeeRouting [14:14]: No, it’s pretty much the same! I have seasonal ebbs and flows intraweek, but other than that it’s pretty much the same as it’s been before.
Stephan Livera: Excellent. And so the other point I was interested to chat with you about is the channel.db. This is something you spoke about, and so I think you might have kicked up a little bit of a fuss on Twitter, and there was a bit of a response, then, from some of the different clients and other Lightning node runners and Lightning users. But do you want to just tell us a little bit about your adventures with your channel database?
ZeroFeeRouting [14:57]: Yeah. When I started my node, I just went with the most popular implementation, which is LND. I didn’t even look at the other ones! So I just took the most popular one that had the most scripting, the most tooling or whatever, and set it up and got it running, and ran into the channel.db growing very very quickly after a couple of months. And it ended up growing so fast — I had like 900 channels and the channel.db grew by 7 gigabytes a day. And if you have 1 terabyte of disk space — you can do the math on how long that’s going to last you! And I knew that LND developers were working on a fix, but I also knew that there was no time set for that fix to be deployed. Do I trust them to do it in time before I die? Or do I not do that? And for me it was pretty clear that I can’t play the lottery on that, and I said, Okay I have so much traction right now! The later I do a switch, the harder it’s gonna be to regain all of that traction. So within 2 weeks, I shut the node down, told everybody, Move over to the other node, and started a new node running CLN.
Stephan Livera: With Core Lightning, which used to be called C-Lightning — for listeners, if you’re not familiar. And so as I understand: from the Lightning Labs LND perspective, the software was very verbose with the logging, and so that’s what was causing that. And I think later — maybe it was after you changed over — but they had later shipped an update to the software such that it wasn’t that verbose with the logging. And perhaps, in your case, it was too late! You had already switched.
ZeroFeeRouting [17:10]: Exactly. Yeah, release candidates are out that already mitigate this issue, so if you are willing to run a release candidate, you can run one that does not store as much information in the channel.db. But the old states are still there — a fix for that is supposedly coming out later this year, so it will be cleaned up! What LND did was basically storing a bunch of information that does not necessarily have to be stored — just out of convenience — and that led to issues for large routing nodes.
Stephan Livera: I see, yeah. And as I understand, from the Lightning Labs perspective, it was something like: it helps with troubleshooting for users who wanted help, or something like that.
ZeroFeeRouting [18:02]: Yeah. And from what I gathered: if your peer published an old channel state, it made it quicker for you to retaliate and publish the actual punishment transaction for that. But it’s a huge trade-off because that almost never happens! And if it happens — if it takes you a second to get to that — it’s okay.
Stephan Livera: Gotcha. And do you want to chat a little bit about the level of the machine you’re running? I mean, of course — whatever you’re willing to disclose! Are you using like a very beefy machine? Is it a very high powered machine? Or is it just an average box? Or what’s the situation here?
ZeroFeeRouting [18:46]: Yeah, I started up running it on a really old desktop computer that just sat next to my desk. And then moved over to a Lenovo ThinkPad. But I ran into serious hardware issues with that device. Like, I really got lucky that I didn’t screw up the node completely! And then I decided, Okay I’m just gonna move to a data center, rent a dedicated server there, and it’s now running on a pretty beefy machine. But from the information I have, that’s not really necessary. So a node like mine can run on medium-quality hardware — not quality, but medium-beefy hardware.
Stephan Livera: I see yeah. And then are there special concerns around things like backups or your node going offline? Because I mean I checked your statistics just an hour or so ago — I think you’ve got something like 66 Bitcoin worth of capacity there. And now of course maybe that’s not all outgoing capacity — some of that might be inbound as well — but with running such a large routing node, you obviously have to be more careful! Are there any special considerations there around things like backups?
ZeroFeeRouting [20:13]: Yes, of course. First of all, I run Core Lightning with a Postgres database backend, so it’s not the standard SQLite or whatever. So I didn’t do it yet, but I can implement a replication. I run it on a RAID, so if one of the drives fails, it’s still going to be there. And also, I’ve hardened the server so it only accepts Lightning protocol communications over IP. And there’s basically no other software running besides Bitcoin and Lightning, so even the channel opening method that I implemented is not implemented in a way that something talks to my server and the server reacts. The server is pulling new channel opening requests every minute, so it talks to the other side. I have an API that my server talks to with the script that I wrote, so there’s no way to tell my server something that it does not pull itself.
Stephan Livera: Yeah. So you’ve got a like a separation of concerns, let’s say.
ZeroFeeRouting: Yeah, exactly.
Stephan Livera: Okay great. And so is there anything special being done in terms of availability, then? Because obviously, running a big routing node, you don’t want downtime — your node going offline — you want it to be up, stable, as much as possible. Is there anything special you’re doing there? Or is it just the data center already has certain assurances for you about five-nines availability or anything like that?
ZeroFeeRouting [22:10]: Yeah. Right now it’s — exactly: just the data center uptime guarantee. So if something happens that the node is down. But I’m actually in the process of implementing a switch: so with the database replication, you can set up a second node that accesses the replicated database that you can basically switch to in an instant if the first primary node goes down. That’s something that I’m looking at but it’s not there yet, so right now if the hardware fails or if somebody pulls the plug then the node goes down.
Stephan Livera: Yeah gotcha. And there’s different models I’ve heard of and seen: some people run one Lightning node in front of another or things like this to run their different setups, so it’s always interesting just to hear the setup that some of the bigger Lightning node users or routing node operators are doing.
ZeroFeeRouting [23:17]: Yeah. The main issue right now is less hardware reliability or electricity availability or something like that, but software stability. And that’s something that having a second machine does not mitigate: if your software crashes, it’s going to crash on another hardware as much!
Stephan Livera: Gotcha. Also just thinking about Lightning business models — and I guess the other question as well, and I think you were talking about this recently as well on Twitter, is: Why is it that it seems nobody else has tried to copy your business model yet?
ZeroFeeRouting [23:55]: Yeah I’ve been asked that a lot and I’ve asked that question to myself a lot, too! Either it is not attractive because the amount of yield you can generate with your coins is limited to the amount of channels you can open with those coins, and if you have like a 0.5% fee that you charge and you guarantee 90 days, you can at most charge 4 times 0.5%, which is 2% year-over-year yield. So the maximum amount of yield I can generate with my coins is limited to 2%, which is not the case if I were to charge routing fees. So maybe that’s a disincentive for others to enter that market, but I think from what information I have: 2%-3% yield is basically at the top of what others are making that charge fees. So I don’t know if it’s that much lower than the theoretical maximum that you can achieve. And it’s way easier the way I run it, because others have to pay lots of attention towards rebalancing channels and all that stuff — I don’t do any of that! Because rebalancing channels would just be me subsidizing my peers’ routing, because I’d pay for rebalancing a channel that my peers are gonna use for free to unbalance again. And so running a node the way I do is a lot less time intensive and requires a lot less continuous channel maintenance, because I just disable a channel if it’s depleted.
Stephan Livera: Right, I see. And so I’m curious as well if you have any thoughts on where you see routing fees on the network going, just broadly? Like, if you had to estimate the average routing fee paid by an average retail customer in 5 years time, where would you speculate that would be?
ZeroFeeRouting [26:14]: It completely depends on how the market is going to develop. My initial suggestion was it’s gonna approach zero, just because I can’t see it being high for a sustained period of time just because it’s so easy to deploy your node and set lower fees than the rest of the game does, and attract inbound liquidity. So I think it’s gonna be lower towards most channels — there will always be channels that that you have to charge fees towards: Loop is one of those, which is a service that Lightning Labs is offering.
Stephan Livera: So there are risks associated with running a Lightning node. I mean of course your channels could get griefed, there could be some vulnerability, you’re tying up capital — surely those factors would all lead to there being some costs above zero in terms of routing longer-term?
ZeroFeeRouting [27:30]: Yeah, maybe. But the way businesses work right now with fiat money is: a retail store owner basically pays a fee to be able to receive funds — like, with Visa or Mastercard they charge up to 2%. And the end user, the customer, doesn’t pay anything. I can see that developing for Lightning and Bitcoin payments as well, that the stores swallow the cost of the payment so that the payer pays for free because it’s just better UX. It’s just not a good feel if you go to Restaurant A and it’s going to cost you 1% extra just to pay there and at Restaurant B it’s not! So I think it might develop in a way that the stores, the restaurants — the persons being paid — are willing to pay for their customers having a good experience.
Stephan Livera: Yeah that’s a good point, because in the modern day world now when people go and tap their credit cards, in the background it’s anywhere between 2%, 3%, 4%, maybe even 5% that actually is being paid, but actually the merchant is wearing that cost. And for that merchant, it’s just the cost of doing business, right? If I want to sell products or if I want to run a restaurant or a coffee shop or whatever — I’m just eating that. I’m swallowing that inside of my margins overall. So it’s an interesting argument you make there that the merchants will just shoulder that cost and really they’ll just build the cost into the actual services that they’re charging to their customers. Although it might be interesting to see what happens with that even in the more online Lightning-native model, so let’s say Podcasting 2.0 or ZEBEDEE or Thndr Games sort of online, Lightning-powered gaming, Lightning markets, or some of these LSPs — where are they going to make that money? I guess they could also charge an upfront fee for the service and, again, build it into the cost just like the coffee coffee store builds in the cost of the credit card payments and chargebacks. All of that is calculated or built in to the cost of the coffee that you buy.
ZeroFeeRouting [30:00]: Yeah and I also think it helps with adoption because it’s easier to sell Lightning as that cool new technology that you should use if, when you use it, it’s not gonna cost you an extra 0.1% to use. Because right now if you have a credit card, if you have PayPal, if you have whatever technology that you use to pay your friends with — it’s all instant, it’s all free! So if we want to propose Lightning as a solution beyond the unconfiscatability, which is excellent, in my opinion, but it’s not going to sell to 90% of the population — they don’t care about that at all! So either something big happens and they start to care, or we have to compete in the fields that others are competing already, and that will be free payments — or at least very very cheap payments.
Stephan Livera: Yeah interesting. And so as an example then — let’s say in your case — you’re charging 0.5% per 90 days, and as you said that works out or calculates to 2% per year. But in a way, that’s almost like a maximum you could earn in terms of your capital. Now of course you could sell a lot of channels, but it just means you’ve got to have a lot of coin available to earn that. And so I guess part of it will also turn on where interest rates go in the broader world, because here’s the reality: because for any Lightning node operator, they are still going to have to compare what they’re going to earn operating a Lightning node — and so in your case that’s 2% per year on the capital, the Bitcoin, that you deploy into that node, minus your fees in terms of: on-chain fees, fees for running the node, operating costs, electricity, server hosting, etc. All of those costs. Because you would have to then compare that — like, let’s say we’re in an environment where the Fed is raising rates, the BOE is raising rates. And if interest rates in the world start rising, then you’ve got to calculate that into it as well. But even there, we’re doing this in a Bitcoin world! So it’s retaining Bitcoin exposure as opposed to fiat exposure. So even if let’s say the Fed raised rates or in Europe or whatever, you could get 3%-4%, you still would have to be exposed to the euro, as an example.
ZeroFeeRouting [32:36]: Exactly. So my main argument with that is: a Bitcoin-native yield! Like, you invest Bitcoin — you get Bitcoin back plus the yield, is probably always naturally lower than a fiat yield. Because to make up for fiat yield, you have to make at least 8% a year to just cover up what inflation takes from you, plus the taxes you’re gonna have to pay for that! So the yields that you can natively, relatively risk-free earn on Bitcoin are going to be lower than fiat yields.
Stephan Livera: Yeah that’s really fascinating to think about, eh? And then one other idea just came to me as well: when you’re a well-connected node, there will be other people who want to just open a channel to you just because they want to be connected to you. Now, how does it work then if they charge you — if they have a fee on their channel?
ZeroFeeRouting [33:42]: Yeah I don’t mind what my peers do! So my peers can open the channel with me, or if they pay for a channel from me, both types of peers can set their fees to whatever they want. Interestingly, my peers tend to set their fees towards me to a very low PPM — and usually zero base fee — or zero fees overall. The reason for that is not them being altruistic or generous! The reason for that is that: for most of my peers, I act as a source, which means that funds come from me towards them. So my channels usually push towards my peers because I’m so well-connected, and the funds want to move out from me towards their channels. So in order to earn satoshis on their other channels, they have to get the liquidity back towards me, which incentivizes them to set their fees towards me to zero. Which is a really odd dynamic that I’ve been looking at since I started, which I did not expect to happen! But basically the way the dynamics work is that: I route towards my peers for free, and they usually are routing towards me for free as well, which increases the dynamic that I have — that I would just route tons of funds.
Stephan Livera: Yeah, right. So in a way it’s like a rich get richer situation because you’ve already got all these zero fee channels, and then more people want to set up a channel with you because they see you as a source of routing forwards and they say, Oh hey! If I connect to Zero, he is gonna send some traffic through my way and I can make money on my other channels that I’ve got. So yeah it’s an interesting dynamic there, because I guess in general, in the Lightning Network, you want to think about being in the route that people are paying towards. So if you know, for example, there’s a really cool new merchant who’s starting up, you want to open a channel to that merchant because you expect other people will want to route through you to get to that — to pay that merchant. So that’s the high level dynamic. And I guess the other way people are doing it is: let’s say there’s a well-known swap provider like Boltz exchange or Loop or Pool — things like this where you might want to connect to that node because people are going to be wanting to route through your channel, and that’s therefore a way for you to earn.
ZeroFeeRouting [36:16]: Yeah the funny thing is, I’m kind of putting the rest of the network in a prisoner’s dilemma situation! So all other nodes can decide to either not connect to me or connect to me — if nobody connected to me, I would have no channels and I wouldn’t do much routing, but if nodes start to connect to me, others have to connect to me as well because I’m routing for so cheap that they are no longer on the shortest path if they are not connected to me. But every node that connects to me and has a channel with me is removed from the profitable routes that all the other peers can do — because I route that way now — and it’s a really interesting dynamic, and I’m really fascinated by how it plays out right now. Because if you connect to me, all the channels that you have that have moved towards you before are now preferably coming from me, because I route for free and the peers don’t!
Stephan Livera: Yeah, fascinating. And so yeah I mean it brings us back to what we were saying earlier: why haven’t more people done this? And I guess maybe from their perspective they’re not ready to take the leap, or maybe they see it like, Oh Zero already got there first and he’s taking advantage of it. But yeah, really interesting. So do you ever have to rebalance? Or you literally just never have to rebalance?
ZeroFeeRouting [38:02]: Yeah I just disable channels that are depleted, and either my peer does something about that or they don’t see movement their way. But if funds flow naturally back my way, I re-enable the channel.
Stephan Livera: I see, yeah. Let’s say in that in that case — where the channel gets exhausted — and then you disable the channel on your side, then the other channel partner has a choice whether they just close that channel. Now, at that point, you’re going to pay a fee, right? Because there’s a channel reserve and I think a little bit of fee is paid by both sides, right?
ZeroFeeRouting [38:45]: No, the channel closing fees are always paid by the party that opened the channel. So if you opened the channel to me and you close it cooperatively, you’re gonna pay the fee. And if you first close it, you’re gonna pay the fee as well — just, a higher fee. And with the channels that I opened, I usually charge that possible closing fee upfront anyway, so I don’t really mind the channel being closed!
Stephan Livera: Interesting! You’ve really thought it through — I like that! That’s really cool. So what about your recent campaign to get liquidity ads a.k.a. dual funded channels or a.k.a. collaborative channels, which is a Core Lightning feature? Now, your campaign was to get this added to LND. So do you wanna tell us a little bit about that?
ZeroFeeRouting [39:41]: Yeah it all just started with me reading Alex Bosworth’s tweet that: If you want to have something done for one of the implementations, you should do it or pay somebody to do it instead of nagging the developers to implement it for free, basically. And LND has not implemented liquidity ads or dual funded channels the way it was proposed by Nifty Nei. There is a Boltz pull request on GitHub to extend Boltz to have that as a Lightning-native protocol. And LND just does not have that as a priority, which I can understand because their business model right now is: they run a service that’s called Pool where they are basically the matchmaker and they charge fees for the matchmaking, and that service would be obsolete in an instant if liquidity ads — dual funded channels — were implemented in LND. So they have a real high incentive to not have that happening! And because I read Alex Bosworth’s tweet, I was like, Okay I’m just gonna start a campaign, say I’m gonna double the funds up to 10 million satoshi for every donation that I get, and I will pay a developer that implements this and gets this merged — and that is one of the requirements! It doesn’t help if you just implement it — you have to have it merged in LND to receive the payout, basically. And this is also why I said I’m gonna donate all the funds to the Human Rights Foundation if it doesn’t happen, because I’m not very confident it’s ever gonna happen because it just hurts LND and Lightning Lab’s baseline.
Stephan Livera: The open source world is an interesting thing, right? But there’s a business behind this and I could understand if you could see a future where they say, No we’re not going to merge this because it’s just not in line with the business model. And so it’s awkward!
ZeroFeeRouting [41:57]: Even if it was implemented, then they have to decide, Okay are we merging this? Or are we not? And if they’re not, they’re going to tell the whole world: Our business model is more important than this feature. And it’s a great feature! It allows for self-sovereignty, you don’t have to have https certificates which always require being a person known to the wider world, because you can’t have a domain without giving your name away. With liquidity ads, all you have to do is spin up a node! And so you can do that completely anonymously, which is an excellent quality to have. So I really hope it gets implemented — I really really hope it gets merged — but I’m not that confident that it’s gonna be.
Stephan Livera: Yeah and I think the other aspect that I find really cool about it — because of course speaking selfishly as a Lightning Network user, I would like to see liquidity ads, dual funded channels, collaborative channels, whatever we want to call it — because it would also help from a privacy point of view. Because the resulting channel opens actually will help cut against or undermine the common input ownership heuristic, which is a well-known privacy heuristic! So if we were able to get a lot of Lightning node implementations and clients all using this, it might actually seriously help in terms of privacy on the Lightning Network. Because right now, there are heuristics that can be applied and leveraged to try to de-anonymize or at least try to trace some of the on-chain behavior of a Lightning node user. But let’s say we were in a future where everyone was doing these dual funded channels — then it actually starts to make it less clear whose funds are whose?
ZeroFeeRouting [43:57]: Yeah exactly. Just like Christian [Decker] said in a podcast he did a couple weeks back: The Lightning funding transaction is basically a CoinJoin then, which is great for privacy.
Stephan Livera: Right yeah. That part — maybe that’s a bit more debatable! I think I initially said, Oh it might look like a PayJoin, but there are other distinguishing features there, right? Because Lightning is multisig — it’s a specific output type. But that said, in a Taproot world, it could help if everyone starts using Taproot and then these Lightning node users are doing these Taproot output multisigs. So it’s maybe not true to say it’s like a PayJoin, but it is true to say it undermines the common input — your ownership heuristic — which is a win from a privacy point of view, right? For the self-sovereign Lightning and Bitcoin users out there! So that’s pretty cool, and it might be cool to see that. Another question listeners are probably thinking — and of course you don’t have to answer this if you don’t want to, but — with running this zero fee routing business, for you right now is it side hustle-level money? Or is it like replacing full income level money? Or you see it growing to that level?
ZeroFeeRouting [45:21]: Yeah, well you can do the math! Basically: so if you assume that half of the funds of that 66 Bitcoin are mine and you take 2% of that — which would be basically the maximum that I can earn on it — you would arrive at 0.5–0.6 Bitcoin a year in yield. And with today’s price, that’s not something you can live comfortably off of! So it is a side hustle! It’s taking up a lot of my time, and I can see it having a future where it is going to be the only thing I do, but right now it’s not paying all my bills.
Stephan Livera: Of course. Yeah no that’s totally fair. But it is really interesting to see, and of course if Bitcoin moves through these bull and bear cycles and we get another bull cycle — and look of course I have no crystal ball, it could be in a few months, it could be in a year or a few years for all we know, but — let’s say we went through that bull cycle. Then at that point it might actually start to be serious money for you. And so that’ll be really interesting then, because then it literally could replace your day job!
ZeroFeeRouting [46:36]: Yeah and I’ve always wanted to have a Bitcoin-native source of income. I love the fact that I’m earning sats directly instead of earning fiat money and having to buy Bitcoin, so I’m really happy how it turns out! And I’m actually surprised that it is profitable in the first year. I started the LND node up in July and it’s not even a year and I’m profitable!
Stephan Livera: Yeah that’s great! And I think we’re seeing this whole ecosystem of tooling out there, right? So for example there’s Amboss.space, there’s something like Thunderhub, there’s RTL Ride The Lightning — there’s all these different tools and different software and things you can leverage to be a better Lightning node operator. So I’m curious if you have any tips for listeners out there who want to run their own Lightning node? Do you have any tips for them? Although I guess in some sense you’re educating your competition, but in another sense you’re helping grow the network, so let’s call it even!
ZeroFeeRouting [47:44]: Yeah I don’t mind giving tips at all! It’s just it’s on a meta-level, basically, because I myself run none of these tools just from a security perspective, because if a security flaw would be introduced in one of those tools, it would affect my security. So I run literally nothing except the node. But of course I have personal nodes that I use for my personal payments so I can offer some tips. I really think that if you run a Lightning node and you want to have a graphical user interface, you should install Ride The Lightning. And I really think — if you want to have access to it with your mobile phone — you should use Zeus, which is an excellent tool to access your Lightning node with.
Stephan Livera: Fantastic, well I’m a user of RTL and Zeus myself and I did a recent episode with Evan, so listeners I’ll put that in the show notes for anyone interested. And Zero, let’s get your thoughts as well on Lightning protocol improvements. I know we briefly mentioned some earlier, but there’s a bunch that are potentially coming — there was a recent Lightning protocol developer meetup and discussion on this. And Olaoluwa summarized some of these ideas like gossip network updates, Taproot channels, blinded paths, probing and balance sharing, BOLT12 and things like this — there are a bunch of those! I’m curious: from your perspective, is there anything you are excited about?
ZeroFeeRouting [49:24]: Well I am excited the network is still being specced out and it’s growing — the feature set is growing! The problem with the BOLT process is it’s a slow one. Like the W3C Consortium, it’s always taking a long time to get stuff implemented. I’m really excited about BOLT12. I have proposed at some point to make balance sharing part of the protocol or something like that, just because a huge part of what all nodes in the network are seeing right now in traffic and failed payments is actually probing. So it’s the peers probing if the channel has liquidity or not, and if that happens on a huge scale it means that the liquidity you have in a channel is basically public information anyways, because you can probe that channel for free. So you just have to jump through a level a couple of hoops to get the information, but the information is out there anyway, so we might as well publish that information in order to avoid all this probing! We don’t have to publish the exact amount of liquidity we have in a channel just for privacy’s sake, but the rough information doesn’t hurt anybody, in my opinion. And it saves a lot of failed routing and probing.
Stephan Livera: Yeah that’s a fascinating question as well because it comes to that trade-off of payment reliability versus privacy. Now I can see some of the privacy-focused users saying, No no! Don’t ever share balance! Don’t do that stuff! And maybe from their perspective some of them would say — and I’ve seen people talk about this idea — Instead of paying only for successful payments in Lightning Network, to charge for attempts [as well]. I’ve heard that’s one idea — that’s one direction. And then the other way, as you’re saying, is more like balance sharing, but try to do it in a way that doesn’t totally dox everything to everyone. Maybe only to your next peer or peers within a certain distance from you — things like that. So I’m curious: how do you balance those different ideas of privacy versus payment reliability? And then ease of operation for the Lightning node operator?
ZeroFeeRouting [51:54]: I think privacy is really really important especially for money like Bitcoin, because in order to be censorship resistant, it has to be able to be used at least somewhat privately. But if the information is available for chain analysis companies anyways by aggressively probing the whole network — which doesn’t cost that much! So if I have like a $1,000 budget a month — which is not a huge budget — I can probe the whole network on a continual basis! So it is not private information anyways, so why are we putting so much effort in keeping it pseudo-private if it’s not private at all?
Stephan Livera: Right, I see. Yeah and I can hear the privacy-focused individuals screaming out in horror at this point because they’re saying, No! It’s going to become a surveillance network! So I’m curious if you have any thoughts on ways that balances could be shared in a way that’s not totally horrible for privacy?
ZeroFeeRouting [53:03]: Yeah the way I did it when I ran the LND node is: I updated my max HTLC on a continual basis not just to between 1 [satoshi] and full channel size, but I had brackets of sizes that would kind of signal the size of the channel. Like I said, a quarter of the liquidity I have is the maximum I’m gonna route through that channel in one payment. And that basically gives away the information, but it doesn’t share at all what the liquidity is that I have.
Stephan Livera: Right so you’re trying to cut it halfway in some sense — you’re trying to give some information but not all of it. And maybe if everyone does that then maybe that helps a little bit. So I guess the broader level concern here would be if let’s say a chain surveillance firm could cheaply surveil the network, as you said. Then does that cut against the financial freedom aspect of Bitcoin? Which many of us do want! So yeah I think it’ll be interesting to see where that lands, and the navigation of trying to make it reliable enough, private enough, and also operationally easy enough. Because as you were saying: if everyone is probing — or even if it’s just the malicious chain surveillance companies — who are probing the network constantly because they want to understand, Oh okay what’s the balance in all the different channels? And let me look at the movement in those channels and then try to infer, Oh it looks like this node paid that node and therefore I know roughly some payment came from this area in the network and it paid that other node in the network — things like this, right?
ZeroFeeRouting [54:54]: Yeah exactly. So if you can aggregate a couple — for me it’s easy, because I see so much movement so that if I update my liquidity information like once every hour, for most of the channels that would basically be no information whatsoever, because I see back and forth and it’s going to be so aggregated that that doesn’t help. But with smaller channels and smaller nodes, it can lead to more detailed information.
Stephan Livera: Yeah. In fairness as well, this is the other aspect — I think I’ve spoken about this with Rusty in an earlier episode, but — he was basically making the point, and I think this is true, is that any of the larger Lightning nodes who are very well connected, they can just see more of the traffic right now. For example: you can see and potentially de-anonymize some of the traffic on the Lightning Network, correct?
ZeroFeeRouting [55:55]: Yeah well I see 10,000 successful forwards a day, and I know from where they came and which direction [they’re going]. I also see — especially if it’s round amounts — so if there’s a 100,000 sat payment and it’s a payment that says a 100,000 and 1.2 sats extra, I can kind of guess if there’s an additional hop just because nobody would pay 100,001 and two hundred millisats, so I can heuristically see where that payment is going! But yeah that’s inherent in the network because the peers you route through see the payment.
Stephan Livera: Yeah and as we see the network grow then maybe it’ll be a little bit harder for any one person to get a full view of the whole thing. And maybe that is one aspect, as well as some of those other privacy improvements as well. Things like the blinded paths, trampoline routing, Taproot channels — all these aspects that would help in their own way around Lightning privacy. Okay so I think that’s probably the key questions and probably a good spot to wrap up anyway, so Zero if people want to find you online or if they want to buy a channel off you, what’s the best place for them to find you?
ZeroFeeRouting: Yeah I’m very outspoken on Twitter, which is @zerofeerouting. You can reach me on Telegram if you want at @zerofeerouting as well. I have a GitHub account also @zerofeerouting, and you can reach my website: zerofeerouting.com.
Stephan Livera: Fantastic! Well I really enjoyed chatting with you, Zero. And thanks for sharing and educating the listeners about your adventures with Lightning nodes!
ZeroFeeRouting: Thanks for having me!