p2ms: support up to 20 keys#2297
Merged
Merged
Conversation
Extend p2ms to support up to 20 public keys (n-of-20 multisig). The previous 16-key cap was only an internal implementation limit, not a Bitcoin rule. In practice, P2SH multisig cannot handle 16 keys anyway due to script-size limits (the effective cap is ~15), but those constraints do not apply to P2WSH. Since p2ms is often wrapped inside P2WSH, the implementation now supports the full 20-key range. Added new fixtures and a P2MS under P2WSH integration test.
Member
|
Perhaps we can represent the P2SH limitation in the P2SH payment? Like validate the length of the redeem output etc...? I'd rather people not get random errors from Bitcoin Core when they broadcast. Those are the most annoying errors to debug. |
Member
Author
|
The library already throws an error if you try to build a P2SH-P2MS with more than ~15 pubkeys. I verified it with integration tests in bitcoinerlab (P2SH with 16 pubkeys throws as expected): That PR already included a test for a 16-key P2SH-P2MS case. If you meant something different, just let me know and I'll address it. |
junderw
approved these changes
Nov 25, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extend p2ms to support up to 20 public keys (n-of-20 multisig). The previous 16-key cap was only an internal implementation limit, not a Bitcoin rule. In practice, P2SH multisig cannot handle 16 keys anyway due to script-size limits (the effective cap is ~15), but those constraints do not apply to P2WSH. Since p2ms is often wrapped inside P2WSH, the implementation now supports the full 20-key range.
Added new fixtures and a P2MS under P2WSH integration test.