deepMiner —— 本质上类似coinhive,也是后端开启nodejs连接矿池
作者:互联网
deepMiner
- deepMiner (idea like coinhive.js) By evil7@deePwn
- Working on XMR(Monero) and ETN(Electroneum) personal wallet
- Eazy way mining in browsers & Nice payback than Ad-inject
- Goodbye Coinhive. You opened a new view for Web-Object + Blockchains.
Supports
- And All coins who follow
cryptoNight
/cryptoNight v7 & v8 / cryptoNight R
&& pool connect inJSONRPC2
- Some coins used cryptoNote https://cryptonote.org/coins/ (example: Monero / Electroneum /Sumokoin / Aeon ...)
- The whitebook:
cryptoNight.txt
andcryptoNight.md
. Come from: https://cryptonote.org/standards/ - Technology: https://cryptonote.org/inside/
Usage
Add some javascript and write like this :
<script src="https://your_domain.com/lib/deepMiner.min.js"></script> <script> var miner = new deepMiner.Init('miner_name'); miner.start(); </script>
Testing notes
As now say. we only can have 25H/s maybe in the browsers (i7-4GHz/16G-RAM) because the cryptonight R updated.
And that's why people called "hardless to mining" in browsers.
And it's why the Coinhive choose closed too.
But by the way. If you can have 100USER/24H always online or running a online vedio website with 5k or 1M users and staying over 1h?
Maybe you can get a nice payback more than 1$ every day. (25H/s/day/100Users = 1$ now).
So as you see. you can just do learn JS something with this repo. Or do another develping with it. Or do build a fee system more than Ad injection.
Development
cd deepMiner && npm install && npm start
all wasm source files in cryptonight-wasm
server.js for srv side (webSocket<>tcpSocket)
web/lib/
|__ worker.js the worker to create hash job
|__ deepMiner.js the main of all should add in web
| (used `npm i -g minify` and running `minify deepMiner.js > deepMiner.min.js` if min file you need)
|__ cryptonight.js/.wasm come from emcc building. if in dev you can checking and rebuilding from folder: cryptonight-wasm
Install
curl https://raw.githubusercontent.com/deepwn/deepMiner/master/install.sh > install.sh sudo sh install.sh
lib request: *nodejs
/ *npm
/ ?nginx
useful pakages: forever
ssl support: https://certbot.eff.org/ / https://acme.sh/
OS tested on: ubuntu(debian)
API Document (come from Coinhive and have some rebuild on it)
- Not Support ASMJS in this master release
You can use events in your page, to handling the HTML with mining status.
<script> // Listen on events miner.on('found', function() { /* Hash found */ }) miner.on('accepted', function() { /* Hash accepted */ }) // Update stats once per second setInterval(function() { var hashesPerSecond = miner.getHashesPerSecond(); var totalHashes = miner.getTotalHashes(); var acceptedHashes = miner.getAcceptedHashes(); console.table({ "hashesPerSecond":hashesPerSecond, "totalHashes":totalHashes, "acceptedHashes":acceptedHashes}); // Output to HTML elements... }, 1000); </script>
new deepMiner.Init( [site, options] )
site : New a miner, that you can add a siteID / nameID or some string for Identify.
options : threads / throttle
E.g.:
var miner = new deepMiner.Init(document.location.host, { autoThreads: true }); miner.start();
.start( [mode] )
mode: deepMiner.IF_EXCLUSIVE_TAB / deepMiner.FORCE_EXCLUSIVE_TAB / deepMiner.FORCE_MULTI_TAB
E.g.:
miner.start(deepMiner.IF_EXCLUSIVE_TAB);
.stop( )
Stop mining and disconnect from the pool.
.isRunning( )
Returns true|false whether the miner is currently running: connected to the pool and has working threads.
.isMobile( )
Returns true|false whether the user is using a phone or tablet device. You can use this to only start the miner on laptops and PCs.
.hasWASMSupport( )
Returns true|false whether the Browser supports WebAssembly. If WASM is not supported, the miner will automatically use the slower asm.js version. Consider displaying a warning message to the user to update their browser.
.getNumThreads( )
Returns the current number of threads. Note that this will report the configured number of threads, even if the miner is not yet started.
.setNumThreads( numThreads )
Set the desired number of threads. Min: 1. Typically you shouldn't go any higher than maybe 8 or 16 threads even if your users have all new AMD Threadripper CPUs.
.getThrottle( )
Returns the current throttle value.
.setThrottle( throttle )
Set the fraction of time that threads should be idle. A value of 0 means no throttling (i.e. full speed), a value of 0.5 means that threads will stay idle 50% of the time, with 0.8 they will stay idle 80% of the time.
.getHashesPerSecond( )
Returns the total number of hashes per second for all threads combined. Note that each thread typically updates this only once per second.
.getTotalHashes( [interpolate] )
Returns the total number of hashes this miner has solved. Note that this number is typically updated only once per second.
.getAcceptedHashes( )
Returns the number of hashes that have been accepted by the pool. Also see the accepted event.
.on( event, callback(params) { } )
Specify a callback for an event.
event | description |
---|---|
optin | The user took action on the opt-in screen (AuthedMine only). The params.status is either "accepted" or "canceled". See below for an example. |
open | The connection to our mining pool was opened. Usually happens shortly after miner.start() was called. |
authed | The miner successfully authed with the mining pool and the siteKey was verified. Usually happens right after open. In case the miner was constructed with CoinHive.Token, a token name was received from the pool. |
close | The connection to the pool was closed. Usually happens when miner.stop() was called or the CoinHive.Token miner reached its goal. |
error | An error occured. In case of a connection error, the miner will automatically try to reconnect to the pool. |
job | A new mining job was received from the pool. |
found | A hash meeting the pool's was found and will be send to the pool. |
accepted | A hash that was sent to the pool was accepted. |
WASM sources
All sources in folder cryptonight-wasm.
You need install Emscripten first, and run ./build.sh
to make this wasm file up.
the build.sh
will help you build it and copy the new one to ./web/lib
.
How to Update
Just cd to /srv/deepMiner
run git pull
Don't forget backup your config.json
at first.
标签:deepMiner,nodejs,miner,js,coinhive,threads,was,pool 来源: https://www.cnblogs.com/bonelee/p/16498023.html