A more detailed explanation of the whole

"A double-spend broke Bitcoin" FUD that was circulated by an irresponsible publication.

1/
There was a chain re-organization in the Bitcoin blockchain. This is a common occurrence that is part of Bitcoin's normal operation. It is a result of decentralized consensus under Proof-of-Work. All PoW chains do this.

2/
Two blocks were mined almost simultaneously, competing for the same height, meaning that they had the same parent block and were trying to extend the chain of the same block

3/
Only one can ever succeed in the long run. It is possible that different nodes and miners see one or the other block first and assume it is the winner. This is also normal in a decentralized consensus algorithm

4/
Eventually, within an average of 10 minutes another block is mined. This new block has as its parent *one* of the two competing blocks. Which one? Whichever one the miner saw first and assumed to be the winner.

The new block extends the chain, resolving the issue.

5/
Of the two originally competing blocks, one is now a parent and the other is the last descendant of a shorter chain. The chain with the greatest cumulative difficulty is selected by all. This "orphans" any descendants from the other chain because it is discarded.

6/
Again, all of this is normal. A 1-block reorganization happens every couple of weeks on average as a consequence of decentralized PoW.

A 2-block reorganization happens less often, maybe a few times a year

A 3-block reorg is extremely rare. I don't think we've ever seen one

7/
What happens to any transactions in the discarded block? If they are also in the winning block then all is well. If they are not in the winning block, each node puts them back into its mempool as "unconfirmed" and they wait for another opportunity

8/
During a re-organization, there is a chance for someone to attempt a "double spend". This is not a double spend from the perspective of the blockchain as a whole. Only one spend survives, therefore no double spends happen. That's the whole point of PoW consensus.

9/
But from the perspective of the recipient of a payment, they may see a transaction that appears to have 1 confirmation (it is in a block), then disappears when that block is discarded.

10/
Very rarely, the sender will sneak a *different* transaction in the competing/winning block. Let's say this is a payment for a lesser amount (more change back), or to a different address.

11/
Because the original transaction is gone (discarded block), the new transaction (winning block) is the only "real" transaction. The blockchain has prevented a double spend by discarding one and only recording the other.

12/
From the perspective of the recipient, they thought they were "paid" after 1 block, then they... weren't. This is why "confirmations" provide /probabilistic/ immutability. The chance of a reorg drops with each subsequent confirmation

13/
This is described in the Satoshi whitepaper on page 8. In fact, it's the only math equation in the paper and it describes the declining probability of a re-org, showing why "6 confirmations", though arbitrarily chosen is a good basis to consider a transaction finalized

14/
Here's page 8. As you can see the chance of a block getting discarded from a reorg declines /exponentially/ as more blocks are added to the chain. Finality is based on probability.

15/
So when do you consider a transaction finalized and when is it safe to give your customer the TV or the fiat or whatever value you are exchanging? It depends on the amount!

I waited 3 confirmations after selling my car for $11,000 USD (IIRC). Was enough for me.

16/
It also depends on the risk of the buyer going away. I'd sell a house on 0-conf, *because I know where they live!*. They can't run away with it. Some things are more dangerous: I'd wait 6 confs to exchange for cryptocurrency, because once I give it I can't get it back.

17/
During this most recent re-org, a transaction of $22 was in both competing blocks as two competing transactions. We don't know why. We don't know who. But there's nothing "impossible" about this. It is part of the protocol

18/
Now, for $22 many would accept 1 confirmation. Worst case, you're out $22 of something you gave in return that was delivered instantly and irreversibly. Not a big deal.

19/
Many credit card vendors don't take a signature for amounts under $25 for the same reason: while it can be disputed without a signature, it's not worth the extra time and delay to get one for such an amount. Same risk model here.

20/
In fact, we do not know that the recipient of that payment lost money. They may have been waiting for 2 confirmations and not delivered the other part of the value. So in that case, they lost nothing - they consider this "unpaid" because it didn't get 2+ confirmations

21/
Someone article quoted the lie "it could've been $22 million". Well, no, it couldn't. If you accept a $22m payment on bitcoin, I would assume you understand how Bitcoin has worked since 2008, exactly as specified in the paper. You don't "deliver" on that payment after 1 conf

22/
Several other incorrect statements are also made in that and other articles about RBF and Segwit. Here's the truth: this is a normal function of any PoW blockchain. A re-org with two different versions of a transaction can occur in every other PoW chain.

23/
Nothing weird or outside the consensus algorithm happened. Bitcoin continues to work exactly as it should. The only thing that happened is bad "journalism" if it can even be called that. In a bubbly market, a rumour can circle the globe before it is debunked.

24/
Consider it debunked.
You can support my educational mission on patreon.com/aantonop.

I do not have "sponsors", I am funded by the community builders who volunteer to help me do my work.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Andreas M. Antonopoulos

Andreas M. Antonopoulos Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @aantonop

21 Jan
I hope more people doing honest work in Bitcoin and other blockchains boycott @Cointelegraph

This is not the first time they have published irresponsible clickbait that is poorly sourced and contains misinformation. They do a disservice to the entire industry.
@Cointelegraph I don't want to link to the article, because that would only drive more attention to that garbage.

It takes 10x the effort to debunk garbage that it does to write it.
@Cointelegraph If you are writing about a controversial topic, you don't quote 2 people from the competing systems (BSV, BCH) without any counterpoint or clarification from an actual Bitcoin developer or expert.

Probably can't find a serious person to talk to them because of their history
Read 6 tweets
18 Jan
You can't spell #MLK without #BLM. If you won't stand up today, you for sure wouldn't have stood up in the 1960s.
Many if not most Americans were against #MLK and the Civil Rights movement at the time. They justified the police brutality against peaceful protesters and assigned isolated violence to the entire movement. Exactly the way #BLM has been treated since Ferguson.
#MLK was accused of being a maxist, a terrorist, an enemy agent and a traitor. He and his family were targeted, surveilled, maligned, and terrorized by the FBI and law enforcement. Exactly the same as is being done to civil rights and #BLM movements today.
Read 4 tweets
24 Dec 20
Let's talk about this scummy company @CoinDeFi

Let's discuss the appropriation of public goods from the creative commons of an open source industry.

Let's discuss bullying individuals to try to stake ground they don't and can't own.
This company didn't invent the name "COIN" (obviously) or its use as a token name.

AFAIK they didn't invent the term DeFi.

They're happy to appropriate both to use in their name, taking from the creative commons.
Their business is based on atomic swaps (didn't invent it)
to swap coins like BTC (didn't invent it), ETH (didn't invent it) ERC20 (didn't invent it).

They happily used all those things others invented to build their business.
Read 19 tweets
22 Dec 20
I need a data-minimization plugin that will wipe/clear specific fields from a Wordpress/Woocommerce customer database at regular intervals. We've been doing that manually but it doesn't scale.

I'm guessing I'm not the only one.

1/
The general idea is to remove information that we *need* to collect (e.g. shipping address) once we don't need it anymore. Woocommerce has some basic functions around data removal, but they're insufficient for the task.

2/
I'm thinking of funding a bounty on @gitcoin.

But first: Do you know of any such tool/plugin that can be configured to "Remove the address, zip, town fields from customer and user databases once the order status is complete or after N days/weeks/months"

3/
Read 7 tweets
1 Dec 20
Yesterday, while everyone was helpfully explaining to me why Bitcoin is broken, obsolete and failing to fulfill it's mission, I ran my monthly payroll.

1/
I have a dozen people on my team, scattered across six countries and four continents. A multinational small business. Many get paid in Bitcoin or Ether.

/2
BTC payroll is batched in a single RBF transaction, sent from Segwit native addresses. I low-ball the fee by 50% usually and wait 30 minutes, then bump it if I need to. Mostly I don't need to.

3/
Read 8 tweets
30 Nov 20
During times of extreme market excitement, the capacity of Bitcoin gets strained. That means that Bitcoin transactions become expensive and slow. Some may even become "stuck". Here's what to do...

1/
First, check and see how congested things are. A great site for this is Johoe's Bitcoin Mempool statistics:

core.jochen-hoenicke.de/queue/#1,24h

That rising mountain is 6hrs of activity. There are already 30,000 transactions willing to pay more than 50 satoshis per byte

2/
Transaction fees are measured in satoshis per virtual byte (vbyte). Different transaction types have different sizes, depending on the complexity, number of inputs/outputs and address type being spent.

A typical size (one input, two outputs) is about 144 vB.

/3
Read 20 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!