I'm new to this forum. If this isn't the right place to post this I apologize. Under the Bitcoin section there was something for software development, but this isn't really Bitcoin related.
As a project, I want to write a Ravencoin (X16R) miner. I've been working on this by myself for a while now, but I'm getting nowhere. Turns out it's very hard to find documentation for this. What I've gathered is that I need to write the networking (Stratum) code to communicate with the pool and the actual mining code. The Stratum stuff I can do, it's the mining that gets me.
What I understand so far:
In Bitcoin, what you're doing is double hashing the 80 byte (I think) block header, changing the nonce and, once that overflows, the coinbase transaction (and some bits of the
version?). You do this until the hash ends with or begins with a certain amount of zeros. You also build a branch of transactions over and over if you change the coinbase. Am I correct so far?
With Raven, there are 16 hashing algorithms, that much is clear. Looking them up they're all just variants of SHA3. The last 8 bytes of the previous hash are supposed to determine which you use.
Other than that, I'm not sure where to start. I want to do this from scratch if possible, only minimally looking at other's source code. I'm doing this in C# other than GPU mining code when I get to that (OpenCL/CUDA are in C++ or C, correct?). I'm adept at writing C# and I know a little C++.
Should I start with a different algorithm (like Bitcoin's SHA256) before I dive right into Raven?
Are there articles I can read or something that I'm not seeing? If anyone can provide some sort of insight I would appreciate it. Thanks!