> However, we could take the multi-full-agg-group concept
Hi waxwing,Thanks again for sharing your feedback! The idea ofincrementing the marker byte with a group ID is cleverand I agree that it works technically. This triggeredme to spend some more time to think about what thatmight look like which is fun but I am still notfully convinced this is worth adding.> Say a bunch of people want maximally weight-minimising> transaction (for their consolidation), but don't want to> run a collaborative scheme between each other because> it's technically hard to do safely (constrained> hardware/software, nonce state handling, etc.). Each of> them just want to full agg their 10 inputs, each.You may have already had this in mind but to make surewe are on the same page: In this scenario the parties donot become fully independent of each other. With sighashdefault (or all) every signature commits to all outputs,so all parties have to agree on the complete output listof the transaction before anyone can sign. Only thesigning session itself is avoided. It is hard for me toimagine a scenario where that kind of up-frontcoordination is fine but the signing session isn't. Itwould require some kind of communication and holding ofstate as well. Please let me know if you thinkdifferently here. I am not sure what your assumptionsare around up-front coordination capabilities.I also looked into decoupling the parties further butit does not really work in my opinion. SINGLE withANYONECANPAY only fits parties with one input and oneoutput each, the consolidation example has no outputs thatthe other 9 inputs could safely commit to. When this doesfit, it reveals which input pays which output, and sincenothing commits to the other groups, anyone can split themerged transaction apart. The explicit sighash bytesalso cost one extra weight unit per input, whileseparate transactions can omit the byte by using thedefault.> Not saying it's some super-common-in-practice scenario,> but it seems suboptimal that you can't do it. So ... I> guess it depends on whether "the additional validation> complexity" is really bad compared with the utility of> that specific use case.The utility seems limited because of the minor additionalsavings they gain from this. They can use half-aggregationwithin the shared transaction, but probably better for ascenario as you outline, each party just broadcasts itsown transaction with its own full-aggregation group. Thelatter has about 10 vbytes of transaction overhead andboth alternatives lose all the coordination requirements.However, we could take the multi-full-agg-group conceptto the next level and half-agg the full-agg signaturesof the different groups for another round of savings (aswell as additional complexity of course).So, back of the envelope multi-full-agg-group steelmancalculation for your scenario: 10 participants eachconsolidating 10 inputs into 1 output.Each in their own tx:10 x input skeleton 1640 WU9 placeholders + 1 final (27 + 67) 94 WU1 output 172 WUtx skeleton 42 WUtotal 1948 WU (487 vb)All in one shared tx with half-agg on top:10 x input skeleton 1640 WU9 placeholders + 1 R-only final (27 + 35) 62 WU1 output 172 WUshare of combined s (32 / 10) 3.2 WUshare of tx skeleton (42 / 10) 4.2 WUtotal 1881 WU (470 vb)So this takes it up to 17 vbytes, or 3.4% savings perparticipant/group. I didn't fully sketch this out butI think it should be possible without introducingadditional overhead.I start to warm up to it because it's clever but I amnot sure if that is a good thing ;)> More specifically, though, why couldn't a 'group ID' be> folded into the marker byte.[...]> Is this just out of consideration for some other reason> that (hardly surprising) I'm not aware of?Yepp, this works just like you describe. The reason isonly that I do not see a real use case justifying it andI even feel like the sighash constraints make reasonableuse-cases hard to imagine.> A negative (for privacy specifically) would be that you> tag the different groups in the input list.Right, the group numbers would reveal which inputsbelong together. But for your consolidation scenario thisseems like a minor issue and it's not that different frompotential finger printing issues resulting from uniquemixing of different aggregation types in a transaction.I already have some fingerprinting warnings in the BIP tomake people aware of this.> While that as a proposal may or may not be a good one, I> feel like: this is worth mentioning at this time because> (IIUC) it cannot be retrofitted in after.Yes, undefined marker values cannot become valid througha soft fork, I thought about something like this early ontrying to find potential upgrade paths. But this doesn'tseem possible and it's good to have this conversation now.Thank you again for raising this. I have expanded therationale section in the BIP with my reasoning sothat the decision is better documented. I am alsostill open to think about other potentially interestinguse-cases for the multi-group-full-agg feature or toreconsider if you or other reviewers think we should ratherbe maximimally flexible in this regard even without a clearuse-case. But unless there is interest being signalled
I will err on the side of simplicity.Best,FabianOn Wednesday, July 22nd, 2026 at 2:21 AM, waxwing/ AdamISZ <ekag...@gmail.com> wrote:
Hi Fabian,Thanks again for the draft."A more flexible alternative with multiple aggregation groups per scheme, similar to the bucket concept from early aggregation discussions, was rejected because no concrete use case justified the additional validation complexity."Say a bunch of people want maximally weight-minimising transaction (for their consolidation), but don't want to run a collaborative scheme between each other because it's technically hard to do safely (constrained hardware/software, nonce state handling, etc.). Each of them just want to full agg their 10 inputs, each.Not saying it's some super-common-in-practice scenario, but it seems suboptimal that you can't do it. So ... I guess it depends on whether "the additional validation complexity" is really bad compared with the utility of that specific use case.More specifically, though, why couldn't a 'group ID' be folded into the marker byte. In your draft you say "The chosen values fall into the range 0xbb to 0xfe, which is unassigned in legacy script and corresponds to OP_SUCCESS opcodes in tapscript, so they do not collide with opcodes commonly seen in scripts." - but there are a lot of values between 0xbd and 0xfe. I guess this is not a case for bitflags, but just different markers where you add a groupID to 0xbd (and with the understanding - this clearly is only relevant for fullagg, not halfagg). Is this just out of consideration for some other reason that (hardly surprising) I'm not aware of?(I don't believe this suggestion changes anything functionally as described in the 'Common Signature Message' section; I mean it literally changes the byte, but, functionally).A negative (for privacy specifically) would be that you tag the different groups in the input list.While that as a proposal may or may not be a good one, I feel like: this is worth mentioning at this time because (IIUC) it cannot be retrofitted in after.Cheers,AdamISZ/waxwingOn Saturday, July 18, 2026 at 11:44:33 AM UTC-3 Fabian wrote:Hi list,I would like to share a BIP draft for transaction-wide cross-inputsignature aggregation (CISA). It introduces a new witness version,which enables Taproot-style key path spending where inputs canaggregate their signatures.Each input chooses between half-aggregation, full-aggregation, or anexplicit opt-out via a marker byte in its witness.The aggregation schemes themselves are specified in the previouslyshared BIP 458 (half-aggregation) and BIP 459 (full-aggregation)drafts. Script path spending follows BIP 341/342 unchanged.The BIP draft text can be found here:For inline comments, I have opened a mock pull request on my BIPsrepo fork:Feedback of any kind is much appreciated.Best,Fabian--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.To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/74cecbeb-94d1-4181-9caa-3f60c54d6b08n%40googlegroups.com.