Zcash mining pool

A few weeks back I was looking at some other cloud rental service which allows users to select how much of particular resources they want to pay for… I noticed that the amount of CPU scaled up to 20GHz… Does that imply they were offering a virtualised server that actually operates over a number of separate computers? If modern virtualisation allows that (and providing that the existing zcash software actually sees lots of cores), then it could be a short-cut to achieve the same effect as pool mining…

That could really only simulate “private pools”. It’s essentially the same thing as running the same miner image on several EC2 instances at once.

But that doesn’t let a huge number of untrusted/untrusting users work together by pooling their mining power and splitting the rewards.

Have we made any progress on this? This miner seems like it could adapted if we could integrate Equihash: GitHub - bitbandi/cpuminer-multi: Multi-algo CPUMiner & Reference Cryptonote Miner (JSON-RPC 2.0 implementation)

Maybe one of the devs could point us in the right direction to start? @daira @str4d

I haven’t made progress here. I also think that cpuminer is a good place to start.

We already have the .cpp implementation of Equihash (in the Zcash repo), so we don’t need to build that functionality from scratch. That’s good news.

We need to include the equihash implementation (from the zcash repo) into cpuminer.

Then we need to make sure that the data/nonce being fed to equihash by cpuminer is correct (IIR it’s not the same as with bitcoin… I don’t think we can just use getwork).

And I think that’s pretty much all we need to do. Unfortunately, both of those are things that I don’t currently know how to do in practice. I think cpuminer is written in C (which I am not familiar with), so this would/will take me a while to figure out myself.

Previously, I’ve participated in funding bounties that started on forums. Is that something people on this forum would consider? Can those of us who are interested identify the minimum functionality needed and also identify what it’s worth to us? Speaking for myself, I would happily contribute one bitcoin to a bounty for a working, Zcash compatible pool miner.

1 Like

If you put up the bounty I will take a look.

Great! daira has indicated a preference for p2pool - are you able to determine if that’s a starting point that would suit you?

btw I’ve asked a forum member if they would co-ordinate this bounty but can anyone else suggest a reputable individual to be trusted with bounty contributions?

daira has indicated a preference for p2pool - are you able to determine if that’s a starting point that would suit you?

p2pool is pooling software.

As I understood it, this bounty is for a zcash cpuminer. At least that is listed as step 1 in the OP. I strongly suggest separate bounties because they are separate projects and different people could work on them. Or if just one bounty then focus on the harder thing, which should be the cpuminer. Lumping them together is not a good idea.

So we first need to build a standalone miner for zcash that is capable of pointing to a pool.

yes.

1 Like

btw I’ve asked a forum member if they would co-ordinate this bounty but
can anyone else suggest a reputable individual to be trusted with bounty
contributions?

Synapsi.com enables you to contribute and collect bitcoin bounties for GitHub issues using multi-sig escrow. Seems like a good way to go.

I don’t think @Voluntary should have to take on the entire Bounty, If the Bounty is 1 BTC I’ll bet we can find 2 more people to contribute. I’m in for .25 BTC.

We will have to figure out how we want to put the money in escrow and will have to have an agreed method to verify the work, but I think it’s a worthy cause.

I’m glad that more people are serious about this. The way I understand bounties is that the bounty amount is not fixed - people can keep contributing with the purpose of making the bounty attractive to more developers. Developers can even specify what they want and what they’re willing to do to get that bounty. So I still intend to put up at least one bitcoin.

Some bouties I’ve participated in have been assigned to particular developers once they’ve expressed an interest due to competition being seen as unproductive. However, if additional developers can’t co-operate amoung themselves, I’m fine with a competitive model.

re: synapsi.com - it seems to be geared toward individual users paying for answers to questions. Then there’s bountysource.com but I don’t like the cut they take from the bounties they host. So I would still like to get a trusted forum member to hold payments.

I think one requirement for a standalone miner that receives a bounty should be that it supports the Stratum mining protocol. This will make it much easier to when it comes time to setting up p2pool.

1 Like

It’s going to come down to what the bounty taker(s) can deliver.

Perhaps this bounty could be multi-tiered. Contributors can specify the absolute minimum they’re willing to pay for at tier one but then go on to offer more for additional features / project goals at higher tiers.

I’m expecting that the mainnet will actract many more miners than the testnet has seen so far and that the difficulty will be much higher so I’d be happy to have the choice of pool mining even if it only offered the bare minimum functionality.

Confession… I know next to nothing about pool mining. Will some Zcash specific pool controller software also be needed? If not, what software will be needed by the computer that all the stand-alone miners are talking to? Or is that just handled by a different operational mode of, for example, cpuminer?

The server (pool manager) side will be running zcashd and a stratum server. It runs zcashd so it can get all the txns and blocks from the network, and so it can broadcast blocks that are found by the pool. It runs the stratum server to handle communication with the clients (standalone miners) – sending them the work they need to work on, receiving shares, handling payouts, etc.

The client (miner) side will be running a standalone miner that points to the stratum server.

That’s the most basic setup.

cgminer is a (client side) standalone miner that’s already set up to use the stratum mining protocol. You just fire it up and point it to a stratum server. We need to modify it so that it can use equihash as its hashing function.

On the server (pool manager) side, we have stratum servers (including p2pool stratum servers) that need to be modified so that they talk to zcashd instead of bitcoind.

2 Likes

Aha… So putting up a bounty for only the stand-alone miner won’t be enough…

In my best estimation, the standalone miner part is the hardest. I’m working on modifying a stratum server to play nice with zcashd – which I think is the easier half of the equation. I’m only doing it in my spare time, and it’s a labor of love. Hopefully others are working on it too.

The modification of cpuminer to run equihash is, I think, bounty worthy.

1 Like

I already have a 1 BTC bounty for a pure C zcash miner. that should help along the path toward a GPU miner

2 Likes

Have you gotten any response? Where else would you suggest we post the bounty?

I’ve made posts about this bounty on the Dash forum and the bitcoin.com forum… Ethereum seems to have attracted a lot of coders but maybe there’s a more general purpose site for getting the attention of people with the right skills?

nobody has said they would do it, the zcash team seems the most likely at this point.

for best performance of miner (what else matters?) getting it to C, then porting to CUDA is the best path