the stupidest thing about #coretard arguments about allowing OP_RETURN to be bigger (as much as to 100kb) on the basis that it costs more is absurd, because spammers specifically want to pay as little as possible for their pollution.

it is irrelevant to the discussion of how to counter bloat of the blocks, because the cheapest way to spam the chain is by using SEGWIT and the TAPROOT implementation bug that removes the datacarrier limit.

how about stop defending your bad takes, and actually apply your pea brains to the question in hand: how to fix what went wrong when taproot unlocked the size limit on witness?

because that's the hole that is most glaring. instead they are talking about opening up OP_RETURN which by no reasonable logic will have any impact on the material problem that exists.

i thought that taproot would be good, enabling malleability-free signatures, more compact multisig and actually the whole thing was cocked up and was how this whole shit with ordinals on the chain started when someone figured out there was a vulnerability.

almost 2 years later and there's still no resolution for that, but instead we are hearing about how we should change the non-consensus mempool filter to allow more arbitrary data in another place in the code.

like, what the fuck, guys, you aren't doing your job. if the intention was to enable smart contract shit, then sure, but this just lets noise onto the chain, and potentially ugly noise.

fix the datacarrier limit problem, and fuck off with your psychological warfare against people who don't want to relay or store spam on their nodes.

the whole reason why so many people have started running knots is because there is a glaring hole in bitcoin's security against spam and there has been PLENTY of time to do something about it, instead of opening the path to even more irrelevant data, both OP_RETURN and BitVM bullcrap.

it's hard to not wonder whether the core team has got people playing with their minds and nudging them towards turning bitcoin into a tire fire of garbage.

Reply to this note

Please Login to reply.

Discussion

Bitcoin is either censorship resistant or not. Can’t know until there is a good reason to attempt censorship. Apparently the CSAM that has been in the chain since forever isn’t enough of a test, I guess.

A common thread I’ve noticed amongst node runners who care about this is that their use cases for bitcoin would be just as well served by setting blocksonly=1 in bitcoin.conf…

I didn’t hear you continue your point about censorship…

I didn’t. Bitcoin either is or isn’t. None of the current issue of the day changes this.

What makes Bitcoin censorship resistant is decentralised mining, not filter policies. You can have the most draconian filter policies and this still won’t prevent txs from ending in blocks. Highly centralised mining in the state that currently is tho…

Censorship resistance on a monetary protocol while people want to use it as decentralized s3 storage on my hardware, potentially for the worst things.

You already are hosting the worst of illegal numbers. And that shouldn’t change your view on bitcoin.

"Censorship-resistant" always meant "no one can stop you from sending value wherever you want to send it." It never meant sending whatever data, files, or messages you want. Allowing ultra-tiny designators to ride along with the value can perhaps be tolerated, so long as they are not viewed as a precedent for anything else. People who want to mess around or get rich quick should do it somewhere else and leave one of humanity's greatest discoveries the Hell alone.

I agree. I too want bad people to not do bad things or at least do them elsewhere. But whether or not they use bitcoin to do bad things is of no consequence to bitcoin. And if it is, we need a consensus rule change, not blocksonly mode.

Individuals controlling their own mempool is not censorship.

Totally agreed. I’m talking about the CSAM that is more and will also eventually be in the blockchain.

I suspect most of those who feel most strongly about this change would be better served by setting blocksonly=1

I just want a ledger of financial transactions ... I don't want to host your kiddie porn.

But you already do. Perhaps you should be in prison for it? I don’t think so, but a lot of people might.

No I don't.

So you don’t run a bitcoin node? Because there are illegal data stored in the blockchain.

You seem to know exactly where to find CSAM. I suggest you email nostr:nprofile1qyxhwumn8ghj7mn0wvhxcmmvqy2hwumn8ghj7ur4wfcxcetjv4kxz7fwvdhk6qpq50a8n72qa3y8cjlnm55vzugrgyg45jw4zj5s3e0jfjlgag6eeqxst2guwy

Sure thing. What’s your home address?

in case anyone doesn't understand how taproot enabled segwit witness data to be polluted, here is an explanation written by github copilot:

The Taproot upgrade for Bitcoin, activated in November 2021, introduced several changes that indirectly allowed large blobs of arbitrary data to be stored in SegWit witness data. Here’s a breakdown of how this happened:

Background

SegWit (2017):

Segregated Witness (SegWit) separated witness data (signatures and script data) from transaction data, moving it outside the traditional block structure. This change made it possible to include more data in blocks and reduced some limitations regarding the size and format of witness data.

Taproot (2021):

Taproot is a soft fork upgrade that enhanced Bitcoin’s scripting and privacy capabilities. It introduced a new script type (P2TR, Pay-to-Taproot) which uses Schnorr signatures and allows for more flexible scripting via MAST (Merkelized Abstract Syntax Trees).

Key Changes From Taproot

1. Introduction of Tapscript

Taproot introduced a new scripting language called Tapscript, which relaxes certain limits compared to previous script types. Notably, Tapscript removes the 520-byte push size limit for individual OP_PUSH operations in witness data. This means you can now push much larger chunks of data in a single operation.

Pre-Taproot: Each push in a scriptSig or witness could be at most 520 bytes.

Post-Taproot: Tapscript allows pushing arbitrary-sized blobs (up to the overall limits of witness data).

2. No Signature Requirement for OP_RETURN-like Data

With Taproot’s changes, users can create "script-path spends" that simply push data onto the stack and return true, without requiring a signature or a specific public key.

3. Witness Data Is Still Discounted

Because SegWit discounts the weight of witness data, storing data in the witness is much cheaper (per byte) than in the rest of the transaction.

4. Rise of Ordinals and Inscriptions

Developers discovered that Taproot’s relaxed rules allow for the storage of large files (images, text, etc.) in Taproot witness data, which led to the creation of projects like Ordinals and Inscriptions. These leverage Taproot's script-path spends to encode arbitrary data as part of a valid spend.

Summary

Taproot enabled large blobs of arbitrary data in SegWit witness data by:

Introducing Tapscript, which removes the 520-byte push limit for witness data.

Allowing script-path spends that can push arbitrary data and succeed with minimal requirements.

Keeping witness data discounted (cheaper to store).

Result:

People can now inscribe large files (up to the block weight limits) into Bitcoin transactions by embedding them in Taproot witness data.

here's its' take on what would resolve the issue:

To address the problem of users pushing large, cheap blobs of arbitrary data into the witness data section of Bitcoin transactions, a protocol rule change could focus on limiting the size and/or the type of data allowed in the witness, or increasing its economic cost. Here are possible solutions, with pros and cons:

1. Reinstate Per-Push Size Limits in Tapscript

Change:

Reintroduce a maximum byte limit (e.g., 520 bytes) for each individual data push in Tapscript, similar to pre-Taproot script rules.

Effect:

Prevents single pushes of multi-kilobyte or megabyte blobs, making it much harder to inscribe large files in a single input.

Pros:

Simple, familiar limit.

Stops most large data blobs.

Cons:

Can be circumvented by splitting data into many smaller pushes.

May break legitimate advanced scripts relying on larger pushes.

2. Reduce or Remove Witness Discount for Non-Signature Data

Change:

Alter the "witness discount" so that non-signature data (i.e., arbitrary data not used for script validation) is charged at full block weight, or even at a premium.

Effect:

Makes inscribing large blobs much more expensive economically, discouraging abuse.

Pros:

Targets the economic incentive directly.

Preserves flexibility for legitimate witness uses.

Cons:

Requires distinguishing between signature/script data and arbitrary data, which may be challenging in practice.

More complex to implement and enforce.

3. Explicit Protocol-Level Data Push Limits per Input

Change:

Set a maximum total witness size per input (e.g., 10 KB), not just per push.

Effect:

Directly caps the amount of data that can be inscribed in any given input.

Pros:

Simple enforcement.

No need to parse content type.

Cons:

May restrict legitimate use cases needing large scripts or multisigs.

May push abusers to use more inputs per transaction.

4. Disallow Script-Path Spends That Only Push Data

Change:

Add a rule that script-path spends must perform some cryptographic or script validation (e.g., require the use of OP_CHECKSIG or OP_CHECKSIGADD).

Effect:

Prevents witness data from being used purely as a data dump, forcing spends to be "meaningful."

Pros:

Targets the abuse pattern directly.

Still allows legitimate Taproot scripts.

Cons:

May break certain advanced scripting techniques.

Could be hard to define "meaningful" scripts.

5. Soft Fork to Add OP_RETURN-like Restriction to Witness Data

Change:

Forbid non-payment outputs (like OP_RETURN) in witness, or set a strict size limit for such data.

Effect:

Prevents using Taproot witness as a replacement for OP_RETURN, which is already limited.

Pros:

Consistent with existing OP_RETURN policy.

Cons:

Could require complex script analysis.

May impact future extensibility.

Summary Table

Solution Stops Large Blobs? Breaks Existing Use? Economic Impact Implementation Complexity

Per-Push Limit Yes (mostly) Possible None Low

Remove Discount Yes (by cost) No High Medium

Per-Input Limit Yes Possible Moderate Low

Require Checksigs Yes (pattern) Possible None Medium

OP_RETURN Restriction Yes Possible None Medium

Recommended:

A combination of reducing the witness discount for non-signature/script data and reinstating a reasonable per-push size limit would be most effective, minimizing protocol breakage while curbing abuse.

reducing witness discount (it should be removed IMO) and enforcing a per push limit on the mempool would fix the problem.

after that, go ahead and uncap the mempool filter on OP_RETURN, because it's same same at this point. without equalizing the cost of witness data being loaded with crap there is no point touching OP_RETURN

We dont hate core enough

I was thinking about ZK rollups, but I don't know a thing about that really...

I'm so glad to see someone who's more tech savvy saying this. Segwit, too. I get that it solved a problem, but I don't see anyone saying the witness discount was a necessary part of that.

yeah, the witness discount was a trojan horse, for sure

eliminating that shrinks the chain space to 1mb again. it's not gonna break anything, just raise the price of using the exploit.

that should be the first thing they do to fix the problem, not argue with people about the principle of not opening up bitcoin to spammers on idiotic irrelevant points.

the segwit per push limit also is easy to enforce especially at the mempool level but it should be re-enabled, maybe it can be a bit bigger but forcing the users to make more pushes in their script would raise the amount of non-witness data also. so you see, the witness discount is a primary issue that enabled other shit to come into play. i don't think there is any good reason to allow bigger scripts with taproot either. this is just plain shitcoining.

er, i mean taproot per-push limit. that's the second problem.

copilot nailed it on both points, this would be the easiest, least complex, and easiest to justify pair of changes that would quell the raging plebs.

it was a good idea. however the implementation you could say is too naive.

they could have just added a new P2PKH schnorr signature transaction type. it was on the table back then, i remember ranting about it one time after reading up on the options that were being discussed.

instead we have witness discount and a bloated scripting signature algorithm that leaks the spending keys immediately instead of only at the moment of spend. and why, is my question, does taproot not have a limit on push data size?

i remember also the hype around pushing people to roll out taproot and once it hit like 10% of nodes using it the ordinals arrived.

next time additions to the consensus protocol are being discussed i'm gonna sniff it very closely

discussed by whom?

"they could have just added a new P2PKH schnorr signature transaction type"

something like that could be coming with bip-360.

"does taproot not have a limit on push data size"

ofc it has. 520 bytes per op, same as elsewhere.