Author: Tom Harding 2014-05-04 00:29:00
Published on: 2014-05-04T00:29:00+00:00
On February 14, 2011, a user named "Joe" suggested a new idea for blockchain technology in the Bitcointalk forum. Currently, nodes decide which of several conflicting transactions to accept and which is a double-spend, but there is no incorporation of these collective judgments into the blockchain. To address this issue, Joe suggested that nodes should associate a timestamp with every transaction upon first seeing it and add a consensus rule to reject blocks containing a transaction that respends an output spent by another locally accepted transaction after a certain amount of time has passed.The value of T, or the time threshold, was calculated based on the assumption that if a double-spender introduces both transactions from the same node, the median propagation time for recent transactions is 1.3 seconds, and the propagation times are distributed exponentially with a median of 1.3 seconds, then the above consensus rule would result in the misidentification of the second spend by less than 1% of nodes if T is set to 7.4 seconds. If transactions are introduced in mutually time-distant parts of the network, a population of nodes in between would be able to accept either transaction as they can today. However, the attacker still needs to introduce them at close to the same time, or the majority of the network will confirm the one introduced earlier. The merchant is also able to watch for double-spending attempts and gain confidence quickly if he is likely to be double-spent.This proposed consensus rule would be the first to anticipate less than 100% agreement, but the parameters could be chosen so that it remains conservative. Joe also suggested a fail-safe condition: drop the rule if the block has six confirmations to prevent a fork in unusual network circumstances. The first step towards implementing this solution is to share data broadly by relaying first double-spend attempts.
Updated on: 2023-06-08T22:19:16.710491+00:00