Skip to content

Commit 9ed387c

Browse files
committed
Add P2A BIP
1 parent 6730ee8 commit 9ed387c

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

bip-paytoanchor.mediawiki

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<pre>
2+
BIP: ?
3+
Layer: Applications
4+
Title: Pay To Anchor (P2A)
5+
Author: Gregory Sanders <gsanders87@gmail.com>
6+
Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-?
7+
Status: Draft
8+
Type: Informational
9+
Created: 2025-09-23
10+
License: BSD-3-Clause
11+
Post-History: 2024-06-27: https://github.com/bitcoin/bitcoin/pull/30352 Github PR
12+
2024-10-10: https://bitcoinops.org/en/bitcoin-core-28-wallet-integration-guide/ wallet integration guide
13+
</pre>
14+
15+
==Abstract==
16+
17+
This document describes a new standard output script called PayToAnchor (P2A) and prescribes making spending of this output type standard.
18+
19+
This output is "keyless" meaning no signature or witness data at all are required to spend this output typea.
20+
21+
==Motivation==
22+
23+
The "anchor" output type is a commonly used pattern in Bitcoin layer 2 systems such as Lightning Network and beyond. This pattern allows transactions which are presigned far in advance to leave a "hook" for CPFP fee bumping later, when prevailing feerates for block inclusion are better known.
24+
25+
When the wallet user is unconcerned by *who* is able to bump the transaction fees as long as someone does, this output type may confer a couple of advantages:
26+
27+
1. Using an output type with minimal output and spending input footprint saves fees on average
28+
2. Keyless operation aids in interoperability of services like watchtowers as there is no privileged key material for bumping
29+
30+
with the drawback that selection of this output type could result in griefing if anti-pinning measures are not taken. If unsure, use in conjunction with [https://github.com/bitcoin/bips/blob/master/bip-0431.mediawiki TRUC transactions].
31+
32+
===Specification===
33+
34+
A P2A output is defined as one with the exact witness output script
35+
36+
<code>OP_1 <0x4e73></code><ref>To be segwit it needs to be a witness version + witness program. This conforms to the smallest witness program size of two. The specific bytes cannot be zeros so they are chosen to spell "fees" in bech32m format.</ref>
37+
38+
corresponding to the addresses <code>bc1pfeessrawgf</code> on Bitcoin mainnet, <code><tb1pfees9rn5nz</code> on public testnets, and <code>bcrt1pfeesnyr2tx</code> on regtest.
39+
40+
P2A inputs are considered standard for spending if no witness data is attached. This avoids meaningless witness padding. Consensus meaning is unchanged.
41+
42+
====Implementation====
43+
44+
* https://github.com/bitcoin/bitcoin/pull/30352
45+
46+
====Related Work====
47+
48+
There are a number of related but separate historical concepts:
49+
50+
[https://github.com/bitcoin/bitcoin/pull/30239 Ephemeral Dust]: Relay policies allowing a single dust output as long as it is spent in a transaction package. As an implementation detail, dust threshold for P2A is set at 240 satoshis by default, other dust levels remain unchanged, and the dust-having transaction must be zero fee. Any output script type may have down to 0-value outputs.
51+
52+
[https://bitcoinops.org/en/topics/ephemeral-anchors/ Ephemeral Anchors]: Historically the union of P2A output type and ephemeral dust. Keyed anchors along with ephemeral dust are also an accepted pattern and as such they remain separate concepts.
53+
54+
[https://github.com/bitcoin/bips/blob/master/bip-0431.mediawiki TRUC transactions]: TRUC transactions bound the topology including child transaction size, which aids in anti-pinning for the P2A output, as anyone can attach a child transaction including an oversized, low feerate one. There is no ineherent dependency on this concept and P2A.
55+
56+
====Backward Compatibility====
57+
58+
Creation of P2A outputs has been considered standard since the deployment of Segwit softfork on the network.
59+
60+
Transactions with P2A inputs were previously nonstandard, reserved as an upgrade hook.
61+
62+
There are no known conflicts with previous usage.
63+
64+
==Acknowledgements==
65+
66+
Thanks to collaborators who helped focus the historical ideas into deployed ones:
67+
Suhas Daftuar,
68+
Gloria Zhao,
69+
Pieter Wuille,
70+
Jeremy Rubin,
71+
and Bastien Teinturier.
72+
73+
==References and Rationale==
74+
75+
<references/>
76+

0 commit comments

Comments
 (0)