Skip to content

Create/import wallet with account key only (arbitrary derivation path) #8481

@yurm-develop

Description

@yurm-develop

This is a feature request.
Use case: I want to use multisignature (say, 2-of-2) wallet for multidevice multi-factor control (all wallet participants/devices are my own). So, ideally, I want to remeber one seed phrase and use different accounts (m/44'/0'/0', m/44'/0'/1', etc) on different devices. Current version of Copay allows this, but I don't want to expose BIP32 root key to any device, only account extended private key should be exposed. Now if I create wallet with such key and change derivation path from m/44'/0'/0' to just m, Copay says that derivation path is invalid.
So, first I can use one seed phrase and different BIP44 derivation paths on each device, but some quite smart malware on any device is able to steal BIP32 root key and all my funds. Second, I can use different seed phrases for different devices, but I want to remember only one and rule them all.

Example: let BIP39 seed phrase

ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic

(it's one of test vectors here). Insert it to any BIP39 calculator, e.g. this. BIP32 root key is

xprv9s21ZrQH143K2vwt95G9vjWpa1o7izT4HqJFiKSdSeUAaYGz6zfW28ipAPB5eJqKccqFHU2BxGCvhQkVY7hMRdwDrHvsqe1GbkMCWPB9GGm

(don't be confused by difference between this key and test vector's key at https://github.com/trezor/python-mnemonic/blob/master/vectors.json, second uses BIP39 passphrase "TREZOR").

Account extended private key for m/44'/0'/0' is

xprv9zMcMWH49YtyJSbCRjL12jPnNQamikzKsBRNeRB8PYM8Kh6VqUmPkknju5XkEBg4PCisCJMad5KpZ8PMXknbRxjdqDMyKbSAGBYymbgmZj3

Account extended private key for m/44'/0'/1' is

xprv9zMcMWH49YtyLAoYxVobTWVgaEVRfNFUFDjT1rYtKCsNdUmZvhRGKaVjmM8ZcnQZU2CWf4eRdn5NAAoZ4Uiuf572W5YfKtgMmwebKgKQxy8

Now, I want to be able to create wallet with one of these two keys and derivation path "m", i.e.

2|xprv9zMcMWH49YtyJSbCRjL12jPnNQamikzKsBRNeRB8PYM8Kh6VqUmPkknju5XkEBg4PCisCJMad5KpZ8PMXknbRxjdqDMyKbSAGBYymbgmZj3|livenet|m|undefined

instead of

2|xprv9s21ZrQH143K2vwt95G9vjWpa1o7izT4HqJFiKSdSeUAaYGz6zfW28ipAPB5eJqKccqFHU2BxGCvhQkVY7hMRdwDrHvsqe1GbkMCWPB9GGm|livenet|m/44'/0'/0'|undefined

(last two should be same wallets).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions