A Decentralized CAPCHA Annonymous Proof of Brain verification

in steem •  3 months ago

There has been an evolution of thought surrounding my opinion on the bot debate. Due to the extremes in points of view on the subject, from wanting a ban on bots to running an upvote bot of their own for profit, any solution will need compromise.

There is little doubt that utility bots, like @steemcleaners and @spaminator, have a proven value. Voting Bots, however, are a category of their own.

Even if only a feature for SMT distributors to use, a decentralized anonymous CAPCHA scheme needs designing. With over 100 witness nodes sitting around waiting for scraps, there seems ample resources to serve CAPCHA requests for a small transaction fee from the reward pool.

It seems to me that it makes sense to reward verified carbon based upvotes more than software generated ones. Even more so on a platform professing to use Proof of Brain as their tokens' generation criteria.

My greatest concern is the loss of trust which happens when non-Proof of Brain mining occurs unabated.

It was explored in an old blog post of mine which is included for your reading pleasure....


If some tokens can handle smart contracts, then a distributed anonymous CAPCHA does not seem too much to ask for, does it?

Feedback is welcome on the technical side of things as to how non-block producing witness nodes might be set up to service such CAPCHA requests.

Please elaborate "It can't be done" comments.

It seems a worthy software challenge to me.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Firstly, not all bots that perform actions onchain are bad. I believe that only voting, and posting operations would need CAPTCHAs to achieve your goals. Bots can’t do much harm in the internal market (but they can increase the price). Perhaps low-value transfers should also be CAPTCHAed, to stop memo spam.

These changes can have some unintended consequences:

  • Automated refunds from services (e.g. sent too much to a voting bot) won’t be able to function
  • Exchanges won’t be able to function
  • Curation trails won’t be able to work
  • People with worse browsers may not be able to use Steem

Also, depending on the implementation, this could also just result in witnesses all using the same CAPTCHA solution, which would effectively centralize Steem. Most witnesses aren’t in a position to write a CAPTCHA solution. Also, this would make it very easy for witnesses to deny certain users from posting, under the guise of them failing CAPTCHAs. Also, witness servers being down would cause a lot more problems. Also, even if just one witness server is compromised, the whole CAPTCHA system could be bypassed. (Assuming this is implemented as witness soft-forming against actions without a CAPTCHA)

Edit: Also, paying people to solve CAPTCHAs might be a workaround for bots.


Nice counter argument! Real world scenarios, too. I don't know what the answer is, but with a thousand paper cuts, we might find a solution.


An excellent analysis of the issue! Thanks so much for your input @smitop!


These changes can have some unintended consequences:

For fairness to all users, my feeling is that the CAPCHA should be used to identify and thereby further incentivise carbon based proof of brain upvoting/downvoting.

An option to circumvent the CAPCHA should be available (perhaps in the accounts' settings) yet the rewards generated via non-proof of brain upvotes should be less than if the CAPCHA were used.

With such an approach my feeling is that many of the unintended consequences which you mention would not become issues.

Also, depending on the implementation...

You cover some great brainstorming in the final paragraph.

Again, my thanks for your feedback, @smitop!

This could be implemented by requiring users to have enough CAPTCHA tokens to perform an op. Witnesses, or other CAPTCHA providers could broadcast a custom_json op whenever someone solves a CAPTCHA, and witnesses would ignore transactions that would cause someone to have a negative CAPTCHA token balance. This would not require a hard fork, and could be implemented immediately.

Allowing all witnesses, even those with 0 votes to serve CAPTCHA is a bad idea. Anybody can become a witness, for free, in a few seconds. I’m one! Allowing anyone to serve CAPTCHAs wouldn’t work.


Allowing anyone to serve CAPTCHAs wouldn’t work.

Providing the node servicing the CAPCHA request is as random as the 21st block producing node choice and that the requestee is anonymous would you still have those concerns, @smitop?

Expect the @grammarnazi. Spelling error in the title! 😁



Can it be done? I have no idea, I’m not that technically minded although I don’t really see why any Witness server outside the top 50 couldn’t be utilized - the top 50 should be dedicated to block production but outside that there are upward of 80 powerful servers being run that have plenty of spare capacity particularly at the lowest end - it might also help push more new Witnesses if some sort of reward was included for running the service.

I think we need something, you got me thinking a lot with your last post and nobody can argue with reasoning - If an upvote is to validate Steem creation through “Proof of Brain” it has to be a human upvote. I toyed with the idea of making upvote bot’s unable to upvote the account that paid them - so you could only use a bot to upvote another - then a human made the decision to send the bot to a post they judged worthy. But i’m quite sure it is obvious people would just buddy up and send each other funds - upvote my posts with this bot and I’ll do same. So back to square one.

Maybe this is the answer, it’s not going to be simple but I would be interested to see what someone with the technical coding knowledge had to say.

#thealliance #witness


Thanks for your feedback, @c0ff33a.

I don’t really see why any Witness server outside the top 50 couldn’t be utilized ...

Bringing some financial aid to up and coming witnesses seems, to me, like a healthy thing for the community. As server costs continue to escallate, to deal with scalability issues, eventually witnesses will need mini farms of load balanced servers, if scalabiliy issues continue unabated. Such a scenario will further increase the difficulty to rise to the top 50 witnesses without the ability to generate some revenue from their nodes.

I don't know if there is a good solution with this but definitely a vote from a non-bot should generate higher votes.

Other than that I see too many bots on here and in my opinion are alter ego of someone. These users use the bot rep, Steem, or SBD to bully others. Obviously many of these bots are generating income for their owners too which is not a legitimate way of making money.


Obviously many of these bots are generating income for their owners too which is not a legitimate way of making money.

Agreed. They are making money for the vote bot merchants while devaluing the platform for the rest of us. The discouraging part is that witnesses like @themarkymark and @therealwolf are, themselves, vote bot merchants.