Tuesday, April 16, 2024

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

Within the Bitcoin Core PR assessment 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 basic “CPFP Carveout” which may sidestep bundle restrict pinning. It additionally permits leisure of output script necessities, growing sensible 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, offered it’s also consumed throughout the identical mempool bundle. This ephemeral anchor is a “mutex lock” for the transaction, permitting for sturdy charge bumping by wallets, not requiring any particular key materials to take action, and avoiding all recognized transaction pinning vectors.

Greg Sanders elaborated on the Stephan Livera podcast:

It’s this concept you can connect an output that does not require any signatures or something. On this case it might be a naked OP_TRUE output that may be zero worth, that’s primarily a hook, a lock on the transaction, the place to get this transaction within the mempool it’s a must to spend that output. As an instance you’ve 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 a must to spend it will probably 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 mother or father transaction that claims it’s a must to spend this. Anybody can double spend these youngster spends. This unlocks the bundle restrict pinning state of affairs the place within the authentic 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 the entire sensible contract scripts have this factor that could be a one block relative timelock, a one block CHECKSEQUENCEVERIFY. All of those outputs have them aside from the anchors and it’s because we are attempting to cease bundle restrict pinning. Sarcastically this generally could be incompatible with Miniscript and it additionally means you possibly can’t do sensible issues like “I wish to splice into a brand new channel funding output but additionally not pin the opposite individual”.

You might be including on these further adhoc measures to cease pinning however that breaks composability with different sensible 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 am unable to pin you within the bundle restrict sense. However how do you show that? It’s Coinbase, it’s not even your handle. Possibly they’ve dedicated to a Taproot script, we do not know what that’s. It breaks composability when it’s a must to introspect all of the outputs and have a look at them and say “Does it have a timelock on it?” That breaks a number of issues.

Related Articles


Please enter your comment!
Please enter your name here

Latest Articles