-
Notifications
You must be signed in to change notification settings - Fork 5.8k
BIP-0444: Taproot and Script Limits to Prevent Arbitrary Inscriptions #2005
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
Conversation
|
What's the policy on accepting BIPs that are largely written by an LLM? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Please study BIP 2 for the process; notably, do not self-assign a BIP number
- Are you one of the participants in the linked mailing list discussion?
- Is this your original work, or does it use LLMs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Critical blockers:
- Rule 2 vs 3 contradiction: You both ban
OP_IFentirely (Rule 3) and define limits forOP_IFbranches (Rule 2). Pick one approach. - Rule 7 breaks Bitcoin's upgrade path: Banning undefined witness versions removes the forward compatibility that Segwit/Taproot were designed for. This prevents future soft forks and contradicts BIP141/342 philosophy. OP_SUCCESS* ban breaks BIP342's explicit upgrade mechanism.
- Missing parameter: Pseudocode references
MAX_V1_PUSHONLY_WITNESS_ELEMbut it's never defined in your parameters section. - Rule 4 is too restrictive: 257-byte control block limit caps Taproot trees at ~128 leaves (7 merkle levels). BIP341 allows 4129 bytes for a reason: large trees (1000s of spending paths) are legitimate use cases.
- Pseudocode has bounds-checking bugs: Multiple off-by-one errors and missing overflow checks in PUSHDATA parsing which could cause consensus splits.
Broader concerns:
- Deployment timeline is too aggressive (1-year signaling insufficient for this magnitude of change)
- No ecosystem impact analysis for miners, Lightning, existing contracts etc
- Test vectors incomplete (no hex examples despite specification requiring them)
This BIP needs substantial revision before considering for implementation. The forward-compatibility break alone (Rule 7) should be a non-starter.
Just finished reviewing. Understand the misstep.
I am not, but I don't think it should matter, so long as it has been discussed by others.
Mostly LLM. When using LLMs in my areas of expertise, it works really well for me. It decreases development time and increases the scale of workload I can take on as an individual actor. The problem here is, the bitcoin codebase and developer community SOPs are not my area of expertise. Therefore, my approach is to take Luke's proposal and discussion from the mailing list and get the ball rolling - then lean on the review process to get it right. Very possible there are other efforts I'm not aware of, but generally I don't see others taking action and I do see Luke implying he is tired of being the one to propose and develop fixes, specifically requesting other developers to step up to the plate.
Good point. The BIP conflates temporary policy with intended consensus. For clarification:
Yes, I think it would be a good idea to shut the door. I could be wrong there, but Luke seems sure of the viability and I am mostly leaning on his perspective. Generally, I think it would be great if we reduce bitcoin's usage to just money and leave it alone from that point forward. (Edit: other than bug fixes like the time bug, client UI/UX enhancements, etc)
I can verify and fix that depending on what direction we're going.
Again leaning on Luke's perspective there. I personally would like to know what those legitimate use cases are, if there are some.
I can verify and fix that depending on what direction we're going.
No disagreements with changing that depending on what direction we're going, just a placeholder.
That is true.
Can iterate and improve.
I think that rule was made to be broken so long as it doesn't cause a hard fork and retains bitcoin's purpose as money (without arbitrary data inclusion).
Appreciate all the feedback. |
Good point. We are discussing an update to BIP 3 to cover these situations. For now, it seems at a minimum reasonable to state that:
|
|
@justinfilip Thank you for your replies. I think it's best to close this: A number was self-assigned, this content didn't involve cooperation or collaboration with the contributors to the required ML discussion, and indeed it is mostly LLM-generated, which is a non-starter with respect to community norms and not wasting the valuable time of people working on these critical topics. We'll work to clarify these further for future submissions. Regards. |
Wasting the community's time violates our community norms. LLM slop is therefore also a norm violation. However, it doesn't matter if it's LLM generated slop or non-LLM slop, slop is still slop.
this is not incentive compatible behavior. Also it's not how the BIP process works. Finally, I think it's contrary to your interests because it creates even more work (plus a bias towards defection) for the next person to sort through in order to achieve your goals,. |
Note these are NOT critical blockers. |
hundreds to thousands of spending paths were a specifically advertised and discussed part of the proposal, it's what gives you some forms of efficient sparse multisig. Also just blocking it confiscates coins. |
|
However it got here, with the benefit of hindsight, it's time to do the right thing. It's going to happen whether I'm involved or not, so you should wake up and get to work on Core. The games being played everywhere are pathetic. |
Summary: soft-fork proposal + policy defaults to prevent large arbitrary inscriptions, reduce UTXO/script bloat.
Highlights:
Consensus: tapscript push-run cap (256), IF/NOTIF ban, script push cap (256, BIP16 redeem exception), control block cap (257), SPK size cap (34), undefined witness/taproot versions invalid.
Policy: per-input v1 witness cap (1024 default), tapscript IF ban + push-only IF-body (80), push-run (256), control block (257), SPK size (34), push cap (256), unknown witness off by default.
Deployment: BIP8 with one-year signaling window and delayed min activation.
Link to discussion thread: https://gnusha.org/pi/bitcoindev/CALeFGL0PDjtRt2rfbY4gTkoc+5oNQ0mn_obraE7PrtHuNYFpQw@mail.gmail.com/T/#mb71350c5dfb119efeb92c5ee738b6c8225bf15b6
Note: open to edits per BIP editors’ feedback.