Changing crypto-account to crypto-keyset? #32
Replies: 20 comments 5 replies
-
The Should Account Maps not be called Wallet Maps? I was certainly confused by the former when I first heard it, and I think it might be easier for users, who might consider their 'Bitcoin Wallet' to be described by a 'Wallet Map'. |
Beta Was this translation helpful? Give feedback.
-
In our research we have found that the legacy of calling a singlesig bitcoin HD derivation a "wallet" causes problems for both developers and users. It worked fine in the days of one bitcoin app / one seed / one derivation (e.g. Bread Wallet), but began to break down when hardware wallets started having multiple sub-accounts, and now is worse with legacy, wrapped, segwit-native, and multisign. Finally all of the above are "single-seed" but Gordian and other modern wallets also supporting many seeds. Thus I've strongly encouraging calling anything that derives a linear series of keys available for UTXOs an "account" not a wallet. Thus an "Account Map" is a descriptor with only XPUBs in it that describes that linear series. Since "Account Maps" can have 1 or more xpubs (plus fingerprint & path) in them, calling those "accounts" is a name space collision. -- Christopher Allen |
Beta Was this translation helpful? Give feedback.
-
I understand your point, although I don't think we can get away from the semantic meaning of a BIP44 account either - for example the Coldcard uses the word account in the BIP44 context - see the 'Multiple Accounts' section here. Perhaps we need another word! That aside, I'm still trying to understand the original issue. In my understanding the user never sees the phrase |
Beta Was this translation helpful? Give feedback.
-
These developer words creep ino our UX. I’d like to nip this confusion now and encourage the use of word keyset for this. It is just more accurate. |
Beta Was this translation helpful? Give feedback.
-
The problem I have is that I don't think it is - keyset could describe any set of keys, while account describes the specific set of keys that relate a particular BIP44 account. And I think the use of the word 'account' is too widespread in this (BIP44) context to change it now, and therefore its overloading with Account Maps risks replicating some of the same confusion we already have with the use of 'wallet'. That said, happy to make this change if there is consensus on it. @wolfmcnally @Fonta1n3 |
Beta Was this translation helpful? Give feedback.
-
It may make sense to differentiate between single sig accounts and multi-sig accounts. The real core issue here is when creating collaborative multisig wallets we need a common name for the thing a user needs to export/import to create a multisig wallet with other parties. As far as the logic/code is concerned the UR type However as far as UI is concerned Sparrow and Electrum use the term An output descriptor's purpose is to unambiguously derive scripts/addresses (generally speaking) not just public/private keys. The above example does not specify a script type whereas a descriptor does. I am not sure
It is worth noting there is already a UR type for @craigraw the reason Really what we need is an actual BIP for the |
Beta Was this translation helpful? Give feedback.
-
I think we should probably drop |
Beta Was this translation helpful? Give feedback.
-
I'm fine with @craigraw Can I get you to either +1 to @wolfmcnally, do you have an opinion? |
Beta Was this translation helpful? Give feedback.
-
Re I think the arguments above still stand, but I want to avoid being dogmatic on this. How about |
Beta Was this translation helpful? Give feedback.
-
Following up on the above - any objections with |
Beta Was this translation helpful? Give feedback.
-
My problem with
Which is precisely what this is: a description of how derive a set of keys. |
Beta Was this translation helpful? Give feedback.
-
BTW, among my other goals is to drive URs to be used more broadly than just in the bitcoin community, but also in standards communities like IETF & W3C. A |
Beta Was this translation helpful? Give feedback.
-
Thanks for the info @ChristopherA.
This highlights exactly my original concern - that If we can understand the path forward, I think we can agree and resolve this. |
Beta Was this translation helpful? Give feedback.
-
(Maintainer note: I've converted this from being an issue in Research to a Airgapped community thread in order to have a broader discussion of requirements.) /cc @craigraw @Fonta1n3 @wolfmcnally |
Beta Was this translation helpful? Give feedback.
-
I wondering if part of the problem of closing this topic is that we didn't fully state the use cases / developer problems that the bcr-2020-015 - UR Type Definition for BIP44 Accounts proposal was to address. The original goal was to address how to describe in CBOR a singlesig BIP44 bitcoin "account" path, and the choice of selecting paths 44 (legacy), 48 (nested segwit) and 84 (native segwit). derivation. This proposal also suggested that this could be used for bip45 and the so-called "BIP48 Multisig", which is not a BIP and is underspecified, that supports all three (legacy, nested segwit, and native segwith) as sub-paths of 48'. See the discussion at We Need to Document Bitcoin HD Derivations for Multisig (aka m/48' or BIP-0048) on problems with the 48'. However, an important related use of this emerged which was to enable requests and sharing of a single xpub, such that a multisig descriptor could be created. We need this CBOR to allow for URs for transaction coordinators (e.g. Unchained's Caravan, Casa, River, etc.) to request a master-key fingerprint, path, and xpub, in order to add it to an Account Map (a descriptor with only xpubs, plus some metadata, see #6) So these two requirements have become conflated, causing some confusion. There also is some ongoing confusion in the bitcoin developer community in use of the words like "wallet" and "account", which unfortunately have migrated from developer words into user definitions. (IMHO, an A solution here might be to redo this proposal. First we specify what bitcoin core calls a "key expression" (i.e. @craigraw Does this accurately describe our dilemma? |
Beta Was this translation helpful? Give feedback.
-
No, I don't think it does unfortunately.
I understand your point of view, but as I've said before we are not going to change the BIP44 meaning of account. (Or, respectfully IMO, the widespread use of the word 'wallet' in just about all Bitcoin software to define what you have called account). That said, it's not really relevant to this discussion - I'm happy to find a less controversial word than account, I just want to make sure that we don't choose one that is too generic and causes confusion in future with other valid 'sets of keys'. To restate the purpose of BCR-2020-015: It allows hardware wallet (or 'keystore') developers to have a single and standardized way of sharing the public key information about those keys. Currently, sharing this information requires not only selecting whether you have a singlesig or multisig setup, but also the script/address type. This is confusing for users, and completely unnecessary, since the wallet co-ordinator software (which generally has a much more capable interface) already knows this information. To make this even more clear: A hardware wallet developer need only implement two functions. One shows the |
Beta Was this translation helpful? Give feedback.
-
This is my understanding: An "Account Map" is an xpub only descriptor. It will be sent by the coordinator back to the signers. It maps back to the BIP44/84etc account.
I don't understand @craigraw 's issue of when you'd use |
Beta Was this translation helpful? Give feedback.
-
I acknowledge I am a noob, even a rube, way in over my paygrade, but sometimes that POV can be useful to those living deep in the weeds. I am limiting this to BIP compatible HD contexts, obviously nothing here is new to y'all, and I'm not even suggesting terms here, just giving examples for clarification of my understanding. These terminology issues were a major frustration for me, even a barrier to learning in my first 500 hours. I have adopted "Account-Wallet" to mean all the nodes/ keys/ addresses/ scripts collected under a given BIP39 seed, BIP32 root / master extended key. Not necessarily as defined by any given Wallet-Client implementation, just the 'conceptual collection' living on the blockchain. Of course these nodes are "random", observers need a secret master key to even know these nodes are correlated to that account-wallet. Accounts themselves are sub-trees within the overall account-wallet. Many wallet-clients limit themselves to importing only a single account / derivation path e.g. Electrum's dev is very passionate on that issue. Other wallet-clients allow for convenient access to multiple accounts within one UX without switching. Do any allow the same across multiple account-wallets at the seed level? Or at least easy but still secure switching between them? So, everything above is single-sig. I have not yet begun to grok multisig yet, so this may have been useless, if so feel free to delete it, all I got for now. |
Beta Was this translation helpful? Give feedback.
-
@hansbkk I appreciate that your comments. I am concerned about the terminology collisions in bitcoin with overloaded use of terms So far we've had to back down from a number of the changes I'd like to see (like |
Beta Was this translation helpful? Give feedback.
-
The Decentralized Identifiers specification refers to structures that contain or can be used to derive many flavors of keys as a "base" as in |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
In regards to UR Type Definition for BIP44 Accounts…
As we work on the user-interface for our dedicated multsig co-signer app this week, we are running into a namespace collision / user confusion with calling this a crypto-account. It is only an "account" when it is used as a single-sig descriptor, but when it is used in a multsig it isn't really a full account but something else.
Instead, I'd like to call this crypto-keyset, as keyset is the term used in a variety of cryptographic protocols for groups of associated keys. Then it is clearly differentiated from things like an Account Map, which has one or more keysets in it.
Is it too late to make this change?
/cc @craigraw @wolfmcnally @Fonta1n3
-- Christopher Allen
Beta Was this translation helpful? Give feedback.
All reactions