Mining Bitcoins means performing hashing function (In case of Bitcoin it is SHA256) till you find proper combination. I will focus on implementation hash function in microcontroller, leaving housekeeping to host board/PC.
First thing that I have to decide is to find uC, that suits my needs. My requirements:
Cheap
Have some sort of hardware communication (bitbanging would consume scarce CPU time)
Have sufficient internal memory. To be more specific:
Initial hash value: 8 x 32b - CONST
constants: 64 x 32b - CONST
10 temporary registers : 10 x 32b - VAR
8 result storing registers: 8 x 32b - VAR
also input memory, at least 8 x 32b - VAR
tens/hundred of bytes for iteration, initialization of UART, etc
Once added, numbers are as follows:
VARIABLE: 104 Bytes + program
CONSTANTS: 288 Bytes + program
platform, that I know: AVR8, STM32
Long story short, I have to choose between easier (STM32) but boring environment and more challenging (AVR8), but harder. You probably know by now what I choose.
For now I stick to ATXmega128a3u which I have (I've made long time ago). Once Everything will be nice and neat I will port it to the smallest ATTiny possible.