Hi Pieter,
I think it improves one aspect of the incentive differences (relative costs within the output type for common vs. uncommon). The key recovery idea improves another (relative costs w.r.t. P2TR in the common case). Even with both, the result is still worse than P2TR today in both aspects (key-based spend is still more expensive compared to P2TR, and the incentive for key-based over script-based spend is weaker within P2MR).
Yep, all agreed there. These changes would make P2MR better, but still not as good as taproot for pre-Q-day spending.
my reasoning is primarily that the "Never" and/or "Immediately" options are just insufficient with current technology for any worthwhile migration attempt (independent of which commitment structure is used), and thus that we simply need the "Later" option.
Also agreed. Though I take things a step further as I suspect we will also be forced to restrict legacy coins by deploying a rescue protocol, but so far i'm following w.r.t the new output type. Whether it's P2MR or P2TRv2, EC disabling will be highly desirable.
Once you accept that, there is a secondary line of reasoning about which specific structure(s) are , and that is where taproot-based constructions come out ahead by having better incentives in the short- to medium term (the numbers above mean essentially less/zero economical friction).
This is where you lose me. Why does P2TRv2 incentivize migration better than P2MR? You'd have to assume EC disabling will happen and will be timed perfectly. Then assume everyone using Bitcoin will have utter confidence in this TBD timing solution, and no reason to doubt it will work perfectly.
Even then, AFAICT the only distinction to the lay user between P2MR and P2TRv2 is that P2TRv2 is more efficient pre-Q-day, and P2MR is more efficient afterward, and both by about the same margin: 32 witness bytes (counting Boris' EC recovery improvement). That's 8 vbytes per Schnorr spend - less than a cent at current rates.
Theorycrafting for a second here. It's reasonable to conjecture fee rates will be much higher post-Q-day, and thus P2MR's 32 byte advantage over P2TRv2 will yield significant savings for end-users in absolute terms. If fee rates inflate 10x higher after Q-day, then 8 vbytes becomes significant (100 sats per spend or more). In other words, the P2TRv2 internal key will be much more expensive to a user after Q-day than P2MR's PQ leaf script hash will be to a user today.
There are other DX considerations, like P2TRv2 being easier to deploy initially, while P2MR is easier to maintain in the long term since it has no EC code. Etc. But i'm discounting those trade-offs to focus only on the end-users here.
There is one technical difference where the specific commitment structure matters: P2MR ("Merkle-Never") can be used in a Q-safe way and a hypothetical "Taproot-Never" cannot (which includes P2TRv2, if you don't believe in being able to rely on the future narrow disabling), which seems to be the primary reason people like it. However, I think this is extremely restrictive, and simply not an option for most users, because it means:
- Not using wallet indexing services that transmit public keys/xpubs.
You're saying that P2MR without an EC disable fork is not perfectly secure assuming current Bitcoin usage patterns continue. I agree, which is why an EC disabling soft-fork will almost certainly be needed. "Merkle-Never" is impossible IMO. Sooner or later we will disable EC spending in P2MR.
I think our disagreement comes from your assumption we must always time the disabling fork perfectly to coincide with Q-day. On the other hand, I expect we will not solve the fork timing problem, so an EC disable fork will be a messy, panicked affair, arriving possibly quite late (months or years after Q-day). With P2MR, at least holders who used it properly will have shelter, and those who didn't will have an opportunity to move coins somewhere safe to ride things out.
P2TRv2 has no such room for compromise: either everyone is exposed, or nobody is. Well except for all the people who didn't migrate, they're still exposed (which is why we'll need a rescue protocol either way).
And if you accept that at least a "Later" option is needed, I think adding more PQC options actually weakens it! If some people have their coins in "Never" or "Now" outputs in a PQC-safe manner (subject to the restriction / costs those bring), then that reduces the incentive to get the "Later" narrow EC freeze to occur, and indirectly reduces the value of that output type.
Interesting. It sounds like you're arguing that because P2TRv2 is blatantly PQ-vulnerable, it will incentivize future bitcoin users to lock it down later. I mean yes, that's technically true, but that would be like putting a spike on the steering wheels of cars, to incentivize drivers to wear seatbelts.
Should we really bet the entire network on that incentive working out? Even if you're right and we all want very-badly to deploy EC disabling later, how can we know we'll time it correctly?
Remember, it's not just me you have to convince. You'd have to convince everyone to deploy and then adopt P2TRv2 today under the public knowledge that it is insecure and their coins are more likely to be stolen. That's a hard sell.
How does one pitch P2TRv2 to users? "It will be quantum secure one day we promise because everyone is incentivized to fix it later as Bitcoin will die if we don't."
How do you pitch P2MR? "It's quantum secure if you use it correctly."
I don't understand this, can you elaborate? Having a knowledge-asymmetry seems like something that matters for ZK machinery.
Gladly! Any hard relation that can be proven in ZK can also be proven with commit/reveal. It's less flexible because it's not zero-knowledge, so you have to reveal the secret data, and you can only do that once securely. Essentially any PQ-hard relation for which you have knowledge-asymmetry grants you a one-time use signature that cannot be forged by a QC. If you use that OTS to certify a public key (e.g. a SHRINCS key), you can then sign multiple messages.
The simplest example is a hash preimage. With preimage P and message m, I publish H(P) and H(P, m) at time T. Then I reveal (P, m)
at time T+1. A verifier checks H(P, m) was published first, and confirms there exist no earlier reveals for P (by looking for H(P)). This confirms I must have also approved the message m. A similar mechanism is used as the core coin authentication system of FawkesCoin. There are complexities to handle especially regarding censorship attacks, but ultimately it's doable.
I used a hash function as the relation here, but this can be used to prove any quantum-hard relation: BIP32 derivation, taproot tweaking, musig keys, hashed addresses, etc. You just have to endow the verifier with the correct validation procedures. We're still finding new relevant knowledge-asymmetries today. I really ought to start cataloging them better... I'm hoping to spend more time on this field in the near future because I think it's going to be very important, and right now all the knowledge just lives in mailing list archives.
It sounds like you're really saying that the systemic migration to PQC is something that will happen through a commit/reveal, not through what we're discussing now. So what is the point of having something like P2MR or P2TRv2 in the near term?
Because consensus changes take years to deploy, and we're running out of those. Many people seem to think so at least, I'm no physicist.
Essentially yes though, I expect the majority of holders will probably migrate to PQ addresses via rescue protocols, either on Bitcoin or a fork thereof. Even if we can't come to consensus and deploy a new output type, we'll still be able to rescue most coins. It's just that we'd have nowhere to rescue them to, so we ought to make PQ wallets available soon, so we're not in a rush to build them later when we need them. If a PQ wallet can use cheap EC signatures while they're still trustworthy, all the better.
regards,
conduition
--
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+...@googlegroups.com.