Difference between revisions of "July 2015 chain forks"

From Bitcoin Wiki
Jump to: navigation, search
m (Undo revision 57202 by Darthandroid (talk) --- only 0.10.99 after commit 41e6e4ca are safe; revert this if you know ecdsa.net is safe)
m (There won't be any more forks in July 2015)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The July 2015 forks were two (so far) 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.<ref>[http://bitcoin.org/spv-mining Some miners creating invalid blocks], Bitcoin.org, 4 July 2015</ref>
+
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.<ref>[http://bitcoin.org/spv-mining Some miners creating invalid blocks], Bitcoin.org, 4 July 2015</ref>
  
 
== Wallet Advice ==
 
== Wallet Advice ==
Line 5: Line 5:
 
* If you use Bitcoin Core, [https://bitcoin.org/en/download upgrade to 0.10.2] to ensure you don't see invalid confirmations.
 
* If you use Bitcoin Core, [https://bitcoin.org/en/download 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.  See the [https://bitcoin.org/spv-mining Bitcoin.org alert] for the currently recommended number of additional 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 [https://bitcoin.org/spv-mining Bitcoin.org alert] for the currently recommended number of additional confirmations.
  
* If you use Electrum, see the Electrum section below.
+
* 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 [https://bitcoin.org/spv-mining 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.  See the [https://bitcoin.org/spv-mining Bitcoin.org alert] for the currently recommended number of additional confirmations.
+
=== Electrum ===
  
=== 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 gets data from a Bitcoin Core-backed server. If the server is running a recent version of Bitcoin Core, it may be safe---but you must take action to be sure.<ref>[https://www.reddit.com/r/Bitcoin/comments/3c305f/if_you_are_using_any_wallet_other_than_bitcoin/cssqykx Electrum servers run Bitcoin Core], /u/etmetm, 5 July 2015</ref>
+
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.<ref>[https://www.reddit.com/r/Bitcoin/comments/3c305f/if_you_are_using_any_wallet_other_than_bitcoin/cssqykx Electrum servers run Bitcoin Core], /u/etmetm, 5 July 2015</ref>
  
 
# 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.
 
# 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.
Line 20: Line 21:
 
# If the message includes a line that says &quot;Bitcoin Core 0.10.2&quot; or &quot;bitcoind 0.10.2&quot;, 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.
 
# If the message includes a line that says &quot;Bitcoin Core 0.10.2&quot; or &quot;bitcoind 0.10.2&quot;, 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.
 
# 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.
 
# 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.
 +
# 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.
 
Please note that this information is provided voluntarily by the server administrators.  It is not validated.
Line 25: Line 27:
 
The following Electrum servers have a safe Bitcoin Core version in their banner:
 
The following Electrum servers have a safe Bitcoin Core version in their banner:
  
* electrum.no-ip.org (version 0.10.0)
+
* electrum.no-ip.org (version 0.10.2)
 
* electrum.jdubya.info (version 0.10.2)
 
* electrum.jdubya.info (version 0.10.2)
 
* vps.hsmiths.com (version 0.10.2)
 
* vps.hsmiths.com (version 0.10.2)
 
* erbium1.sytes.net (version 0.10.0)
 
* erbium1.sytes.net (version 0.10.0)
 
* electrum.dragonzone.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<ref>[https://bitcointalk.org/index.php?topic=1110912.msg11800126 Get block header electrum plugin], Belcher, 6 July 2015</ref> to authoratatively 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.
+
During a fork, it is possible to use the Get Block Header custom plugin<ref>[https://bitcointalk.org/index.php?topic=1110912.msg11800126 Get block header electrum plugin], Belcher, 6 July 2015</ref> 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 ==
 
== Invalid Block Hashes ==

Latest revision as of 12:14, 2 August 2015

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