Greg London wrote: > Do you have a link that explains the actual algorithm?
I see pieces of the algorithm covered in the main article: http://en.wikipedia.org/wiki/Bitcoin#Hashes_and_signatures Two SHA-256 hashes on top of each are used for transaction verification; however, RIPEMD-160 is used on top of a SHA256 hash for bitcoin digital signatures or "addresses". A bitcoin address is specifically the hash of a ECDSA public-key, computed this way: Bitcoin address/Public-key = Version concatenated with RIPEMD-160(SHA-256(public key)) Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash)) Bitcoin Address = Base58Encode(Key hash concatenated with Checksum) The mining process or proof-of-work process involves scanning for a value that when hashed with SHA-256, the hash begins with a number of zero bits. If you just want to get a feel for the complexity, looking at open source implementations of SHA-256 and RIPEMD-160 should give you an idea. I think in order to actually accomplish mining, you need to go beyond the hashing and interact with other servers, and thus they describe it as a protocol: https://en.bitcoin.it/wiki/Protocol_specification The details are likely covered in papers linked to the Technical Articles section of the Bitcoin wiki: https://en.bitcoin.it/wiki/Category:Technical Like: https://en.bitcoin.it/wiki/Block_hashing_algorithm You could also take a look at existing mining apps: https://en.bitcoin.it/wiki/Software#Mining_apps Of note, one is an Altera FPGA implementation: https://en.bitcoin.it/wiki/Open_Source_FGPA_Bitcoin_Miner and that page links to a github hosted project with open source code. -Tom _______________________________________________ Hardwarehacking mailing list [email protected] http://lists.blu.org/mailman/listinfo/hardwarehacking
