Avatar
rieger_san
fd3bd65179381f76e8f8e89925e8ba3db6d3b9a2e6bec42a27ebced97cc520a5
Bitcoiner | Kotlin Developer | Diver | My Lightning Node: https://amboss.space/node/03021b14351ac4da9b7aa3f07c0fde25411a125a1d3384430d742733e7530fe5df

That was a hard bug because it was against the social consensus rules of bitcoin.

Today the case is different, because we don’t have a consensus that bitcoin transactions should not used for inscriptions.

Changing the limits will change exactly nothing. Most miners are profit oriented and they would extremely stupid to change bitcoin in a way they get a smaller reward.

What really happens with such an update is a soft network split. Your node no longer accepts and forwards inscriptions, but others will. This means your mempool differs from others. This can lead to problems when it comes to calculating transaction fees. Because your node doesn’t see all the high fee transactions miners see.

For me it’s not spam. It’s a valid use case within the current rules of bitcoin. Not to forget that I get more sats from mining.

Bitcoin has already a spam protection. It’s called transaction fee. No one can “spam” Bitcoin forever because it costs a lot of money and the outcome is zero.

Replying to Avatar jb55

I’m going to be on an ordinals panels as one of the people who is counter arguing the claim that they are good for bitcoin. I decided to brush up on the technicals on how inscriptions work. I am starting to see luke’s perspective on how it is exploiting a loophole in bitcoin’s anti-data-spam mechanisms.

## Storing data in Bitcoin, the “standard” way

The standard way you add “data” to bitcoin is by calling the OP_RETURN opcode. Bitcoin devs noticed that people were storing data (like the bitcoin whitepaper) in the utxo set via large multisig transactions. The problem with this is that this set is unprunable and could grow over time. OP_RETURN outputs on the other-hand are provably prunable and don’t add to utxo bloat.

Here’s an excerpt from the march 2014 0.9.0 release notes that talks about this:

> On OP_RETURN: There was been some confusion and misunderstanding in the community, regarding the OP_RETURN feature in 0.9 and data in the blockchain. This change is not an endorsement of storing data in the blockchain. The OP_RETURN change creates a provably-prunable output, to avoid data storage schemes – some of which were already deployed – that were storing arbitrary data such as images as forever-unspendable TX outputs, bloating bitcoin’s UTXO database.

Storing arbitrary data in the blockchain is still a bad idea; it is less costly and far more efficient to store non-currency data elsewhere.

Much of the work on bitcoin core has been focused on making sure the system continues to function in a decentralized way for its intended purpose in the presence of people trying to abuse it for things like storing data. Bitcoin core has always discouraged this, as it is not designed for storage of images and data, it is meant for moving digital coins around in cyberspace.

To help incentive-align people to not do stupid things, OP_RETURN transactions were not made non-standard, so that they are relayable by peers and miners, but with the caveat:

1. They can only push 40 bytes (later increased to 80,83, I’m guessing to support larger root merkle hashes since that is the only sane usecase for op_return)

Bitcoin also added an option called -datacarriersize which limits the total number of bytes from these outputs that you will relay or mine.

## Why inscriptions are technically an exploit

Inscriptions get around the datacarriersize limit by disguising data as bitcoin script program data via OP_PUSH inside OP_IF blocks. Ordinals do not use OP_RETURN and are not subjected to datacarriersize limits, so noderunners and miners currently have limited control over the total size of this data that they wish to relay and include in blocks. Luke’s fork of bitcoin-core has some options to fight this spam, so hopefully we will see this in core sometime soon as well.

Inscriptions are also taking advantage of features in segwit v1 (witness discount) and v2/taproot (no arbitrary script size limit). Each of these features have interesting and well-justified reasons why they were introduced.

The purpose of the witness discount was to make it cheaper to spend many outputs which helps the reduction of the utxo set size. Inscriptions took advantage of this discount to store monke jpegs disguised as bitcoin scripts. Remember, bitcoin is not for storing data, so anytime bitcoin-devs accidentally make it cheap and easy to relay data then this should be viewed as an exploit. Expect it to be fixed, or at least provide tools to noderunners for fighting this spam.

## Where do we go from here

The interesting part of this story is that people seem to attach value to images stored on the bitcoin blockchain, and they are willing to pay the fee to get it in the block, so non-ideologic miners and people who don’t care about the health and decentralization of bitcoin are happy to pay or collect the fee and move on.

Data should not get a discount, people should pay full price if they want to store data. They should just use op_return and hashes like opentimestamps or any other reasonable protocol storing data in bitcoin.

After going through this analysis I’ve come to the opinion that this is a pretty bad data-spam exploit and bitcoin devs should be working on solutions. Ideological devs like luke who actually care about the health and decentralization of the network are and I’m glad to see it.

So it’s a valid transaction! And why should we do something against valid transaction? Why is somebody right about how to use bitcoin and somebody is wrong? I don’t like Luke’s ideology against inscriptions.

Im fine when he “fixed” it in Knots, but why should we “fix” it in Core?

Let people decide, give them both implementations and see which wins

The bitcoin blockchain is not a payment system. It’s a base layer which secures the basic rules. It’s great in doing this. It’s not good for day to day payments.

Not to forget that when luke forces his ideology maybe we are becoming a security budget problem in the future when side chains are ready to use and lightning support grows even more.

Inscription is not a vulnerability or a bug. It’s a valid transaction and as long as transactions are valid people can do whatever they want with bitcoin.

Less than 20.000 blocks to go till #Bitcoin halving 🤗

My Car doesn’t start anymore after a year of problems. #Bitcoin #BitcoinerProblems

Why do some Bitcoiners think they can decide how people have to use bitcoin? I’m sick of this shit! 🫣 nostr:note1w2f0fdwlmja23wgns36suf8xpzd0guywpume3vy4thhrvllpww7q4fhmkm

In my eyes yes! I don’t like systems where I forced into. I can stand up by my own. I like to decide freely which insurance and so on I want and which I don’t want. And I’m wrong I don’t want any government money for support.

I’m everything I’m forced into and I have when I have to pay for such things.

The Problem is with the current Fiat standard and governments who become bigger and bigger there is a big tendency for socialism.

It’s not socialism, because this shit can not work by design

GN my beloved #Nostriches and #Bitcoin Maxis