From b628a13e2124c7f927c033f5fed81671cb559ae5 Mon Sep 17 00:00:00 2001 From: Dmitry Petukhov Date: Sun, 16 May 2021 12:41:40 +0500 Subject: BIP88: use tags more, instead of double quotes --- bip-0088.mediawiki | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'bip-0088.mediawiki') diff --git a/bip-0088.mediawiki b/bip-0088.mediawiki index 048f2a7..ce081cc 100644 --- a/bip-0088.mediawiki +++ b/bip-0088.mediawiki @@ -91,17 +91,17 @@ installation of malicious or incorrect profiles, though. The format for the template was choosen to make it easy to read, convenient and visually unambigous. -Template starts with optional prefix "m/", and then one or more sections delimited by the slash character (/). +Template starts with optional prefix m/, and then one or more sections delimited by the slash character (/). Implementations MAY limit the maximum number of sections. -Each section consists of ''index template'', optionally followed by the hardened marker: either an apostrophe (') or letter "h". +Each section consists of ''index template'', optionally followed by the hardened marker: either an apostrophe (') or letter h. Index template can be: * An integer value from 0 to 2147483647 ("Unit index template") -* A single "*" character, which denotes any value from 0 to 2147483647 ("Wildcard index template") -* The "{" character, followed by a number of ''index ranges'' delimited by commas (,), followed by "}" character ("Ranged index template") +* A single * character, which denotes any value from 0 to 2147483647 ("Wildcard index template") +* The { character, followed by a number of ''index ranges'' delimited by commas (,), followed by } character ("Ranged index template") Implementations MAY limit the maximum number of index ranges within the Ranged index template. @@ -110,9 +110,9 @@ If an index template is immediately followed by hardened marker, this means that Index range can be: * An integer value from 0 to 2147483647 ("Unit range") -* An integer value from 0 to 2147483647, followed by the "-" character, followed by another integer value from 0 to 2147483647 ("Non-unit range") +* An integer value from 0 to 2147483647, followed by the - character, followed by another integer value from 0 to 2147483647 ("Non-unit range") -For Non-unit range, value on the left side of the "-" character is the range_start, and the value on the right side of the "-" character is the range_end. +For Non-unit range, value on the left side of the - character is the range_start, and the value on the right side of the - character is the range_end. For Unit range, we say that range_start is equal to range_end, even though there is no start/end in the Unit range. @@ -128,16 +128,16 @@ Constraints: # To avoid ambiguity, an index range 0-2147483647 is not allowed, and MUST be specified as Wildcard index template instead # For Non-unit range, range_end MUST be larger than range_start. # If there is more than one index range within the Ranged index template, range_start of the second and any subsequent range MUST be larger than the range_end of the preceeding range. -# To avoid ambiguity, all representations of integer values larger than 0 MUST NOT start with character "0" (no leading zeroes allowed). +# To avoid ambiguity, all representations of integer values larger than 0 MUST NOT start with character 0 (no leading zeroes allowed). # If hardened marker appears within any section in the path template, all preceding sections MUST also specify hardened matching. # To avoid ambiguity, if a hardened marker appears within any section in the path template, all preceding sections MUST also use the same hardened marker (either h or '). -# To avoid ambiguity, trailing slashes (for example, "1/2/") and duplicate slashes (for example, "0//1") MUST NOT appear in the template. +# To avoid ambiguity, trailing slashes (for example, 1/2/) and duplicate slashes (for example, 0//1) MUST NOT appear in the template. It may be desireable to have fully unambiguous encoding, where for each valid path template string, there is no other valid template string that matches the exact same set of paths. This would enable someone to compare templates for equality through a simple string equality check, without any parsing. To achieve this, two extra rules are needed: -* Within Ranged index template, subsequent range MUST NOT start with the value that is equal to the end of the previous range plus one. Thus, "{1,2,3-5}" is not allowed, and should be specified as "{1-5}" instead. This rule might make templates less convenient for frequent edits, though. +* Within Ranged index template, subsequent range MUST NOT start with the value that is equal to the end of the previous range plus one. Thus, {1,2,3-5} is not allowed, and should be specified as {1-5} instead. This rule might make templates less convenient for frequent edits, though. * Only one type of hardened marker should be allowed (either h or '). @@ -145,9 +145,9 @@ Instead of requiring the second extra rule, implementations can simply replace o ==Full and partial templates== -If the template starts with "m/", that means that this is the "full" template, that matches the whole path. +If the template starts with m/, that means that this is the "full" template, that matches the whole path. -If the template does not start with "m/", that means that this is a "partial" template, and it can be used to match a part of the path, in the contexts where this might be appropriate (for example, when constraints for the suffix of the path might be dynamic, while constraints for the prefix of the path are fixed). +If the template does not start with m/, that means that this is a "partial" template, and it can be used to match a part of the path, in the contexts where this might be appropriate (for example, when constraints for the suffix of the path might be dynamic, while constraints for the prefix of the path are fixed). Full template can be combined with partial template, where partial template extends full template, resulting in new, longer full template. @@ -205,11 +205,11 @@ The full path template that only contains Unit index templates represents a full There's no other path template standards that is known to the author currently. -There is a discussion on path templating for bitcoin script descriptors at https://github.com/bitcoin/bitcoin/issues/17190, which proposes the format '''"xpub...{0,1}/*"''', of which the '''"{0,1}/*"''' part would correspond to the partial path template in the format of this BIP. +There is a discussion on path templating for bitcoin script descriptors at https://github.com/bitcoin/bitcoin/issues/17190, which proposes the format xpub...{0,1}/*, of which the {0,1}/* part would correspond to the partial path template in the format of this BIP. ==Examples== -'''"m/{44,49,84}'/0'/0'/{0-1}/{0-50000}"''' specifies a full template that matches both external and internal chains of BIP44, BIP49 and BIP84 paths, with a constraint that the address index cannot be larger than 50000 +m/{44,49,84}'/0'/0'/{0-1}/{0-50000} specifies a full template that matches both external and internal chains of BIP44, BIP49 and BIP84 paths, with a constraint that the address index cannot be larger than 50000 Its representation after parsing can be (using Python syntax, ignoring full/partial distinction): [[(2147483692, 2147483692), (2147483697, 2147483697), (2147483732, 2147483732)), @@ -218,12 +218,12 @@ Its representation after parsing can be (using Python syntax, ignoring full/part [(0, 1)], [(0, 50000)]] -'''"{0-2,33,123}/*"''' specifies a partial template that matches non-hardened values 0, 1, 2, 33, 123 as first index, and any non-hardened value at second index +{0-2,33,123}/* specifies a partial template that matches non-hardened values 0, 1, 2, 33, 123 as first index, and any non-hardened value at second index Its representation after parsing can be: [[(0, 2), (33, 33), (123, 123)], [(0, 2147483647)]] -'''"*h/0"''' specifies a partial template that matches any hardened index followed by any non-hardened index +*h/0 specifies a partial template that matches any hardened index followed by any non-hardened index Its representation after parsing can be: [[(2147483648, 4294967295)], [(0, 0)]] -- cgit v1.2.3