Hi all,
I was chatting with a friend today about the wonderful world of cryptocurrencies, when I had an idea (ouch, painful!). I'm hoping some people who are a bit more knowledgeable about how mining works at the code level could answer this or not. I've been too busy with exams and study to play around with any source or do the required reading to answer this myself, so if someone could save me some time with a good response, maybe point me at some good resources, I'd be eternally obliged! It's a very rough idea, with all of about 20 minutes slightly drunken conversation as the only current research done.
My idea was to create - let's call it "Gridcoin" or GRD. It'd be mined, uses scrypt to be nice to normal peeps, capped at some maximum number of coins, yada yada, no big surprises there. But would it be possible to, in addition to the processing required for the proof-of-work, process something else, say bruteforcing a password hash or rendering video, folding proteins etc; ie Could you use it as the basis of a grid computing network? More or less merge BTC and Hadoop? I know projects like Folding@Home use some sort of proof of work already, does anyone happen to know how that works and if it'd be viable to combine with the BTC-esque PoW?
Anyway to continue, miners would be both verifying transactions AND providing cycles for some other task. The miners would sell the GRD to users wishing to farm out heavy processing tasks (so long as they are effectively parallelisable of course), and the users "spend" the GRD back into the network to receive X number of processing cycles, and the miners get the spent coins back as transaction fee's. Maybe have the blockchain also include records as to mining node availability to allow work to be farmed out across all the available threads in the pool and allow the work to be allocated, kinda like NMC's distributed hash table, something along those lines anyway. Naturally the coins could still be used the same way as any other cryptocurrency, traded on exchanges etc, so it could also help to encourage uptake of cryptocurrencies by big institutions, make em buy BTC or LTC or whatever so they can trade that for GRD. Considering how much processing power the collective BTC mining effort has, imagine harnessing that and using it for other tasks too!
If you could provide an easy to use API or even just a socket to pass data through from other applications, something like this could do some awesome things I think. I'm not sure though, could you safely tone down the processing power required for mining so as to allow more resources for the work to be done? How badly would that impact the network security, transaction speed and the like? Any thoughts, idea's, other impacting factors I should be aware of? And also what other sorts of tasks could be rolled into mining (apart from an NMC style distributed hash table) eg could you created a distributed file system as well? (Actually yeah, that'd be pretty easy I'd imagine, just another distributed hash lime NMC, maybe someone could create another coin for that, any possible issues there?) I was also thinking about maybe allowing the number of GRD coins available to be increased based on peak net processing power, so that the supply is more or less pegged to improvements in processor tech rather than necessarily a fixed supply dependent only on mining rate as that could eventually lead to massively valued GRD. Any comments, thoughts or suggestions around that side of things would help too. I'm a third year software dev student and I'd be prepared to start working on GRD myself as a summer project if it's possible and people would be interested in something like this. Would be a good learning experience for me I think
.
Thanks in advance guys, let me know what you think! If it sucks, let me know and I'll go crawl under my rock again........
Edit: Some spelling