Conversation
git-subtree-dir: bip-0374/secp256k1lab git-subtree-split: 44dc4bd893b8f03e621585e3bf255253e0e0fbfb
This approach is incompatible with the sys.path extension approach in the next commit which is used to to find the vendored copy of secp256k1lab, so use __file__ instead which works as well.
…alent 12 byte ASCII message types
BIP346: OP_TXHASH
BIP 434: Peer Feature Negotiation
ff501b1 to
717db40
Compare
darosior
left a comment
There was a problem hiding this comment.
One overall conceptual question i have is whether to mandate that nVersion MUST be set to a specific value given by the server when pools actively use it to transmit some job metadata to hashers. cc @average-gary maybe you have an opinion here
bip-coinbase-fields-bip54.md
Outdated
| The `coinbase_sequence` field specifies a value that MUST be used | ||
| for the coinbase transaction input's `nSequence` field.[^sequence] |
There was a problem hiding this comment.
This is inconsistent with the locktime field for the same reason as nVersion but also because it is given meaning by BIP 54.
There was a problem hiding this comment.
See the trade-off comment below: #1 (comment)
Unless miners are currently using this for something, which we should investigate, I'd rather make it safe for future soft forks.
If there's no miner use case right now, but they find one in the future, one can add a new field that adds bit flag, which then takes precedence over coinbase_sequence. Pending such a use case, that seems like needless complexity.
bip-coinbase-fields-bip54.md
Outdated
| that do not understand these fields may ignore them. However, they will produce | ||
| invalid blocks if [BIP 54](bip-0054.md) is activated, unless they independently |
There was a problem hiding this comment.
Maybe a broader sentence "in case they are given meaning in the future, for instance with ..."?
bip-coinbase-fields-bip54.md
Outdated
| The `nLockTime` field could potentially be used as an `extraNonce`, which | ||
| downstream software may need to roll. However, BIP 54 activation would rule | ||
| out this use case. It requires an `nLockTime` that's interpreted as a height |
There was a problem hiding this comment.
I don't think this is a valid "use case". As has been discussed at length, it's extremely theoretical. Much more relevant i think would be MARA's and f2pool's actual use of nLockTime for actually useful purposes.
There was a problem hiding this comment.
I'll link to discussions for both, although the chart you link to gives me no clue on what these pools are doing.
I don't think this BIP should adjudicate use cases. The question is whether downstream software should be able to modify the field, even for bad reasons, or whether it MUST use the value provided by the node.
The trade-off is that if we say MUST, it will work for any future soft fork, but restricts what miners can do now.
There was a problem hiding this comment.
Found a Stack Exchange post that explains the nLockTime use: https://bitcoin.stackexchange.com/a/119370/4948
bip-coinbase-fields-bip54.md
Outdated
| [^sequence]: **Why not use a bit mask?** | ||
| The only restriction BIP 54 proposes for `nSequence` is to disallow |
There was a problem hiding this comment.
This seems fairly BIP 54 centric, whereas my understanding this BIP intends to cover forward compatibility more broadly?
There was a problem hiding this comment.
Other than BIP54, is there any other proposal with specific rules for this field?
Requiring clients to use nSequence as provided is the most flexible, when it comes to future soft forks.
There was a problem hiding this comment.
I don't think so but i think it's good to be as general as possible.
is the most flexible
i agree
|
(confused block version and coinbase version) |
Hmm? Is this mixing up block version and tx version? |
|
Yes, I got those confused. For all three fields, there's a triangle trade-off:
My general thinking about that trade-off is to:
|
BIP-374: vendor secp256k1lab and use it for reference implementation
BIP 324: Clarify equivalence between 1 and 13 byte message types
BIP 324, 434: Specify p2p v2 one-byte identifier for FEATURE message
BIP 434: fix license inconsistency
…oin#2004) * Add Chaincode Delegation BIP * Update license to BSD-3-Clause and expand blinded signing documentation * Address initial PR comments * Update with BIP number assignment * Fix delegator_sign test vector * Upgrade secp256k1lab and add license file - Upgrade vendored secp256k1lab to commit a265da1 (adds type annotations) - Add COPYING file to satisfy MIT license requirements - Document secp256k1lab commit reference in BIP text * Fix type checker and linter issues in reference implementation - Fix TweakContext to use Scalar types for gacc/tacc - Replace HashFunction enum with Callable type alias - Fix bytearray to bytes conversion in blind_sign - Move imports to top of file - Fix boolean comparison style (use 'not' instead of '== False') - Add proper type annotations and casts for dict handling - Remove unused imports and type ignore comments * Address PR review comments on terminology and clarity - Add intro explaining delegation naming (chain code is delegated, not signing authority) - Reorder terminology to list Delegator before Delegatee - Replace "quorum" with clearer "can co-sign for UTXOs" language - Clarify derivation constraints in terms of delegatee's extended key - Rename "Delegatee Signing" section to "Signing Modes" - Fix "delegatee can apply" to "delegator can produce" (line 112) - Replace undefined "caller" with "delegatee" (line 173) - Clarify "Change outputs" to "Tweaks for change outputs" (line 98) - Add note that message is separate from CCD bundle - Add note on application-specific verification (addresses, amounts) - Add transition sentence clarifying non-concurrent protocol scope * Add changelog entry for 0.1.3 * Fix header: use Authors (plural) for multiple authors * Fix BIP header format for CI compliance - Change Type from 'Standards Track' to 'Specification' (valid type) - Change 'Created' to 'Assigned' (correct field name per BIP format) - Change 'Post-History' to 'Discussion' (recognized field in buildtable.pl) * Apply suggestion from @murchandamus --------- Co-authored-by: Jesse Posner <jesse.posner@gmail.com>
* Reduced Data Temporary Softfork * BIP-RDTS: update and expand according to PR feedback * BIP-RDTS: minor updates to wording to address feedback * Address PR comments: update Reference Implementation and Deployment * Address PR comments: Clarify deployment name and bit * Address PR comments: Update BIP number, creation date, and README entry * Address @murchandamus X comment: Add activation threshold * Address PR comments: Update to BIP-3; clarify rationale and deployment * Address PR comments: Clarify scriptPubKey limit rationale and LOCKED_IN behavior
717db40 to
e70196c
Compare
|
I changed the approach to just expanding BIP54. This gets rid of the triangle complexity since inside the BIP54 text we can just assume BIP54 is there. I'm still including version so we get completeness, but it's marked as SHOULD. If you want, please take another look and then I'll open it upstream. |
|
I don't think this should go in BIP 54. This is purely informational and not going to matter for anyone upgrading their pool on any reasonable timeline, and GBT extensions should have their own BIP (see Segwit for instance) |
|
I don't think the SegWit (only) historical precedent means we have to make it a separate BIP. It was a more complicated extension, including a new transaction format. Extending BIP54 fits naturally, given the existing text:
This text explains how to actually do that. The above confusion made it clear to me that writing it as an independent BIP gets confusing.
If bitcoin/bitcoin#34419 makes it into v31 then pools can start setting these values in a forward compatible manner as soon as its released. |
|
Ok, if you insist i guess let's push it upstream for broader consideration and see what others think?
…On Monday, February 9th, 2026 at 1:02 PM, Sjors Provoost ***@***.***> wrote:
Sjors left a comment [(Sjors/bips#1)](#1 (comment))
I don't think the SegWit (only) historical precedent means we have to make it a separate BIP. It was a more complicated extension, including a new transaction format.
Extending BIP54 fits naturally, given the existing text:
> We encourage mining pools to update their software to craft coinbase transactions that are forward-compatible with the changes proposed in this BIP.
This text explains how to actually do that.
The above confusion made it clear to me that writing it as an independent BIP gets confusing.
> not going to matter for anyone upgrading their pool on any reasonable timeline
If [bitcoin/bitcoin#34419](bitcoin/bitcoin#34419) makes it into v31 then pools can start setting these values in a forward compatible manner as soon as its released.
—
Reply to this email directly, [view it on GitHub](#1 (comment)), or [unsubscribe](https://github.com/notifications/unsubscribe-auth/AFLK3FYEFV7SQP4XG24254T4LDDTRAVCNFSM6AAAAACTCCFIE6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTQNZTGEZDGMJRHE).
You are receiving this because you commented.Message ID: ***@***.***>
|
|
Done in bitcoin#2097 |
PR to self for initial feedback.
(initially this was intended as a separate BIP, now it's just an extension of bip54)