July 2015 chain forks

From Bitcoin Wiki
Jump to: navigation, search

The July 2015 forks were two block chain forks with two or more invalid blocks. They were caused by miners who didn't properly validate blocks before mining on top of them.[1]

Wallet Advice

  • If you use Bitcoin Core, upgrade to 0.10.2 to ensure you don't see invalid confirmations.
  • If you use a peer-to-peer lightweight wallet (also called a P2P SPV wallet), you must wait for additional confirmations unless you can tie it to a single trusted and up-to-date node (as is the case with Electrum - see below). See the Bitcoin.org alert for the currently recommended number of additional confirmations.
  • If you use web wallet or an exchange, you should wait for additional confirmations unless you know they are running an up-to-date node. See the Bitcoin.org alert for the currently recommended number of additional confirmations.

Electrum

Electrum is a SPV client that uses a non-standard protocol to communicate with a single node. As with all SPV clients, if that node is trustworthy, you can rely on it to perform the proper validation for you.

Electrum allows you to specify a specific server that your client uses. If a server is running a recent version of Bitcoin Core, and you are okay trusting it with your security, you can take action to use it exclusively.[2]

  1. Go to Tools → Network and unclick Auto-connect. This prevents Electrum from automatically changing to servers that have the longest block chain (which, during these invalid chain forks, may be the wrong chain). Note that Electrum will warn you when you're not on the longest chain—you must ignore these warnings until this fork event is over or use the plugin mentioned at the bottom of this section to determine whether you're on the valid chain.
  2. Go to the console tab
  3. It should display a message (called a banner) from the server operator.
  4. If the message includes a line that says "Bitcoin Core 0.10.2" or "bitcoind 0.10.2", then confirmations reported by the server are likely to be accurate. The only other safe versions are 0.9.5, 0.10.0, and 0.10.1.
  5. If the message does not indicate that the server is running Bitcoin Core 0.10.2, you can change servers by going to Tools → Network, unclicking Auto-connect, and choosing a server from the list. After connecting, a new message will be displayed; use the instructions in step #3 again.
  6. You should also ensure you are using TLS encryption, and with a known certificate of your trusted server.

Please note that this information is provided voluntarily by the server administrators. It is not validated.

The following Electrum servers have a safe Bitcoin Core version in their banner:

  • electrum.no-ip.org (version 0.10.2)
  • electrum.jdubya.info (version 0.10.2)
  • vps.hsmiths.com (version 0.10.2)
  • erbium1.sytes.net (version 0.10.0)
  • electrum.dragonzone.net (version 0.10.0)
  • electrum.be (version 0.10.2)
  • us.electrum.be (version 0.10.2)
  • ecdsa.net (version 0.10.99, changeset 3c60937ce6a251e565e169715ebb2f3dd76825c4)

During a fork, it is possible to use the Get Block Header custom plugin[3] to authoritatively determine which side of the fork an Electrum server is on. Bitcoin Core 0.10.x servers should always be on the valid side of the fork. Note that this, too, relies on trusting the server you are using.

Invalid Block Hashes

From the July 4th fork:

  1. 0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99 mined by BTC Nuggets (98 non-coinbase transactions)
  2. 0000000000000000155f2519d35cd5d2869900bcc5093594b27763a0315390b4 mined by F2Pool (0 non-coinbase transactions)
  3. 00000000000000000cb7a20ee4e199e347ad7369936abae53a1518efa531ec61 mined by F2Pool (0 non-coinbase transactions)
  4. 00000000000000000966d65e0fd87d1d5a8f154a2c955816c28e2006e381aa18 mined by AntPool (0 non-coinbase transactions)
  5. 00000000000000001301bfd6f566a421c7eeba103d09b312032ca065cb185de7 mined by F2Pool (0 non-coinbase transactions)
  6. 000000000000000013fe26675faa8f7dccd55ce5485bb6d0373fa66345901436 mined by F2Pool (0 non-coinbase transactions)

From the July 5th fork:

  1. 000000000000000003ae1223f4926ec86100885cfe1484dc52fd67e042a19b12 mined by MegaBigPower (255 non-coinbase transactions)
  2. 00000000000000000063f97f292fb559773437fb3558c474efec6053a7b0d5a2 mined by an unknown miner (0 non-coinbase transactions)
  3. 000000000000000012dbd422d7bf1c4b55982c37b390d4613dcee00d31741c6a mined by an unknown miner (1,597 non-coinbase transactions)

References

  1. Some miners creating invalid blocks, Bitcoin.org, 4 July 2015
  2. Electrum servers run Bitcoin Core, /u/etmetm, 5 July 2015
  3. Get block header electrum plugin, Belcher, 6 July 2015