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
  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:
    0When 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:
    0As 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:
    0However, 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:
    0or 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:
    0This 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:
    0The 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:
    0<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:
    0<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

    0| [[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:
    0| [[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?

    0The 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:
    0<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 0: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: 2024-11-01 00:10 UTC

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