Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New BIP: Revocable Proof-of-Burn Transaction Template #1362

Closed
wants to merge 3 commits into from

Conversation

veleslavs
Copy link
Contributor

@veleslavs veleslavs commented Aug 31, 2022

This BIP proposes a standard way for making Bitcoin Proof-of-Burn Transactions.

There are many possible applications, such as being:

  • The default trust anchor in decentralised networks.
  • An effective dos-resistant signal for announcements or other low-frequency events.

Please view the proposal here:
https://github.com/veleslavs/bips/blob/bip-rpob-tx-template/bip-rpob-tx-template.mediawiki

Next steps:

  • Update proposal with BIP Number.
  • Collect more peer-review.
  • Collect review in particular with the Taproot Tweak Parts.
  • Update BIP with reference implementation and test vectors.
  • Merge proposal as Draft BIP.

Upon assignment of a BIP number, I will update and convert this Draft Pull Request into a normal Pull Request.

version: 0x3
marker: 0x0
flag: 0x1
txin_count: 0x1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why only a single input per transaction?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @luke-jr, thank you for your initial review.

A transaction that has many inputs could be quite large; it is a requirement that this design is optimized for SPV performance. - Hence the restriction.


I have updated and expanded the 'Other Requirements' section: https://github.com/veleslavs/bips/blob/bip-rpob-tx-template/bip-rpob-tx-template.mediawiki#other-requirements

Transactions are tiny and simple: The RPoB transactions template constrains the rules of the transaction to the minimum. Both size are complexity limitations are used: Single Input, used to limit the size of the RPoB transactions; Single Optional Change Output, used to limit the size of the RPoB transactions; Exclusive use of Taproot, used to limit the complexity of the RPoB transactions.

witness_script: <taproot_witness>
</pre>

*The RPoB transaction input MUST be P2TR (Pay to Tap Root).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, to optimize for low complexity for SPV clients. Please the comment above.

<pre>
rpob_version_flag: 1-byte , 0x00 (initial version).
rpob_secp256k1_public_key: 32-bytes, SECP256K1 compact public key.
rpob_schnorr_signature: 64-bytes, bip-340 Schnorr Signature.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This signature protects the transaction from malleability when made by a second party.

--

I have added the following to the "Signature: Included in Output 1" section:

The signature is included so that the RPoB transaction may be safely constructed and funded by untrusted second parties.


While the ''IsStandard'' rules are quite restricting, it is quite possible to submit transactions directly to miners, or co-operate with miners who would enjoy to have some addition fee-revenue. So the initial process of testing on the main-network should be possible.

If this standard gains significant attention, we are happy to write a supplementary BIP to define a new service bit to allow nodes to signal that this new type of standard transaction is accepted.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Service bits and BIPs are not applicable to node policies, which each and every node operator decides for himself.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, I have updated the document to better reflect the intentions:

If this standard gains significant attention, we are happy to write a supplementary BIP to define a way for participating nodes signal to each other that they accept the relay of RPoB transactions.


<code><32-byte-revocation-puzzle> (if revoked: <32-byte-revocation-puzzle-preimage>)</code>

*Since the digest algorithm is double sha256, even for a very large number of revocation, this index would be very cheap to verify.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated, to state that it is in contrast to, for example, having revocations that are based upon a cryptographic signature.

The secondary purpose is to allow for untrusted parties to create transactions on your behalf. i.e. a 'RPoB' transaction creation service.
===Why waste precious block space?===

Consuming block-space is a of secondary proof-of-burn that this proposal takes advantage of, as itself is limited and contested for (blocks are almost full on average). There is an opportunity cost of the next best transaction when a miner chooses to include a RPoB transaction their block.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds like an attack on Bitcoin.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We didn't quite comprehend what attack you we specially referencing. However, we took some time to expand on this point to make our intentions and philosophy more clear:

--

The authors of this BIP do accept the premise of this question. Each block is a auction of block-space that helps rewarding the miner in their important consensus role. We are not some authority who can define 'waste' from 'economic' transaction. We take the neutral position that if a transaction is willing to pay the transaction-fee-at-auction it must have a economic purpose that supports doing so.

Additionally, this proposal takes advantage of economic opportunity cost that the miner faces when excluding transaction when blocks are full (that they generally are). This allows for the transaction-fees-at-auction to behave as a secondary proof-of-burn.

The authors are not fazed by the possibility that proposal, if gaining significant adoption, will lead to the a meaningful increase of the Bitcoin transaction fees. We regard transaction fees important for long-term health of the network and consider making statements in global consensus networks as inherently costly.


===Why must the revocation output be of zero value?===

Revocation can be spent by anyone once the revocation pre-image has been published.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does it need to be spent at all? It's a one-way signal, right? There's no double-spending to concern with...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We think that this is a very good point and expanded on the topic in the "Other Requirements" section: https://github.com/veleslavs/bips/blob/bip-rpob-tx-template/bip-rpob-tx-template.mediawiki#other-requirements

In summary, including the revocation in the block chain makes them uncensorable, in contrast to a gossip network.


*Revocations are both cheaply indexed and uncensorable: ''Receiving the pre-image to the RPoB revocation signals it's revocation. This is easily indexed and propagated in a gossip network, however gossip networks are relatively censorable. Using the same pre-image, anyone is able to spend the revocation output, rendering this revocation uncensorable.''

* Explicitly note using Taproot Tweaks for locking a RPoB to a particular purpose. (Needs more review by someone more experience in the details of Taproot.)
* Changed the nVersion from 3 to 5. (Other proposals already plan of using version 3).
* Clarified details about the use of block space and fees.
@veleslavs
Copy link
Contributor Author

Expanded the document to include details on using a Taproot Tweak to privately embed a fixed purpose to the transaction:

https://github.com/veleslavs/bips/blob/bip-rpob-tx-template/bip-rpob-tx-template.mediawiki#optional-fixed-purpose-encoded-in-the-key-tweak

This part of the document could really benefit from some review, in particular the nuances of making the verification work according to good practices.

@murchandamus
Copy link
Contributor

Hello @veleslavs, are you still working on this proposal? Has this idea been discussed on the mailing list?

@murchandamus murchandamus added PR Author action required Needs updates, has unaddressed review comments, or is otherwise waiting for PR author New BIP labels May 8, 2024
@murchandamus
Copy link
Contributor

I’m closing this PR because work on this unfinished draft appears to have stopped more than one and a half years ago and there was no reaction to my prior liveliness check. If this assessment is mistaken, please feel free to open a new pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
New BIP PR Author action required Needs updates, has unaddressed review comments, or is otherwise waiting for PR author
Projects
None yet
5 participants