bip54: add coinbase locktime and sequence to GBT #2097

pull Sjors wants to merge 2 commits into bitcoin:master from Sjors:coinbase-fields changing 2 files +31 −1
  1. Sjors commented at 7:24 pm on February 9, 2026: member

    BIP54 proposes constraining the coinbase transaction nLockTime and nSequence fields.

    Bitcoin Core’s internal mining code has been doing this since v30.0 (see https://github.com/bitcoin/bitcoin/pull/32155), but currently the fields are only communicated to IPC clients (i.e. Stratum v2, see e.g. https://github.com/bitcoin/bitcoin/pull/33819).

    This PR extends BIP54 with the following BIP22 fields (getblocktemplate RPC):

    • lock_time
    • sequence

    Setting these fields makes miners forward compatible with BIP54, if it’s ever activated, but is not the same as version bit signaling.

    Reference implementation: https://github.com/bitcoin/bitcoin/pull/34419

    Mailinglist post: https://groups.google.com/g/bitcoindev/c/znBz5MA7_Bo/m/CY2uMIenAgAJ

    The BIP22 “See Also” section is updated to link to these changes.

  2. darosior commented at 8:43 pm on February 9, 2026: member

    I sympathize with the motivation here, as i considered extending GBT with those fields a year ago, but eventually decided against. The reason is i don’t think it solves a real problem. If a pool wants to be forward-compatible with BIP 54 it already has all necessary information (the block height). If a pool does not want to spend the time to make the small tweak to their mining pool software, this is not helping.

    I also don’t think it hurts, and i can hear the argument that if these fields are given consensus meaning, then GBT “should”( :tm: ) provide these fields. I just think it does not help with BIP 54 forward compatibility.

    Regardless of the desirability of these additions, i think those should be specified as part of the GBT BIP, not BIP 54.

  3. darosior commented at 8:45 pm on February 9, 2026: member
    Meta-comment: Sjors already knows what i think as we’ve been discussing it for a couple weeks, but we are curious to hear from others.
  4. murchandamus added the label Proposed BIP modification on Feb 10, 2026
  5. murchandamus added the label Pending acceptance on Feb 10, 2026
  6. melvincarvalho commented at 5:13 am on February 10, 2026: none

    BIP54’s consensus fixes are currently uncontroversial.

    Bundling new getblocktemplate additions into it changes that and expands the policy surface. Those additions should be specified separately, where they belong.

  7. Sjors commented at 9:12 am on February 10, 2026: member

    @darosior I tried to make it a separate BIP initially, and it just led to confusion: https://github.com/Sjors/bips/pull/1. I’m not opposed to making it a separate BIP, but it needs to be kept in sync with BIP54 and they have to refer to each other. So it just seems simpler to keep them in one place.

    If a pool does not want to spend the time to make the small tweak to their mining pool software, this is not helping.

    This seems a bit condescending. Pools may feel more comfortable simply using a few extra getblocktemplate fields than having to interpret the BIP themselves and implementing it, even if you offer them personal assistance. @melvincarvalho do you prefer to discuss on the mailing list or here? Cross-posting isn’t necessary. I already replied on the list for now.

  8. darosior commented at 3:13 pm on February 10, 2026: member
    I didn’t mean to be condescending, thanks for pointing it out. What i meant is that they already have all the tools in hand, and i don’t think providing the fields in the GBT response is materially lowering the bar to make their software compatible. In fact having to upgrade to a later Bitcoin Core version that serves these (fairly redundant) fields may be a higher bar than just using the block height information they already get in their existing setup.
  9. murchandamus commented at 8:35 pm on February 27, 2026: member
    It’s been a few weeks since there was action here, is there an update on what should happen here next?
  10. sedited commented at 6:55 am on February 28, 2026: none

    if these fields are given consensus meaning, then GBT “should”( ™️ ) provide these fields.

    I think I agree with this. Maybe also link to the text here from BIP22’s “See Also” section?

    It’s been a few weeks since there was action here, is there an update on what should happen here next?

    Not the author here, but ideally the PR https://github.com/bitcoin/bitcoin/pull/34419 should get some review.

  11. Sjors commented at 3:45 pm on February 28, 2026: member

    Maybe also link to the text here from BIP22’s “See Also” section?

    Done

  12. darosior commented at 4:30 pm on February 28, 2026: member

    if these fields are given consensus meaning, then GBT “should”( ™️ ) provide these fields.

    I think I agree with this. Maybe also link to the text here from BIP22’s “See Also” section?

    I don’t see why, there are fields with consensus meaning that are not provided by GBT. Some even on the coinbase, introduced in soft forks. Why for instance should we provide a coinbase sequence but not a coinbase witness? Why should we specify GBT to have a coinbase sequence but no witness commitment1? The coinbase locktime is the one that would make the most sense, because there is a single consensus-valid value, if it wasn’t redundant. Then providing the coinbase version is just random, especially as this patch proposes adding it to an unrelated BIP. The only thing i would say is worth specifying for GBT is that the “!’ prefix should be set for the bip54 rule.

    As per my previous comment i think the given rationale that it would help pools to upgrade is invalid. But maybe a separate BIP, in the spirit of BIP145, that describes expected behaviour of GBT users, may be marginally valuable. But that doesn’t require adding unnecessary fields, besides maybe specifying the “!” prefix for the bip54 rule.

    In any case, i do not think those changes belong in BIP 54.


    1. i am aware Core provides it, but since this is a PR to the bips repository, this is still inconsistent with how the BIP specifications handled previous soft forks. ↩︎

  13. bip54: add coinbase locktime and sequence fields to GBT 1c2077ebd6
  14. bip22: link to BIP54 getblocktemplate changes 7448736c84
  15. Sjors force-pushed on Mar 4, 2026
  16. Sjors commented at 1:16 pm on March 4, 2026: member

    I dropped the version field so the fields added here are limited to what BIP54 needs.

    Why for instance should we provide a coinbase sequence but not a coinbase witness?

    I think it was a mistake to not include the coinbase witness and the SegWit OP_RETURN commitment in BIP145 (I previously assumed it was specified). It was left to the implementers to do the latter and Bitcoin Core magically adds the former in submitblock:

    0/**
    1 * Update uncommitted block structures (currently: only the witness reserved
    2 * value). This is safe for submitted blocks as long as they honor
    3 * default_witness_commitment from the template.
    4 */
    5void UpdateUncommittedBlockStructures(CBlock& block, const CBlockIndex* pindexPrev) const;
    

    This is brittle, as the comment explains.

    Ideally every coinbase field that’s not static (e.g. the coinbase prevout) and not inherently custom (e.g. the payouts) should be provided by getblocktemplate. That’s also exactly what the current IPC code does.

    However I don’t want to further expand the scope of this PR. Since that means completeness is out of reach here, I dropped the version field.

    Completeness could be achieved in a separate BIP. Although existing pool software already works under current consensus rules, it might still be of use for newly developed pool software (although they should just use IPC imo).

  17. Sjors renamed this:
    bip54: add coinbase locktime, sequence (and version) to GBT
    bip54: add coinbase locktime and sequence to GBT
    on Mar 4, 2026

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bips. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-03-23 05:10 UTC

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