dips/dip-0009.md
thephez 26cf7c9f92
Add DIP9 - Feature derivation paths (#48)
* DIP9 - Add DIP and assignment documents

* DIP9 - Add to Readme
2019-05-21 12:12:29 -04:00

70 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<pre>
DIP: 0009
Title: Feature Derivation Paths
Author(s): Samuel Westrich
Special-Thanks:
Status: Proposed
Type: Informational
Created: 2019-03-12
License: MIT License
</pre>
## Table of Contents
1. [Abstract](#abstract)
1. [Motivation](#motivation)
1. [Prior Work](#prior-work)
1. [Feature Path Level](#feature-path-level)
1. [Copyright](#copyright)
## Abstract
This DIP introduces reliable derivation paths for various coin-specific features.
## Motivation
Currently there is much ambiguity between different coin paths, BIP43 tried to solve this with the purpose hardened derivation. With BIP44 we saw derivation paths such as `44/5/0` which addresses coin-specific derivation paths. However, these derivation paths had an account directly after the coin type which made it unusable for coin-specific features other than standard transactions.
## Prior work
- [BIP-0043 - Purpose Field for Deterministic Wallets](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki)
- [BIP-0044 - Multi-Account Hierarchy for Deterministic Wallets](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki)
## Feature path level
We define the following minimum 3 levels in BIP32 path:
`m / purpose' / coin_type' / feature' / *`
An apostrophe in the path indicates that BIP32 hardened derivation is used.
Each level has a special meaning, described in the sections below.
### Purpose
Purpose is a constant set to `9'` (or 0x80000009) following the [BIP43 recommendation](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki#purpose). It indicates that the subtree of this node is used according to this specification.
Hardened derivation is used at this level.
### Coin type
Coin type in this DIP is the same as defined by [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#coin-type) (a constant, set for each cryptocoin). For example, Dash has a registered coin type of `5'` (or 0x80000005).
This DIP is not a central directory for the registered coin types. Please visit the full list of registered coin types maintained by SatoshiLabs for any other coins:
[SLIP-0044 : Registered coin types for BIP-0044](https://github.com/satoshilabs/slips/blob/master/slip-0044.md)
Hardened derivation is used at this level.
### Feature
This level splits the coins key space based on coin-specific features. For example, it may be desirable to maintain mixed funds in a path that is isolated from non-mixed funds. Other use cases could include using a specific path for identity or other non-financial keys.
Hardened derivation is used at this level.
Feature derivation paths may be defined based on future DIPs. A list of registered features can be found [here](dip-0009/assignments.md).
## Copyright
Copyright (c) 2019 Dash Core Group, Inc. [Licensed under the MIT License](https://opensource.org/licenses/MIT)