<oembed><type>rich</type><version>1.0</version><title>Peter Todd [ARCHIVE] wrote</title><author_name>Peter Todd [ARCHIVE] (npub1m2…a2np2)</author_name><author_url>https://yabu.me/npub1m230cem2yh3mtdzkg32qhj73uytgkyg5ylxsu083n3tpjnajxx4qqa2np2</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2022-02-10&#xA;📝 Original message:&#xA;On Sat, Jan 01, 2022 at 12:04:00PM -0800, Jeremy via bitcoin-dev wrote:&#xA;&gt; Happy new years devs,&#xA;&gt; &#xA;&gt; I figured I would share some thoughts for conceptual review that have been&#xA;&gt; bouncing around my head as an opportunity to clean up the fee paying&#xA;&gt; semantics in bitcoin &#34;for good&#34;. The design space is very wide on the&#xA;&gt; approach I&#39;ll share, so below is just a sketch of how it could work which&#xA;&gt; I&#39;m sure could be improved greatly.&#xA;&gt; &#xA;&gt; Transaction fees are an integral part of bitcoin.&#xA;&gt; &#xA;&gt; However, due to quirks of Bitcoin&#39;s transaction design, fees are a part of&#xA;&gt; the transactions that they occur in.&#xA;&gt; &#xA;&gt; While this works in a &#34;Bitcoin 1.0&#34; world, where all transactions are&#xA;&gt; simple on-chain transfers, real world use of Bitcoin requires support for&#xA;&gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&#xA;&gt; and other long lived Smart Contracts that can&#39;t predict future fee rates.&#xA;&gt; Having the fees paid in band makes writing these contracts much more&#xA;&gt; difficult as you can&#39;t merely express the logic you want for the&#xA;&gt; transaction, but also the fees.&#xA;&gt; &#xA;&gt; Previously, I proposed a special type of transaction called a &#34;Sponsor&#34;&#xA;&gt; which has some special consensus + mempool rules to allow arbitrarily&#xA;&gt; appending fees to a transaction to bump it up in the mempool.&#xA;&gt; &#xA;&gt; As an alternative, we could establish an account system in Bitcoin as an&#xA;&gt; &#34;extension block&#34;.&#xA;&#xA;&lt;snip&gt;&#xA;&#xA;&gt; This type of design works really well for channels because the addition of&#xA;&gt; fees to e.g. a channel state does not require any sort of pre-planning&#xA;&gt; (e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&#xA;&gt; design is naturally immune to pinning issues since you could offer to pay a&#xA;&gt; fee for any TXID and the number of fee adding offers does not need to be&#xA;&gt; restricted in the same way the descendant transactions would need to be.&#xA;&#xA;So it&#39;s important to recognize that fee accounts introduce their own kind of&#xA;transaction pinning attacks: third parties would be able to attach arbitrary&#xA;fees to any transaction without permission. This isn&#39;t necessarily a good&#xA;thing: I don&#39;t want third parties to be able to grief my transaction engines by&#xA;getting obsolete transactions confirmed in liu of the replacments I actually&#xA;want confirmed. Eg a third party could mess up OpenTimestamps calendars at&#xA;relatively low cost by delaying the mining of timestamp txs.&#xA;&#xA;Of course, there&#39;s an obvious way to fix this: allow transactions to designate&#xA;a pubkey allowed to add further transaction fees if required. Which Bitcoin&#xA;already has in two forms: Replace-by-Fee and Child Pays for Parent.&#xA;&#xA;-- &#xA;https://petertodd.org &#39;peter&#39;[:-1]@petertodd.org&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 833 bytes&#xA;Desc: not available&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220210/ddb4235b/attachment.sig&gt;</html></oembed>