101 comments

[ 1.8 ms ] story [ 170 ms ] thread
This is a novel method of monetisation. Instead of a paywall users could have the option to mine for the duration of their use of the content.
In theory it could be a revolution I guess, in practice I'm not sure it would mine enough coin and so generate enough income to be worth it.

But having an equivalent using GPU in application like games may be profitable.

looking at how GTA V utilizes all 4 cores on various CPUs, always hovering at 80-100%, I already suspect that they use gamers' PCs for mining
Or maybe they simply alter the rate of some CPU-bound simulation components within the open world?
This is a really good idea, but I'm not convinced of the Crypto mining side of it.

Why not just build a system that allows customers to buy and sell CPU resources, in a similar way to how a ad network allows customers to buy and sell ads?

I'm actually working on a project that does that!
i guess because the consumers might not always be tech savvy. they just want those items/coins/rewards in whatever game/app they are playing/using. a minor pop-up about the mining stuff wouldnt bother them (although app perf might be affected). that's how i see it.
This is a brilliant idea! I could see it being used with Nimiq- a project in development for a browser-based blockchain...This could provide more profitable mining.

This is also the direction I wanted to see BAT to go in- getting rid of paywalls and ads in exchange for a basic return to the publisher and user based on duration spent on the site along with interaction.

Cant imagine that anyone blocking ads wouldnt also block this
Some people block ads because they don't like the tracking that comes with it. When asked to add a site to the whitelist to support it the downside is that you will be tracked.
Why? It isn't an ad. Most users block ads because they find ads annoying, not because of script bloat.
I use uBo for performance and battery savings
I would definitely block it, simply because the browser isn't the only application running on my computer.
Aren't we blocking ads to cut websites's revenue streams?
I don't know about everybody else but script bloat, and its implications for performance in generally and scrolling smoothness in particular, are the main reason that I block ads - the visual distraction is a secondary factor.
Yeah you can be sure as shit I'm going to avoid any site that plans on thrashing my CPU.
Can this run in the background without affecting the user? Eg: the UI lagging, laptop fans turning to max, etc.
running it makes my laptop fans turning to max
I love this idea, congratulations on the launch.
I really like this. Not 100% sure how much a user can actually earn in say a 30 minute period but definitely going to try and add this as a form of monetisation in one of my sites and see how users respond.
I wish you could ask for money directly instead of inflicting the payment on me through my power bill...
Opt in would be the best of both worlds - you can have ads disabled as long as you run this, or access is discounted if you run this.
Doesn't have to be your power bill ;) (e.i. public library, work)
If this is not clearly opt-in I wish those responsible for using it on their site a slow and painful death.

Performance and bloat in browsers are a huge problem and having this constantly running in the background (without consent) is an absolute nightmare.

network calls for tracking and ads is already a huge performance problem on most sites, but it is still a thing
No reason not to treat it just as badly as attempts to mine bitcoin off your CPU. Both of those waste your resources, for someone else's profits, without your consent.
Devils advocate here.

Isn't just visiting the site giving consent to allow the sandbox (browser) to be utilized as the site directs?

This is an extreme case, granted, but it's still within the bounds of the sandbox.

Perhaps we'll have a new browser setting soon to throttle this type of thing instead of having to go whole hog and turn of JavaScript.

The implied consent is based on trust. The browser is my user agent, it is meant to interpret the data that it gets from HTTP stream the way I want it. I let it do the things as specified in the received data (i.e. by you), because I trust that you're not an asshole and will not abuse that power.

Unfortunately, there are plenty of assholes on-line, who decided to abuse the default behaviour - so now we have ad blockers and reader modes.

Ultimately, it is (by intention and design of the HTTP protocol, and computer networks in general) up to me what I do with the data - if, how, and which parts of it I decide to process.

It is giving consent, in some sense. But make a popular website use visitors' browsers to launch a DDoS attack and you'll find that "anything goes as long as it's the bounds of the sandbox" doesn't really apply.

Apart from that, people can easily take a different view altogether. When I visit a site, I download some bits. Doing so I don't consent to anything -- what I do with these bits is up to me.

I agree that there should be some sort of notification but other than that, I actually find this idea quite sympathetic. If you read my site, you can pay me by mining for me. It requires no extra effort on your part -- no credit card or micropayment login etc., and the longer you spend on my site, the more you pay. The exchange of value seems more clear cut that ads.
2-5 cents per 24 hours of a user being on your site seems like a bad tradeoff for the downsides.
Also, if the payment was higher than fractions of a cent, people would start "freezing" the site the moment it loaded - just as, back in the day, we disconnected our phone line modems as soon as the page we needed finished downloading, to avoid paying the phone company for time not spent transferring data.
2-5 cents per 24 hours seems fairly equivalent to ads, actually.

Ad CPM (or more appropriately, RPM) seems to average somewhere around $2.50 (that's per thousand impressions). If these thousand users were on the site for 24 hours, that would be $20-$50, a more realistic scenario would be users on a site for a few minutes, generating comparable revenue to ad impressions.

On my desktop (which, not coincidentally, is where you'd have the best results trying to mine cryptocurrencies), I would honestly prefer this over tracking cookies, obnoxious and intrusive ads, extra network connections, and all that crap. And I run an ad-blocker, so this will let you get some revenue while ad RPM will be 0. On my phone or laptop using battery power, you're not going to have any success mining and I'm not going to want this. (I also run an ad blocker on those, so...yeah).

Your comparison doesn't take into account that 24 hours here means the user had to keep your tab open for 24 hours to make 2-5 cents.

That's nothing like ads.

With US electricity prices.

German electricity prices are north of 40¢/kWh. This is significantly more expensive.

I calculated the site owners profit, not the cost to the user.
I have tons of sites opened 24/7. If yours happen to be loaded and you try to exploit my machines resources I will be quite pissed.
Browsers throttle not active tabs.
That's fair.

I suppose a more polite version would run only when the tab is in focus. But as has been pointed out, this doesn't seem feasible because of the tiny amount of value generated so I think it's an interesting idea to explore more than anything else.

Surely it's horrendously inefficient? That means my costs are much higher than the benefit you get from me, and a lot of energy is wasted.
How much does this earn per user per minute, on average?

Any estimtes?

to earn 0.01 USD you need 1MH at the moment. In my browser I can generate 25H/S so about 44 days on one browser to generate 1$
(comment deleted)
Using the Monero prices I looked up right now it seems more like 21 days. Not that it really is meaningfully better.
2,112 users 30 minutes on your site
Or maybe just some great computers filling the hallowed halls.
I'm confused how they say they had 2,000 users and generated $6k in 2 weeks.

Also, they say that they had 120KH/s hashing power on average with 2k users.

I tried double checking this math but I have a question on this.

Coinhive says their formula is:

(<solved_hashes>/<global_difficulty>) * <block_reward> * 0.7

and then goes on to give an example of:

(<solved_hashes>/29275633095) * 6.51 XMR * 0.7 = 0.000156 XMR per 1M hashes

Does this mean the original formula (XMR gain) is actually per million solved hashes (instead of per solved hash)? If so, it seems like a million hashes would only give you 0.0000000001556584613 XMR ($0.00000001519798996).

If that payout formula is actually per hash (and if so, why do they say "per million hashes" in the example?), you'd end up with a much more reasonable 0.0001556584613 XMR ($0.015 at $97.64-monero).

Am I just reading their site stupidly wrong (and/or do I just have a gross misunderstanding of how this all works)?

They also say they were able to generate $2k in 2 weeks with an avg of 2,000 users...
This idea has been tried before (https://hashcash.io/). Question for the developers:

1. How is this attempt different from HashCash, aside from using Monero?

2. What are you going to do if and when people develop counter strategies to bypass having to do the work?

to answer to question 2: I guess they could limit hash rate result by IP address.
I think GP is talking about the case in which people kill off the mining script, so that it doesn't mine, after the side loads. I.e. ad-block for sneaky cryptocoin miners.
Indeed I did not understand it in that way, It took so long for adblock to be a thing that I think it is a non issue for now.
> 1. How is this attempt different from HashCash, aside from using Monero?

I've never heard of either service, so I checked out both. One big difference between the two is that I knew pretty quickly what Coinhive was and how to use it, but I could never figure out what the heck HashCash does. I suspect if I clicked on one of their many "buy access to the API" links I may get more info, but that's not very cool.

I'll try it right now on a website with 1k visits per day, with 40 seconds session average.

I will report back in a few days

I guess <6 cents per day, let me know if that was right or not.
I will !
And post / re-post: "I tried that crypto-coin ad alternative thing and you won't believe these results!" ;-)
>And post / re-post: "I tried that crypto-coin ad alternative thing and you won't believe these results!" ;-)

Haha, according to what I've gathered for the few past hours, it seems that ads are still way more viable. But I'll write my conclusions in 3 days

I kinda wanna try it on ours... We have 1.5 million sessions a day with ~50 minutes average session duration.
(comment deleted)
This is much better than I thought it would be. I wonder how many commentors actually tried the demos.

Two of the three ways I could see on the page to use it involve delaying the user slightly (while doing a proof of work) after a checkbox or link is clicked. Not constantly running in the background. The one that does constantly run requires clicking a play button, which seems "opt-in" to me.

They also have some revenue numbers on there. Though no details on the traffic other than it peeked at 2,000 simultaneous users so that's hard to quantify with the data.

One big question actually is if you use the captcha system, is it actually effective at proving you are human?

Also, the short link one is a little stealthy. But overall it only delayed my experience by a couple seconds so I probably wouldn't care unless it happened very often.

I'm also curious about the Captcha. It's a great idea, but what's to say that bots won't be able to run it as well?
It isn't that bots can't do it, it is that they must waste significantly more resources than they would otherwise.
they are able to run it but at high costs. deterring some spammers in some cases.
> This is much better than I thought it would be. I wonder how many commentors actually tried the demos.

In what way is it better than your expectations?

(For me, it behaved as expected: immediately maxed my CPU load and spun up the fan)

My expectations were pretty low. I was expecting it to be doing something with the user's consent or using some sort of UX anti-pattern to trick the user into doing it. I was pleasantly surprised.

As far as performance. It didn't do enough to spin up my fan. My CPU only went to 30% (inclusive of all the other apps I have running (using Chrome on OS X).

I was under the impression most browser limit how much CPU the Javascript thread can use because of the good old days when writing a tight infinitely loop in Javascript could freeze someone's computer.

That's not entirely the case. Just this weekend I managed to crash my browser multiple times after forgetting to clamp a loop that ran multiple canvas operations. CPU shot steady to 100% and my entire system locked up for a bit.
Full 100% load on all CPU threads success ;)

Use of Monero (XMR) is an interesting choice. Monero is quickly being adopted as the coin of choice on dark net markets due to its builtin anonymity features. But dedicated third party-services such as escrow, multi-sig, etc have not kept pace with user demand. There seems to be an open window of opportunity for Monero centric contracts and payments.

This is definitely an interesting POC and makes an interesting case for why XMR might be ideally suited technically for web microtransactions. With the obvious caveats about hijacking browser performance being opt-in only that others have pointed out of course. Keep going!

It's taking more than a minute for me to sign up on Coinhive because of the proof-of-work in their registration form.

Definitely a no-no for computers older than 3 years.

why not webassembly? it could be ~10 times speedup.
It's actually using webassembly if available, otherwise it fallbacks on asm.js

>If true, the miner will always use the asm.js implementation of the hashing algorithm. If false, the miner will use the faster WebAssembly version if supported and otherwise fall back to asm.js. The default is false.

Source : https://coin-hive.com/documentation/miner

that's great.
I run the demo miner on the coinhive landing page for about 1 minute and chose 1 thread (my laptop has 4 threads). I then noticed that the 100% cpu load kept rotating between the 4 threads that my cpu has. Is this a common behavior in cpu mining (because of cpu pipelining) or is this a feature that the developer implemented? How does this affect the cpu performance and general work load? Is it possible to edit the script to target 50% cpu usage on all threads? Please excuse my ignorance.
It's common behavior of most operating systems, tasks are not kept scheduled on the same CPU (unless configured).
It's creative approach to content monetization that solves some of the problems associated with ads, such as visual clutter. But mining is a computationally intensive process. So, in a world where this became commonplace, I can't see how you could have more than a few websites running on the client, contending for CPU power, without the end-user experience ending up being severely affected - and the revenue that content makers end up getting out of this as well.
I think this is a really great idea! I'd rather have sites do this then bombard me with 10000 banners. Sure it increases my CPU load but I'd argue it reduces my cognitive load!
Wondering if it's possible to use GPU instead of/in addition to CPU and what would be the impact on performance of site.
WebCL/WebGL and stuff is there, but you will have to go through supporting 20 different "standard compliant" implementations
I see this as an excellent way to monetize views and fairly good tradeoff.

The issue I see with it, mobile (I tried) is around 10x less. So while it works for desktop, for mobile it would be challenging to use this, on top of draining battery etc.

However, this is probably one of the rare unique ideas how to monetize users presence on the site, and as such I welcome it and look forward to see how it will develop.

In Chrome I didn't notice that tab being out of focus decreases load, so it would work for as long as the site is open.

I was playing with my own Proof-of-work a couple years ago with a pause every X ms so we don't lock the browser while doing the calculations. If someone want's a simple introduction to basic hashing on the clientside here is a simple implementation: https://gist.github.com/Xeoncross/d5a9482e5231db62fb87

coin-hive/Monero would solve a lot of issues with simple MD5/SHA1 implementations like mine (like bot GPU's blowing through any kind of hashcash challenge).

Just an advice, on your landing page, you have a miner ui, showing the hash rate.

I wonder if you can change the hash rate to something more understandable, such as USD/hr?

I've heard some using MinerGate web mining in this way. Now, those same people can use Coin-Hive.
So, what would I need to change to mine on my account rather than their account. I like their home page top fold but I want to mine for myself. The service must be going through a pool of some sort?