Bitcoin Knots has been nothing more than a Denial-of-Service attack on Bitcoin

Shinobi

In computing, a denial-of-service attack (DoS attack; United Kingdom: /dɒs/ dose US: /dɑːs/ that’s it[1]) is a cyberattack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely interrupting the services of a host connected to a network. – Wikipedia definition of denial-of-service attack.

This is a very basic concept. Someone uses their own resources to disrupt the operation of other machines on a network.

DoS attacks have been a problem for as long as the Internet has existed. One of the widely claimed “first Distributed Denial-of-Service (DDoS) attacks” was against Internet Service Provider (ISP) Panix in the mid-90s. There were, of course, many previous technical examples of legacy Internet services, but this was one of, if not the first, major examples of such an attack on the modern World Wide Web.

This attack caused numerous computers to initiate a Transmission Control Protocol (TCP) connection with the ISP’s servers, but never complete the handshake protocol that terminated the connection. This uses the server’s resources to manage network connections and prevents honest users from accessing the Internet through the ISP’s servers.

Ever since this “first” DDoS attack, they have been as common on the Internet as storms are in nature, a regular occurrence that massive pieces of Internet infrastructure have been built to defend against.

Blockchain

Blockchain is one of the core components of Bitcoin, and a necessary dependency for Bitcoin’s functionality as a distributed ledger. I’m sure many people in this space would call so-called “spam” transactions a DoS attack on the Bitcoin blockchain. To call it that, define the “service” that blockchain offers as a system, and explain how spam transactions deny that service to others in a way not intended by the system’s design.

I bet most people who think spam is a DoS attack would say something like “the service that blockchain provides is processing financial transactions and spam is taking the place of people trying to do that.” The problem is that this is not specifically the service that blockchain offers.

The service it actually offers is the confirmation of any consensus valid transaction through a real-time auction that is periodically settled when a miner finds a block. If your transaction is consensus valid and you have bid a high enough fee for a miner to include your transaction in a block, you are using the service that the blockchain provides exactly as designed.

This was a conscious design decision made over years during the “Block Size Wars” and culminated in the activation of Segregated Witness and the rejection of the Segwit2x block size increase through a hard fork pushed by large companies at the time. The blockchain would work by prioritizing the highest bid fee transactions and users would be free to compete in that auction. This is how block space will be allocated with a global limit to protect verifiability and a free market pricing mechanism.

Nothing about a transaction that some arbitrarily define as “spam” that wins in this open auction is a DoS for the blockchain. It is a user who makes use of this resource in the way they are supposed to and participates in the auction with everyone else.

The relay network

Many, if not most, Bitcoin nodes offer transaction relay as a service to the rest of the network. If you broadcast your transactions to your peers on the network, they will broadcast them to their peers, and so on. Because the peering logic that determines which nodes to peer with maintains broad connectivity, this service allows transactions to propagate across the network very quickly and specifically allows them to propagate to all mining nodes.

Another service is block relay, which propagates valid blocks when they are found in the same way. This has been greatly optimized over the years, to the point where an entire block is mostly never relayed, just a shorthand “sketch” of the block header and the transactions included in it, so you can reconstruct them from your own mempool. In other words, block relay optimizations depend on a transaction relay working properly and propagating all valid and likely mined transactions.

When nodes do not have transactions in a block already in their mempool, they must request them from neighboring nodes, which takes longer to validate the block in the process. They also explicitly forward these transactions along with the block diagram to other peers if they lack them, wasting bandwidth. The more nodes that filter transactions they classify as spam, the longer it takes blocks, including the filtered transactions, to spread across the network.

Transaction filtering actively seeks to disrupt both of these services, in the event that transaction relay fails to prevent them from propagating to miners, and in the event of block propagation, with a marginal but noticeable performance degradation the more nodes on the network filter transactions.

These node policies have the explicit purpose of degrading the network service of propagating transactions to miners and the rest of the network, seeing the degradation of block propagation as a punishment to miners who choose to include valid transactions they filter. They seek to create a degradation of service as a goal, and see the degradation of another service as a result of this attempt as a positive.

This is actually a DoS attack in that it actually brings down a network service contrary to the system’s design.

Where from here?

The whole saga of Knotz vs. Core, or “Spammers” vs. “Filters”, has been nothing more than a miserably ineffective and failed DoS attack on the Bitcoin network. Filters do absolutely nothing to prevent filtered transactions from being included in blocks. The goal of disrupting the propagation of transactions to miners has had no success whatsoever, and the degradation of the block relay has been marginal enough not to be a deterrent to miners.

I see this as a huge demonstration of Bitcoin’s robustness and resistance to attempts at censorship and disruption at the level of the Bitcoin network itself.

So what now?

A BIP by an anonymous author has been put forward to introduce a temporary soft fork that would expire after approx. a year, making numerous ways to include “spam” in the Bitcoin transaction consensus invalid through that time period. After realizing that the DoS attack on the peer-to-peer network has been a total failure, filter supporters have moved to consensus changes, many of which were told would be necessary over two years ago.

Will this actually solve the problem? No, it won’t. It will simply force people who want to send “spam” to this forked network, if they actually follow its implementation, to use fake ScriptPubKeys to encode their data into useless outputs that will blow up the UTXO set.

So even if this fork was met with resounding support, activated successfully and did not result in a chain split, it would still not achieve the stated goal and leave “spammers” no choice but to “spamm” in the most damaging way to the network possible.

Leave a Reply

Your email address will not be published. Required fields are marked *