BIP 387: multi_a() descriptor #1567

pull achow101 wants to merge 1 commits into bitcoin:master from achow101:multi_a changing 2 files +108 −0
  1. achow101 commented at 10:26 PM on April 17, 2024: member

    No description provided.

  2. in bip-multi-a.mediawiki:20 in 2ead7501f5 outdated
      15 | +==Abstract==
      16 | +
      17 | +This document specifies <tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> output script descriptors.
      18 | +Like BIP 383's <tt>multi()</tt> and <tt>sortedmulti()</tt>, both functions take a threshold and one
      19 | +or more public keys and produce a multisig script. The primary distinction being that <tt>multi_a()</tt>
      20 | +and <tt>sortedmulti_a()<tt> only produce tapscripts and are only allowed in a tapscript context.
    


    laanwj commented at 9:20 AM on April 18, 2024:

    missing </tt>


    achow101 commented at 1:54 PM on April 18, 2024:

    Fixed

  3. achow101 force-pushed on Apr 18, 2024
  4. in bip-multi-a.mediawiki:59 in 3e8333df23 outdated
      54 | +The only change for <tt>sortedmulti_a()</tt> is that the keys are sorted lexicographically prior to the creation of the output script.
      55 | +This sorting is on the keys that are to be put into the output script, i.e. after all extended keys are derived.
      56 | +
      57 | +===Multiple Extended Keys</tt>===
      58 | +
      59 | +When one or more the key expressions in a <tt>multi_a()</tt> or <tt>sortedmulti_a()</tt> expression are extended keys, the derived keys use the same child index.
    


    jonatack commented at 7:34 PM on April 22, 2024:
    When one or more of the key expressions in a <tt>multi_a()</tt> or <tt>sortedmulti_a()</tt> expression are extended keys, the derived keys use the same child index.
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  5. in bip-multi-a.mediawiki:96 in 3e8333df23 outdated
      91 | +* Threshold larger than keys: <tt>tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(3,L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1,5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss))</tt>
      92 | +
      93 | +==Backwards Compatibility==
      94 | +
      95 | +<tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> descriptors use the format and general operation specified in [[bip-0380.mediawiki|380]].
      96 | +As these are a wholly new descriptors, they are not compatible with any implementation.
    


    jonatack commented at 7:35 PM on April 22, 2024:
    As these are wholly new descriptors, they are not compatible with any implementation.
    

    I might be confused, but should this sentence be changed to mention that they have been implemented in Bitcoin Core since version 24.0?


    achow101 commented at 9:27 PM on April 22, 2024:

    Fixed.

    I might be confused, but should this sentence be changed to mention that they have been implemented in Bitcoin Core since version 24.0?

    Since that is the reference implementation, I don't think it makes sense to mention in the backwards compatibility section.

  6. in bip-multi-a.mediawiki:97 in 3e8333df23 outdated
      92 | +
      93 | +==Backwards Compatibility==
      94 | +
      95 | +<tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> descriptors use the format and general operation specified in [[bip-0380.mediawiki|380]].
      96 | +As these are a wholly new descriptors, they are not compatible with any implementation.
      97 | +However the scripts produced are standard scripts so existing software are likely to be familiar with them.
    


    jonatack commented at 7:38 PM on April 22, 2024:
    However, the scripts produced are standard scripts, so existing software are likely to be familiar with them.
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  7. in bip-multi-a.mediawiki:19 in 3e8333df23 outdated
      14 | +
      15 | +==Abstract==
      16 | +
      17 | +This document specifies <tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> output script descriptors.
      18 | +Like BIP 383's <tt>multi()</tt> and <tt>sortedmulti()</tt>, both functions take a threshold and one
      19 | +or more public keys and produce a multisig script. The primary distinction being that <tt>multi_a()</tt>
    


    jonatack commented at 7:39 PM on April 22, 2024:
    or more public keys and produce a multisig script. The primary distinction is that <tt>multi_a()</tt>
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  8. in bip-multi-a.mediawiki:17 in 3e8333df23 outdated
      12 | +  License: BSD-2-Clause
      13 | +</pre>
      14 | +
      15 | +==Abstract==
      16 | +
      17 | +This document specifies <tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> output script descriptors.
    


    jonatack commented at 7:40 PM on April 22, 2024:
    This document specifies <tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> output script descriptors.
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  9. in bip-multi-a.mediawiki:40 in 3e8333df23 outdated
      35 | +They are written as <tt>multi_a(k,KEY_1,KEY_2,...,KEY_n)</tt>.
      36 | +<tt>k</tt> is the threshold - the number of keys that must sign the input for the script to be valid.
      37 | +<tt>KEY_1,KEY_2,...,KEY_n</tt> are the key expressions for the multisig. <tt>k</tt> must be less than or equal to <tt>n</tt>.
      38 | +
      39 | +<tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> expressions can only be used inside of a <tt>tr()</tt> descriptor.
      40 | +The maximum number of keys is 999
    


    jonatack commented at 7:40 PM on April 22, 2024:
    The maximum number of keys is 999.
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  10. in bip-multi-a.mediawiki:101 in 3e8333df23 outdated
      96 | +As these are a wholly new descriptors, they are not compatible with any implementation.
      97 | +However the scripts produced are standard scripts so existing software are likely to be familiar with them.
      98 | +
      99 | +==Reference Implementation==
     100 | +
     101 | +<tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> descriptors have been implemented in Bitcoin Core since version 24.0.
    


    jonatack commented at 7:42 PM on April 22, 2024:
    <tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> descriptors have been implemented in Bitcoin Core since version 24.0.
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  11. in bip-multi-a.mediawiki:95 in 3e8333df23 outdated
      90 | +* Uncompressed pubkey: <tt>tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(1,04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235))</tt>
      91 | +* Threshold larger than keys: <tt>tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(3,L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1,5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss))</tt>
      92 | +
      93 | +==Backwards Compatibility==
      94 | +
      95 | +<tt>multi_a()</tt>, and <tt>sortedmulti_a()</tt> descriptors use the format and general operation specified in [[bip-0380.mediawiki|380]].
    


    jonatack commented at 7:45 PM on April 22, 2024:
    <tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> descriptors use the format and general operation specified in [[bip-0380.mediawiki|BIP380]].
    

    achow101 commented at 9:30 PM on April 22, 2024:

    Done

  12. jonatack commented at 8:04 PM on April 22, 2024: contributor

    Looks like this needs a BIP number assignment? A few minor suggestions follow.

  13. jonatack commented at 8:30 PM on April 22, 2024: contributor

    Assigned BIP 387.

  14. jonatack added the label New BIP on Apr 22, 2024
  15. achow101 force-pushed on Apr 22, 2024
  16. achow101 renamed this:
    BIP multi-a: multi_a() descriptor
    BIP 387: multi_a() descriptor
    on Apr 22, 2024
  17. in README.mediawiki:1166 in a53d663a8c outdated
    1162 | @@ -1163,6 +1163,13 @@ Those proposing changes should consider that ultimately consent may rest with th
    1163 |  | Informational
    1164 |  | Draft
    1165 |  |-
    1166 | +| [[bip-0387.mediawiki|386]]
    


    jonatack commented at 9:32 PM on April 23, 2024:

    @achow101 it looks like the BIP document disappeared in the most recent push

    | [[bip-0387.mediawiki|387]]
    

    achow101 commented at 9:43 PM on April 23, 2024:

    Lol oops, forgot to add it after renaming.


    jonatack commented at 9:38 PM on May 1, 2024:
    | [[bip-0387.mediawiki|387]]
    

    achow101 commented at 9:43 PM on May 1, 2024:

    Fixed

  18. achow101 force-pushed on Apr 23, 2024
  19. achow101 force-pushed on Apr 23, 2024
  20. in bip-0387.mediawiki:101 in 4604171b14 outdated
      96 | +As these are wholly new descriptors, they are not compatible with any implementation.
      97 | +However, the scripts produced are standard scripts, so existing software are likely to be familiar with them.
      98 | +
      99 | +==Reference Implementation==
     100 | +
     101 | +<tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> descriptors have been implemented in Bitcoin Core since version 24.0.
    


    jonatack commented at 9:40 PM on May 1, 2024:

    Would it be helpful to link here to the implementation pull(s)?


    achow101 commented at 9:45 PM on May 1, 2024:

    Added

  21. achow101 force-pushed on May 1, 2024
  22. achow101 force-pushed on May 1, 2024
  23. in bip-0387.mediawiki:54 in fe8b1cbf36 outdated
      49 | +KEY_1 OP_CHECKSIG KEY_2 OP_CHECKSIGADD ... KEY_n OP_CHECKSIGADD k OP_NUMEQUAL
      50 | +</pre>
      51 | +
      52 | +===<tt>sortedmulti_a()</tt>===
      53 | +
      54 | +The only change for <tt>sortedmulti_a()</tt> is that the keys are sorted lexicographically prior to the creation of the output script.
    


    jonatack commented at 6:04 PM on May 6, 2024:

    Should this be mentioned, like in doc/descriptors.md#L81?

    The only change for <tt>sortedmulti_a()</tt> is that the (x-only) public keys are sorted lexicographically prior to the creation of the output script.
    

    achow101 commented at 10:26 PM on May 6, 2024:

    Done

  24. in bip-0387.mediawiki:101 in fe8b1cbf36 outdated
      96 | +As these are wholly new descriptors, they are not compatible with any implementation.
      97 | +However, the scripts produced are standard scripts, so existing software are likely to be familiar with them.
      98 | +
      99 | +==Reference Implementation==
     100 | +
     101 | +<tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> descriptors were implemented in Bitcoin Core in https://github.com/bitcoin/bitcoin/pull/24043 and has been available since version 24.0.
    


    jonatack commented at 6:04 PM on May 6, 2024:
    <tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> descriptors were implemented in Bitcoin Core in https://github.com/bitcoin/bitcoin/pull/24043 and have been available since version 24.0.
    

    achow101 commented at 10:26 PM on May 6, 2024:

    Done

  25. jonatack commented at 6:07 PM on May 6, 2024: contributor

    LGTM fe8b1cbf36916d0dffed7147070e499d4dbf77b0 modulo 2 nits above

  26. in bip-0387.mediawiki:17 in fe8b1cbf36 outdated
      12 | +  License: BSD-2-Clause
      13 | +</pre>
      14 | +
      15 | +==Abstract==
      16 | +
      17 | +This document specifies <tt>multi_a()</tt> and <tt>sortedmulti_a()</tt> output script descriptors.
    


    Christewart commented at 7:30 PM on May 6, 2024:

    To ask the dumb question, what is a? add?

    csa would be clearer IMO.


    achow101 commented at 10:28 PM on May 6, 2024:

    The meaning of a is left for the reader to decide :p

    (I don't think it has any meaning, just something to distinguish from multi. It's too late to change it since people are already using this.)

  27. Christewart commented at 7:34 PM on May 6, 2024: contributor

    I wont be able to implement the test for this anytime soon to verify they work. Are these implemented in the bitcoin core test suite?

  28. BIP 387: multi_a() descriptor 945b281155
  29. achow101 force-pushed on May 6, 2024
  30. achow101 commented at 10:27 PM on May 6, 2024: member

    Are these implemented in the bitcoin core test suite?

    Some are. I pulled a few from there, although I don't think there were any sortedmulti_a ones, so those are new in this BIP.

  31. jonatack commented at 12:00 AM on May 7, 2024: contributor

    ACK 945b281155f12d50be76ade722cbb1a04681caa0

  32. jonatack merged this on May 7, 2024
  33. jonatack closed this on May 7, 2024


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bips. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-14 15:10 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me