Failed launch of V2.x

There were no any news for quite a while now. I guess no one really noticed, but last week I tried to launch V2 of this project. It included following updates:

  • Background computing of Proof-of-Work, so user don’t have to manually “unlock” form at all
  • Preserving Proof-of-Work between page reloads. This allows to calculate proof-of-work and use it on current page or next. So for example if you read 10 pages and want to comment on last article – you most likely don’t have to wait at all, just click submit, because by that time you accumulate enough proof-of-work already to submit form.
  • API to use this proof-of-work in other applications (like in-game currency)
  • Better feedback for older browsers, so users could see why they can’t submit form using Internet Explorer 8 :)

These were major targets for V2, and it does work indeed when testing locally, but totally failed when deployed to production. Here are lessons I learned:

  • Ability to quickly roll-back is GREAT :)
  • Socket.IO is totally useless with any serious number of concurrent users. I am going to use `ws` node.js module and directly browser’s WebSocket API in next release.
  • I need to have two identical clusters ready and ability to slowly switch incoming users from old one to new one. Right now I have one server running few docker containers and when deploying new version all users immediately get switched to new release. While in theory it should be all good, in practice I want to have more granular and smooth control over deployment progress. My current plant is to create two identical clusters based on and adjust config of HAProxy (this is what used as a load balancer currently) to allow changing PERCENTAGE of users going to cluster A or cluster B.
  • Proof-of-work currently used is Dogecoin’s scrypt blocks hashing. The way in-browser miner works with it – uses server software to proxy `getwork` requests. The problem with this approach is that after certain number of concurrent users, `getwork` method is just not able to keep up with submitted work. I am currently working on implementing hybrid based on stratum protocol.

All in all I am moving steadily toward V2.1 which should include all changes above. Hopefully next launch will be successful :)

Hashcash.IO Updates

About spam, invites and dogecoins

First of all – thank you all for so much of feedback! Seeing so much interest in what I am doing is truly inspiring!

I received quite a few emails asking about different aspects of this project and I would like to share my answers and future plans in this post.

So what about invites?

Let me get back a little bit. I have a few content-based projects out there and have always struggled with spam. Even the famous and sometimes hard to read reCAPTCHA did not always help. From what I observed so far, it looks like posting spam is semi-automated nowadays. I even found a website – – which provides an API to real humans reading CAPTCHAs. Think mechanical turk, but just for reading captchas (and way cheaper.)

On the one hand, dealing with reCAPTCHA when Google did not recognize you is terrible – it often requires 3-5 attempts to finally decipher what is written. When Google ‘recognizes’ you – it is much easier – they just pretend it is CAPTCHA when in reality they use you to solve their business problem – decoding street numbers – you can read more about it on Techcrunch. So for human spammers it becomes very easy to do their job.

Anyway, I really disliked CAPTCHAs, all of them, and especially reCAPTCHA. And after finding out about I even had an idea of creating service where visitors will be presented with CAPTCHAs taken from and submit results back to to get paid :) And about that time I learned about bitcoin, and proof-of-work concept.

My idea was to bring what offered for email spam to web applications. I.e. make it slightly expensive for a browser to submit an actual form by calculating proof of work. Except I wanted this proof of work to do something meaningful. I entertained idea of mining bitcoins with browsers, but by that time GPUs already took over it and in-browser mining wasn’t an option anymore. Later a new altcoin was introduced – Litecoin based on scrypt algorithm, which was harder to parallelize on the GPU. That’s where I started looking into implementing miner into client-side Javascript.

Long story short – I used emscripten to compile scrypt version of cpuminer into asm.js code, wrap in Web Workers and some API, and here we are – the very first prototype of It had no front page, no login form, just rudimentary D3-based dashboard to easily see what is going on. After trying it out on few of my websites 100% of spam and bot-registered accounts were eliminated. After that I spent some time customizing Bootstrap theme, adding some examples and key generation form on the home page of, as well as adding login form to make sure only I had access to the crappy dashboard for now :) That’s where the project stands right now.

So to answer the question about invites – there is still no reason to have one – there is nothing valuable behind login form yet.


Litecoin is boring. Dogecoin is fun. At some point I switched proof-of-work to one used in dogecoin network using p2pool-rav. As of right now an average mining speed of the whole pool is probably 20 hashes/sec, which is nowhere enough to generate a single share. Which leads me to the next topic:

Get paid for visitors/bots solving proof-of-work

So the grand vision of this project is to eventually make it possible for a website admin to get paid for each proof-of-work solved on his site. So even if spammers eventually start solving these, at least website admin will get paid. But for this to happen the pool needs to acquire a critical mass of websites using it to successfully generate shares in a reasonable amount of time. Right now this is not possible. And this is another reason there is nothing behind login form – there are no revenue as of now to share with website admins.

If you think this concept is cool, please spread the word about it. Right now I am trying to support painless integration with Drupal, WordPress CMSes via plugins, there is Django plugin and there is also jQuery plugin for custom integration. I need more feedback from developers out there. And I need more sites using it to generate shares.

As soon as the project generates a single dogecoin at address DMGQ5Ah5D7FSBL2uKiugwHQneGdugnvZfP, I will start working on the next phase – dashboard and revenue sharing.

Thank you very much for your attention. And if you have any questions – you can reach me at [email protected]