11.3 C
New York
Monday, April 1, 2024

p2p – What’s an ephemeral anchor and what issues do they deal with?


Within the Bitcoin Core PR evaluate membership notes:

Ephemeral anchors are a particular sort of output which might be watermarked (by coverage solely) through a brief static output script. These, together with a couple of coverage floor guidelines, allow a brand new, extra normal “CPFP Carveout” which may sidestep bundle restrict pinning. It additionally permits leisure of output script necessities, rising good contract composability.

Within the draft BIP:

Ephemeral Anchors are a mempool coverage carve-out that permits any worth utxos, even 0-value mud, to be created, supplied it’s also consumed throughout the identical mempool bundle. This ephemeral anchor is a “mutex lock” for the transaction, permitting for strong payment bumping by wallets, not requiring any particular key materials to take action, and avoiding all identified transaction pinning vectors.

Greg Sanders elaborated on the Stephan Livera podcast:

It’s this concept which you could connect an output that does not require any signatures or something. On this case it could possibly be a naked OP_TRUE output that may be zero worth, that’s basically a hook, a lock on the transaction, the place to get this transaction within the mempool it’s important to spend that output. For instance you’ve got two outputs and this anchor then a counterparty can solely spend the opposite outputs if additionally they spend this particular output. As a result of it’s important to spend it it will likely be spent. On this V3 regime there is just one youngster in order that they have to be spent collectively. That makes it a lock on the guardian transaction that claims it’s important to spend this. Anybody can double spend these youngster spends. This unlocks the bundle restrict pinning state of affairs the place within the unique dedication transaction it has two anchors. You possibly can’t get pinned as a result of the outputs need to spent collectively together with this ephemeral anchor.

If we wish to do splicing or make a channel all the good contract scripts have this factor that may be a one block relative timelock, a one block CHECKSEQUENCEVERIFY. All of those outputs have them apart from the anchors and it’s because we try to cease bundle restrict pinning. Sarcastically this typically will be incompatible with Miniscript and it additionally means you’ll be able to’t do good issues like “I wish to splice into a brand new channel funding output but additionally not pin the opposite individual”.

You’re including on these further adhoc measures to cease pinning however that breaks composability with different good contracts. You’d like to splice on to your Coinbase account or no matter however you might need to show to your counterparty that I can not pin you within the bundle restrict sense. However how do you show that? It’s Coinbase, it isn’t even your deal with. Perhaps they’ve dedicated to a Taproot script, we do not know what that’s. It breaks composability when it’s important to introspect all of the outputs and have a look at them and say “Does it have a timelock on it?” That breaks plenty of issues.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles