Oddbean new post about | logout

Notes by matt | export

 All of my major platforms and services are so inundated with spam now that they are becoming wort... 
 Google Voice/Google Fi, sadly, is actually kinda decent at spam blocking. 
 Yea, basically 
 For wallets wanting to get a head start on implementing human-readable bitcoin names, here’s a library that handles all the DNS parts!

* resolves against a local (/remote) TCP/53 resolver
* resolves against a DoH/DoT resolver
* creates/validates proofs

https://docs.rs/dnssec-prover/

It can even be run in WASM on a web page (and resolve via DoH directly)!

https://http-dns-prover.as397444.net 
 I mean it could work over that too but then you have to handle truncation and tcp fallback and that’s annoying 
 Are there any e-cash, nuts, or otherwise reliable solutions outside Bolt12 for a static LN invoic... 
 You could totally use the same spec for ecash/nuts/whatever. That’s not lightning, of course, but the point of the  design here is it’s totally extensible any way that you can build a bitcoin: URI. 
 This (finally) adds some amount of censorship resistance to LN Address, not to mention better security and (thanks to BOLT12) even allows users of custodial services to use their own domain for their address!

The full protocol (lightning-specific) protocol is implemented at https://git.bitcoin.ninja/index.cgi?p=lightning-resolver;a=summary nostr:note1gt9ryucy0eyn6gcez3vj5j2vgswsp70kz9mhk97egh54r4cjmzcsswpv06 
 It applies equally to on-chain as it does lightning/fedimint/cashu/whatever! 
 I mean realistically people just won’t support non-ASCII hosts. 
 There are proposals to add proprietary APIs for, eg exchanges to expose the ability to pay their users but not users of other wallets, at least in specific contexts. 
 Oof. Which repo? 
 Interesting, that just seems like a gitweb bug? If you click tree on the master branch it works, wonder if my default branch is misconfigured. 
 It’s time bitcoin had a way to specify human-readable names for payment instructions.

LN Address has demonstrated the utility of such names, but it’s time to take it beyond just lightning and remove the dependence on HTTPS/CAs.

https://github.com/bitcoin/bips/pull/1551 
 The DNSSEC proof validation can also be played with at http://http-dns-prover.as397444.net/ 
 No, it’s generic (for on chain), but for lightning you need a static invoice, so BOLT11 won’t cut it and you need BOLT12. 
 It could, but luckily we don’t actually need any transport encryption to send money to people over bitcoin :)

That prover does support TLSS though, if it want to use DANE for something. 
 I mean this is basically the same thing, just a bit less polluting of a domain’s normal contents. 
 Yep! Just gotta define a bitcoin: URI query parameter. Best thing is you can even do both - one URI/name that resolves to lightning + on chain + BIP47….. sender will just pick what they support and pay it! 
 I mean, to put anything on the internet you generally do…or someone has to on your behalf. 
 Because there’s like 50 totally trusted and totally sketchy CAs that you have to rely on? Also DNS is quite simple, HTTPS+CAs+TLS on top is a *lot* more complexity that you can just…. Not have. 
 What do you all think of BitVM? 
 Piles and piles of practical constraints that need to be worked through to see if any realistic systems using it are practical, but really cool tech. 
 Wat? I admit web dev is not my strong suit, but it should work….i wiped the front end caches again and added error handling so try again? 
 Some security restrictions or something 🤷‍♂️ 
 lol namecheap is “securing” it using SHA-1. I guess I could implement it, but…. Come on. 
 I meannnnnn it’s actually probably mostly fine. There’s some analysis basically concluding the known attacks against SHA-1 don’t really apply to DNSSEC, but, yea, not great. 
 Querying DNS in a fully self-validating manner is pretty trivial, so much so you can shove it in a small webpage :)

Shove Bitcoin payment instructions in TXT records and now you can get easy internet-less self-validated proofs of payment instructions! A hardware wallet can even check it and display a nice human-readable name for payments, talk about awesome UX.

https://http-dns-prover.as397444.net

Test looking up matt.user._bitcoin-payment.mattcorallo.com. TXT :) 
 Doesn’t work how? Does it block WASM (or are you querying a non-DNSSEC-signed record)? 
 Uh, yea, old client version that didn’t parse the text, reload and try again :) 
 A hardware wallet or device wanting to query privately may want to get a proof that doesn’t require trusting a third party server or a long list of CAs. 
 I admit web dev is not my strong suit, but it should work….i wiped the front end caches again and added error handling so try again? 
 Wat? I admit web dev is not my strong suit, but it should work….i wiped the front end caches again and added error handling so try again? 
 Sure, but you get to pick the state you trust. More generally, explicit public key trust is definitely better, but if you want a human readable name that doesn’t help. 
 TLS you cannot provide a proof for (it’s asymmetric in the cert but used to derive symmetric keys, so you can forge a transcript). DNS is not, so like you say you can avoid all the complexity, and a totally untrusted device can provide a proof to a totally offline device (eg a hardware wallet). 
 On-chain: Noncustodial
Lightning: Noncustodial (*)
Statechains: Regulatorily Noncustodial
Fedimint: Federated Custody
Exchanges: Custody

Easy enough? 
 Something like that :) 
 It’d be a big miss to add transaction introspection (covanents) and not enable lightning to remove anchors entirely. Allowing the transaction broadcaster to simply reduce their balance to pay fees at broadcast-time would solve one of the biggest pain points for LN.

Sadly I’m not sure that any covanent opcodes currently proposed would enable that - you need the ability to sign all outputs except the value of one, but still ensure the value is over some threshold. 
 Maybe? But arithmetic opcodes and introspection would be simpler. 
 Cahincode’s is better. 
 They have a pretty reasonable beer selection. 
 You guys know everyone thinks crypto is max cringe right? 
 Everyone *above a certain age* thinks crypto is max cringe. That age isn’t super high, but give it a decade :) 
 My age bracket is definitely in that category too :) 
 This is your yearly reminder to never, ever use GoDaddy. In an a race to the bottom industry with tons of sketchy players, they differentiate as “we ran some commercials with hot women in the early 2000s when that was still kinda acceptable and people still remember our name”.

They have high prices, and gouge in any possible way they can, with incredibly sketchy practices and support agents who lie to your face. 
 Forgot about that one. Fuck them. 
 How is GitHub’s PDF viewer so bad when they could have just embedded pdf.js and moved on? 
 To be fair, the best way to make yourself unplayable is to let anyone open a channel to you and be a big node. You end up with a few thousand channels, all of which are saturated, and only senders with a ton of volume who can try each channel open open a direct channel can pay you. 
 What should I be doing with bitcoin.ninja? 
 Never know when you might be able to sell an ad to “unfit people who don’t move all day”. Okay, actually they probably do know, it’s probably in fact a big target demographic. Ozempic ads inbound… 
 “Stop checking your email while jogging” -Gmail, presumably. 
 Never know when you might be able to sell an ad to “unfit people who don’t move all day”. Okay, actually they probably do know, it’s probably in fact a big target demographic. Ozempic ads inbound… 
 There’s relatively little tech in this episode? It’s mostly a retelling of Jeremy’s experience with CTV from his PoV (which I think is borderline conspiratorial in its interpretations of the actions of others). 
 Right, my point is that the claims made here around “the politics” are actually a strong misreading of others’ behaviors. 
 And suggesting “this is how bitcoin works” is kinda strange given that :/ 
 “Listen to this Pod and you'll learn a hundred times more about Bitcoin than by listening to the 500th podcast episode about [nonsense]” sounds like a ringing endorsement to me :)

I definitely empathize with Jeremy, he definitely did get a lot of conflicting signals and that’s hard. I also value his contribution in normalizing covanents and the idea of adding them to Bitcoin. But he assumes certain malintent on the part of others that just contributes to a culture of “fuck the devs” which just isn’t healthy. 
 Dunno, I’m absolutely sure there are some developers who were very rude to Jeremy, there’s a million developers who work on bitcoin in one way or another (though in context at Scaling Bitcoin it may not have been a relevant topic?). The discussion seems to heavily imply that all, most, or core developers are all rude or somehow stonewalling, which I find to be absurd. 
 Sadly some shops only accept PayPal. I closed my account years ago and have no plan to open anoth... 
 Where do such shops exist?! 
 Sheesh wtf 
 In a two party mutual-authentication protocol, should I have

O(N^2) CPU + O(N^2) communication and if one side doesn’t trust the other neither learns anything or,

O(N^2) CPU + O(1) communication and if one side doesn’t trust the other they may still learn that the other side trusts them? 
 Authorization to exchange a message. 
 That was cool. Can we focus on noncustodial tech and freedom money again now? 
 Not to burst anyone’s bubble, but the court ruling that forced the SEC to accept bitcoin ETFs is going to apply equally to ETH. Expect an ETH ETF soon. 
 Curious to see if the ETFs will be allowed to stake, I assume they will. 
 Yea, dunno, gensler may use staking as an excuse to reject an ETF so maybe they won’t. If the custodian gets to decide I’m sure they’ll stake. Free profit (and own the network lol). 
 Mutiny is coming out really swinging against end user LN recently to explain their pivot to feder... 
 Depends on where fees go in the next few months… 
 LIQUID TRANSACTION FEES ARE PAID TO BLOCKSTREAM NOT FEDERATION MEMBERS.

SEEMS LIKE A BROKEN INCE... 
 When the post was made, on-chain fees were zero and lightning was starting to take off. Today, people have an understanding of lightning and the liquid trust model much better. The popular discourse on its use makes more sense than it used to, though the federation set is…not commonly discussed so it’d be nice if that were more front-and-center in the discussion. 
 Not entirely, AFAIU. Canada tried to force Google/facebook/etc to pay media companies every time someone viewed news content via social media or search sites. In response, various social media sites simply stopped displaying any news to avoid having to pay. It was ultimately settled with a substantially watered down bill very recently, but I’m not sure if everything has been updated. 
 I continue to maintain that the vast majority of popular hardware wallets are borderline incompetent. 
 An old android phone (preferably one still getting security updates, but either way keep it offline), maybe the cheapest laptop you can buy in person at Walmart. 
 No. 
 As a reminder, writing software is a protected act of free speech in the 9th circuit. While not a bulletproof defense, this is an attack on free speech. nostr:note1e263ed8an344l2aetklxecr82hy60tfkd7d3zspas54vyc3cpeasksxwwa 
 Ross operated a custodial-funds business and (allegedly) ordered a hit on the life of someone. These are not similar situations. 
 Another great resource that talks about why bitcoin core has various policy (hint: it’s not because of some concept of what people “should” use bitcoin for) is https://bitcoinops.org/en/blog/waiting-for-confirmation/ 
 Yea, basically this. It makes it incredibly difficult, and possibly impossible in practice. Let alone with the available resources for this kind of thing (which is not much). 
 There’s ongoing work to do that! Look into the libbitcoinkernel project. 
 This is not true. Bitcoin Core does not try to “maximize the user experience of…transfers”. It has filtered transactions for various reasons, and maybe that previously, but that hasn’t been true in a long time.

Indeed, the system only works if miners are including transactions on the basis of fee alone; anything else is a slippery slope towards broad censorship. The fact that the protocol doesn’t enforce this is one of the biggest failings of bitcoin.

Ethereum is even working on fixing this, while we’re talking about whether it’s okay to live with it 😭.

There’s a great deep dive on all things policy at https://brink.dev/podcast/1-mempool-policy/ nostr:note108kxq3j38nk9dt5369ltwappamcn354u3ysw6l5ynl22kud2q3ms838h8k 
 No I’m saying your comment implied bitcoin core (developers) made some decision about prioritizing transactions which transfer value. No such decision was made. 
 You should read the linked post on why standard transactions exist, it’s not around normal transactions at all, really. Also, any script (in segwit) is standard! You can use any opcode freely. 
Event not found
 What is the modern policy from exchanges instead?