If you are already convinced of why you should stop spam, you can go directly to the installation instructions page.
A clear increase in transactions entering mempool.space can be seen starting February 2023. Until today, such increases are usually only experienced by the network during the so-called “bull runs”, making this one a noticeable anomaly. mempool.space
Soon after the beginning of the 2023 spam wave, non-financial transactions have been occupying about 50% of the available blockspace, except during short breaks. This chart does not consider data storage transactions that use bare multisig. BTC spam analysis
Although non-payment related transactions occupy about 50% of each block, the majority of the fees paid in each block are still coming from payments. This data shows how non-payment transactions (spam) are displacing payment transactions, this is forcing non-payment transactions to pay a much higher fee to be included in blocks. BTC spam analysis
The size of the UTXO set, number of unspent UTXO outputs, has seen a drastic increase since the beginning of the 2023 spam wave. This is partially due to Inscriptions/BRC-20 but mainly due to spam that relies on bare-multisig data to store data on the timechain. UTXO set size
During waves of spam, spam is always defended by spam supporters/defenders by claiming that spam is subjective and that what is spam for you might not be spam for someone else, as they might have a use for it. This section aims at addressing this mischaracterization.
Spam opponents often tend to define or characterize spam by defining it based on the purpose of the network (Peer-to-peer Electronic Cash system), although there is truth in this characterization, it is an argument that can be hard to defend as the purpose of the network is a concept that can be seen as subjective. However, spam can also be recognized by anyone, even intellectually honest spammers, thanks to two main characteristics:
Transactions with no practical value or purpose, such as those submitted by supporters of big blocks during the Blocksize wars for example, are characterized by wastefulness as their output was too small to spend. Other examples of wastefulness are transactions that are sent back and forth repeatedly to the same addresses, transactions which carry no state information, transactions purposelessly split into hundreds of tiny outputs that are then recombined in the next transaction, …
These transactions are malicious partly because they are wasteful, creating a backlog in the mempool that drives up transaction costs unnecessarily. The 2023 wave of spam is especially egregious because it involves storing obscenely large and unoptimized state data using methods that abuse several of Bitcoin’s functions, such as the segregated witness script discount,
OP_FALSE codes, and bare multi-signatures.
“(…) There’s a reasonable argument that this sort of data is toxic to the network, since even though “the market is willing to bear” the price of scares blockspace, if people were storing NFTs and other crap on the chain, then the Bitcoin fee market would become entangled with random pump&dump markets, undermining legitimate use cases and potentially preventing new technology like LN from gaining a strong foothold. (…)” - Andrew Poelstra, 2023 January 27, Bitcoin-dev mailing list
These transactions can be classified as spam due to their ignorance or malice, they could also occur off-chain relatively easily through NFTs with reference hashes or BRC-20 tokens with reference hashes much more efficiently and this was already proposed several times. Functionally, the result would be the same as it would allow users of this “standard” to verify the data without overwhelming the chain. BRC-20 tokens are not optimized at all for example and use clear JSON (!) instead of HEX or base64 encoding, demonstrating a complete disregard for the shared resource of the timechain. This failure is particularly concerning since they account for more than 50% of the average block’s size, as shown in the BTC spam analysis blocksize graph despite being avoidable with a more responsible usage.
“(…) people really don’t like this [NFT, Ordinals] and I apologize because they are kind of my fault that all that script limit relaxation I was talking about for TapRoot - that’s why we can do it. (…) relaxing this script limits (…) makes one particular form of data stuffing possible.” - Andrew Poelstra, 2023 August 28 , Stephan Livera Podcast episode 507.
The two characteristics presented here are a simple way to recognize spam that most likely violates the purpose of the network and the desired behavior, and Bitcoin actually supports other protocols that submit non-payment transactions which are not considered as spam by most participants. A good example is the OpentimeStamps protocol (there are also many bad examples), which uses Bitcoin for blockchain timestamping and is not considered as spam by most participants in the network as it generally does not present the two characteristics presented above: it uses shared resources efficiently and does not misuse Bitcoin’s functions.
The statement implies that any policy applied to your mempool, which temporarily stores unconfirmed transactions in your Bitcoin node before they’re added to blocks, is a form of censorship. However, this argument is wrong because mempool and relay are not forced on you by anyone and are not enforced over the whole network under threat; instead, they only allow you to take control over your own mempool and relay policies to prioritize or refuse to store or relay certain types of transactions. This is the opposite of censorship, this is what sovereignty means. This set of rules can be defined through your
bitcoin.conf file to describe what a valid transaction is from the point of view of your own mempool.
Policy is everything that is not consensus. Modifying your mempool and relay policies does not go against consensus as you’re only affecting what happens before transactions are included in a block. Your node will still receive, record and relay all blocks that are mined by the network and your node will remain within consensus.
Mempool policies are necessary for ensuring efficient and effective usage of the limited resources in the Bitcoin network during periods of high traffic or congestion while also prioritizing critical transaction needs like payments. Nodes are responsible for enforcing their belief of the purpose of the network, these policies are your voice on the network.
Censorship is defined as the suppression of speech, public communication, or other information, and is enforced by a central authority that will rely on violence or punishment to force everyone to delete and suppress of said information. In the case of mempool and relay policies, since each actor is free to set their own rules without being forced to apply a specific set of rules (default rules are often kept by most users but that is a different subject), it is thus obvious that these policies are the opposite of censorship.
In the case of spam, refusing to store or relay it with your node can be defined as resource management or moderation, not censorship. Refusing to relay information that is not aligned with that purpose is a form of moderation, the same way an academic journal about physics will refuse a publication submitted about psychology. Publishing it would otherwise inconvenience most of the readers of that journal who are subscribing and reading that journal because they are interested in advancements in physics. The main difference in the case of Bitcoin is that the moderation and its enforcement is decentralized over all nodes through mempool and relay policies.
In addition, other users are not entitled to your node’s resources. If you choose to not store or relay some transactions with your node, that is well within your property rights.
Running a node is an active process. You might have been told that if “you’re running a node, you’re good”, that is just the first step. Noderunners must remain ever-vigilant and ready to act in case of attack. This is effectively what makes Bitcoin anti-fragile.
Spam defenders will often point to the fact that a spam transaction is valid, in the eyes of the protocol, because it pays the required fee and respects the structure required by the protocol. Although this is true, it does not mean that the transaction cannot be a spam transaction. By definition, spam will always be a valid transaction, it would otherwise not be relayed through mempools and won’t be included in a block. That does not mean that some valid transactions are not violating the two definitions previously defined, meaning that the transaction can still waste the shared resources of the network and/or abuse one of Bitcoin’s functions for a malicious intent.
Discussing the validity of the transaction is not the issue and participants should not let the debate diverge in that direction. Spam will always be valid, the questions that should be discussed are:
Another important detail is that some of the spam from the current wave, mostly inscription-based spam, can be considered to not be paying a fair fee as it circumvents the fair fee market by injecting data into the segregated witness space in order to benefit from a x0.25 discount. This is not the case for bare multisig based spam or
OP_RETURN based spam.
Because Bitcoiners strongly believe that Bitcoin will be adopted by more users who see a need for Bitcoin’s properties (citizens experiencing significant currency debasement, institutional users who require fast finality, users trying to circumvent capital controls, …) combined with the choice to maintain a limited blocksize, there is a strong belief that transaction fees will become prohibitive in the future, excluding small users from ever using on-chain transactions. The hope is that Layer 2 solutions will be ready by then.
A common argument presented about the fact that spam induces high fees is that we all knew that high fees were always going to be high, so high fees shouldn’t be an issue. This is argument is flawed for two reasons:
This second point can easily be understood whit a simple thought experiment:
A common argument presented by inscription supporters is that Satoshi themselves started the trends of injecting data in the timechain with the Genesis block message. This argument is simply wrong since Satoshi did not subvert (2nd characteristic of spam) the protocol to “inscribe” data, they simply used space already available in the Coinbase data that is designed to allow miners to broadcast arbitrary data. It’s always been part of Bitcoin and didn’t introduce any wastefulness.
More information here.
In addition, this argument does not really matter as Satoshi’s initial actions should not be blindly followed and used to justify your actions. Everybody can make mistakes, and no one can plan for all future scenarios, especially in a complex system such as Bitcoin that is highly unpredictable.
This event, instead of being taken as a justification that Bitcoin should be used as a perpetual highly-replicated database, should be considered as a celebration of the right ways you can post data on chain in a responsible way as it uses an existing method to store arbitrary data by miners that doesn’t obviously circumvent a Bitcoin function.
Another way to do so would be to use the
OP_RETURN code as it would signal to the network that the data included in the
OP_RETURN can safely be discarded outside of the UTXO set. Participants have been and are using
OP_RETURN codes today to store short messages on the timechain and these are not considered as spam. If you’re curious, you can explore these messages on opreturnbot.com. Learn more from the Bitcoin Explained Podcast.
It’s still important to highlight that when the
OP_RETURN code was released, it was clearly specified that “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.”. Another extremely important point is that
OP_RETURN data is still stored on nodes forever, that is the reason why they are limited at 80 bytes, but
OP_RETURN data does not benefit from the segregated witness discount.
Inscriptions that are omni-present in the 2023 wave of spam basically have the same impact on the network as
OP_RETURN data except that they benefit from the segregated witness discount and manage to go above the 80 bytes limit using the
OP_FALSE injection scheme.
The popular notion that miners are inherently selfish and solely driven by profit has become a pervasive narrative within the Bitcoin community. The origin of this narrative is unknown and unclear. Originally, the Bitcoin whitepaper only mentions the term “greed” once, and that is in the case of an attacker. This belief is not necessarily grounded in reality or based on sound reasoning. In fact, it overlooks two crucial points:
Because of the two previous points, it is evident that miners must be aligned with the long term success of the Bitcoin network. In a sense, this does not mean that miners cannot run on high-time preference greed only, but that miners must care about low-time preference greed as well as high-time greed, and play a role in the network that balances the two. This directly contradicts the narrative that the system must run with high-time preference only greedy miners.
Spam being by definition wasteful and often serving malicious intents not only affects the efficiency of the Bitcoin system, which is already quite limited due to the blocksize, in addition to affecting its main usage as an electronic cash, which is where it derives its value from. If spam starts dominating the content of blocks, which is currently the case as of December 2023, it will displace monetary transactions outside of the network and degrade its value as an electronic cash. This is already case as can be seen from the increase in transaction volume on the Liquid network or the volume increase of the Canadian Purpose ETF BTCC, which directly affects the usage from which Bitcoin derives its long term value.
So, like, I find it funny, some people have been critical saying, well, you know, if you’re a miner and you’re mining with Ocean and you’re not getting every fricking sat in every single block that you’re doing a disservice to your investors or your owners or you’re not maximizing economic advantage.
But if, let’s say, let’s say there is a mining pool or a mining organization that makes a contribution, let’s say, to an organization like Satoshi Action Fund or the Bitcoin Policy Institute.
How is that really any different?
I mean, that seems like an investment in the long term benefit of Bitcoin.
[…] One of the ways I like to phrase it is like, I think if I’m a miner, which I am, right, I feel I have an obligation to protect the mothership.
And, you know, the mothership is the Bitcoin in the way that permissionless, censorship free, all these sort of attributes that we know and love.
Like I have an obligation to protect that. And so if I choose to protect it by looking at the transaction set and selecting a certain group of transactions that I believe protect the mothership in the long run and those attributes, then I feel that is the best economic decision.
A common argument presented by spammers and spam enablers is that spam should be forgotten about because nothing can be done about it. This argument is simply wrong. In the past, spam has been stopped using filters and through the participation of miners. The arguments presented to argue that you shouldn’t try to stop spam are divided into two categories:
The second argument was already addressed and won’t be discussed again here.
Regarding the first one, an important point about it is that it is a purely technical argument. However, spamming is not only a technical issue. Spammers are ready to pay high TX fees to get their spam into blocks mainly because they are hoping to make a profit out of the spam. The profits made by spammers rely on a network effect around the standard they adopted to spam. That is partly why spamming using extremely inefficient data storage methods continues to be dominant although more efficient “standards” to store data on-chain have been proposed. Updating default filters sends a strong message to signify that certain data injection methods are not desirable and that actors who rely on them are using non-desirable methods. Simply updating default filters in the past has worked, but for reasons unclear, Bitcoin Core developers have refused to consider spam as a significant issue since Taproot and did not take any action at all to update default filters.
Breaking the network effect of a certain “standard” of spam is critical as it forces spammers to adopt a new standard and resets the whole process of building an eco-system and creating a community around it. This also sends a strong signal to external sources of funding that might want to support spammers that future investments are at risk of being rejected by the network at any moment.
There is no other way to fight spam other than through a cat & mouse game and there will most likely never be an absolute solution to spam. That is because, by nature, spam will try to camouflage as valid content in order to waste and misuse shared network resources. The mouse needs to build ecosystems that can generate a profit out of the spam, that is always a costly endeavour that requires funding to build up a network effect around a source of revenue. The cat can easily become better at this game. Developing filters to identify and block new sources of spam is trivial as spammers will usually have to reveal how to identify spam in order to build marketplaces for example around it. All the types spam of the 2023 wave use “explorers” to identify and present each type of spam, these software can be used to identify the spam.
If spammers eventually make spam so efficient that it becomes indistinguishable from Bitcoin currency transactions, so much so that it cannot be identified anymore, it will most likely won’t be considered as spam anymore because of its efficiency. Until then, it is hard to imagine any path or solution other than continuously repealing spam.
Interestingly, spammers also propose that financial transactions should be updated to “improve the incentives and infrastructure for the transactions you DO want to see”, namely Bitcoin currency transactions. This obviously contradicts the narrative discussed here, as it means that something can be done, as long as it is what the spammers want you to do. It is the only way to solve this issue according to them. The changes hinted at by spammers are significant as they would require a soft or hard-fork in order to make the native currency, bitcoins, of the network better compete with spam (which is a nonsense as Bitcoin currency transactions are much more efficient). At the same time, spammers insist that nothing can be done and that a kind of significant update is necessary.
Watch @LukeDashjr’s interview during which he explains why although spam filters won’t definitely stop spam in one day they are a necessary first step in the social consensus to eventually do so:
Francis Pouliot proposed a simple challenge to prove that some things can be done and that one of those things is simply introducing filters. In a tweet, he challenged someone claiming that “spam filters don’t work”, meaning that mempool policies don’t work - see Mempool policy is censorship, to send 100 sats to a specific address.
Please send 100 sats to this address— FRANCIS - BULLBITCOIN.COM (@francispouliot_) January 6, 2024
This challenge aims at showing that filters do work because Bitcoin Core currently has a default dust filter that makes it very hard to get a 100 sats transaction relayed.
Please send 100 sats to this address bc1qc3qlmus3udzwrfxtkja8upe33jvlydwy2cjr96
One of the participants to the conversation who accepted to take on the challenge has explicitly stated that they submitted such a transaction to a miner, allegedly Luxor, to mine this transaction as they know it won’t be relayed by the network because of mempool policies. This action simply proves that mempool filters do work as they had to collude with a miner to get their transaction in a block, which didn’t happen yet more than 4 hours after the challenge started because they need to wait for the miner they colluded with to find a block. This also means that the miner will have to continuously include this 100 sats transaction in their templates and that chances of this transaction making it through are as high as the hashrate share represented by the pool of that miner. This will of course mean that if transactions ready to pay a higher fee present themselves meanwhile, they might have to reject them to keep the 100 sats transaction if the block is already full. One of the participants who tried to do so actually explained that they tried sending a 100 sats transaction to a larger pool, ViaBTC, which would maybe get it through faster, but that it got rejected - most likely because of mempool policy (filters.)
The transaction will eventually make it through, but it required colluding with a miner that’s willing to take it Out of Band, outside of the mempool, and that strongly limited the reach of the transaction since only a single pool is working on it which relegates it to the next block found by that pool. Currently, spam is mined by all miners which makes it present in blocks.
lmao they are literally proving how effective spam filters are in real time— Asher Hopp (@AsherHopp) January 6, 2024
instead of confirming in 10 minutes, my math shows there's a 50% chance of the spam transactions getting mined in the next 6.5 hours. And it cost more.
Huge L for spam apologists, down bad
Miners can try to put whatever they want in blocks, the only workaround nodes have against that is to reject a valid block (meaning that it has a valid Proof-of-Work that answers the Difficulty condition) that contains some transactions or data proposed by a miner.
The argument in support of UTXO aggregation that suggests it can mitigate spam on the Bitcoin network is a compelling one. Covenants, which are a type of script used to share UTXOs between users without requiring custodial services, would make monetary transactions more cost-effective and thus better equipped to compete against spam. However, an important detail that needs to be acknowledged is that covenants reduce the amount of fees miners receive, which goes against their economic incentives. Lightning, a type of scaling solution, also falls into this category as it reduces miner fee income.
This argument presents an apparent contradiction with the idea that spam filters are not economically feasible because they too go against miner incentives. This raises an interesting question: why would miners accept Covenants or Lightning but refuse to implement spam filters?
The answer lies in the fact that spam filters, like CTV and Lightning, ultimately improve network efficiency, which will have a positive economic impact on miners as it increases the overall value of the Bitcoin network. Mining is not just about earning fees; it also involves securing the blockchain through mining work. By improving network efficiency, these solutions make it more profitable for miners to secure the chain and receive block rewards while reducing their dependence on transaction fees. As a result, they become economically beneficial for all parties involved - users, merchants, miners, and Bitcoin as a whole.
“The best scaling solution is a chain without spam.” - Greg Tonoski, 2024 January 30, Twitter.
Another trend emerging with the preponderance of spam is its growing use as an excuse for forcing fast adoption of scaling solutions. While some may argue that immediate action against spam attacks are necessary in order to mitigate challenges or other environmental considerations - this argument falls short given how such artificial spam scenarios are not necessarily representative of current real-world usage patterns within the Bitcoin blockchain ledger system for Bitcoin, a much more rational approach would be to address the spam directly first.
Some supporters of spam and scaling solutions have even gone as far as explaining that they intend to put pressure on Bitcoin through artificially generating large amounts of spams in order to push for fast adoption of many scaling solutions - this development presents a serious danger given how such artificial spam scenarios could potentially force developers into quickly accepting a scaling solution, which might not be fully ready, tested or that might introduce new weaknesses, efficiencies or even attack vectors. It is therefore essential to avoid such situations by ensuring an appropriate and measured response towards addressing any potential spam challenges in a responsible manner rather than rushing into quickly accepting many scaling solutions under artificial spams attack scenarios.
Scaling solutions are important and critical for the future development of Bitcoin, however, that does not mean that Bitcoiner should be forced into accepting all and any scaling solutions because of spam.
The following thread by @KLoaec, Wizard Sardine’s CEO - the developers of the super interesting Liana wallet that already offers time-locks and recovery options akin to vaults, has an underrated thread about this subject:
If you needed Vaults so bad, you would already use some.— Kevin Loaec 🧙♂️🐟 (@KLoaec) January 18, 2024
Sure, UX without covenants is a massive pain, but if it's enough to deter 100% of people and companies, maybe it's not that "needed" after all.
Don't get me wrong, as a builder on later 1, I absolutely want covenants. 1/5
False. High Bitcoin fees don’t stop spammers who have been the top payer for a year already. They increase their profit from clogging the Bitcoin network by exploitation of Segwit mispricing and other vulnerabilities that put genuine, monetary transactions at disadvantage.
This statement would mean that Bitcoin is perfect and has no flaws or surface attack at all. This will most likely always be wrong. The reason why everything is good for Bitcoin is that Bitcoin can adapt, thanks to its nodes allegedly, against attacks and defend itself that way. But this requires an immune reaction that is currently considered as useless.
Nothing is indestructible, nothing is perfect. Bitcoin need participants to actively defend it and address new attack vectors. That does not mean implementing soft-forks to defend against everything. Mempool policies, relay policies, long-term miner incentives, social campaigns, … are all part of the toolkit that needs to be gradually deployed to defend the network. This toolkit can become increasingly more aggressive until the ultimate “defense”, in the case of a miner concerted attack for example, where nodes would migrate to a new Proof-of-Work algorithm and reject SHA256 mined blocks for example.
A more detailed version of these instructions can be found here.
-datacarrier=0 (if you are using knots 25.1 or later)
Don’t forget that if you don’t even use your node to broadcast your transactions and check the state of the chain or TXs of interest to you on-chain, your node plays no role at all in the network.
It is true though that if it’s a full node, it could at least help someone synchronize their own node at some point in the future, which is the reason why it is important to keep the ability to run nodes affordable for most users.
Admittedly, that was largely my fault.— Luke Dashjr (@LukeDashjr) January 5, 2024
In 2011, I started the "Free transaction relay policy"/network removing most (all?) policy restrictions.
Eligius also would mine any transaction indiscriminately.
In September 2010, a proposal was made on the BitcoinTalk forums about a DNS protocol that would rely on Bitcoin. A quick description of this project is provided here from the bitcoin.it wiki:
Bitdns was a project with the goal to extend Bitcoin’s technology to a domain name service, expanding the software to support transactions for registering, updating, and transferring domains. The project eventually became an altchain with its own altcoin, known as Namecoin.
Do you think SatoshiDice is blockchain spam? Drop their TX’s - Solution inside. SatoshiDice spam in mempools was the primary concern. Unlike other types of spam, SatoshiDice didn’t append arbitrary data to transactions recorded in the main chain.