-
Notifications
You must be signed in to change notification settings - Fork 1k
Roadmap for NOMP Extras
CLI needs documentation for its various commands (some yet to be implemented/finished)
- coinswitch -algo=scrypt
- setloglevel debug
- reloadpool pool.json
It seems needlessly redundant and tiresome to setup a unique stratum port per coin/pool. Global config can have a "unifiedPort" option that allows different coins to be mined through the same port by having miners specify the name of the coin in the currently ignored stratum password authentication field. Example global config:
"unifiedPorts": {
"enabled": true,
"ports": {
"3333": {
"diff": 16,
"varDiff": {
"minDiff": 4,
"maxDiff": 512,
"targetTime": 15,
"retargetTime": 90,
"variancePercent": 30
}
}
}
}
For example, there could be 10 different coins/pools setup and here would be the an example cgminer config that mines dogecoin through the unified port using a mining key as username and dogecoin
as password:
cgminer --scrypt -o stratum+tcp://examplepool.com:3333 -u 22851477d63a085dbc2398c8430af1c09e7343f6 -p dogecoin
NOMP has an MPOS mode that essentially just turns it into a drop-in replacement stratum server in replace of python-stratum-mining. It terms of scalability/efficiency, features, ease-of-use, community support - it really kick ass. However, NOMP (in normal standalone mode) will soon replace MPOS entirely so no more development effort will be spent on MPOS mode - consider it deprecated.
NOMP currently supports the ability to configure coin-switching ports which are controlled by a build in profitability calculator which uses coindeamon reported network info and info from APIs of various crypto-exchanges. Switching can also be controlled by an external script (in whatever language you want) using the NOMP CLI. Miners simply use their mining-pubkey for stratum username; the server payment processor converts that mining pubkey into an address for any type of coin in order to pay to miners. And that miner's single public key controls all those coin address. However, more features can be added to this:
- Instead of switching all miners over to a singe coin - we can spread out our miners hashrate to, for example, the top 5-10 most profitably coins, in order to have a less detrimental effect on the coins' networks.
- A feature that switches miners to mining the most recently added coin. Since the miner is using their pubkey they don't need to download the new coin's wallet to get an address for mining - so pools could pride/advertise themselves on, for example "We implement the latest released coins faster than any other pool so you can mine them while the network diff is still low!"
There are additional algos/coins yet to be implemented:
- The few, rare keccak coins that weren't forked from maxcoin (copperlark, ecoin)
- CryptoNight algo (the CryptoNote tech coins like bytecoin and bitmonero)
- Heavycoin with its voting crap
- Coins requiring addition tx ouput in block reward such as ECM2 and Flappycoin
- Myriad groestl
This website will be used to host the latest NOMP desktop binaries for pools to link to. I have some additional ideas for what the website could be used for they need more time to solidify :)
To reduce payment variance when you have a pool just starting out with few miners/hashrate, it would be super helpful for getting a pool off the ground by grabbing work from a larger pool, splitting the work up to your miners, then sending your miners' shares upstream. Then once a certain hashrate threshold is met your pool cam smoothly transitional to an all grown up standalone pool with good payment variance. There are obviously downsides to proxying to an upstream pool because that pool is taking their own fee, so either you don't take a fee or your miner's get a double mining fee - although that is a small price to pay for better variance. This feature seems possible to do with an upstream MPOS stratum pool, and very likely possible with a p2pool node, but haven't yet worked out all the technical details yet. The pool config for setup in an mode for upstream stratum proxying would look something like this:
"upstreamStratum": {
"host": "stratum.teamdoge.com",
"port": 3000,
"username": "pool_wallet_address",
"password": "somepassword",
}
There are two options with how to get work from the upstream pool to your workers:
- Act like a single worker with a single socket connection that gets work from the upstream pool. There are a few issues with this approach:
- Vardiff - lets say you have 50 workers, the upstream pool vardiff is going to give you a massive difficulty that your smaller miners couldn't possibly work with.
- Splitting up the work and preventing duplicate shares. For each of our miners, our server would have to roll the extranonce we are given so that we could attempt to give our own workers unique work - not sure how reliable that would be.
- For each of our miners we could open a new connection to the upstream pool and act like a fairly simple proxy that just ferried data between the upstream pool and our worker - while keeping track of the shares, of course.
- This would only work if the upstream pool allowed a single worker/ip to behave like a bunch of different workers - much do more research to make sure this is typically possible.
Now payment processing is the tricky part with this feature. You'd want to set automatic payments on your upstream pool to your address to happen as quickly as possible. The payment processor's job in this mode would be to be constantly check for payment received from the upstream pool. Once a payment is received we could mark the end of the round for the shares and do payouts accordingly.
Merged mining is a feature people have expressed interest in. From what I can see - it doesn't seem like a reasonable/useful/worthwhile feature to add. Coins have to specifically add support for it, and doesn't seem like an innovative feature itself. Although, I'm open to having my mind changed about it :)