3
3
Layer: Applications
4
4
Title: Multi-Account/Multi-Script Hierarchy for Deterministic Multi Signature Wallets
5
5
Author: Peter Denton <
[email protected] >
6
- Comments-Summary: Mixed review (one person)
6
+ Comments-Summary: No comments
7
7
Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0048
8
8
Status: Proposed
9
9
Type: Standards Track
@@ -27,7 +27,7 @@ millions of addresses per chain.
27
27
==Key sorting ==
28
28
29
29
Any wallet that supports BIP48 inherently supports deterministic key sorting as per BIP67 so that all possible
30
- multi-signature addresses/scripts are derived from deterministically ordered public keys.
30
+ multi-signature addresses/scripts are derived from deterministically sorted public keys.
31
31
32
32
==Path levels ==
33
33
@@ -37,7 +37,7 @@ We define the following 6 levels in BIP32 path:
37
37
m / purpose' / coin_type' / account' / script_type' / change / address_index
38
38
</pre>
39
39
40
- `h` in the path indicates that BIP32 hardened derivation is used.
40
+ <code> h </code> or <code> ' </code> in the path indicates that BIP32 hardened derivation is used.
41
41
42
42
Each level has a special meaning, described in the chapters below.
43
43
@@ -55,7 +55,7 @@ Sharing the same space for various networks has some disadvantages.
55
55
56
56
Avoiding reusing addresses across networks and improving privacy issues.
57
57
58
- Coin type `0` for mainnet and `1` for testnet.
58
+ Coin type <code> 0 </code> for mainnet and <code> 1 </code> for testnet.
59
59
60
60
Hardened derivation is used at this level.
61
61
@@ -82,16 +82,18 @@ an external source. Such an algorithm is described in "Account discovery" chapte
82
82
83
83
===Script ===
84
84
85
- This level splits the key space into three separate ` script_type` (s). To provide
85
+ This level splits the key space into three separate <code> script_type </code> (s). To provide
86
86
optimum backward compatibility.
87
87
88
- The recommended default is pay to witness script hash ` m/48'/0'/0'/2'` .
88
+ The recommended default is pay to witness script hash <code> m/48'/0'/0'/2' </code> .
89
89
90
90
The following represent mainnet, account 0.
91
91
92
- `1'`: Nested Segwit (p2sh-p2wsh) `m/48'/0'/0'/1'`</br>
93
- `2'`: Native Segwit (p2wsh) `m/48'/0'/0'/2'`</br>
94
- `3'`: Legacy (p2sh) `m/48'/0'/0'/3'`</br>
92
+ <code>1' </code>: Nested Segwit (p2sh-p2wsh) <code>m/48'/0'/0'/1' </code></br>
93
+ <code>2' </code>: Native Segwit (p2wsh) <code>m/48'/0'/0'/2' </code></br>
94
+ <code>3' </code>: Legacy (p2sh) <code>m/48'/0'/0'/3' </code></br>
95
+
96
+ Easily expanded to account for new script types.
95
97
96
98
===Change ===
97
99
@@ -142,109 +144,127 @@ an external chain by generating a new address.
142
144
==Examples ==
143
145
144
146
{|
145
- !coin
146
- ! account
147
- ! script
148
- ! chain
149
- ! address
150
- ! path
147
+ | network
148
+ | account
149
+ | script
150
+ | chain
151
+ | address
152
+ | path
151
153
|-
152
- |Bitcoin
154
+ |mainnet
153
155
|first
156
+ |p2wsh
154
157
|external
155
158
|first
156
159
|m / 48' / 0' / 0' / 2' / 0 / 0
157
160
|-
158
- |Bitcoin
161
+ |mainnet
159
162
|first
163
+ |p2wsh
160
164
|external
161
165
|second
162
166
|m / 48' / 0' / 0' / 2' / 0 / 1
163
167
|-
164
- |Bitcoin
168
+ |mainnet
165
169
|first
170
+ |p2wsh
166
171
|change
167
172
|first
168
173
|m / 48' / 0' / 0' / 2' / 1 / 0
169
174
|-
170
- |Bitcoin
175
+ |mainnet
171
176
|first
177
+ |p2wsh
172
178
|change
173
179
|second
174
180
|m / 48' / 0' / 0' / 2' / 1 / 1
175
181
|-
176
- |Bitcoin
182
+ |mainnet
177
183
|second
184
+ |p2wsh
178
185
|external
179
186
|first
180
187
|m / 48' / 0' / 1' / 2' / 0 / 0
181
188
|-
182
- |Bitcoin
189
+ |mainnet
183
190
|second
191
+ |p2wsh
184
192
|external
185
193
|second
186
194
|m / 48' / 0' / 1' / 2' / 0 / 1
187
195
|-
188
- |Bitcoin
196
+ |mainnet
189
197
|second
198
+ |p2sh
190
199
|change
191
200
|first
192
- |m / 48' / 0' / 1' / 2 ' / 1 / 0
201
+ |m / 48' / 0' / 1' / 3 ' / 1 / 0
193
202
|-
194
- |Bitcoin
203
+ |mainnet
195
204
|second
205
+ |p2sh
196
206
|change
197
207
|second
198
- |m / 48' / 1' / 1' / 2 ' / 1 / 1
208
+ |m / 48' / 1' / 1' / 3 ' / 1 / 1
199
209
|-
200
- |Bitcoin Testnet
210
+ |testnet
201
211
|first
212
+ |p2sh-p2wsh
202
213
|external
203
214
|first
204
- |m / 48' / 1' / 0' / 2 ' / 0 / 0
215
+ |m / 48' / 1' / 0' / 1 ' / 0 / 0
205
216
|-
206
- |Bitcoin Testnet
217
+ |testnet
207
218
|first
219
+ |p2wsh
208
220
|external
209
221
|second
210
222
|m / 48' / 1' / 0' / 2' / 0 / 1
211
223
|-
212
- |Bitcoin Testnet
224
+ |testnet
213
225
|first
226
+ |p2wsh
214
227
|change
215
228
|first
216
229
|m / 48' / 1' / 0' / 2' / 1 / 0
217
230
|-
218
- |Bitcoin Testnet
231
+ |testnet
219
232
|first
233
+ |p2wsh
220
234
|change
221
235
|second
222
236
|m / 48' / 1' / 0' / 2' / 1 / 1
223
237
|-
224
- |Bitcoin Testnet
238
+ |testnet
225
239
|second
240
+ |p2wsh
226
241
|external
227
242
|first
228
243
|m / 48' / 1' / 1' / 2' / 0 / 0
229
244
|-
230
- |Bitcoin Testnet
245
+ |testnet
231
246
|second
247
+ |p2wsh
232
248
|external
233
249
|second
234
250
|m / 48' / 1' / 1' / 2' / 0 / 1
235
251
|-
236
- |Bitcoin Testnet
252
+ |testnet
237
253
|second
254
+ |p2wsh
238
255
|change
239
256
|first
240
257
|m / 48' / 1' / 1' / 2' / 1 / 0
241
258
|-
242
- |Bitcoin Testnet
259
+ |testnet
243
260
|second
261
+ |p2wsh
244
262
|change
245
263
|second
246
264
|m / 48 h / 1' / 1' / 2' / 1 / 1
247
- |}
265
+ |-
266
+ }|
267
+
248
268
249
269
==Reference==
250
270
0 commit comments