[HH] Bitcoin mining hardware
Tom Metro
tmetro+hhacking at gmail.com
Thu Apr 18 17:05:56 EDT 2013
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
More information about the Hardwarehacking
mailing list