`any` is a built-in logic function but not a valid type hint
Instead, use `Any`, the special construct from the typing module
that informs static analysis tools.
This commit updates the test vectors to reflect all the changes in the
previous commits and also introduces new test vectors for the Proof of
Funds variant.
* Add draft BIP for dust utxo disposal protocol
* Assign number 451, update preamble, rename BIP file, and add entry to README table
* Small edits
* Change title, abstract, motivation to focus on dust attack UTXOs
* Simpify dust selection section
* Add batching to address consolidation rules
* Fix core version in privacy preservation
* Fix table units
* Add confirmed utxo rationale
* Revert title back to original
* Change output to always be OP_RETURN ash
Used the following `sed` command and manually verified the unstaged
changes. Special cases that were not committed included external links
to Wikipedia which are case-sensitive, links specific lines in code, a
link to a title with a slash that had to be cleaned up, and links to
citations on the BIP repository that contain an underscore.
```
sed -E -i '
s/(\[\[[^][]*#)([^]|]*)(\||\]\])/\1\L\2\E\3/g
:again
s/(\[\[[^][]*#)([^]|]*)([: _]+)([^]|]*)(\||\]\])/\1\2-\4\5/g
t again
' bip-0*mediawiki
```
Both BIPs added a changelog entry on 2026-01-23 referencing the updated
BIP Process meta-BIP with the wrong form:
- bip-0360.mediawiki:404 rendered `[[bip-0003.mediawiki|BIP 003]]`, but
the actual file is `bip-0003.md`. The MediaWiki link therefore failed
to resolve to the BIP 3 page on the bitcoin/bips GitHub wiki render
and on the bips.dev / bip339 style mirrors — readers of the bip-0360
changelog landed on a 404.
- bip-0347.mediawiki:170 wrote the same reference as bare text
`BIP 003` with no link at all, so readers of bip-0347 had no way to
navigate to the BIP 3 they were meant to follow.
Rewrite both entries to use the canonical form `[[bip-0003.md|BIP 3]]`:
- `bip-0003.md` matches the actual filename.
- `BIP 3` matches the display text convention the README (line 40) and
every other BIP in this repository already use when linking to
bip-0003 — "BIP 003" with the three-digit zero-pad appears nowhere
else in the repo for any BIP and is not part of the display style
described in BIP 2.
Also drops the trailing whitespace on the bip-0347 line while we are
there (the `typos` CI tolerates it but it is inconsistent with every
other line in the same changelog block).
This commit proposes a fix for the problem that an offline verifier
previously was not able to even verify the witness stack of additional
inputs. By providing the full finalized PSBT, a verifier has all the
input data necessary to run the script through the validation engine.
We require the PSBT to be finalized to make sure it contains the final
script witness or final script sig but no extra potentially
privacy-sensitive fields. The Non-Witness and Witness UTXO fields are
explicitly allowed for finalized PSBTs, which makes the format perfect
for the use case.
This addresses two discussion items:
- The list of UTXOs should not be interpreted as a "proof that no other
UTXOs for an address exist".
- The BIP only addresses "signer receives funds with the address" and
not "signer sent a previous transaction" use case.
This re-formats the document for easier editing and diff viewing.
Wiki syntax is weird for lists and line wraps break them. Simple lists
were changed to <ul> or <ol> tags but complex lists remain as they are
to not bloat the diff too much.
Exercises [A, -A, A] input key pattern where the intermediate sum
hits zero after the first two keys, but the final sum is non-zero.
Implementations that validate after each pairwise addition (rather
than summing all keys first) will incorrectly reject this case.