user1194: I've been messing about with TCP/IP stacks on some fairly powerful MCU's lately (mostly the ARM M4 series), and this sort of led to the crazy idea, that I could somehow create an embedded platform specifically for mining (using FPGA's as co-processors). I've dabbled in pool mining just for fun, but came to the realization I actually have no idea how it works,
protocol wise. I already have the hardware scattered around my house somewhere, so it could be a fun (ie, time consuming) project!
I understand the bitcoin client does several things, such as validation of all blocks, handling transactions, address, wallets etc. But for an embedded miner solely involved in a pool operation, what exactly would be the minimum functionality? As I understand it, the pool largely handles everything, and all you are required to do is receive/send data through JSON-RPC and process it. Is that really all there is to it? Or am I missing something absurdly important? Any clarifications would be awesome!

user659: That's about all there is to it.  You don't need to handle the Bitcoin protocol or worry about the blockchain, the mining pool does all that for you.  Just issue a request for 'work' to the pool using the JSON-RPC interface.  Hash the supplied work with different nonces over and over until you get a hash less than the given target, and use the JSON-RPC interface to submit successes.
You might want to poll for new work in a separate thread, so you know when the block you're working on has been found by someone else.

1194: <p>I've been messing about with TCP/IP stacks on some fairly powerful MCU's lately (mostly the ARM M4 series), and this sort of led to the crazy idea, that I could somehow create an embedded platform specifically for mining (using FPGA's as co-processors). I've dabbled in pool mining just for fun, but came to the realization I actually have no idea how it works,
protocol wise. I already have the hardware scattered around my house somewhere, so it could be a fun (ie, time consuming) project!</p>

<p>I understand the bitcoin client does several things, such as validation of all blocks, handling transactions, address, wallets etc. But for an embedded miner solely involved in a pool operation, what exactly would be the minimum functionality? As I understand it, the pool largely handles everything, and all you are required to do is receive/send data through JSON-RPC and process it. Is that really all there is to it? Or am I missing something absurdly important? Any clarifications would be awesome!</p>
 659: <p>That's about all there is to it.  You don't need to handle the Bitcoin protocol or worry about the blockchain, the mining pool does all that for you.  Just issue a request for 'work' to the pool using the JSON-RPC interface.  Hash the supplied work with different nonces over and over until you get a hash less than the given target, and use the JSON-RPC interface to submit successes.</p>

<p>You might want to poll for new work in a separate thread, so you know when the block you're working on has been found by someone else.</p>
