Multi-order derivative addresses for Bitcoin Cash (and any other coin)

Brendan Lee

New Member
Feb 9, 2018
19
22
Hi Guys,
I would like to propose an updated notation format for multi-account wallet structures that allows more of a tree structure to be formed with multiple derivative account layers. I see this being quite necessary for large organisations who want to fully integrate Bitcoin into their daily business functions rather than simply integrating it at a payment gateway layer.
Thank you,
Brendan

BUIP: XXX

Layer: Applications

Title: Multi-order Hierarchy for Deterministic Wallets

Author: Brendan Lee <brendanjlee@protonmail.com>

Comments-Summary:

Comments-URI:

Status: Proposed

Type: Standards Track

Created: 2018-03-29

Table of Contents

  • Abstract
  • Motivation
  • Multi order derivative path
    • First order derivative
    • Second order derivative
    • Nth order derivative
  • Examples
  • Compatible wallets
  • Reference
Abstract
This BIP builds on the notation of the multi wallet format described in BIP44 to enable the building of multi-layered hierarchical wallet trees.

This BIP is a particular application of BIP43.

Motivation
The hierarchy proposed in this paper gives corporations and other sophisticated users of Cryptocurrency a simple format to use for referencing accounts within a multi-order wallet tree structure enabling a single master key to be used as the seed key to build an account hierarchy with multiple layers and branches. This approach allows each branch to be hidden from each other branch while giving the master private key total visibility and control of the whole system.

Multi order derivative Path
The standard builds upon standard notation of derivative wallet paths allowing this notation format to be applied to any cryptocurrency.

First order derivative
The derivative path to a wallet deterministically generated directly from a master key is described as follows:

m / purpose' / coin_type' / account' / change / address_index

As with BIP44, apostrophe in the path indicates that BIP32 hardened derivation is used.

Second order derivative
The derivative path to a wallet deterministically generated directly from a first order derivative of a master key is described as follows:

m / purpose' / coin_type' / account'(account’) / change / address_index

The second order account address is found by performing a hardened derivation of the first order account key.

Nth order derivative
The derivative path to a wallet deterministically generated from an (n-1)th order derivative of the master key is described as follows:

m / purpose' / coin_type' / account'(account_1’(… (account_n-1’(account_n))…)) / change / address_index

The nth order account address is found by performing a hardened derivation of the n-1th order account key.


Examples
coin account chain address path

Bitcoin Cash first external first m / 44’ / 145’ / 0' / 0 / 0

Bitcoin Cash third change fourth m / 44’ / 145’ / 2' / 1 / 3

Bitcoin Cash First(first) external first m / 44’ / 145’ / 0'(0’) / 0 / 0

Bitcoin Cash Third(fifth) change fourth m / 44’ / 145’ / 2'(4’) / 1 / 3

Bitcoin Cash First(second(third)) external first m / 44’ / 145’ / 0'(1’(2’)) / 0 / 0

Bitcoin Cash First(second(third)) change third m / 44’ / 145’ / 0'(1’(2’)) / 1 / 2

Bitcoin Cash First(second(third(fourth(fifth)))) external first m / 44’ / 145’ / 0'(1’(2’(3’(4)))) / 0 / 0

Compatible wallets
  • None yet
Reference
 
Last edited:
  • Like
Reactions: torusJKL

torusJKL

Active Member
Nov 30, 2016
497
1,156
I'm not sure if I fully understand the BUIP.

Could I give someone the derivative key of
Bitcoin Cash First(first) external first m / 44’ / 145’ / 0' / 0 / 0
without that person having the ability to reconstruct the master key but being able to generate the private key for the second order derivative (and up to the nth)?
 

Brendan Lee

New Member
Feb 9, 2018
19
22
Yes that's correct.
I.e. If you are viewing account m / 44' / 145' / 0(0(0)) from the perspective of account m / 44' / 145' / 0(0), it can be derived using path m / 44' / 145' / 0.
Additionally, m / 44' / 145' / 0(0(0)) cannot see m / 44' / 145' / 0(0) which cannot see m / 44' / 145' / 0(1) (its sibling) or m / 44' / 145' / 0 (its parent)

The idea is that you can setup a master key, then derive first order derivative keys for that master key. Those first order keys can then be loaded into hardware/software wallets which can access higher order derivative accounts. These wallets will have no knowledge of their parent keys but the parent keys can have full visibility over all accounts.
 
Last edited:
  • Like
Reactions: torusJKL