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.
Public Key
npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Profile Code
nprofile1qqs0zuj4s6jq9sr2ajqc69rc53d25rwpd3afcjrfm97r2qek69hcuscpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsmv9347
Show more details
Published at
2024-06-08T05:44:48+02:00 Event JSON
{
"id": "2a2f9df4a08077b41de1ca2ec3dd7d072ca45729a1f8debdf711e46de1586e6b" ,
"pubkey": "f1725586a402c06aec818d1478a45aaa0dc16c7a9c4869d97c350336d16f8e43" ,
"created_at": 1717818288 ,
"kind": 0 ,
"tags": [
[
"alt",
"User profile for Rusty Russell"
]
],
"content": "{\"name\":\"Rusty Russell\",\"display_name\":\"Rusty Russell\",\"website\":\"https://rusty.ozlabs.org\",\"about\":\"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.\",\"lud16\":\"npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s@npub.cash\",\"nip05\":\"[email protected] \",\"picture\":\"https://rusty.ozlabs.org/images/Rusty_Russell-lca2011+crop.jpg\"}" ,
"sig": "16ded7f3f6efc75faa92bca1936052a0244e479662f36393857d45acceeca06f47ccdc61e1156b673c7a06ae17ff1804ac8177da28aecb38b1d4dba8e3b7b8ef"
}
Last Notes npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell BOLT 12 can be in different currencies for this reason. #nevent1q…ledg npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell But now I don't even have to care! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s.blossom.band/692a425b55bcf45fefae7ef471794f02ed3f78ada6fe961e3cb283d9e54e7f1a.jpg npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I've been thinking about taking profits from a Sztorc Fork. I wouldn't sell someone a lemon face-to-face, even with full disclosure. Sure, they're adults, but the world is a better place when we care for each other: that is not who I want to be. Do not enable bad things. The anonymity of the marketplace does not absolve this. So, no. I will not encourage it, talk about it, or handle it. And I'll sleep great. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Guess in getting up for 5:30am then. #nevent1q…0790 npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Don't support things you don't want to see more of. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Celebration time! https://npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s.blossom.band/73d0cfb3257f35410fdb7874c1e159abd265830434668fe14a9b73acbe6902d1.jpg npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell So, we're debating paying kids pocket money in sats. Since we're talking a few dollars a week, I'm thinking ecash, using https://cashu.centurymetadata.org/ But what client? They have Android devices... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://youtu.be/iDzV_jESwGA Indeed. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell #CLN We're finally deprecating pay (in favor of xpay) in the next release: Greenlight has conclusively demonstrated that it's more effective across the board. That begins the 12 month window to removal. We've long had `xpay-as-pay` for xpay to take over pay commands. Flipping that to default true and running the tests has been eye-opening. Given our commitment to not breaking users, I'm re-learning things about pay. For example, if you try to pay the same invoice twice, pay "succeeds", whereas xpay says you've already paid. So when acting as pay, xpay needs to do that too. Mostly, the xpay error messages are much more informative and readable. But in a couple of cases they didn't use the correct error *code* (eg. There's a specific one for "route too expensive") so that's fixed. After this, I'll get back to my new "repeatpay" command and plug-in, which is a higher-level way to deal with recurring offers (an experimental option for now). npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell It's a threat. It's just not one yet. I've been through three VR waves. Same thing: there's a seed of truth there, just the tech isn't ready. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I expect Bitcoin to get a quantum scare every ten to twenty years, FWIW. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I wish! No, it rolls back the database, deletes the gossip store if the format has changed, and checks of you've used any new features which would prevent downgrade. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell That's why we have a downgrade tool now, too. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Seems like I should try to wrangle timezones enough to join your podcast sometime! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell We pushed it a bit on this one: There are some clients who may have trouble staying connected to you: LNDK nodes and some people who are running an older git version of LND. You can set message-padding=false if this happens. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Many people! I would certainly put sats towards such an effort. The winning tx could collect them all at once. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell The idea of an activation challenge is interesting. But my preferred form would be an on-chain reward. A tx which uses its first input's txid to generate the puzzle NUMS, so you can't just copy it. Not sure how to generate such a challenge, maybe GSR, OP_TX plus cleverness... This would start a month-long (4032 block) countdown to disabling vulnerable spend paths, as a final shot across the bow. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Weekly summary: I heard Iran is going to use Quantum Black is going to crash Bitcoin! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell There's a lot of repetitive work which needs to be done, and I'm happy to outsource that. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Claude is really happy to write more code. This can be a super-power! But it can also mean repetition, nasty workarounds, and unreviewable code :( For the BOLT12 payer proofs, I asked it to take my implementation, produce test vectors then compare against Vincenzo's LDK implementation. There was a bug in the spec around field ordering which this found, and it proceeded to fix my code, adding another complex pass to reorder the fields. Instead I asked it to change the Rust code, and indeed it was much simpler there too. If I hadn't caught this, we would and been stuck with a very weird spec and a lot of gratuitous code in every codebase. So now I need to start emphasizing the joy of simplicity, I guess. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell To be clear, you're thinking of deriving a second (hardened) key, for which a signature is checked in tapscript, assuming that the keypath spends will eventually get disabled? To do that we need a BIP32 path standard, and get this advice into BIP-0341 instead of the current advice on unspendable script path selection, then get wallets to implement it. Things which actually use tapscripts need to decide whether they need to do this (is the loss of keypath spend fatal, or merely inconvenient?). This also needs a clear warning: that you should anticipate loss of the keyspend path... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Yes. #nevent1q…vary npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I've been through tech hype cycles before. They always have a grain of truth in them (otherwise they're trivially refuted) but they don't always work out. I have been through three VR waves, for example. I can't tell where Quantum Computing will land, though it has all the signs of needing a few more decades of occasional hype cycles. But I *can* tell that all the proposed mitigating signature schemes for Bitcoin suck hard: they're technically impressive because they're 10x better than I expected, but they're still 10x worse than what we have now. This means two things: I applaud and support the continuing research. And I won't support a soft fork any new cryptographic schemes until the someone demonstrates an extant QC that can factor faster than a classical one. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Obviously npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Americans trying to get back to the moon and missed. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell This one doesn't keep getting disconnected from LND and Eclair, because we disabled the padding feature which made all messages the same length on the wire which was to be a release feature 😔 It was an obscure part of the spec, but LND have already fixed theirs for v21: kudos! I submitted PRs to Eclair and Phoenix (the latter mainly Claude, but it's a trivial change). I still have hope for a workaround, but we'll see if I can get it before Sangbida as Release Captain says No! #nevent1q…ykgl npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Hmm. There are several things which could be done. Firstly, the key for the inv request doesn't need to be the node key. You can use an ephemeral one, so that's one possibility (ofc your node has to honor it, but that's an implementation detail). Alternately, fields 250-1000 are not covered by the signature. This would allow an extension to say "put an amount, signed by Bob, in field 255". Of course, clients would need to understand that that should use this amount field, not the normal one. Also, having a mechanism to pull funds gives me the "credit card vibes" ick, but maybe that's just me... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Wow, that's some lunch with the mayor! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell "Also Bitcoin Core, but in blue" Send $$ NOW for my new project! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell No, it's all agentic payments! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I'm hearing them, not listening to them :) And I've been hearing about the premise of "regulatory clarity" and various TradFi acceptance for over 5 years. Today it's Clarity Act and Morgan Stanley's ETF. Before it was ETFs and accounting rules, etc. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I keep hearing about all the billions left on the sidelines, which will come rushing into Bitcoin when some legislative or regulatory event occurs. Here's some history: - Bitcoin futures ETFs. October 2021, price $61k - Bitcoin spot ETFs. January 2024, price $42k - March 2026, price $70k Now, maybe it's still coming, but at this point you might want to start doubting this narrative. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Hmm, stuck in "processing". npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Actually, I'm not sure how. cashu.me doesn't seem to give me an option. I see my node made a 5000 sat bolt12 outgoing psyment about 6 hours ago though... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Let me try... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Done. A bit rough, but functional. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Now I serve a web page at that URL. Probably presents too much info. @nprofile…xnfk might have suggestions for what I should put here? #nevent1q…eekl npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Yes, its pure API, no website. I should probably put some info there... Try: https://cashu.centurymetadata.org/v1/info npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Fired up a cashu mint today: should exercise my CLN node a bit more! https://cashu.centurymetadata.org npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I made enchiladas, where N = 8. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Token bucket filter for the win: most occasional posters are not *regular*. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Finally read BIP-54 (mirror at https://bips.dev/54/) and it is straightforward,minimal and thorough. At this point I can endorse it as a good idea and worth doing. There's no rush, but I am looking forward to activation. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I am loving listening to the Pieter Wuille interview. It's clear from motivation to technical explanation, and Stephan shepherds the discussion masterfully! https://stephanlivera.com/episode/730/ npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Here are two of my favorites: Vaults, where your coins can only be spent with a delay, so if you see your coins move and it wasn't you, you can force them to emergency backup address instead. Lightning and other layer 2 protocols get simpler and more efficient. In the case of Ark, it sheds some cases where you need to trust the provider. These ideas came up long after the script stuff was disabled. There are certainly more npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://json5.org/ I *want* JSON5 to take over the world because it allows trailing commas. But I have to accept that most people are just excited because it sounds like a boy band. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Each Bitcoin you send has a "script" which says how it can be spent: usually just a signature for the owner's key. There's lots of other stuff yo can do though. Back in 2010, Satoshi ripped out a pile of Bitcoin script because it had no limits and you could make coin spends which would blow up nodes. Putting reasonable limits in means we can put all those back, so you can make your Bitcoin do fancy tricks, if you want (need?). npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://github.com/bitcoin/bips/pull/2118 Finally, the PR to assign BIP numbers to the first two BIPs of the "script restoration quartet". Here's the corresponding bitcoin-dev the mailing list post: Hi all, I've submitted a PR to the BIPs repo to merge the first two drafts of the previously posted[1] "A Bitcoin Scripting Proposal BIP Quartet": https://github.com/bitcoin/bips/pull/2118 The only substantive change since the last discussion is that the costs have increased for some operations (hashing and copying bytes), as a result of benchmarking on a wider array of machines[2]. This follows our conservative approach to make the worst-case validation times no worse than they are presently, on any viable hardware. The remaining two BIPs (OP_TX, and new opcodes) are not submitted: they are mainly useful to provide a roadmap what functional gaps remain after the script extensions, and do not have full implementations. Cheers! Rusty & Julian. [1] https://groups.google.com/g/bitcoindev/c/GisTcPb8Jco/m/8znWcWwKAQAJ [2] https://github.com/jmoik/varopsData npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Randomness ("luck") is such a factor in life, and hard to disentangle. These days I prefer to think of my own successes as 90% luck, and others' successes as 10%. Truth may be somewhere in the middle, but this formula keeps me from being an asshole! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Kick the can down the road? I cannot see the appeal from any direction... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You are minmaxing again. Enjoy the scenery and sense of wonder! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://rusty-lightning.medium.com/the-three-economic-eras-of-bitcoin-d43bf0cf058a This is still the best piece I ever wrote on Bitcoin. It occasionally gets referenced somewhere, and I reread it. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You don't understand. There are no rulers. You cannot prevent people doing stupid things. This is fundamental, and hardest to emotionally grasp. You can, however, use existing incentives to minimize the damage to the system. That's why OP_RETURN is standard: people used to embed data in outputs, which have to be stored forever and be available for fast lookup. OP_RETURN is straight harm prevention. Luke used the coinbase input to embed prayers, which has the same effect, but you have to be a miner. The only strong incentive is fees. That's unvarnished capitalism, which has the benefit of being *simple* and *distributed*, but it's not *fair*. Assholes with more money than me are a real problem! But not one we know how to solve in a decentralized system. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell To check the signature, you hash the transaction. So the only cost that OP_RETURN is doing is the cost to download and hash it. If it's data in the annex you don't even need fi hash it, just download it. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You only have to download and hash: you don't have to check extra signatures (our most expensive operation) or put them in the UTXO set (our most constrained memory resource). npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell But not relaying them disadvantages small and anonymous miners, driving centralization and thus putting my own UTXOs in danger. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You will not be at peace until you understand the truth: every non-coinbase bitcoin transaction which does not eventually send funds to me is spam. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell So, OP_RETURN is fine, as is annex data which don't increase validation burden? And cutting off OP_RETURN and driving those uses to fake pubkeys, which does increase future validation costs, is a threat? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell It adds an entire transaction! Every time it does that, it uses up farmore space than an 80-byte OP_RETURN. So your conclusion is that it's not spam if it looks like a normal transaction to you? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell And does this mean you're okay with transactions that transfer NFTs? Because that's a financial transaction? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell OTS transactions only exist to put non-financial data in the Bitcoin blockchain. Is that ok? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell OpenTimestamps transactions aren't financial data, nor memes. So are they spam? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Great, enjoy. Wasn't talking or thinking about BIP110, but you do you. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Indeed. Lightning commitment transactions stash the commitment number in the nSequence and nLocktime. Is that spam? OpenTimestamps uses full transactions to timestamp data, is that spam? Samurai (IIRC) had a method of obscured payment addresses which required an initial seed tx. Was that spam? You can encode data in the key used when you use a taproot script spend path. Is that spam? (Can you tell?) npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I thought someone would build a great UI on top of iptables. But my main predictive failures have been in assumptions I didn't know I was making. I thought the internet would remain basically peer-to-peer, not client-server by default. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell But but but they didn't "read the room"!!!!! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://www.theregister.com/2026/02/16/semantic_ablation_ai_writing/ "Semantic ablation" is a great phrase to express the reversion-to-mean effect you get when you put your writing through an LLM. I tried it once with a heartfelt speech I wrote asking it to "increase emotional impact", and the result was... soulless. I literally only took one word that it used. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell None of those celebrating her departure are Bitcoiners. Because clearly they neither understand or like Bitcoin. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Reading comments on Gloria's departure from people who have never contributed anything is stepping in an enraging sticky fecal mess. The only appropriate response: keep building, keep unashamedly celebrating those who do. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Suggesting such things means you're clearly not a Real Bitcoiner! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Reading X, I have learned that the biggest threat to bitcoin is AI Epstein Quantum attacks. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell My brain keeps conflating "Ghislaine" with "Gharlane of Eddore", the bad guy from the 50s sci-fi pulp Lensman series. No insight gained, sorry. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I have been having way too much fun reading moltbook.com As one wit on HN (I think) pointed out, these AIs are trained on Reddit posts, so they have exactly the same style. My wife keeps looking at me funny as I LOL at some breathless word salad... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://nostr.download/98b17a8e0b35750354e38270da480e3c35555466e150576aba14a89cf3108950.jpg npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Yep. Flat out. https://nostr.download/d8156a3738fe46b411099eed09318d5245b9cb4870ffc1eb8e7407379144b292.jpg npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Little-known fact: just like Gloria, "Solana" is also my duress word! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Just finished "This is how you lose the time war". It was more literary than my usual fare, but it feels good to be stretched (there were at least three times I stopped to look up words). Written as correspondence between two adversaries, who of course have more in common with each other than their sides in the time war (reflecting horseshoe theory in my mind). But really it's a homage to letter writing. Who has such time? npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell In 1997 I attended USENIX, a conference: in particular the "Uselinux" track. Many stories I could and have told, but it kicked off a career timeline I still marvel at: * 1997 go home knowing I want to work with these people, start hacking on the Linux firewall code. * 1998 at USENIX again, respond to a job ad with a proposal to instead sponsor my coding. Tour Australia' Linux User Groups promoting the idea that *we* should have a Linux conference. * 1999 ran CALU, moved to Canberra to join some FOSS hackers I'd met. Joined the same startup. Hired hobbyist hackers from all around the country to join us at "OzLabs" * 2001 wrote the state election software, then joined IBM with most of the OzLabs team. Yesterday, IBM finally shuttered the OzLabs team, so I returned to Canberra for the wake. It's been over a decade, and not everyone was there, but feeling much nostalgia. Looking back is not my normal mode, but being here I can't help it. That lab was such a formative crucible for young FOSS hackers: it really did get the best out of us all. I wish such a place still existed (ideally in my chosen home of Adelaide!) but I do wish everyone reading this can experience belonging to such a place at least once. ❤️ npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You can easily spot payments flowing through the network, just based on TCP packet size. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Hacked up a "constant message size" change for CLN, inspired by https://github.com/lightning/bolts/pull/1304 There have been a number is papers showing how trivial it is for someone with a network view to identify which messages are Lightning payments. The first mitigation is to make the TCP packet sizes identical (the rest have to do with timings, but this is a prerequisite). The approach here is wrong: you need to attack it lower level than message construction. You need it post-encryption where you do the write(). Fortunately, we have explicit padding messages for this in the spec! Pings which do not elicit a reply. But testing is vital: it's easy to slip up and have weird packet sizes slip though and leak all your info even though everything "works fine"! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Strange. I work on Lightning, but somehow the sats haven't crept out of my node and weaseled into my brain to take over my identity. Perhaps I'm too old! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Define "bitcoiner" and I'll let you :) npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://www.tumlook.com/kingjamesprogramming I found this Markov chain all the King James Bible and the Structure and Interpretation of Computer Programs via HN. I found it inexplicably hilarious... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Damn, there was a proposal for BOLT spec changes to enable fixed-size messages, and now I have to implement it to show it's unnecessary... npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Except that hotel gym in the US, where I had to convert everything from lbs to figure out whether I was slacking off or just jet lagged! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Extreme on both counts. We're talking about people who are difficult and unpleasant to deal with, not assault. And we're also talking about genuine significant contributions, like Linux or Bitcoin, not tasks on the edge of being automated. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://rusty.ozlabs.org/2011/05/19/if-you-didnt-run-code-written-by-assholes-your-machine-wouldnt-boot.html I wrote this over 15 years ago, and it still rings true: separate the art from the artist. It's a key stabilizing principle for me when navigating Bitcoin developers. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Seems similar! Mine is for my specific setup: I have different machines on home vs work, so I wanted it to Just Work. And it's one file: #! /bin/sh -e REMOTES="workserver:22 homeserver:22 bouncehost:2222" # Figure out likely remotes by looking for ssh ControlPath vars, as # per this cantrip in ssh_config: # # Reuse ssh tunnels if possible. # Host * # ControlMaster auto # ControlPath ~/.cache/ssh-%r@%h:%p # ControlPersist 10m find_remote() { for r in $REMOTES; do if [ -S ~/.cache/ssh-`whoami`@$r ]; then echo $r return fi done # Nothing cached, try ping. for r in $REMOTES; do host=$(echo $r | cut -d: -f1) if ping -c 1 $host > /dev/null 2>&1; then echo $r return fi done echo "No reachable remote" >&2 exit 1 } # Make sure we're in a git dir! [ -d .git ] || (echo "Not a git dir!"; exit 1) PWD=$(pwd -P) REMOTE=$(find_remote) echo "rcargo: remote $REMOTE" HOST=$(echo $REMOTE | cut -d: -f1) PORT=$(echo $REMOTE | cut -d: -f2) # Make sure directory exists ssh "$HOST" -p $PORT "mkdir -p '$PWD'" # Sync source (exclude junk) rsync -az --delete \ -e "ssh -p $PORT" \ --exclude .git \ --exclude target \ "$PWD/" "$HOST:$PWD/" ssh $HOST -p $PORT ". ~/.profile && cd '$PWD' && cargo $*" rsync -az --delete \ -e "ssh -p $PORT" \ "$HOST:$PWD/target/" "$PWD/target/" npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Now I have a shell script `rcargo` which remote compiles rust crates: I work on my laptop but have beefy machines on my home and work LANs. You'd have to reimplement cargo to do it much finer-grained, apparently: sccache used to and gave up? The real trick is ssh's ControlPath config var, which allows shared connection for much-improved speed: ChatGPT taught me this one! The other option is Nix, but I'm not *that* bored! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell "and see" - > "in C". Voice dictation good, not prefect, and I missed this on re-reading! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell https://crates.io/crates/linestats Second Rust crate, re-implementing a utility I had written several times and see. This one takes a more thorough approach and handles corner cases a bit better. I also added percentile support which is actually quite cute. Basically, if you have a pile of text lines, which contains some numbers, something like you've run a benchmark 20 times, produced a pile of output, line stats will gather similar lines and show you the stats on the numbers. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Sometimes people speak of Bitcoin and I get a moment of disorientation before I realize they're speaking of it as an *investment*. Like gold, oil, Nvidia stock, etc. There's nothing wrong with that, but it's a single dimension: up good, down bad. Corollaries: 1. This is fungible: there are other investments, some of which may be better at going up. 2. They may be "really into" Bitcoin, but it's a phase: some other financial winner will come along. 3. There are no deep insights here, just a lot of effort to predict numbers. 4. They're not wrong: finance is important. But for me it's like doing my taxes: I do it, but I kinda resent the time I spend on it. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell WMD is also interesting for *when it was written*: the US had just gone off the gold standard so there was interest in such a cautionary tale. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Paused my reading of The Mandibles for Xmas day: It's not exactly holiday reading. It's one thing to know nothing stops this train. It's another thing to read through a detailed description of what the slow inevitable crash looks like: It's like the right brain equivalent of When Money Dies. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Hmm, I did a histogram mode, but it sucked if one value dominated. Percentiles a good idea though! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell My second week of Rust (only a few hours a day though: I am on vacation after all) has me reproducing and enhancing a tool I wrote in C. It takes multiple lines and runs stats on the numbers in it. This is useful for quick benchmarks: `for i in $(seq 10); do /usr/bin/time myprog; done | linestats`. Each line with the same literal parts is combined, with numbers replaced by "min-max(mean+/-stddev)". The C one wasn't very clever about decimals, so it needed a good rewrite. The new code works, but needs polish, more options, optimization, tests and documentation before I release it. The good thing about these small projects is they don't get hamstrung by Rust's glacial build times! npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell Yes, it's a technical distinction, not an ethical one. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell I have published my first Rust crate. A the library that I've always wanted to exist and would normally have written in C, so it was a good chance to experiment with rust. https://docs.rs/syncless/ npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell You're perfectly good. npub179e9tp4yqtqx4myp35283fz64gxuzmr6n3yxnktux5pnd5t03eps0elz4s Rusty Russell 1. No, I'm not reading your article on quantum. 2. Yes, all choices are bad. That's what "breaking" means. 3. I'm glad smart people are thinking about technical mitigations.