diff --git a/bip-0093.mediawiki b/bip-0093.mediawiki index 22a7ba32e9..62b65bb4c6 100644 --- a/bip-0093.mediawiki +++ b/bip-0093.mediawiki @@ -20,7 +20,7 @@ This document describes a standard for backing up and restoring the master seed [https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki BIP-0032] hierarchical deterministic wallet, using Shamir's secret sharing. It includes an encoding format, a BCH error-correcting checksum, and algorithms for share generation and secret recovery. Secret data can be split into up to 31 shares. -A minimum threshold of shares, which can be between 1 and 9, is needed to recover the secret, whereas without sufficient shares, no information about the secret is recoverable. +A minimum threshold of shares, which can be 0 (for unshared secret) or between 2 and 9 (for shares), is needed to recover the secret, whereas without sufficient shares, no information about the secret is recoverable. ===Copyright=== @@ -67,8 +67,8 @@ It reuses the base-32 character set from BIP-0173, and consists of: * A human-readable part, which is the string "ms" (or "MS"). * A separator, which is always "1". * A data part which is in turn subdivided into: -** A threshold parameter, which MUST be a single digit between "2" and "9", or the digit "0". -*** If the threshold parameter is "0" then the share index, defined below, MUST have a value of "s" (or "S"). +** A threshold digit (also called ''k'' in the codex book), which MUST be a single digit between "2" and "9", or the digit "0". For shared secrets, this digit encodes the threshold (the number of shares required for recovery): thresholds 2-9 are encoded as digits "2"-"9" respectively. For unshared secrets, threshold 1 is denoted by the share index "s" (not by the threshold digit); the digit "0" is recommended for the threshold digit in this case, but any digit is allowed as it is ignored. +*** If the threshold digit is "0" then the share index, defined below, MUST have a value of "s" (or "S"). ** An identifier consisting of 4 bech32 characters. ** A share index, which is any bech32 character. Note that a share index value of "s" (or "S") is special and denotes the unshared secret (see section "Unshared Secret"). ** A payload which is a sequence of up to 74 bech32 characters. (However, see '''Long codex32 Strings''' below for an exception to this limit.) @@ -146,14 +146,14 @@ The master seed is decoded by converting the payload to bytes: Note that unlike the decoding process in BIP-0173, we do NOT require that the incomplete group be all zeros. -For an unshared secret, the threshold parameter (the first character of the data part) is ignored (beyond the fact it must be a digit for the codex32 string to be valid). -We recommend using the digit "0" for the threshold parameter in this case. +For an unshared secret, the threshold digit (the first character of the data part) is ignored (beyond the fact it must be a digit for the codex32 string to be valid). +We recommend using the digit "0" for the threshold digit in this case. Note that threshold 1 is denoted by the share index "s", not by the threshold digit. The 4 character identifier also has no effect beyond aiding users in distinguishing between multiple different master seeds in cases where they have more than one. ===Recovering Master Seed=== When the share index of a valid codex32 string (converted to lowercase) is not the letter "s", we call the string an codex32 share. -The first character of the data part indicates the threshold of the share, and it is required to be a non-"0" digit. +The first character of the data part is the threshold digit, which encodes the threshold (the number of shares required for recovery). For a codex32 share, the threshold digit is required to be a non-"0" digit (i.e., "2" through "9"), encoding thresholds 2 through 9 respectively. In order to recover a master seed, one needs a set of valid codex32 shares such that: