2

Jan Moritz Lindemann graciously educated me that difficulty is used not only to regulate the creation rate of a cryptocurrency but also to allow for block propagation thus prevent orphaned blocks.

Since consumers of a cryptocurrency could be presumed to desire instantaneous transaction verification, is near instantaneous transaction verfication possible and secure? If so, how?

3

If by "instantaneous" you mean "right at the moment of the transaction" - well, no. Not even with Visa et al. Even if you mean that, after waiting for a reasonable amount of time (say, less than 2 mins.) you receive a definite answer about your transaction's validity, it's not possible either.

The way cryptocurrencies work, all transactions are "waiting in line" to be picked up by a miner and included in a block. Meanwhile, you can always revert it or create another that conflicts with the first one. Once a transaction's in a block, though, you can still not claim victory for they're still not part of the official coin history: other miners need to accept the block and start constructing new blocks over it - and this is the critical part.

Another miner, somewhere else in the world, may have discovered another solution to the current block and broadcasted it onto the network. From that moment on, there will be 2 chains in competition, both of them valid, but eventually only one will become the official one. Which one? Whichever gets longer first, i.e. which is picked up by the most miners to create a new block after it - remember each block contains not just its hash but also a hash of the previous block, so in effect each block "points" to its predecessor, hence the term "chains".

It's also possible for a malicious part to do this on purpose - should that part have access to vast amounts of computing power it could convince you to give you something in exchange for their bitcoins. You see their transaction appearing in 2 blocks and give the stuff, they then take the last block before your transaction appeared and rapidly create 3 blocks without the transaction. Once they broadcast their 3 blocks to the network - voilá! Their chain takes over due to length, you end up with no item and no coins.

So you never get a definite yes or no answer - you just get degrees of certainty. The more blocks your transaction appears on, the more likely it is that it will be part of the official transaction history. That's why it's commonly said you should wait for 6 confirmations in Bitcoin or 12 in Litecoin to consider a transaction 99% valid - after that number, the probabilities of an attacker trying to out-run (so to say) the combined hash power of the whole network become almost negligible.

  • Thank you so much for answering! OK, this is what I don't get: if multiple chains are possible with Bitcoin et al, how is that managed? (Should that be in another question?) So, for a crypto with only a 1s bst, there would need to be ~2,700 confirmations? Thank you very much in advance! – user5107 Dec 14 '13 at 2:06
  • 2
    One block per second! Puff... way too crazy! The point with lower times between blocks is that network speeds are not infinite, so it takes a finite time for a node to become aware of a block - and longer if such block was mined at the other side of the globe. Hence the possibility of orphaned blocks - with Litecoin you get more orphaned blocks, so you need to compensate by waiting for more blocks. How much should you wait in such a coin? Since it'd have massive orphaning, your number sounds reasonable... Meni Rosenfeld might now, he's done research on that. – Joe Pineda Dec 14 '13 at 2:25
  • 1
    As to "how are multiple chains managed in Bitcoin et al.?" Simple - they're not. The network accepts all chains of the same length, composed of valid blocks, as valid - and lets them compete. Eventually, one will get longer ahead of the others, at which time all nodes will stop accepting the other chains' blocks. – Joe Pineda Dec 14 '13 at 2:28
  • 1
    It's not exactly the lower difficulty which forces you to wait for more verifications, it's the time it takes for a newly generated block to propagate thru the network. With low time between blocks, more miners will keep working on a block, unknowing someone else has solved it. Also, the more possible it becomes for 2 or more solutions to arise independently, thus competing chains which eventually result in orphaned blocks. Meni Rosenfeld suggests a dynamic time as a better fit than a constant at bitcointalk.org/index.php?topic=79837.0 – Joe Pineda Dec 15 '13 at 14:16
  • 1
    In terms of costs, I believe it could be considered a kind of "cost to do business". I mean, all miners expect that, from time to time, a block they may have discovered ends up orphaned so they gain no coins. Since most of the time they gain no coins anyway, it simply adds up to the operational costs for them. Right now, miners' main monetary gain is in the mining rather than in the fees they collect, so costs are not directly passed on to end users. Nobody really knows what will happen when the prize for solving a block goes too low, though. – Joe Pineda Dec 17 '13 at 18:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy