Skip to content

Commit fd637be

Browse files
committed
Add checksums to descriptors.md
1 parent be62903 commit fd637be

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

doc/descriptors.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Output descriptors currently support:
3939

4040
## Reference
4141

42-
Descriptors consist of several types of expressions. The top level expression is always a `SCRIPT`.
42+
Descriptors consist of several types of expressions. The top level expression is either a `SCRIPT`, or `SCRIPT#CHECKSUM` where `CHECKSUM` is an 8-character alphanumeric descriptor checksum.
4343

4444
`SCRIPT` expressions:
4545
- `sh(SCRIPT)` (top level only): P2SH embed the argument.
@@ -169,3 +169,20 @@ existing Bitcoin Core wallets, a convenience function `combo` is
169169
provided, which takes as input a public key, and describes a set of P2PK,
170170
P2PKH, P2WPKH, and P2SH-P2WPH scripts for that key. In case the key is
171171
uncompressed, the set only includes P2PK and P2PKH scripts.
172+
173+
### Checksums
174+
175+
Descriptors can optionally be suffixed with a checksum to protect against
176+
typos or copy-paste errors.
177+
178+
These checksums consist of 8 alphanumeric characters. As long as errors are
179+
restricted to substituting characters in `0123456789()[],'/*abcdefgh@:$%{}`
180+
for others in that set and changes in letter case, up to 4 errors will always
181+
be detected in descriptors up to 501 characters, and up to 3 errors in longer
182+
ones. For larger numbers of errors, or other types of errors, there is a
183+
roughly 1 in a trillion chance of not detecting the errors.
184+
185+
All RPCs in Bitcoin Core will include the checksum in their output. Only
186+
certain RPCs require checksums on input, including `deriveaddress` and
187+
`importmulti`. The checksum for a descriptor without one can be computed
188+
using the `getdescriptorinfo` RPC.

0 commit comments

Comments
 (0)