BIP139: Wallet Metadata Backup Format #2130

pull pythcoiner wants to merge 90 commits into bitcoin:master from pythcoiner:bip_wallet_backup changing 4 files +703 −0
  1. pythcoiner commented at 10:39 AM on March 27, 2026: contributor

    This is a bip for wallet metadata backup format. Mailing list post: https://groups.google.com/g/bitcoindev/c/ylPeOnEIhO8

  2. pythcoiner force-pushed on Mar 27, 2026
  3. pythcoiner force-pushed on Mar 27, 2026
  4. pythcoiner force-pushed on Mar 27, 2026
  5. murchandamus commented at 1:34 PM on March 27, 2026: member

    Could you perhaps expound the relationship to #1951?

  6. in bip-0139.md:108 in 45b4a5bb37 outdated
     103 | +- `timestamp`: Optional integer Unix timestamp representing account creation time in
     104 | +  seconds.  
     105 | +- `iso_8601_datetime`: optional string representing account creation time in ISO 8601
     106 | +  format.  
     107 | +- `block_height`: Optional integer representing account creation time in bitcoin block
     108 | +  height unit.  
    


    seedhammer commented at 11:26 AM on April 3, 2026:

    3 different ways of representing the birth date doesn't seem ideal. Also "iso_8601_datetime" specifies the data format, not the purpose of the field. I'd prefer short, purposeful names (e.g. "birthblock" or "birthdate") and leave the type and format out of the name.


    pythcoiner commented at 7:59 AM on April 7, 2026:

    I'm open to represent in a different way, but few points why it's end up like this:

    • we use a backup format based on this in Liana with the timestamp field
    • we had a discussion w/ @ethicnology here where he seems prefering iso 8601, I've used a simplified approach in this draft compared to what discussed, but I'm eager to get feedback.
    • it comes to my mind later that block_height rather than unix timestamp could make more sense

    murchandamus commented at 6:18 PM on June 24, 2026:

    I was about to comment on there being three different birth time fields as well. Seconding @seedhammer’s concern here.


    pythcoiner commented at 5:43 AM on August 20, 2026:

    kept a single birth_block field

  7. in bip-0139.md:75 in 45b4a5bb37 outdated
      70 | +All other fields are optional.  
      71 | +
      72 | +- `version`: Optional integer version of the backup format.  
      73 | +- `bip`: Optional integer value representing the number of this BIP.  
      74 | +- `name`: Optional string wallet name.  
      75 | +  NOTE: `alias` is an alias of `name`.  
    


    seedhammer commented at 11:33 AM on April 3, 2026:

    Why mention alias in a new BIP?


    pythcoiner commented at 8:00 AM on April 7, 2026:

    because we already use name in Liana backup format, but in the end I think alias is more clear


    pythcoiner commented at 5:44 AM on August 20, 2026:

    dropped all aliases

  8. in bip-0139.md:92 in 45b4a5bb37 outdated
      87 | +All fields are optional, allowing wallets to include only the metadata they support.
      88 | +
      89 | +- `name`: Optional string account name.  
      90 | +  NOTE: `alias` is an alias of `name`.  
      91 | +- `description`: Optional string account description.  
      92 | +- `active`: Optional boolean field indicating if the account is active.  
    


    seedhammer commented at 11:35 AM on April 3, 2026:

    active doesn't seem very useful for a backup. In fact, some of these fields feel like the union of all possible metadata fields useful to any wallet software. If so, this leads to the question: what is the standard for adding new fields to this standard?

    I think it's better to specify a small(er) set of widely useful fields.


    pythcoiner commented at 8:03 AM on April 7, 2026:

    iirc it was requested by @ethicnology to represent an usage they already have in Bull Bitcoin wallet


    pythcoiner commented at 10:03 AM on April 9, 2026:
  9. in bip-0139.md:127 in 45b4a5bb37 outdated
     122 | +  by [BIP-0174](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).  
     123 | +- `bip370_psbts`: Optional array containing unspent but partially signed transactions as defined
     124 | +  by [BIP-0370](https://github.com/bitcoin/bips/blob/master/bip-370.mediawiki).  
     125 | +- `psbts`: Optinnal array than can contains both BIP-0174 & BIP-0370 PSBTs.  
     126 | +- `bip39_mnemonic`: Optional string containing mnemonic words following BIP39.  
     127 | +  Since backups may be stored online, storing mainnet mnemonics is strongly discouraged.  
    


    seedhammer commented at 11:36 AM on April 3, 2026:

    It feels wrong to specify a field which is immediately "strongly discouraged".


    pythcoiner commented at 8:07 AM on April 7, 2026:

    Need a rewording, I think mainnet mnemonic should be strongly discouraged, but it could be useful for testnet, like in a bug report, join a testnet/signet/regtest backup of a wllet can make it easy to import the wallet state in order to reproduce the bug.


    pythcoiner commented at 12:49 AM on June 15, 2026:

    reworded

  10. in bip-0139.md:81 in 45b4a5bb37 outdated
      76 | +- `description`: Optional string wallet description.  
      77 | +- `accounts`: Mandatory array of account objects.  
      78 | +  Must contain at least one account.  
      79 | +  See [Account Object Structure](#account-object-structure).  
      80 | +- `network`: Optional string network identifier.  
      81 | +  Valid values are `bitcoin` (mainnet), `testnet3`, `testnet4`, `signet`, and `regtest`.  
    


    seedhammer commented at 11:37 AM on April 3, 2026:

    Non-main networks are not useful for backups. Can the "network" field be left out entirely?


    pythcoiner commented at 8:07 AM on April 7, 2026:

    cf previous message for rationale

  11. seedhammer commented at 11:37 AM on April 3, 2026: contributor

    This BIP seems to overlap #2099. It would be ideal to have a single way of encoding wallet metadata.

  12. murchandamus commented at 6:51 PM on April 6, 2026: member

    Thanks for reviewing related work, @seedhammer!

  13. pythcoiner commented at 7:36 AM on April 7, 2026: contributor

    Thanks for review @seedhammer, I'll reply inline

  14. pythcoiner commented at 8:23 AM on April 7, 2026: contributor

    This BIP seems to overlap #2099. It would be ideal to have a single way of encoding wallet metadata.

    I think they have different use case:

    • I see whats offered in #2099 as a minimal backup that a user make once at wallet(descriptor) creation time, that contains only informations related to "scanning"
    • Whats offered in this PR intends to be a format for backup/export of a complete wallet state, that could be also done later & recurently in the wallet lifetime.
  15. pythcoiner commented at 8:34 AM on April 7, 2026: contributor

    Something that I should add in the bip abstract is, that I see this bip as a "central repository" where a wallet implementer can "register" a field usage & share it's usage of the format in a test vector. The intend is not to force anyone to be interoperable in both way with every other implem, but rather to make it easy if one want to be interoperable in at least one way.

  16. murchandamus commented at 4:03 PM on April 7, 2026: member

    I think this also has overlap with BIPs 329. Perhaps @craigraw would be interested in taking a look.

  17. pythcoiner force-pushed on Apr 8, 2026
  18. pythcoiner force-pushed on Apr 9, 2026
  19. pythcoiner commented at 8:56 AM on April 9, 2026: contributor

    I've clauded a draft implem of this format on bitcoin core here and then added few fields and a transaction object here

  20. pythcoiner force-pushed on Apr 9, 2026
  21. pythcoiner commented at 9:38 AM on April 9, 2026: contributor

    Could you perhaps expound the relationship to #1951?

    added an Encryption section in order to link them, will update as soon as there is a BIP # for #1951

  22. murchandamus added the label New BIP on Apr 14, 2026
  23. pythcoiner force-pushed on Apr 24, 2026
  24. pythcoiner marked this as ready for review on Apr 24, 2026
  25. in bip-wallet-backup.md:11 in 32a6893af6
       6 | +Status: Draft.
       7 | +Type: Specification.
       8 | +Assigned: ?
       9 | +License: BSD-2-Clause.
      10 | +Discussion: https://x.com/pythcoiner/status/1893923445974425840?s=20
      11 | +            https://groups.google.com/g/bitcoindev/c/ylPeOnEIhO8
    


    murchandamus commented at 10:48 PM on April 28, 2026:

    Did some regex-powered find and replace go wild on this whole document? There is also a fullstop after almost every headline.

    BIP: ?
    Layer: Applications
    Title: Wallet Backup Metadata Format
    Authors: Pyth <pythcoiner@wizardsardine.com>
    Status: Draft
    Type: Specification
    Assigned: ?
    License: BSD-2-Clause
    Discussion: https://x.com/pythcoiner/status/1893923445974425840?s=20
                https://groups.google.com/g/bitcoindev/c/ylPeOnEIhO8
    

    murchandamus commented at 10:51 PM on April 28, 2026:

    I don’t think the Twitter discussion linked there is what we usually have in mind when we think of this preamble header.

    Discussion: https://groups.google.com/g/bitcoindev/c/ylPeOnEIhO8
    

    murchandamus commented at 11:02 PM on April 28, 2026:

    I’m not sure it’s worth linking to this Twitter discussion, it seems mostly about coordinating and linking to some related work.

    Discussion: https://groups.google.com/g/bitcoindev/c/ylPeOnEIhO8
    

    pythcoiner commented at 6:45 AM on April 29, 2026:

    I think I was a "tired regex" :smile:


    pythcoiner commented at 6:46 AM on April 29, 2026:

    dropped


    pythcoiner commented at 6:47 AM on April 29, 2026:

    dropped

  26. murchandamus commented at 11:08 PM on April 28, 2026: member

    Just a quick first pass. I think I’d be interested in seeing a few more wallet developers take a look at this and provide their thoughts on how this would match their needs.

  27. in bip-wallet-backup.md:4 in 32a6893af6
       0 | @@ -0,0 +1,285 @@
       1 | +```
       2 | +BIP: ?
       3 | +Layer: Applications.
       4 | +Title: Wallet Backup Metadata Format.
    


    murchandamus commented at 11:10 PM on April 28, 2026:

    Wouldn’t it rather be “Wallet Metadata Backup Format”?


    pythcoiner commented at 6:53 AM on April 29, 2026:

    changed

  28. pythcoiner force-pushed on Apr 29, 2026
  29. pythcoiner force-pushed on Apr 29, 2026
  30. pythcoiner commented at 6:53 AM on April 29, 2026: contributor

    @murchandamus thanks for your review, comments addressed.

  31. murchandamus force-pushed on May 11, 2026
  32. murchandamus commented at 7:45 PM on May 11, 2026: member

    Assigned BIP139

  33. murchandamus renamed this:
    Bip draft: Wallet Backup Metadata Format
    BIP139: Wallet Backup Metadata Format
    on May 11, 2026
  34. murchandamus force-pushed on May 11, 2026
  35. murchandamus force-pushed on May 11, 2026
  36. murchandamus commented at 8:08 PM on May 11, 2026: member

    It took me a moment to figure out what the issue was: the preamble needed to be indented.

  37. murchandamus renamed this:
    BIP139: Wallet Backup Metadata Format
    BIP139: Wallet Metadata Backup Format
    on May 11, 2026
  38. in bip-0139.md:254 in b17c8a5990
     249 | +* Wallets should validate the structure and ensure at least one account is present before
     250 | +  attempting import.  
     251 | +
     252 | +## Encryption
     253 | +
     254 | +This format can be encrypted following [BIP-XXXX](https://github.com/bitcoin/bips/pull/1951).
    


    murchandamus commented at 8:14 PM on May 11, 2026:
    This format can be encrypted following [BIP-0138](https://github.com/bitcoin/bips/pull/1951).
    
  39. murchandamus added the label PR Author action required on May 19, 2026
  40. Sjors commented at 12:08 PM on May 26, 2026: member

    I'm not sure if it's a good idea to create one kitchen-sink JSON blob for everything. BIP138 can easily handle multiple JSON blobs each specified in their own BIP.

  41. murchandamus commented at 6:09 PM on June 12, 2026: member

    Hey, any update on this? Is there something I could help with? I was waiting for the open review to be addressed to take another look, but I wanted to check that we are not crossing our wires in regard to where it’s currently held up.

  42. pythcoiner force-pushed on Jun 15, 2026
  43. pythcoiner commented at 12:57 AM on June 15, 2026: contributor

    I'm not sure if it's a good idea to create one kitchen-sink JSON blob for everything. BIP138 can easily handle multiple JSON blobs each specified in their own BIP.

    I think the OP was misleading, look like I've copy/pasted from BIP-138 PR w/o edit.

    This spec is only related to BIP-139 in the way that it could be encryptd with it but have an independent purpose.

  44. pythcoiner commented at 12:59 AM on June 15, 2026: contributor

    Hey, any update on this? Is there something I could help with? I was waiting for the open review to be addressed to take another look, but I wanted to check that we are not crossing our wires in regard to where it’s currently held up.

    Thanks for the BIP # @murchandamus!

    Sorry for late reply, I was a bit underwater on past weeks, I think all comments are adressed now.

  45. murchandamus removed the label PR Author action required on Jun 16, 2026
  46. in bip-0139.md:25 in 94fdbc5e6b
      20 | +conventions.
      21 | +All fields are optional except for the base structure, which must include at least one
      22 | +account entry.
      23 | +
      24 | +This BIP also acts as a central repository where a wallet implementer can register its
      25 | +usage of a field and share that usage through a test vector.
    


    murchandamus commented at 6:03 PM on June 24, 2026:

    I would advise against collecting fields in the BIP directly. We have had several BIPs in the past that were extensible in this form and in each case the authors eventually got tired of reviewing amendments to their BIP. I would suggest that you instead pursue a model like BIP174 (PSBT), where only the registering of the new fields in collected centrally in an auxiliary file for this express purpose, but fields have to be described in their own BIPs. — Maybe separate BIPs are a bit too high of a hurdle in this specific case and there could instead be a description of the fields in the registry directly, but I would heavily recommend not putting the onus of frequently needing to review BIP amendments on your future self.


    pythcoiner commented at 5:46 AM on August 20, 2026:

    i've moved all optional fields to a separate registry

  47. in bip-0139.md:68 in 94fdbc5e6b
      63 | +representing the backup structure.  
      64 | +This object includes wallet-level metadata, multiple accounts, and associated key data.  
      65 | +
      66 | +### version
      67 | +
      68 | +This BIP defines version 1 of this specification.  
    


    murchandamus commented at 6:09 PM on June 24, 2026:

    Nit: BIPs themselves have now an optional version header, so this may be confusing in the future if the document gets updated.

    I assume you are talking about "version 1 of the backup format", i.e. the value stored with the version key in the backup, maybe this could be stated a bit more explicitly, though.


    pythcoiner commented at 5:49 AM on August 20, 2026:

    dropped this section and added in the header

  48. in bip-0139.md:103 in 94fdbc5e6b
      98 | +- `type`: Optional string describing the account type.  
      99 | +  Possible values include `bip_380` (output descriptor), `bip_388` (wallet policies),
     100 | +  `bip_392` (silent payments), or any arbitrary string representing metadata needed to
     101 | +  find and spend coins for an account.  
     102 | +- `output_type`: Optional string describing the output category of the account.  
     103 | +  Values used by bitcoin core are `legacy`, `p2sh-segwit`, `bech32`, and `bech32m`.  
    


    murchandamus commented at 6:13 PM on June 24, 2026:

    Spelled with capital letters just below (and should be spelled capitalized).

      Values used by Bitcoin Core are `legacy`, `p2sh-segwit`, `bech32`, and `bech32m`.  
    

    pythcoiner commented at 5:51 AM on August 20, 2026:

    done

  49. in bip-0139.md:108 in 94fdbc5e6b
     103 | +  Values used by bitcoin core are `legacy`, `p2sh-segwit`, `bech32`, and `bech32m`.  
     104 | +- `descriptor`: Optional string or object representing the account structure as
     105 | +  defined by the value in `type`.  
     106 | +- `change_descriptor`: Optional string or object representing an explicit change-side
     107 | +  descriptor, paired with `descriptor`. Intended for wallets that do not use BIP-389
     108 | +  multipath descriptors (e.g. Bitcoin Core).  
    


    murchandamus commented at 6:14 PM on June 24, 2026:

    Ambiguous whether Bitcoin Core is an example or counter-example:

    - `change_descriptor`: Optional string or object representing an explicit change-side
      descriptor, paired with `descriptor`. Intended for wallets that do not use BIP-389
      multipath descriptors (as e.g. Bitcoin Core does).  
    

    pythcoiner commented at 5:52 AM on August 20, 2026:

    done

  50. in bip-0139.md:111 in 94fdbc5e6b
     106 | +- `change_descriptor`: Optional string or object representing an explicit change-side
     107 | +  descriptor, paired with `descriptor`. Intended for wallets that do not use BIP-389
     108 | +  multipath descriptors (e.g. Bitcoin Core).  
     109 | +- `descriptor_id`: Optional string containing a stable hexadecimal identifier for the
     110 | +  receive `descriptor`. Its construction is implementation-defined, but it MUST be stable
     111 | +  across exports of the same descriptor.  
    


    murchandamus commented at 6:15 PM on June 24, 2026:

    If you have an idea how to standardize descriptor identifiers, I think that might be a good BIP in itself to write.

    cc: @achow101


    pythcoiner commented at 5:54 AM on August 20, 2026:

    i've dropped the fields, it was a Bitcoin Core internal thing, and as it's deterministic from the descriptor it can be rebuild on import

  51. in bip-0139.md:171 in 94fdbc5e6b
     166 | +  See [Key Types](#key-types).  
     167 | +- `key_status`: Optional string describing the status of the key.  
     168 | +  See [Key Status](#key-status).  
     169 | +- `bip85_derivation_path`: Optional string describing the
     170 | +  [BIP-0085](https://github.com/bitcoin/bips/blob/master/bip-0085.mediawiki) derivation
     171 | +  path used to derive this key from the master key.  
    


    murchandamus commented at 6:21 PM on June 24, 2026:

    It strikes me as odd that all fields here are optional. Is that intended? Perhaps there should be at least an "A or B is required"?


    ethicnology commented at 11:22 AM on June 29, 2026:

    I agree, defining a standard requires having mandatory requirements. Take BIP329 as an example: it has many optional fields that some wallets may not support (like "unspendable"), but you can still count on anyone implementing the BIP to support at least the required fields. If everything is optional, then everyone will only implement what they personally care about, and we lose any ability to enforce consistency.


    pythcoiner commented at 5:54 AM on August 20, 2026:

    I've made the key mandatory, as it should have been

  52. murchandamus commented at 6:26 PM on June 24, 2026: member

    Thanks for the update. I gave this another read and have a few more comments. Where do you see this document regarding your planned work. It seems like it is getting close to publication, if that fits your plans.

    If you have some specific people in mind that should perhaps review this document, I could try to help get their attention.

  53. pythcoiner force-pushed on Aug 20, 2026
  54. pythcoiner commented at 12:08 PM on August 21, 2026: contributor

    For reviewers: I've addressed comments, then ran a survey over 13 potentials wallets condidates (not meaning they have shown interest, just I picked them) the survey shows interesting frictions points so I reworked heavily the structure, It's almost done but I'll re-review early next week.

  55. jonatack commented at 8:15 PM on August 21, 2026: member

    Not a blocker, but if you have to re-push this diff should appease the CI typo checker.

    --- a/.typos.toml
    +++ b/.typos.toml
    @@ -34,6 +34,7 @@ Toom = "Toom"
     
     [files]
     extend-exclude = [
    +    "bip-0139/wallet_field_usage.md",
         "/*/*.csv",
         "/*/*.d*",
         "/*/*.go",
    
  56. murchandamus commented at 10:35 PM on August 21, 2026: member

    @pythcoiner: Thanks for the update. I take it that we should hold-off for our review until you have done another pass. Please let us know when you’re ready for us.

  57. murchandamus added the label PR Author action required on Aug 21, 2026
  58. bip139: wallet metadata format 0191b441fb
  59. bip139: add the Version header to the preamble 94e43794a4
  60. bip139: keep a single psbts field and fix the spend status link c462b39149
  61. bip139: fold the version section and bip field into the version value c74c15ccba
  62. bip139: capitalize Bitcoin Core and clarify the change_descriptor note b76a304ef6
  63. bip139: replace the three account birth time fields with birth_block 1ce37186dc
  64. bip139: drop descriptor_id and change_descriptor_id c6c5e7d406
  65. bip139: drop field aliases, keeping name and labels f9a286f38e
  66. bip139: restrict descriptor and change_descriptor to a string 03a518f4f4
  67. bip139: make version, type, descriptor, key, txid, outpoint and tweak mandatory 6c4de11d3c
  68. bip139: move field definitions to a companion registry 4d35e4b287
  69. bip139: add the wallet survey behind these decisions 467883758a
  70. bip139: replace the wallet description field with a backup note 0730bcba70
  71. bip139: add the backup date field 10165ae21c
  72. bip139: add the account gap_limit field 4477cf5d18
  73. bip139: add the multi_bip380 account type f1ac544234
  74. bip139: give the bip352_labels range an explicit encoding dd23eb809e
  75. bip139: add a general coin object f6f644ffbb
  76. bip139: move signers above the account e17aa114a2
  77. bip139: add signer modality and device records 2deb388da1
  78. bip139: add bip85 application and index 95047ab709
  79. bip139: add Bitkey to the wallet survey 9672a74034
  80. bip139: state how to derive birth_block from a creation date 957969f58a
  81. bip139: define the timestamp format once 3d546501d1
  82. bip139: rename the transaction time field to block_time 313152e5e5
  83. bip139: keep last_height on the account only 2c50ebec76
  84. bip139: state that type names the descriptor language b75f3a002a
  85. bip139: drop output_type, the descriptor already states it 29966dcd2a
  86. bip139: replace the account active flag with a status enum 3f09d3f4dd
  87. bip139: add mutinynet and scope a backup to one network 1a7ceb70bd
  88. bip139: record that the label gap belongs to BIP-329 c9fe9d2e64
  89. bip139: record that proprietary needs no change c5bad5e4b8
  90. bip139: make the survey annex-ready 22cf915161
  91. bip139: record that mainnet mnemonics stay out of scope d2a224cb15
  92. bip139: reword the mnemonic evidence heading 978c4221e0
  93. bip139: correct the birth_block evidence, Sparrow stores a height 2012832f4a
  94. bip139: type and descriptor fit every surveyed wallet 50cfe29227
  95. bip139: correct the addr descriptor solvability note 7c90d260ef
  96. bip139: re-assess every partial score against fillability 7624ec6e35
  97. bip139: store psbts once at wallet level, reference them per account 08a16a1078
  98. bip139: store transactions once at wallet level, reference them per account d5bd4f5a1f
  99. bip139: txid is the transaction map key, not a field 4d4656d568
  100. bip139: refresh the matrix after the fillability re-assessment 7495d3970d
  101. bip139: electrum holds no bip39 mnemonic at all 8e2c77d986
  102. bip139: sp_output.label has no constituency 7cadc71c04
  103. bip139: collapse the survey to a two-value scale 60a2ad177d
  104. bip139: drop the obsolete partial-score analysis 953f77cf61
  105. bip139: size the matrix field column from the data bf8024963c
  106. bip139: cut the survey down to the table and its results 9468ad7c55
  107. bip139: recompute liana compat against the current draft cb90111a58
  108. bip139: correct the liana breaking-change count 366919b171
  109. bip139: make network mandatory 7953d67d60
  110. bip139: network no longer breaks liana on import 5681ce9d1e
  111. bip139: render wallet fields as a wrapped table b912b6743c
  112. bip139: render account fields as a wrapped table 81dc2436f2
  113. bip139: render every field section as a wrapped table f3498bb499
  114. bip139: the registry is part of the bip, not a reference to it 6fff96ca3e
  115. bip139: drop the registration process from the registry intro c72fbfe11a
  116. bip139: put field rationale in the cell, not below the table abc9b5714d
  117. bip139: keep code spans whole when wrapping cells e02988b4d7
  118. bip139: render field tables as preformatted blocks f76fc4c548
  119. bip139: drop link definitions the tables no longer use 3150b91c18
  120. bip139: use a bordered grid for the field tables 9bef4cc1f1
  121. bip139: give birth_block an estimation formula and drop the enum underscore 35fbf1ae40
  122. bip139: merge silent payment outputs into the coin object 1d0447f7be
  123. bip139: restore spend_status and give the sp label scalar a home 90f9e1078b
  124. bip139: register the transaction fee field b496652f41
  125. bip139: rebuild the survey matrix against the current field set b39a2e03a2
  126. bip139: drop survey findings the draft now addresses bbd5375b51
  127. bip139: bar passphrase-protected seeds from bip39_mnemonic 506175f778
  128. bip139: record the missing-field decisions in the survey 8563110f97
  129. bip139: cut the survey down to its revision list and matrix 95876cf0f2
  130. bip139: reword the survey as a wallet to field mapping abab0631be
  131. bip139: reference the wallet support annex from the spec 80e96b4df9
  132. bip139: list the mandatory fields in the registry tables 70985f8de3
  133. bip139: point the spec at the registry as the complete field list 2f5afaf45f
  134. bip139: spell out mandatory and optional in the registry req column 5ee53c0784
  135. bip139: mark only the optional fields in the registry tables 33a3d69bbe
  136. bip139: retitle and reframe the BIP around moving between wallets 03ce900cd7
  137. bip139: call the artefact an export throughout faea14b296
  138. bip139: scope the mnemonic advice to exports kept as backups bb4bc6d1cf
  139. bip139: say that most metadata cannot be recovered from the chain d927b5b393
  140. bip139: clarify account and signer metadata fields 210c0f7622
  141. bip139: cut the registry cells back to the field description 1ca38483b5
  142. bip139: reword the registry field descriptions ec1c638fa3
  143. bip139: give the device record its own registry table 15eee696a3
  144. bip139: keep an unknown enum value from failing the import a69c3b52a4
  145. bip139: define the device transports field fc316d44cd
  146. bip139: point the devices row at the device object 4e60f076ec
  147. pythcoiner force-pushed on Aug 27, 2026
  148. bip139: backup -> export in README b1e085c2f3
  149. pythcoiner commented at 1:51 AM on August 27, 2026: contributor

    @murchandamus I've done my pass. There is a typo false positive in CI, I'm not sure out to fix it (it's a ba in a quoted commit hash)


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-09-13 01:10 UTC

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