Yep, that’s why I didn’t say 1000 sats :). Even 100k sats is a lot for a channel, tho, tbh.
The whole point of testnets is that any amount is equivalent. There’s no reason to ever want a whole or event 1/10th a coin.
You can even make bets on leverage 🎰🎰🎰
It’s kinda funny that there’s now legal betting on US election outcomes on CFTC-regulated markets through brokerage accounts but you can’t place the same bets at a casino.
Yeah. Your point about spending limits is a very good one, maybe an interesting area for research. Not being able to spend specific chunks of your balance is a limitation (though the model of discrete denominations is also problematic, in other ways!). Didn't people try to address that with cosigning for onchain? Could we do that for LN? Have an agent that cosigns your channel updates with ecdsa 2pc or musig when we finally get taproot ln (umm nested musig blah blah).
The scenario that seems really difficult is: customer arrives in new town/region and needs Internet access at a 'tienda' (or bodega to use the US vernacular!).
I think nontech answers like fd0's : nostr:nevent1qqsfkm5vamze9mnqdpnuf6ykehegl8mc85d8p9dwe9yu48ls62d2cwgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygrxsyng4nj8fr2p5n8uc8nyqphmjddmcdvhs2eajcglvn23ce6jmypsgqqqqqqsz5vzal
.. are more likely to be what is chosen; though i think physical cards representing LN funds is a nice idea too, just that spendinglimit problem to fix ... If we want people to pay with tokens to bootstrap, the unfortunate reality is they'll tend to use the tokens of the strongest mafia in their jurisdiction (that's what makes bitcoin a little bit magical, it isn't a token ultimately redeemable with some authority).
Yea, you can do multisig channels (indeed nested musig) for lightning (well, 66%+1, not 50%+1, sadly), but you’re still doing the “I communicate with some third party over your internet before I pay you for it”.
But, yeah just giving people a tiny bit of internet works fine mostly. Even airplane WiFi with credit cards lets you access DNS before you buy…
It’s just a head-of-line-blocking question, though…I imagine mostly you’re not downloading lots of CSS/JS/images, which is the big head-of-line issue HTTP clients have - they can render the page partially in response to each new item they get off the wire.
I assume you don’t, really, though? You presumably get events back from the server in time-order and populate the page down in time-order, so mostly one event stalling the next won’t make all that much difference in UX?
I mean if you drop the TFO requirement it’s easy - just open many connections. But just fetching many resources isn’t sufficient to want QUIC - you have to be doing so immediately after opening the connection(s), the resources have to be non-trivial in size (think 10s of packets, so the text of a note generally doesn’t qualify) and have a need for not blocking one on another, which is generally not the case on a mobile app - server can send the first three things you need to paint the full window first and then more later.
At least directly with lightning, it’s not immediately obvious how you could reveal a key that only allowed you to spend up to some limit. The normal setup in lightning is your key can sign for the whole 2-of-2 channel balance. With pre-setup you could have some extra output on the commitment transaction and a new sub-channel that you could give the recipient control over, but you’d need to have that set up in advance for the exact amount you want to send (and it’d be a fairly complicated protocol extension for everyone to support). Probably just use ecash for the initial minute and then pay with lightning for further minutes after you’re online.
I think the difference is that with ecash the buyer choose who to trust and only trusts them. With your setup the buyer needs to trust the seller to some extent to use their infra to log into a custodial wallet. I’m not sure that’s a great idea.
Errr avoid the multi-connection (and associated initial small window sizes)/head-of-line-blocking tradeoff.
Note that QUIC is useful on the web for helping to and the multi-connection/head-of-line blocking problem. But if you aren’t fetching a bunch of resources from the same server across different streams where you can use each resource individually on its own this doesn’t apply (and it requires integration work to make it apply).
TLS’ only issues aren’t just CAs being a mess, it’s also an anachronistic protocol that just isn’t how you’d design something today. 1.3 is better, sure, but it carries tons of legacy garbage and most clients still have fallbacks and logic for it.
I also dislike QUIC for being a lazy, poor version of TCP. Middleboxes suck sometimes but sometimes do useful things (eg on a plane TCP is terminated before it goes to the sat, improving latency and throughput compared to UDP things with retransmissions, middleboxes can use MSS clamping to avoid fragmentation, etc). QUIC largely failed to consider these things and just said “screw all middleboxes” (compare to eg tcpinc which got similar encryption properties without being lazy). QUIC exists to rebuild TCP in user-space cause kernels sometimes suck, but for those of us with an operating system newer than five years old that’s not a problem we have. Worse, sometimes your OS has specific useful features (eg MP-TCP) that you don’t want twenty apps to have to rewrite. FFS this is literally the point of having an OS! The only promise QUIC made that isn’t as trivial in TCP is FEC, but they gave up on it cause…I dunno why.
Mmm, right, so doesn’t work noncustodially :/. Also sketchy security :(
That doesn’t allow a payer’s lightning wallet to access the internet, though?
Admittedly I wasn’t really thinking about web apps in the above design though. Nothing specific shouldn’t work except that the spec explicitly says wallets can’t open a callback URI that has a scheme of http(s). I was worried about it being a way for a payee to discover the payers IP, but I think maybe it doesn’t matter.
The web client shouldn’t be fetching the invoice, it just passes the whole offer on to the wallet and asks it to pay. When the wallet completes it does a callback to the initiating app.
I think it’s required. If we’re flipping it to have the nostr zapper broadcast the zap (which we should) you need to cryptographically tie the nostr zapper to the payment proof somehow.
I can see the argument for returning the key explicitly (it’s simple, the initiating app is the payer, kinda), but it feels pretty gross (two copies of a key always bad if you can only have one). Seems cleaner to just pass the message in the original URI?
Better late than never. See the Proof of Payment section at https://github.com/bitcoin/bips/pull/1555/files
No no, for offers. Imagine Nostr app wants to zap using BOLT 12. It does a system open for bitcoin:?lno=lnoffer&pop=proofcallback, but it ultimately needs the proof to include “Bob zapped with emoji🫠”. So either the proofcallback has to include the private key or that original URI has to include the string to sign.
Filtering the Internet such that you can connect to your LSP but nothing else is…hard?