Allow accepting non-standard transactions on mainnet via local rpc #27768

issue joostjager openend this issue on May 26, 2023
  1. joostjager commented at 3:20 pm on May 26, 2023: none

    To mitigate mempool divergence between nodes and miners, node operators should have the ability to submit non-standard transactions to their local mempools. One of the reasons to do so is to improve the quality of fee estimates.

    Acceptance via the p2p network has been discussed in #27578 and is deemed to be problematic. This issue is for enabling non-standard transaction submission for the sendrawtransaction rpc only.

  2. joostjager added the label Feature on May 26, 2023
  3. maflcko commented at 3:37 pm on May 26, 2023: member

    Your question is already answered in the thread you link to. You are even answering this yourself in your reply from #27578 (comment):

    if a restriction can be lifted safely and benefit a specific group of users, why not?

    So if something that benefits someone can be safely lifted, it should be done. Though, doing it as a non-standard transaction submitted manually and locally only doesn’t make sense, as explained in the thread you link to.

  4. maflcko added the label TX fees and policy on May 26, 2023
  5. joostjager commented at 3:43 pm on May 26, 2023: none

    I assume you refer to the following explanation why enabling it locally only doesn’t make sense:

    Its direct peers will simply discard these when your node broadcasts them, and they will eventually be purged from your mempool as any other non-confirmed transaction.

    The scenario that I have in mind though is alternative transport mechanisms for bitcoin transactions that exist outside the p2p network and that are publicly accessible. Miners are incentivised to pull out of that source, and therefore regular nodes should do that too to keep their mempool as much in sync as possible?

  6. maflcko commented at 3:46 pm on May 26, 2023: member
    I’d say if something is safe and useful, it should be enabled for all transport mechanisms. Only enabling it for alternative outside ones doesn’t make sense.
  7. joostjager commented at 3:49 pm on May 26, 2023: none

    How can I then keep my mempool in sync with said public alternative sources of non-standard transactions that will also appear in blocks and impact the fees that I should pay?

    Enabling it for all transport mechanisms appears to be difficult, and local submission only would do the job.

  8. recursive-rat4 commented at 8:19 pm on May 27, 2023: none

    The scenario that I have in mind though is alternative transport mechanisms for bitcoin transactions that exist outside the p2p network and that are publicly accessible. Miners are incentivised to pull out of that source, and therefore regular nodes should do that too to keep their mempool as much in sync as possible?

    Miner’s incentives are more complex than simply put into blockchain anything that pays a satoshi. One may end up in a situation where mempool is filled up with a type of non-standard transactions that miners rarely pick up.

  9. joostjager commented at 7:26 am on May 28, 2023: none
    Could you provide a concrete example of such a high fee rate transaction that nevertheless isn’t included in a block by miners? Also, could you elaborate on why that would be the case? I’d like to better understand their incentives and priorities.
  10. joostjager commented at 1:04 pm on May 29, 2023: none

    @sdaftuar wrote in #27772 (comment):

    Are you unaware that some of the DoS attacks that are prevented by our standardness checks include situations where a block might be mined that would take a very long time to validate, a cost that would be felt by the whole network? See for instance [https://bitcointalk.org/?topic=140078%7CCVE-2013-2292]]](https://bitcointalk.org/?topic=140078%7CCVE-2013-2292%5D%5D). It is absurd that this issue would be ignored in a PR seeking to change mainnet behavior.

    I wasn’t aware of this class of DoS attacks. And indeed, I can’t think of a reason to disable this check. I am not sure if there are no better ways to address this than through policy, but that seems to be another topic.

    Even putting aside the network-wide risks, I think it would be inappropriate for this project to bless a configuration that could lead to our users allowing themselves to be DoS’ed, which seems like the obvious outcome (I have no idea how we would provide documentation to our users to do these risk assessments themselves).

    I see what your saying, but I also want to add that the risk of users DoS’ing themselves depends on the source of the transactions they submit through RPC. The user might be sourcing transactions from a trusted and secure source that has robust (but different) DoS protection measures in place already.

    Generally speaking though, it strikes me as odd that there is no way for me to submit a transaction via rpc to my own local mempool that will later be mined by someone and happily show up in the chain. Thinking for example of >400kw txes. Perhaps there is a subset of standardness that is insufficient on the p2p interface, but safe for rpc?

    In the most recent PR that tried to do something similar to this (which you also commented on), I asked for the particular rules that seem to be problematic (for whatever use case is motivating these PRs) to be spelled out, so that we can discuss – and perhaps there are indeed modifications to our rules that would be fine and beneficial to the network if we adopted. If you’d care to do that here, perhaps progress could be made. Treating our standardness rules as a black box to be worked around, without any consideration for why any of these rules exist, is not helpful and not going to lead anywhere. Concept NACK.

    The reason that I am interested in non-standard transactions is the taproot annex. There seem to be many ways to benefit from this field, and it might also reduce chain space requirements for certain applications.

  11. ajtowns commented at 1:59 pm on May 29, 2023: contributor

    The reason that I am interested in non-standard transactions is the taproot annex. There seem to be many ways to benefit from this field, and it might also reduce chain space requirements for certain applications.

    The way to fix that is to standardise uses of the annex, not to change the node to accept anything into the mempool / relay anything. See also https://github.com/bitcoin/bips/pull/1381 and https://github.com/bitcoin-inquisition/bitcoin/pull/22 (EDIT: replace “isn’t” with “is”, geez)

  12. joostjager commented at 5:04 pm on May 29, 2023: none
    Standardising the annex would be great, but how likely is it that that will be done in policy only without a soft fork? I haven’t followed L1 closely, but it seems that soft forks (as proposed in the BIP) aren’t an easy thing to pull off.
  13. maflcko removed the label Feature on May 31, 2023
  14. maflcko added the label Questions and Help on May 31, 2023
  15. maflcko added the label Brainstorming on May 31, 2023
  16. joostjager commented at 6:12 pm on June 4, 2023: none
    For me the relevant part of this issue is enabling the annex, which is already discussed in several other places. Closing issue.
  17. joostjager closed this on Jun 4, 2023

  18. bitcoin locked this on Jun 3, 2024

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-06-29 07:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me