Double-spending attack in BitcoinXT

by Albert Szmigielski

BitcoinXT implements a double-spending countermeasure that forwards the first double-spend attempt to other nodes. In order to mount a double-spend attack we must make sure that the vendor does not learn about the double-spend transactions

As with any other double-spend attack it starts with forming two transactions: TXV which is used to pay the vendor, and TXD which sends the same inputs to an address controlled by the attacker. The goal is to have TXD confirmed in the blockchain, while having TXV accepted by the vendor in exchange for goods/services.

Assumptions and requirements:

  • Able to connect directly to the vendor
  • Able to send TXV to the vendor
  • Able to send TXD to the Bitcoin Network
  • Prevent the vendor from hearing about TXD
  • Being able to utilize one or more helper node that relay TXD, while at the same time not propagating TXV
  • Additionally, connecting directly to the biggest mining pools and sending TXD to them might help to include it in a block faster, as well as paying a higher transaction fee.
  • Furthermore, being able to eclipse the vendor’s node would increase chances of success.
  • Preventing the delivery of the TXD transaction to the vendor would also be advantageous
  • Being able to prevent the vendor from propagating TXV would also help

Steps:

  • Form the two required transactions TXD and TXv
  • Send TXv directly to the vendor
  • Send TXD to the helper nodes and Bitcoin network
  • Send TXD to the big pools to boost chances of being included in a block
  • Use inv messages to prevent vendor from getting TXD
  • Use inv messages to prevent vendor from getting the block with TXD
  • If possible prevent the vendor from propagating TXV
  • Once goods/services are obtained, the attacker is at a safe distance, and TXD has been included in a block, the attack can stop

Chances of success:

If the conditions described in the assumptions and requirements section are met the attack has a good chance of success. The more helper nodes that can be used, the higher the probability of success. Essentially the goal is for the vendor to see TXV and the attacker being able to leave before TXD reaches the vendor. In addition to helper nodes, eclipsing the vendor’s node, or using inv messages to prevent the delivery of the transaction (as described in [1]) will further improve chances of success of the attack. If an eclipse attack is successful, it will also prevent the vendor from propagating TXV onto the Bitcoin network.

Leave a Reply

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