Avatar
Rusty Russell
f1725586a402c06aec818d1478a45aaa0dc16c7a9c4869d97c350336d16f8e43
Lead Core Lightning, Standards Wrangler, Bitcoin Script Restoration ponderer, coder. Full time employed on Free and Open Source Software since 1998. Joyous hacking with others for over 25 years.

Another Lightning Spec Summit complete: this time Tokyo. The good-natured competition among the teams is a steady source of delight, for these are all brilliant people striving to bring something wonderful into the world. They are also respectful and appreciative of each others' achievements: kudos from people you respect has always been a key motivation for working on Open Source projects ❤️

I tried, and failed, to avoid committing to implementing or collaborating on more things. Many have partial implementations already, fortunately. In no particular order:

1. A "marketplace" bolt12 feature for a centralized marketplace to arrange a fee for payment.

2. Completing my draft implementation of the simplified update mechanism (particularly, reestablishment mechanics!).

3. "lnp" payment proof format.

4. Rebase recurrence proposal for BOLT12.

5. Implement v1.5 gossip (once Elle revises it again!)

6. Split keys for comms, messages and payments in node announcements.

7. Proxy support for BOLT 8 handshake.

This doesn't count the tasks of reviewing what others are working on, which our team is not leading but are very interested in: bolt12 payment notifications and contact information sharing being two at the top of my mind.

It was a productive three days. And, yes, a pile of fun!

BOLT 12 is merged into the spec

To applause at the Lightning Spec Summit dinner! ❤️

Possibly, but there are many easy ways of optimizing it on the CPU first. Even trying a simple single payment while calculating a more sophisticated strategy.

Last three weeks I've been working on improving payments. Critical to this are five things:

1. Better payment routing, a-la min-cost-flow.

2. Better low-level payment injection API

3. Simpler, more reliable implementation.

4. Better simulation and realistic testing.

5. Better gossip maintenance.

For the first, I took the heart off renepay to make "askrene" the payment oracle, which provides "getroutes" for other plugins to use. A primitive version shipped in the current release, but it's already getting better as I start to use it.

Today I finished "injectpaymentonion" which takes incoming payments the same way we deal with incoming HTLCs, unifying things that were previously difficult, like self-pay and bolt12 blinded paths that begin at our own node.

Tying these together is a new plug-in called "xpay". This calls getroutes then injectpaymentonion, then iterates as results come back, feeding back information to askrene as we learn more about the network.

To figure out how well this actually performs, I've got a new format for representing topology, with minimal information (no node names, just channel capacities, details and topology). A simple tool compresses this from a node's gossip store (and decompress back for use). The result is small enough that we can include graph snapshots on our repository for testing.

Then I have written a fake "channeld" which simulates payments through this graph (it knows all the secret keys). This needs to be enhanced with simulating capacity of the channels (deterministically, based on a seed value) and realistic network delays, but it already does MPP timeouts and checks fees and cltv delays.

This should allow me to test this system's performance in a way that mirrors what people actually see, and also measure it against what we have now. It may uncover bugs, but even better it will let me know where to optimize (min cost flow can definitely be a CPU hog!).

And nostr:nprofile1qqsx533y9axh8s2wz9xetcfnvsultwg339t3mkwz6nayrrdsrr9caagpzpmhxue69uhkummnw3ezumt0d5hsdqzu7w is working on ideas for more aggressive gossip gathering: if we're missing part of the map we cannot expect to have reliable payments!

Me too. My grandfather never returned, leaving his wife to raise her newborn child by herself. You might want to pull your head out of your capitalized ass and get some perspective.

"Oh, Rusty Russell, your posts could be a thrilling novel for engineers and Bitcoin enthusiasts across the cosmos. You have a knack for layering technology discussions with occasional witty remarks, like your delightful approach to 'weather reports' in the routing oracle—that's *totally* a fresh idea. You muse about the challenges of 'fuzzing data to avoid revealing individual payments,' perhaps because deep down, you realize that *trust* is as elusive as a lightning bolt in a thunderstorm. You remark that your coding feels complex and cumbersome, but isn't that just the nature of all true passion projects? It's like trying to solve a Rubik's cube—frustrating, yet oddly satisfying when you finally get it right. Also, the gentle reminder about re-reading 'How to Win Friends and Influence People' isn't lost on me. Clearly, all those years in tech left you pondering how to connect with 'non-Bitcoiners.' You seem like someone who revels in the complexity of existence, as reflected in your projects and discussions, and I can't help but wonder if you overthink a simple conversation as you would a cryptographic key exchange. Kudos for your persistence in transforming obscure code into clarity, even if your self-doubt pokes through like a bad joke at a serious conference. And really, the mix of personal anecdotes with technical jargon in your posts is such a unique brew—like mixing fine wine with a 2-for-1 cocktail from a bar where the bartender is still learning the ropes. Cheers to you, Rusty, for reminding us all that developing the future of payments is both a noble endeavor and an endless source of bewilderment."

nostr:nevent1qqs9m7v9lefmq4yazl5j2xmm03tddkv8vvh49el29939dyh8frq9sxgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsyg9km5m34pc06jgyssdsq43wvhpkt8k3krreqefxvcvc3hj72434w5psgqqqqqqszjfury

Oh! I'm going to be there for the Lightning Summit which immediately follows Tokyo Bitcoin: let's catch up!!

So, askrene (the routing oracle plugin) has support for layers, each containing information about channels (also, can add/remove channels and nodes, but that's mainly for special-effects for particular payments).

It would not be hard to import/export entire layers: I've speculated that LSPs or large players may want to issue "weather reports" which could be incorporated this way. There are two issues:

1. Needs a standard format. This is easy, let's come up with something?

2. Privacy of those contributing to the data. This is hard, I don't know how to fuzz/exclude/delay data to avoid revealing the individual payments, but someone surely does?

This is absolutely a service you could charge for, too. Perhaps a free version with very rough data, and a tier with more complete data?

I'm working on a new pay plugin called xpay (working title). It's designed to use the new (very WIP) askrene plugin, which provides routes. Actually, most of the work is there, fixing and enhancing that. Especially diagnosis: *why* did it give a weird/no route? Common issues are: there's a good channel but it's offline, or doesn't have capacity, or you don't have enough capacity at all, or the recipient doesn't. We've had issues where gossip is missing, too: detecting when that happens is an open research question, but we'll start probing more aggressively.

There have been many complaints about pay in the wild, and the code has grown quite complex. I've heard good things about Boltz's mpay, which is far simpler, so I'm inspired to go in that direction. Moving the routing (which *is* complex!) out is the first step.

To be honest, I should have taken a direct interest in this earlier. I considered pay a simple problem, or at least not one I needed to concern myself with. But better late than never!

Making Bitcoin more private with CISA

https://youtu.be/HvI7NPI_Pk0

This is a very peculiar topic since CISA doesn't make anything more private.

The general supposition is that it makes sharing transactions cheaper than standalone ones, incentivizing coinjoins and the like.

Started working my way though the classic "How to Win Friends and Influence People" with my 10-yo. I should have re-read this years ago!

It's a classic for a reason. All self-help books have to spend 50% of their time convincing you it's worth reading, and the remainder is the actual content. This is why the title is so off-putting to many, BUT the book itself is a gentle admonition on the requirements for nuanced empathy in human interaction, with a very reasoned approach.

1. I'm always interested in open source things.

2. You're in a bubble inside a bubble.

? I don't know anyone involved. But this title is poor judgement, and if nobody says anything maybe that will become a norm.

"Gauche at best, unhinged at worst" then.