From f1f9178f82d692bb2925d2de12f5c34a8abc6917 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 2 Aug 2023 15:37:58 -0700 Subject: [PATCH 01/13] feat: add invite funding key derivation path --- dip-0013.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dip-0013.md b/dip-0013.md index 0c5727a4..5d242bbe 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -158,6 +158,25 @@ It is recommended that 30 address hashes of these keys be added to the bloom fil If transactions containing 25 address hashes or more have been found, the filter should be regenerated with 30 more. + +# Identity Invitation Funding keys + +Identity Invitation Funding keys used to fund invites and are the fourth sub feature for Blockchain Identities. They are always derived as ECDSA keys. + +We define the following levels for them: +`m / purpose' / coin_type' / feature' / sub feature' / funding index' /` + +Sub feature is set to `3'`. + +If a wallet recovers an unused invitation funding transaction, the wallet should allow the user to +attempt reuse it. Dash Platform can be queried to see if the invitation funding transaction +has been used. It will be up to the user to determine if the invite should be resent to the original +recipient or a new recipient. + +It is recommended that 30 address hashes of these keys be added to the bloom filter sent to peers. +If transactions containing 25 address hashes or more have been found, the filter should be +regenerated with 30 more. + # Copyright Copyright (c) 2020 Dash Core Group, Inc. [Licensed under the MIT From 2edfe27f94038c63979b148f11bccd80f949ede8 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Mon, 18 Sep 2023 13:04:43 -0700 Subject: [PATCH 02/13] Add invite index into DIP9 assignments --- dip-0009/assignments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0009/assignments.md b/dip-0009/assignments.md index 71427543..e92664fb 100644 --- a/dip-0009/assignments.md +++ b/dip-0009/assignments.md @@ -6,7 +6,7 @@ Here is a table of current feature paths and any associated DIP. Future DIPs may | Feature Index * | Feature | DIP Number and Name | Note | | ------------------ | ------------ | ------------------- | ---- | | `3'` | Masternode Keys | [DIP 0003: Deterministic Masternode List](https://github.com/dashpay/dips/blob/master/dip-0003.md) | The masternode related keys are located in the following sub-paths:
`0'/*` - _Reserved_
`1'/*` - Voting Key
`2'/*` - Owner Key
`3'/*` - Operator Key
`4'/*` - [Platform P2P Key](../dip-0028.md#calculating-the-platform-node-id) (ED25519)

For example, the first voting key for Dash would be at `m/9'/5'/3'/1'/0` | -| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | +| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))3'/* - Invite Funding

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | | `15'` | DashPay - Incoming Funds | [DIP 0015: DashPay](../dip-0015.md#dashpay-incoming-funds-derivation-path) | The related keys are located in the following sub-paths: `/0'/account'/*`

For example, incoming funds for the first identity would be at `m/9'/5'/15'/0'/*` | | `16'` | DashPay - Auto Accept Proof | [DIP 0015: DashPay](../dip-0015.md#auto-accept-proof-autoacceptproof) | The related keys are located in the following sub-paths: `16'/expiration timestamp'`

For example, the key for a proof expiring at a Unix epoch time of `1605927033` would be at `m/9'/5'/16'/1605927033'` | From da0db1e65bff43b100b96564feb3d5e305956787 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 12 Sep 2023 13:55:44 -0700 Subject: [PATCH 03/13] chore: fix grammar Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index 5d242bbe..9df1a059 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -161,7 +161,7 @@ regenerated with 30 more. # Identity Invitation Funding keys -Identity Invitation Funding keys used to fund invites and are the fourth sub feature for Blockchain Identities. They are always derived as ECDSA keys. +Identity Invitation Funding keys used to fund invites are the fourth sub feature for Blockchain Identities. They are always derived as ECDSA keys. We define the following levels for them: `m / purpose' / coin_type' / feature' / sub feature' / funding index' /` From 38dd7cd3d4376cb17a249a96eaebf67db3421037 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 12 Sep 2023 13:56:18 -0700 Subject: [PATCH 04/13] chore: add blank line Co-authored-by: thephez --- dip-0013.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dip-0013.md b/dip-0013.md index 9df1a059..31a48fe0 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -164,6 +164,7 @@ regenerated with 30 more. Identity Invitation Funding keys used to fund invites are the fourth sub feature for Blockchain Identities. They are always derived as ECDSA keys. We define the following levels for them: + `m / purpose' / coin_type' / feature' / sub feature' / funding index' /` Sub feature is set to `3'`. From 16392763c52d556a95a40b2a4c0ed07533d267d2 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 12 Sep 2023 13:57:29 -0700 Subject: [PATCH 05/13] chore: fix grammar Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index 31a48fe0..095acace 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -170,7 +170,7 @@ We define the following levels for them: Sub feature is set to `3'`. If a wallet recovers an unused invitation funding transaction, the wallet should allow the user to -attempt reuse it. Dash Platform can be queried to see if the invitation funding transaction +attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction has been used. It will be up to the user to determine if the invite should be resent to the original recipient or a new recipient. From ff414c171e1f3eef8b602717afc488f788bcb1b2 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Fri, 22 Sep 2023 05:58:35 -0700 Subject: [PATCH 06/13] docs: fix formatting --- dip-0009/assignments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0009/assignments.md b/dip-0009/assignments.md index e92664fb..a758a0e3 100644 --- a/dip-0009/assignments.md +++ b/dip-0009/assignments.md @@ -6,7 +6,7 @@ Here is a table of current feature paths and any associated DIP. Future DIPs may | Feature Index * | Feature | DIP Number and Name | Note | | ------------------ | ------------ | ------------------- | ---- | | `3'` | Masternode Keys | [DIP 0003: Deterministic Masternode List](https://github.com/dashpay/dips/blob/master/dip-0003.md) | The masternode related keys are located in the following sub-paths:
`0'/*` - _Reserved_
`1'/*` - Voting Key
`2'/*` - Owner Key
`3'/*` - Operator Key
`4'/*` - [Platform P2P Key](../dip-0028.md#calculating-the-platform-node-id) (ED25519)

For example, the first voting key for Dash would be at `m/9'/5'/3'/1'/0` | -| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))3'/* - Invite Funding

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | +| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))
`3'/*` - Identity Invitation Funding ([details](../dip-0013.md#identity-invitatation-funding-keys))

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | | `15'` | DashPay - Incoming Funds | [DIP 0015: DashPay](../dip-0015.md#dashpay-incoming-funds-derivation-path) | The related keys are located in the following sub-paths: `/0'/account'/*`

For example, incoming funds for the first identity would be at `m/9'/5'/15'/0'/*` | | `16'` | DashPay - Auto Accept Proof | [DIP 0015: DashPay](../dip-0015.md#auto-accept-proof-autoacceptproof) | The related keys are located in the following sub-paths: `16'/expiration timestamp'`

For example, the key for a proof expiring at a Unix epoch time of `1605927033` would be at `m/9'/5'/16'/1605927033'` | From ac926088f47a225c5f250d0ce3072396ce8f0daf Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 19 Dec 2023 12:09:18 -0800 Subject: [PATCH 07/13] docs: add toc entry on DIP13 --- dip-0013.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dip-0013.md b/dip-0013.md index 095acace..1e96bd4f 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -20,6 +20,7 @@ 1. [Identity Authentication keys](#identity-authentication-keys) 1. [Identity Registration Funding keys](#identity-registration-funding-keys) 1. [Identity Top Up Funding keys](#identity-top-up-funding-keys) +1. [Identity Invitation Funding keys](#identity-invitation-funding-keys) 1. [Copyright](#copyright) # Abstract From 5c2e21ceb1649cb577027d4726efcd0b12c5c139 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 20 Dec 2023 06:28:54 -0800 Subject: [PATCH 08/13] Update dip-0013.md Blockchain Identities -> identities Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index 1e96bd4f..428cd79a 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -162,7 +162,7 @@ regenerated with 30 more. # Identity Invitation Funding keys -Identity Invitation Funding keys used to fund invites are the fourth sub feature for Blockchain Identities. They are always derived as ECDSA keys. +Identity Invitation Funding keys used to fund invites are the fourth sub feature for identities. They are always derived as ECDSA keys. We define the following levels for them: From e52730693a696406907bc87fc1b6e1216045e11a Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 20 Dec 2023 13:19:26 -0800 Subject: [PATCH 09/13] Update dip-0013.md spacing after . Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index 428cd79a..618ded6b 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -172,7 +172,7 @@ Sub feature is set to `3'`. If a wallet recovers an unused invitation funding transaction, the wallet should allow the user to attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction -has been used. It will be up to the user to determine if the invite should be resent to the original +has been used. It will be up to the user to determine if the invite should be resent to the original recipient or a new recipient. It is recommended that 30 address hashes of these keys be added to the bloom filter sent to peers. From 448b1dee65ae86b96280dd3073b837dbe2e92f33 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 20 Dec 2023 13:20:00 -0800 Subject: [PATCH 10/13] Update dip-0013.md spacing after . Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index 618ded6b..e8c60c21 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -171,7 +171,7 @@ We define the following levels for them: Sub feature is set to `3'`. If a wallet recovers an unused invitation funding transaction, the wallet should allow the user to -attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction +attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction has been used. It will be up to the user to determine if the invite should be resent to the original recipient or a new recipient. From 8d2bca317fec0d0f7442bcdfa612bdafdd3d32a5 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Wed, 20 Dec 2023 13:20:11 -0800 Subject: [PATCH 11/13] Update dip-0013.md - Co-authored-by: thephez --- dip-0013.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0013.md b/dip-0013.md index e8c60c21..689c2666 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -162,7 +162,7 @@ regenerated with 30 more. # Identity Invitation Funding keys -Identity Invitation Funding keys used to fund invites are the fourth sub feature for identities. They are always derived as ECDSA keys. +Identity Invitation Funding keys used to fund invites are the fourth sub-feature for identities. They are always derived as ECDSA keys. We define the following levels for them: From d32e5b6c294c3bb6d262587d9d5c72f4b302472c Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 21 May 2025 15:26:57 -0400 Subject: [PATCH 12/13] Re-add invite index into DIP9 assignments --- dip-0009/assignments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dip-0009/assignments.md b/dip-0009/assignments.md index 22c0ddb4..fab9f488 100644 --- a/dip-0009/assignments.md +++ b/dip-0009/assignments.md @@ -7,7 +7,7 @@ Here is a table of current feature paths and any associated DIP. Future DIPs may | ------------------ | ------------ | ------------------- | ---- | | `3'` | Masternode Keys | [DIP 0003: Deterministic Masternode List](https://github.com/dashpay/dips/blob/master/dip-0003.md) | The masternode related keys are located in the following sub-paths:
`0'/*` - _Reserved_
`1'/*` - Voting Key
`2'/*` - Owner Key
`3'/*` - Operator Key
`4'/*` - [Platform P2P Key](../dip-0028.md#calculating-the-platform-node-id) (ED25519)

For example, the first voting key for Dash would be at `m/9'/5'/3'/1'/0` | | `4'` | CoinJoin Keys | CoinJoin | The masternode related keys are located in the following sub-paths:
`0'/0/*` - Account 0 (external)
`0'/1/*` - Account 0 (change, not typically used)

For example, the first key of Account 0 for CoinJoin would be at `m/9'/5'/4'/0'/0/0`.

The main purpose of this using this path is to segregate CoinJoin-related keys from the BIP44 paths that are used to receive coins and change. CoinJoin derivation paths may require different lookup or gap values than the BIP44 paths that have much less transaction activity. Additionally, it may be possible to prune used keys from the BIP37 bloom filters used by mobile apps.| -| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | +| `5'` | Identity Keys | [DIP 0013: Identities in Hierarchical Deterministic wallets](../dip-0013.md) | The related keys are located in the following sub-paths:
`0'/key type'/identity index'/key index'/*` - Identity Authentication ([details](../dip-0013.md#identity-authentication-keys))
`1'/*` - Identity Registration Funding ([details](../dip-0013.md#identity-registration-funding-keys))
`2'/*` - Identity Topup Funding ([details](../dip-0013.md#identity-top-up-funding-keys))
`3'/*` - Identity Invitation Funding ([details](../dip-0013.md#identity-invitatation-funding-keys))

For example, the first Identity Registration Funding key for Dash would be at `m/9'/5'/5'/1'/0` | | `15'` | DashPay - Incoming Funds | [DIP 0015: DashPay](../dip-0015.md#dashpay-incoming-funds-derivation-path) | The related keys are located in the following sub-paths: `/0'/account'/*`

For example, incoming funds for the first identity would be at `m/9'/5'/15'/0'/*` | | `16'` | DashPay - Auto Accept Proof | [DIP 0015: DashPay](../dip-0015.md#auto-accept-proof-autoacceptproof) | The related keys are located in the following sub-paths: `16'/expiration timestamp'`

For example, the key for a proof expiring at a Unix epoch time of `1605927033` would be at `m/9'/5'/16'/1605927033'` | From 3427fd2660e3515c537b8e6427e70553f4f7cd70 Mon Sep 17 00:00:00 2001 From: thephez Date: Wed, 21 May 2025 15:40:08 -0400 Subject: [PATCH 13/13] style: lint fixes --- dip-0009/assignments.md | 1 - dip-0013.md | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dip-0009/assignments.md b/dip-0009/assignments.md index fab9f488..d0f6adaf 100644 --- a/dip-0009/assignments.md +++ b/dip-0009/assignments.md @@ -2,7 +2,6 @@ Here is a table of current feature paths and any associated DIP. Future DIPs may introduce more types. - | Feature Index * | Feature | DIP Number and Name | Note | | ------------------ | ------------ | ------------------- | ---- | | `3'` | Masternode Keys | [DIP 0003: Deterministic Masternode List](https://github.com/dashpay/dips/blob/master/dip-0003.md) | The masternode related keys are located in the following sub-paths:
`0'/*` - _Reserved_
`1'/*` - Voting Key
`2'/*` - Owner Key
`3'/*` - Operator Key
`4'/*` - [Platform P2P Key](../dip-0028.md#calculating-the-platform-node-id) (ED25519)

For example, the first voting key for Dash would be at `m/9'/5'/3'/1'/0` | diff --git a/dip-0013.md b/dip-0013.md index 689c2666..8cf6c9b7 100644 --- a/dip-0013.md +++ b/dip-0013.md @@ -159,20 +159,19 @@ It is recommended that 30 address hashes of these keys be added to the bloom fil If transactions containing 25 address hashes or more have been found, the filter should be regenerated with 30 more. - # Identity Invitation Funding keys Identity Invitation Funding keys used to fund invites are the fourth sub-feature for identities. They are always derived as ECDSA keys. We define the following levels for them: -`m / purpose' / coin_type' / feature' / sub feature' / funding index' /` +`m / purpose' / coin_type' / feature' / sub feature' / funding index' /` Sub feature is set to `3'`. If a wallet recovers an unused invitation funding transaction, the wallet should allow the user to -attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction -has been used. It will be up to the user to determine if the invite should be resent to the original +attempt reusing it. Dash Platform can be queried to see if the invitation funding transaction has +been used. It will be up to the user to determine if the invite should be resent to the original recipient or a new recipient. It is recommended that 30 address hashes of these keys be added to the bloom filter sent to peers.