[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