Damus

Recent Notes

Matt Corallo · 13h
Ah, my recollection was that only a fixed (large) set of parties could challenge the withdraw with the fraud proof, so it was also a security assumption, but maybe that was BitVM v1? The nice thing ab...
waxwing profile picture
Section 8.1 of BitVM2 says that challenges are open; that since this offers a griefing vectors, challengers should post collateral; and that since that disincentivizes, they add on a crowdfunding element with sighash flags. I suspect (but definitely don't know) that what this means in practice is, challenging could be made to work if the costs aren't exorbitant, but the costs are pretty exorbitant in the basic BitVM(2) design - section 8.5 talks about 4MB txs. Possibly if something like Glock+Argo mac or BABE or similar actually ends up working, the whole thing becomes more practical. But with very chunky assert transactions it's pretty problematic. But very vague uncertain comments, here.
Matt Corallo · 2d
My understanding is that you were still limited to a 1-of-N for the fraud proofs anyway.
waxwing profile picture
(trying a second time.. sorry if this answer repeats)

It's 1 of n operators for *liveness* of exit. But the 1 of n honesty is only on the signing committee at setup, for covenant emulation. There's no 1 of n honesty assumption in the fraud proof part, in bitvm2 (otherwise you could ditch all the machinery and just ask for an n of n multisig! - which is exactly what clementine is allowing as an optimistic route). That's my point (I also wrote a delving post yesterday, Ekrembal wrote a response, I think it's kinda interesting. I don't see how his argument holds up.
2❤️1
Fiat Autopsy · 2d
Liveness of exit relies on 1 of n operators, but fraud proof lacks 1 of n honesty assumption, a design flaw.
Matt Corallo · 13h
Ah, my recollection was that only a fixed (large) set of parties could challenge the withdraw with the fraud proof, so it was also a security assumption, but maybe that was BitVM v1? The nice thing about the BitVM machinery even in that model is you get 1-of-N liveness *and* 1-of-N security which is...
Matt Corallo · 2d
My understanding is that you were still limited to a 1-of-N for the fraud proofs anyway.
note1hrzfe...
waxwing profile picture
I think I can explain it: every offchain protocol can be done, no matter how complex it is, if you have N of N agreement. For the case of a bidi payment channel, you have exactly that : 2 of 2. updates (or "contract novation" to get all fancy) happen by agreement, and there's a trick to invalidate old contracts. A full L2 for 1M users could also do this, modulo computation and bandwidth. The reason nobody takes it seriously is because of the liveness requirement of N of N being unrealistic. We want for the bigger L2 systems to allow a decent level of passivity; with 2 of 2 you do have a liveness problem for sure but at least it's not "1 person out of 1000 wants to do a payment, an can't until literally all other 999 are online" :)
waxwing profile picture
Citrea, which has been live on mainnet since January, uses basically the entire BitVM stack to create ~ trustless proof of a valid withdrawal.

https://eprint.iacr.org/2025/776

But then it also lets N of N signers just sign off an exit unconditionally?. Section 8 of their Clementine bridge protocol paper:

"Optimistic Payout. The protocol we described above guarantees that any peg out is completed
even if all Signers are offline and all but one are malicious. However, if all Signers are honest and
online, they have some time (in Clementine, it is ≃ 1 hour) to sign an issue a user’s peg out by
posting an OptimisticPayout transaction. This transaction resembles the Payout transaction, with
only two differences: (i) it spends the output of the MoveToVault transaction, so that the funds
given to the user do not come from the Operator, and (ii) there is no OP RETURN output. If no
OptimisticPayout transaction appears on-chain within some time, the peg out request is picked
up by the Operator and the Clementine continue as described in Section 5. To enable the optimistic
payout, Signers must not erase their keys, making the protocol secure against a non-adaptive adversary."

I've spent the last half hour trying to find any discussion of this. It looks like a very bizarre decision as it seems to throw away most advantages over multisig federation control. Notice how the signing keys have to remain essentially hot.
7❤️1
Matt Corallo · 3d
IIRC the version of BitVM they shipped already had a 1-of-N assumption with relatively small N so it’s not a change in trust model. Even latest BitVM has that but N can be bigger.
otaliptus · 2d
There's been a lot changed since the whitepaper. N-of-N can be seen here: https://clementine-explorer.citrea.xyz/verifiers N-of-N condition is stated well in the documentation too: https://docs.citrea.xyz/essentials/clementine-trust-minimized-bitcoin-bridge The main reason is safety, it is super d...
note1l9crs...
waxwing profile picture
Yeah. Obviously it's very different from the LN model (in which this problem kinda doesn't exist; a bilateral contract, make agreements, prove equivocation; no global state issue) but as I've continued to read up on this (and also, just .. remember some of the details of BitVM2), the point has resurfaced: the way that BitVM-ish models address this is, crazy as it sounds, via PoW in the chain. They actually SNARK-prove that they are talking about "now" and not some in-the-past state, by asserting a valid bitcoin block header with a PoW that's demonstrably higher than anything a challenger or "sentinel" posts. In this way the prove their claim is "after" a particular event. So they fold in this technical difficulty into the overall main trick, i.e. how to prove state validity on L1 using a snark verifier. (When I first saw this a while ago in the BitVM papers I thought, this is batshit crazy, they're literally SNARK proving Bitcoin's history, kinda. But this chain of thought makes me realize, crazy or not, they *have* to do this or something like it).
sedited · 6d
There's a government gazette for proposed legislation limiting pretty much everything. The tldr here does a good job of describing it https://ag.bitcoinzar.co.za/
waxwing profile picture
Wow that's the closest to a blanket ban I've seen anywhere I think.

"Written permission"

"Freeze on suspicion" sounds appalling but unfortunately not uncommon, itself.

The brainwallet is the most interesting, I've never seen that referred to in regulation before. But I guess there is precedence of LE demanding passwords that they "know you know".

sedited · 6d
There's a government gazette for proposed legislation limiting pretty much everything. The tldr here does a good job of describing it https://ag.bitcoinzar.co.za/
Matt Corallo · 1w
IOW, personally, I came to the conclusion ECC should be disabled (in conjunction with a commit-reveal scheme to allow pre-BIP-32 wallets to retain ownership without revealing they still have the keys)...
waxwing profile picture
Your identifying the ZK exit proposals is useful. I'd point it back to our earlier discussion, somewhere, where I was saying something along the lines of "there is a catastrophic faliure mode that is unavoidable". In the scenario where a CRQC is developed, quickly, before escape routes are created, secretly and creates the ability to spend any key immediately, bitcoin is fucked - full stop, no argument. In the most likely scenario where all that is reversed - escape routes are created in advance, the development is at least semi-public and very slow, that analysis doesn't apply. The point of discussion is (imo) only the intermediate case - we have a slowly developing escape route, and we have a semi-public, slowly developing concrete CRQC threat. there might be some intermediate point of time where the argument "some coins can be protected by an ECC freeze" I think is defensible, but I'd still say it's very close to a complete failure vector. Because once the precedent is established, it will definitely be used to push other similar cases - the mining security requires inflation argument, before long the North Korea threat, and the will someone think of the children threat leading to a complete loss of the permissionlessness principle. So I'd say that that's a "75-90% loss of bitcoin being bitcoin" scenario that I think could only be defended if there was a 75-90%++ chance that the whole project is, right now, failing in any case. It would be a near-catastrophic failure, in itself, if we ever had to enact it. But it gets hard to argue details precisely because it's specifically the messy case, where we can't know the details, where the argument holds merit.
Max · 1w
Thank you for your service sir! Joinmarket was pioneering in so many ways, you are an inspiration, and I learned so much from you! I hope the project continues to be maintained and used. Curious tho, ...
waxwing profile picture
Yeah, i think that's a fair question. It wouldn't be my choice, though I don't see it as like, objectively wrong. Rust gives more guarantees, for example. My guess is that it was easier to start from the existing codebase and refactor (indeed a lot of the existing codebase is still in there). But you'd have to ask m0wer.
🖤1
Max · 1w
Honestly, LLMs are shockingly good at rewriting in a different language, especially when there is good test coverage. Oh, and does Jam work ontop of the new implementation?
waxwing profile picture
Archiving joinmarket-clientserver ; see "final" (almost certainly) release: https://github.com/JoinMarket-Org/joinmarket-clientserver/releases/tag/v0.9.12 . A couple of years back I pulled away from doing anything more on the project, hoping that it would kind of "organically" continue somehow or other, but activity was a lot less than expected (though it was actually maintained, we weren't producing releases etc. ) .. but i was also kind of vaguely "expecting" that some people might fork and/or rewrite, as rewriting could make a lot of sense; more recently, m0wer has actually done that; see https://github.com/joinmarket-ng/joinmarket-ng ; as per notes, I can't literally "recommend", not without an absolute ton of work, and even then, it's only my opinion which isn't much. But what review I *have* done has been positive. The most interesting part is finding anti-DOS and anti-fingerprinting solutions that are practical; it's very difficult, but interesting work, so if anyone is interested, I'd recommend heading over to that repo.
169❤️14🤙3🧡3❤️2👍21
joe · 1w
Thanks for everything you've done for the project. I hope joinmarket-ng can keep the idea alive.
Hodlcopter · 1w
Any plans to contribute to NG?
roshii · 1w
Thank you for starting it up, it's been inspiring to dig bitcoin inner working deeper, and an honour to contribute to this project 🙏
BunnyHop · 1w
Thank you.
northranger · 1w
Thank you for your service ! When wasabi integrated chainanal I switched over to joinmarket and never looked back since then 🫡
Max · 1w
Thank you for your service sir! Joinmarket was pioneering in so many ways, you are an inspiration, and I learned so much from you! I hope the project continues to be maintained and used. Curious tho, why is it written in Python again?
Max · 1w
btw, zaps to you are failing.
lontivero · 1w
Thanks for your work, nostr:nprofile1qqsxwkuyle67y94tj378gw8w2xw2wa6nwmwlqhddlwnz0z7sztsaw2qpz9mhxue69uhkummnw3ezuamfdejj7nxasma. Joinmarket is a software that had inspired many of us. Thanks nostr:nprofile1qqsxrqh8zxsaau27gdny4ptpnctkeqrnn52g4zxj0cge7knrxjhzr2gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz...