pull down to refresh
Effective?Effective?
The content of redeemScripts are another script, which is then executed. Its contents are then also subject to the same OP_PUSHDATA* restrictions. Restricting it is not only unnecessary, but would reduce the ability to make use of the intended script capabilities, and could impact legitimate real-world usage.
By excluding BIP-16, you've missed that one doesn't need taproot for inscriptions, because the redeemscript can be inscribed. This was originally thought up by counterparty in 2015 or so, but they decided against adoption. It has been used on shitcoins though, a lot: I was told back in late 2024 that Dogecoin had seen about 100GB of jpegs and BRC-20 transactions inscribed into redeemscripts at the time. They use pushdata concatenation after the content-type, and a protocol extension to chain multiple inputs on a 520 byte redeemscript limit. This means that your proposal currently exempts a known source of abuse that will simply be shifted to by any spammer.
I've verified this back in the day, but to be absolutely sure that I am not mistaken, I did it again: Here's the first tx I could find on there earlier today with an inscribed redeemscript, and here's the scriptSig asm:
6f7264 OP_1 746578742f706c61696e OP_0 363033343436342e646f67656d6170 6d6d750a756f6b6b367a6d6e6d337555See the problem? You cannot exclude p2sh and p2wsh and claim there will be no inscriptions, and even if you would ban OP_IF in these scripts too, a spammer could put counterparty-style multisig inside a p2sh leaving a large chunk of inscribable bytes per input that cannot be stopped without nuking non-schnorr multisig.
Therefore, my first point was that your proposal is incomplete and I think that it stays true as long as you don't (partially) nuke BIP-16. And if you do nuke it, then many cannot support the proposal because LN uses p2wsh multisig.
Worse, the overhead on chained p2sh inscription spam is said to be very high, so the option provided by Core v30 to just allow large(r) OP_RETURN becomes much less harmful in lieu of addressing redeemscript inscription. I hope that this also illustrates that this isn't something we can easily make watertight, and although I'm personally not a fan of the decision to do default unrestricted datacarrier policy, I do think that it signals that everything has tradeoffs.
Get agreement?Get agreement?
However, there is not enough urgency, in my view, to skip the important process of building consensus among the community. Bitcoiners need to agree that this change is the correct one.
Great! I agree. Here's what I think:
- Build consensus without forced signaling and with at least a supermajority target (but I'd still urge for 95% to not change too much at once). This way you can make your statement by measuring the true support for anti-abuse measures in an anti-fragile way. Even if it fails to activate with a high percentage, the signal is still clear that a permanent solution is desired, and your mission succeeded?
- You will need to either make the solution permanent (very hard, everyone is aware), or reduce the duration significantly to reduce risk and harm. Reduce it to a couple epochs of 2016 blocks?
This way, your proposal can generate maximum signal, minimum risk and introduce limited fragility. It may become a conversation instead of a highly toxic pissing contest then. I'd still not run your activation client because I still don't like the tradeoffs, but I'd look into at least porting it out of the Knots codebase into something a bit more clean, even if just for myself.
TLDR; Force bad, measurement good.
Thanks! I will address key points only for the sake of trying to not write an essay here. This does not mean I agree with everything else, but I guess it's useful to focus on some key things first so that perhaps I can relay why I'm not supporting your proposal in principle, and then later we can go over details if you still want to.
What you're proposing is to make a statement of sorts to all the people you perceive as evil, or, if you get the 55%, that a majority by a small margin would maybe perceive as evil, by temporarily blocking some data storage in consensus, but not all. I'll come back to the "some" point later and why I think that from a technical p.o.v. you will get completely destroyed by spammers post-activation.
I have many reasons for not supporting that on its own, no matter the technical details, per my point 5,6,7 above and my original point about
official, which I now realize I have really done a poor job of explaining. But, your response creates a much worse problem because it treats Bitcoin Core as authoritative. Of course, there is ample evidence of this perception being alive out there, especially within anti-Core camps, but I fear that the assignment of that isn't reality and that it definitely isn't intended as such.Note that I do agree with you that any form of data storage for the sake of data storage alone (and meta protocols in general, no matter if it is Omni, Counterparty, Ordinals, Runes, or otherwise) is abuse. I also think that there are a lot of people that feel that way yet aren't polarized that much that they would support your proposal. The question therefore is not so much whether there is abuse, but rather whether the sacrifices you propose are worth the gains.
Official?Official?
Bitcoin Core is not
official; nothing in Bitcoin is, not since Amir and other freedom maxis challenged that early on. Additionally, post-Gavin, Bitcoin Core maintainers have removed all authoritative elements first, and then, recently, current maintainers made themselves so unpopular by redefining the Github repo "rules" towards a workplace-safety centric design, that it has lost all value other than the raw merit of reviews that do not get censored. This means that it is a reference client only now, but only because it still sees more review than any other node software despite some (still relatively light) moderation.Of course, going from defacto standard software to mere reference client is a gradual transition, and the most powerful option that always exists for a protocol would ideally be adopted while the mindset adapts: the option of
doing nothing. This is extremely important and I feel that across the whole of the debate, this option is insufficiently valued. Everyone lets themselves be stressed into taking action and this is detrimental to Bitcoin, because it decreases stability. The most important thing that Bitcoin offers is a very stable core consensus protocol. This also aligns with what you're saying about why other blockchains are a complete disaster when it comes to money-ness, though I think that there aren't that many that actually even remotely try to be money.The root issueThe root issue
The recent change in Core v30 to remove the
datacarriersize limit in policy does run counter to this. It would have been better to not change it, and pressure of a group like Citrea should in my opinion never impact a single line of code in the reference client. If it were me, I'd just tell themno, but it isn't me, so we are where we are. If your fork succeeds and people end up left behind, then it would strengthen the perception that Bitcoin is fragile though; that's also not a good outcome.Your assertion
is fundamentally mistaken. No one - not Core, not Luke, not you, not me and most importantly, not even the majority - currently has the authority to sanction anything on Bitcoin, other than the blocks they mine. This is why stackers here call you a
censor, because you're assuming that because some perceived majority, by you but not by me, believes that there is a democratic authority in Bitcoin consensus, but this is not what Bitcoin has ever been. Consensus rules have always been extremely permissive and this is why I fundamentally disagree with your proposal: you're proposing to change Bitcoin's design philosophy because there is no consensus on how to handle the perceived problem. And because there is no consensus, the implementation is moving the goalposts on what consensus is: where we've had over a decade of 95% activation threshold, you're redefining this in 2 ways, and I read your reactions for this to be because you already know that there is not going to be full consensus:This means that you propose to
reduceconsensus instead ofbuildingit. I can't help but feel that this can turn into authoritarian action by either a subset of current miner consensus, or by an undefined quantity of economic nodes, and that would imho be awful.But it's temporary, so it's fine? I am of the opinion that it cannot be temporary if the duration is a whole year.
Temporary?Temporary?
If nothing is solved permanently after a year-long restriction then I expect that out of spite, Bitcoin will be flooded with spam by those that have been doing it in the past. We've seen some pressure already being directed towards Core from Ordinals people to not adopt filters. If however you want a suitable permanent solution to your perceived problem to occur, then you need to build consensus. You seem to recognize this too, but you're really doing the opposite by weakening deployment requirements, so your proposal is not enabling this: your proposal, if it would actually do the whole job and is activated, would de-escalate the perceived problem and it will become less urgent to fix it permanently.
You also cannot just "extend" it. It's another softfork to do so because that's how consensus changes work - after all, you've hardcoded the expiration - because every client/miner would need to once more confirm they are up for another year: it would need to be signaled for readiness once more, which costs time and effort of the entire network.
After a year however there could be multiple protocol enhancement proposals wanting activation and they will want inclusion. But the only way you're going to get inclusion is by introducing all the code for that enhancement into consensus to support their fork and integrating it into there. This means that whomever gatekeeps the activation of the followup year, also gatekeeps which proposals can go through. Activations are gatekept because a versionbit must declare a specific behavior (after bit lock-in which iirc we don't do anymore since moving away from ISM), so you cannot run variant activations under the same bit and we may see competing proposals rather than parallel activation.
The only scenario that I see where this will create urgency is if spam is gone, then there is no extension, spam comes back, and then there is increased urgency, but it will be of our own making. However, because there will be reduced pressure in the meantime, this means that the solution will have to be proposed under artificial pressure. Pressure is a massive risk, but I don't think it will go like that with your current proposal.
(1/2)