I'm trying to setup the mining pool using https://github.com/fancoder/cryptonote-universal-pool (please do not suggest to use https://github.com/zone117x/node-cryptonote-pool because I also used that and I had a problem with incrementing balances for my miners).

Anyway I've cloned the repo of cryptonote-universal-pool then configured the config.json and then I had a first problem with:

Error: Failed to parse block
at Object.BlockTemplate.nextBlob (/opt/xmr/pool2/lib/pool.js:120:23)
at Object.Miner.getJob (/opt/xmr/pool2/lib/pool.js:297:41)

I changed the package.json "cryptonote-util" from git://github.com/fancoder/node-cryptonote-util.git to git://github.com/lucasjones/node-cryptonote-util.git

After that pool started nicly and I started to test it. Currently I'm trying to connect minerd from another host and I'm getting

[2016-09-13 19:55:36] Stratum authentication failed
[2016-09-13 19:55:36] ...retry after 10 seconds

I checked the configuration and there is nothing about authentication (here is the example of the config https://github.com/fancoder/cryptonote-universal-pool#2-configuration)

My minerd execution looks like this:

./minerd -a cryptonight -o stratum+tcp://<pool_ip>:3333 -u <95 chars wallet address> -p x

I'm stuck at that point. Can anyone explain what is happening or tell me how to debug it?

  • 1
    Is that port open for incoming connections on your router/firewall?
    – jwinterm
    Commented Sep 14, 2016 at 21:36
  • Definitely no firewall restrictions.
    – xmrpool.eu
    Commented Sep 15, 2016 at 7:30
  • I thought fancoder included an updated node-cryptonote-util.git . This was the main thing was was modified during the RingCT fork. Moneromooo modified it, and M545000 or whatever had it in his repo. You can simply change the package.json to the m5400 branch...
    – Ginger Ale
    Commented May 11, 2017 at 17:15

1 Answer 1


The first error (failure to parse blocks) is pretty likely to be due to the lack of ringct support in the C++ lib part of the pool code. You seem to have fixed it by using another version.

The second error is most likely due to an address being passed which doesn't match the expected format. This can be due to two reasons: either the address is really wrong (Monero addresses are 95 characters long, and start with a 4), or the pool's address being wrongly set (the pool will compare the first character of the miner address with the pool address' first character and expect the same).

The address validation code is at the end of lib/utils.js (isValidAddress). You can add traces to see which part of it fails.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.