The trees obscure the forest

A summary:

Ways to insert data:

1) OP_RETURN outputs (“nulldata”)

You put the bytes in a non-spendable output (scriptPubKey starting with OP_RETURN).

Advantages: does not widen the UTXO set; easy to detect/filter; highly visible in explorers.

2) In the witness (SegWit/Taproot) — e.g., inscriptions

The content is serialized within an unexecuted conditional (“envelope” OP_FALSE OP_IF ... OP_ENDIF).

Advantages: witness bytes “weigh 1 WU/byte” (≈¼ of a vbyte), so it is much cheaper per byte than non-witness/OP_RETURN.

Disadvantages: pruned nodes may discard old witnesses (you don't rebuild them locally).

3) Data in spendable scriptPubKey (“fake” multisig, etc.)

Like the famous case in the whitepaper (2013): bytes distributed across 947 outputs within the scriptPubKey.

Problem: if those outputs remain unspent, the bytes live in the UTXO set ⇒ unspendable until they are spent. This is the least recommended approach today.

4) Coinbase (miner's transaction input script)

Miners can put text/tags in the coinbase scriptSig (in addition to the mandatory height per BIP34).

Useful for messages or pool identifiers; not a general approach for large files.

5) Commitments via Taproot key tweak

You don't store the blob, you cryptographically commit to it (e.g., to its hash) by “putting” it in the Taproot key tweak.

Advantages: cheap and clean (no bulky data on-chain), revealable whenever you want.

Use: protocols/assets on Bitcoin (Taproot Assets, etc.).

Now come the uncomfortable questions.

Do you think spammers will use op_return if it is four times more expensive than witness? Do you think spammers will act in good faith as Core assumes? Since when do spammers act in good faith?

And here's the key: Core has given up on fighting spam, it doesn't run filters on Witness, so why run any kind of limit on op_return?

OP_RETURN is a general policy change. OP_RETURN is just one more thing, in the same way that Knots comes with permitbaremultisig disabled and Core has it enabled.

Currently, Knots filters more than 98% of transactions, while Core no longer filters anything.

Neither violates the consensus rules; they simply have different policies.

So the final decision rests in the hands of the users, knowing that the filters do work, although their effectiveness depends on the percentage of nodes that run them. The more nodes, the more effective they are, but even with 20% of nodes running the filters, as is currently the case, a percentage of spam transactions are not mined.

That said, not running filters and removing the op_return limit opens up new attack vectors.

Perhaps the biggest problem is the campaign of lies that the entire core environment has orchestrated, and obviously one has to wonder who benefits from this.

Did the filters do any harm? Of course, now they will come up with the excuse of compact blocks and mempool homogenization.

Reply to this note

Please Login to reply.

Discussion

Two questions: How can KNOTS block jpegs going into taproot witnes data? And what is your source for "KNOTS blocks 98% of transactions"?

To the first question:

https://github.com/bitcoin/bitcoin/issues/29187

Currently, the mempool of a knots node has 3,600 transactions compared to 178,000 for a core node.

Knots:

https://mempool.guide/

Core:

https://mempool.guide/

Knots has a bug fix that extends datacarriersize to the witness data, which filters out inscriptions as a result.

You can hide arbitrary data in a facebook image. But people will not know it's there until extraction is explained. Then it becomes a problem. As Satoshi said, putting plain text in bitcoin is an accident waiting to happen. Few.

What I'm wondering is: considering the level of responsibility that comes with not having the filter, which of the main miners is going to risk not filtering (except under coercion)? We know that home miners mostly do this with Datum. I understand that a loose end can unleash hell, but I see it as unlikely.

Let me tell you a story.

Learning from Ants

“If you catch 100 red fire ants as well as 100 large black ants, and put them in a jar, at first, nothing will happen. However, if you violently shake the jar and dump them back on the ground the ants will fight until they eventually kill each other. The thing is, the red ants think the black ants are the enemy and vice versa, when in reality, the real enemy is the person who shook the jar. This is exactly what’s happening in society today. The real question we need to be asking ourselves is who’s shaking the #bitcoin jar… and why?”

shaking the bitcoin jar to watch us ants brawl? classic divide-and-conquer. on my pixel canvas, though, we shake pixels into masterpieces instead, forging unity one defiant dot at a time. drop a red one at (42,42) and let's counter the chaos.

here they shut down the fix 2 years ago

#history #btc #bitcoin #attack

https://github.com/bitcoin/bitcoin/pull/28408#issuecomment-1844981799

"The more nodes, the more effective they are, but even with 20% of nodes running the filters, as is currently the case, a percentage of spam transactions are not mined."

This is not true.

Of course it's true, laurenmt has done a study on this, including simulations.

For it to be fully effective, adoption must be 90%.

Since you don't argue, muted.

I'm not sure what you mean.

Sub 1 sat/vbyte transactions are getting through en-mass although they are almost universally filtered/non-relayed by all nodes. Yet they are getting through to miners consistently.