Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: quakefiend420 on August 17, 2015, 06:59:42 PM



Title: ASIC for transaction signature validation?
Post by: quakefiend420 on August 17, 2015, 06:59:42 PM
We all saw the difference when PoW migrated from general purpose CPUs to GPUs and finally to ASICS, could we see a similar transition for signature validation?

Could some clever code and a GPU be the difference between it taking a node with an average CPU 12 hours to start from scratch and 12 minutes?


Title: Re: ASIC for transaction signature validation?
Post by: achow101 on August 17, 2015, 07:06:14 PM
Signature validation does not take 24 hours. What exactly are you talking about? Are you talking about validating the blockchain?


Title: Re: ASIC for transaction signature validation?
Post by: quakefiend420 on August 17, 2015, 07:43:19 PM
Signature validation does not take 24 hours. What exactly are you talking about? Are you talking about validating the blockchain?

Yes, isn't most of the indexing\reindexing overhead due to signature validation?


Title: Re: ASIC for transaction signature validation?
Post by: achow101 on August 17, 2015, 08:02:11 PM
Signature validation does not take 24 hours. What exactly are you talking about? Are you talking about validating the blockchain?

Yes, isn't most of the indexing\reindexing overhead due to signature validation?
No. I don't think it is because the only thing with signatures are transactions. I think it is actually verifiying each block and transaction to match the consensus rules. Everything must be in the right format, and then the client uses the data given in each block and transaction to calculate the hashes and checks if it matches. For example (overly simplified), in a transaction, it must verify the signatures match. Then it must hash the entire transaction and the hash should come out to be the transaction id. If it doesn't match, the transaction doesn't validate. Then for blocks, it must hash every transaction together, which in some blocks can be more than 1000, and it gets the merkle root. Then it must combine the data in the header such has timestamp, nonce, and whatever else and get the block hash. If the hash it gets matches the hash it was given, the block validates.

The reason this takes so long is not because hashing is slow, but because of the sheer size of the blockchain. It must validate every single block it receives, from block 0 to 370298 and beyond. This is what takes the most time. The process can be sped up with faster processors to do all of that hashing, which is why different computers take different times to validate and index the blockchain.