Pages:
Author

Topic: How to build your own Multipool - the Open Source Way - page 4. (Read 35459 times)

sr. member
Activity: 560
Merit: 250
Let me know if anyone is even reading this far. Smiley


Reading it and thanking you for every second you spent on it.

I love you right now  Grin
hero member
Activity: 630
Merit: 500
Sweet I found a block on my NOMP pool.
Now I hope it gets to maturity  Grin
http://diamond.danbo.bg:2750/t/8MjqxZ9bCK

Looks like very little or even any tuning needed on my "rewardRecipients" is needed  Cool

0    Not yet redeemed    0.990001    dNsxRjmtmUrEXQkKESGAJzm5tv3MPzqLrS    33:03b5...35d6 CHECKSIG
1    Not yet redeemed    0.05    dZi9hpA5nBC6tSAbPSsiMjb6HeQTprcWHz    DUP HASH160 20:de92...42d0 EQUALVERIFY CHECKSIG
2    Not yet redeemed    0.009999    dE1xgAEwfA3BsxEpXSBTrqiYbrEUyZwwKg    DUP HASH160 20:068e...1829 EQUALVERIFY CHECKSIG

2nd block found  Tongue
http://diamond.danbo.bg:2750/t/47CvEcUhwk

0    Not yet redeemed    0.99    dNsxRjmtmUrEXQkKESGAJzm5tv3MPzqLrS    33:03b5...35d6 CHECKSIG
1    Not yet redeemed    0.05    dZi9hpA5nBC6tSAbPSsiMjb6HeQTprcWHz    DUP HASH160 20:de92...42d0 EQUALVERIFY CHECKSIG
2    Not yet redeemed    0.01    dE1xgAEwfA3BsxEpXSBTrqiYbrEUyZwwKg    DUP HASH160 20:068e...1829 EQUALVERIFY CHECKSIG

Looks like I got "rewardRecipients" perfect now  Grin
Still waiting on valid on first one ...
1st block Valid  Smiley now in Pool Wallet balance.  Transaction to Donation wallet added to balance  Wink
Now waiting on 2nd block to become valid and then Pool should payout to Miner wallet when threshold reached ...
Now to work on incorrect stats page hashrate values  (1/256 of miner rate) ...

If OP would come back and finish his great work I'd just replace all the funky NOMP stats pages with his work ...
hero member
Activity: 630
Merit: 500
Haven't tried it yet but if your info is good as it looks, you'll be a hero around here.
This is all live directly off of the BTCDPool.com site.
I will be uploading a snapshot of all of the config files from that pool later tonight.

And when Huh
hero member
Activity: 630
Merit: 500
I'm extremely interested and have read thru the whole thread.
Please examine my basic config in prev post and tell me what I need to fix or config so I can get it up and running, then I want to mod it like you have been describing.

OK I solved the "(Thread 1) Error with share processor multi [{},{},{},{}]" error, it had to do with redis ...
The [STATS] error also went away Smiley
Now to find a block and see if payouts working ...
At the sgminer end of things I'm getting "Accepted untracked share" occasionally what could this be?

Also eagerly awaiting your zip files Smiley
hero member
Activity: 630
Merit: 500
I'm having trouble setting up NOMP

Here is output from node init.js

Quote
2014-08-07 05:40:57 [POSIX]     [Connection Limit] (Safe to ignore) POSIX module not installed and resource (connection) limit was not raised
2014-08-07 05:40:57 [Master]    [CLI] CLI listening on port 17117
2014-08-07 05:40:58 [Master]    [PoolSpawner] Spawned 1 pool(s) on 2 thread(s)
2014-08-07 05:41:00 [Payments]  [diamondcoin] Payment processing setup to run every 600 second(s) with daemon ([email protected]:17772) and redis (127.0.0.1:6379)                                                                  2014-08-07 05:41:00 [Payments]  [diamondcoin] Finished interval - time spent: 17ms total, 5ms redis, 10ms daemon RPC
2014-08-07 05:41:00 [Switching] [Setup] (Thread 1) Loading last proxy state from redis
2014-08-07 05:41:00 [Pool]      [diamondcoin] (Thread 1) Share processing setup with redis (127.0.0.1:6379)
2014-08-07 05:41:00 [Switching] [Setup] (Thread 1) Switching "switch1" listening for groestl on port 3333 into diamondcoin
2014-08-07 05:41:00 [Website]   [Server] Website started on 127.0.0.1:8080
2014-08-07 05:41:00 [Stats]     [Global] error with getting global stats [{},{}]
2014-08-07 05:41:00 [Stats]     [Global] error getting all stats[{},{}]

2014-08-07 05:41:00 [Pool]      [diamondcoin] (Thread 1) Stratum Pool Server Started for diamondcoin [DMD] {groestl}
2014-08-07 05:41:00 [Switching] [Setup] (groestl) Setting proxy difficulties after pool start
2014-08-07 05:41:00 [Switching] [Setup] (Thread 2) Loading last proxy state from redis
2014-08-07 05:41:00 [Pool]      [diamondcoin] (Thread 2) Share processing setup with redis (127.0.0.1:6379)
2014-08-07 05:41:00 [Switching] [Setup] (Thread 2) Switching "switch1" listening for groestl on port 3333 into diamondcoin
2014-08-07 05:41:00 [Pool]      [diamondcoin] (Thread 2) Stratum Pool Server Started for diamondcoin [DMD] {groestl}
2014-08-07 05:41:00 [Switching] [Setup] (groestl) Setting proxy difficulties after pool start
2014-08-07 05:41:30 [Pool]      [diamondcoin] (Thread 1) Authorized dE1xgAEwfA3BsxEpXSBTrqiYbrEUyZwwKg:x [10.42.0.99]
2014-08-07 05:41:55 [Pool]      [diamondcoin] (Thread 1) No new blocks for 55 seconds - updating transactions & rebroadcasting work
2014-08-07 05:41:55 [Pool]      [diamondcoin] (Thread 2) No new blocks for 55 seconds - updating transactions & rebroadcasting work
2014-08-07 05:41:58 [Stats]     [Global] error with getting global stats [{},{}]
2014-08-07 05:41:58 [Stats]     [Global] error getting all stats[{},{}]

2014-08-07 05:42:05 [Pool]      [diamondcoin] (Thread 2) Block notification via RPC polling
2014-08-07 05:42:05 [Pool]      [diamondcoin] (Thread 1) Block notification via RPC polling
2014-08-07 05:42:50 [Pool]      [diamondcoin] (Thread 1) Share accepted at diff 0.00390625/2.42240273 by dE1xgAEwfA3BsxEpXSBTrqiYbrEUyZwwKg [10.42.0.99]
2014-08-07 05:42:50 [Pool]      [diamondcoin] (Thread 1) Error with share processor multi [{},{},{},{}]
2014-08-07 05:42:55 [Pool]      [diamondcoin] (Thread 1) Share accepted at diff 0.00390625/2.59897940 by dE1xgAEwfA3BsxEpXSBTrqiYbrEUyZwwKg [10.42.0.99]
2014-08-07 05:42:55 [Pool]      [diamondcoin] (Thread 1) Error with share processor multi [{},{},{},{}]
2014-08-07 05:42:55 [Pool]      [diamondcoin] (Thread 1) Share accepted at diff 0.00390625/20.79394799 by

Here is config.json
Code:
{
    "logLevel": "debug",
    "logColors": true,

    "cliPort": 17117,

    "clustering": {
        "enabled": true,
        "forks": "auto"
    },

    "defaultPoolConfigs": {
        "blockRefreshInterval": 1000,
        "jobRebroadcastTimeout": 55,
        "connectionTimeout": 600,
        "emitInvalidBlockHashes": false,
        "validateWorkerUsername": true,
        "tcpProxyProtocol": false,
        "banning": {
            "enabled": true,
            "time": 600,
            "invalidPercent": 50,
            "checkThreshold": 500,
            "purgeInterval": 300
        },
        "redis": {
            "host": "127.0.0.1",
            "port": 6379
        }
    },

    "website": {
        "enabled": true,
        "host": "127.0.0.1",
        "port": 8080,
        "stratumHost": "bogus.ddns.net",
        "stats": {
            "updateInterval": 60,
            "historicalRetention": 43200,
            "hashrateWindow": 300
        },
        "adminCenter": {
            "enabled": true,
            "password": "password1bogus"
        }
    },

    "redis": {
        "host": "127.0.0.1",
        "port": 6379
    },

    "switching": {
        "switch1": {
            "enabled": true,
            "algorithm": "groestl",
            "ports": {
                "3333": {
                    "diff": 0.00390625,
                    "varDiff": {
                        "minDiff": 0.00390625,
                        "maxDiff": 4,
                        "targetTime": 15,
                        "retargetTime": 90,
                        "variancePercent": 30
                    }
                }
            }
        },
        "switch2": {
            "enabled": false,
            "algorithm": "scrypt",
            "ports": {
                "4444": {
                    "diff": 10,
                    "varDiff": {
                        "minDiff": 16,
                        "maxDiff": 512,
                        "targetTime": 15,
                        "retargetTime": 90,
                        "variancePercent": 30
                    }
                }
            }
        },
        "switch3": {
            "enabled": false,
            "algorithm": "x11",
            "ports": {
                "5555": {
                    "diff": 0.001,
                    "varDiff": {
                        "minDiff": 0.001,
                        "maxDiff": 1,
                        "targetTime": 15,
                        "retargetTime": 60,
                        "variancePercent": 30
                    }
                }
            }
    
        }

    },

    "profitSwitch": {
        "enabled": false,
        "updateInterval": 600,
        "depth": 0.90,
        "usePoloniex": true,
        "useCryptsy": true,
        "useMintpal": true,
        "useBittrex": true
    }
}

Here is coins/diamondcoin.json
Code:
{
    "name": "Diamondcoin",
    "symbol": "DMD",
    "algorithm": "groestl",
    "txMessages": false,
    "normalHashing" : true,
    "peerMagic" : "e4e8dbfd",
    "peerMagicTestnet" : "edf2c0ef"
}

Here is pool_configs/diamond.json
Code:
{
    "enabled": true,
    "coin": "diamondcoin.json",

    "address": "dQKbYwJFpq9MDojuwE99D3MHihEkEW6aqk",

    "rewardRecipients": {
        "dZi9hpA5nBC6tSAbPSsiMjb6HeQTprcWHz" : 4.76190477,
        "dEdj7aH7Pgt3oVAeEFmA46sXCDcZYeiQjP" : 0.95238095
    },

    "paymentProcessing": {
        "enabled": true,
        "paymentInterval": 600,
        "minimumPayment": 1,
        "daemon": {
            "host": "127.0.0.1",
            "port": 17772,
            "user": "bogususer",
            "password": "boguspass"
        }
    },

    "ports": {
        "3333": {
            "diff": 0.008,
            "varDiff": {
                "minDiff": 0.00390625,
                "maxDiff": 8,
                "targetTime": 15,
                "retargetTime": 90,
                "variancePercent": 30
            }
        }
    },

    "daemons": [
        {
            "host": "127.0.0.1",
            "port": 17772,
            "user": "bogususer",
            "password": "boguspass"
        }
    ],

    "p2p": {
        "enabled": false,
        "host": "127.0.0.1",
        "port": 17772,
        "disableTransactions": true
    },

    "mposMode": {
        "enabled": false,
        "host": "127.0.0.1",
        "port": 3306,
        "user": "dmdpool",
        "password": "boguspass",
        "database": "dmd",
        "checkPassword": true,
        "autoCreateWorker": false
    }

}

full member
Activity: 210
Merit: 100
Living the dream
Watching with interest  Smiley

Same here. I'd like to make one of my own.
sr. member
Activity: 448
Merit: 250
does this need to build a large server specifications?
sr. member
Activity: 978
Merit: 250
Thanks for your work, really like how you act in this world full of scams: Respect!
full member
Activity: 274
Merit: 122
Hmmm no updates yet?  Also I see the site is still down.. Sad
legendary
Activity: 1428
Merit: 1000
Watching with interest  Smiley
full member
Activity: 274
Merit: 122
WHOOPS
i let OVH suspend BTCDPool.com accidently due to an outstanding balance.
i will pay it today and once it is reactivated i will make an archive of the entire pool's files and upload it somewhere.

in return for this, i will ask each of you to go to an exchange and buy some bitcoindark and hold onto it. Smiley
and if you find it useful, to consider making a donation! I won't try and blackmail coins out of anyone for any of this info though.

donation addresses:
Bitcoindark (BTCD) - RRuXHtWdGFE95BSDjfPZNEfRhn9XKfHqky
Bitcoin (BTC) - 1ALLcKCwUrQCQ9XPkxwv2pKstyau9XogpV
Litecoin (LTC) - LTWwzpPhdHD9KzDcGh4SfkfiKPbFiSoAVV


check out what the latest "my miner" reports look like:
http://hashrate.org/miner/8896310590202454791


PS thanks for the JQ info - I'm happy somebody is actually looking at this and deriving some value from it. Smiley

 

Heck, you get me through setting this up with an auto send and an auto withdrawl for TEK just on cryptsy alone and i will send you .333 BTC.....
full member
Activity: 274
Merit: 122
Stats are looking good man, trying to work through all this myself to do the same for TEK.
sr. member
Activity: 350
Merit: 250
Thanks for this post bud. Much appreciated
sr. member
Activity: 378
Merit: 254
small fry
By setting the payout limit to all 9s it effectively kills the momp payouts from ever triggering.  I pretty much have the whole thing rewritten, I just use the momo code to calculate the per miner coin earnings for the various alts.

Ps I mean it guys, please go buy some bitcoindark. If each of you did, we would all be rich. Smiley
full member
Activity: 137
Merit: 100
Thank you for this guide, this is exactly what I was looking for so I can setup a multipool ones CapitalCoin becomes PoS only.
full member
Activity: 274
Merit: 122
Cool and thanks for the information here.  I will keep plugging along with this initial setup and look at some of these items.  Personally my group of miners and I have decided to only deal with cryptsy.  Do you have anything to share yet around that exchange and pulling funds back out to the wallet?

I may look at doing a payment process as a complete replacement for what is in NOMP now.

If you like I can add info here on the basic setup as well from what I am going through.  Don't mind contributing at all.

Looks like we have a common goal here, im doing the same for TEK...
sr. member
Activity: 378
Merit: 254
small fry
So a couple of things I am not seeing here, maybe I am missing it.

1. How should the miners connect?  Do they use their payout address for the target coin when mining all coins? (I am assuming yes)
yes, that is exactly what they do.
Quote
2. I have not seen any code that gets the exchange to send the coins back to your target wallet.  This is still part of the still to come or is that a manual operation for the pool operator?
i haven't included any of the exchange-side code yet.  it supports withdrawals from cryptsy, at least.  bter and mintpal and poloniex require manual withdrawals by the pool operator.  having a healthy reserve of the target coin sorta mitigates this a a big issue, though.  it does support automated withdrawals as long as the pool's wallet address is added as a trusted withdrawal address within cryptsy.
Quote
3. If a shift is sent to an exchange I am assuming that the payout just fail until there is enough funds in the wallet of the target coin to payout what is owed?
the payout script actually is triggered by another script i have (which first of all estimates the amunt of the payout, then checks the local daemon and verifies that enough is present to cover the payout.  If there is not enough it will try and withdraw from cryptsy, if there is still not enough it will log an error in a log file.  I still mean to set it up so that it can notify the op via SMTP at that point.
Quote
Really liking what you are doing so far.


J
thanks very much man!
i plan on eventually trying to document all of this stuff
the best way to understand lots of this stuff is just fire up a basic nomp pool
run redis-server and run the command 'monitor' and just watch how NOMP interacts with the various redis values.  there really needs to be tons of documentation created around that sort of stuff, then how my modifications alter all that.  i will try and get it done eventually ,but I'm also in the process of setting up a big (well, relatively, ~100th) sha community-owned mine that will pay out solely in NXT. Smiley
full member
Activity: 274
Merit: 122
No worries, just lending a hand here.

Also, you may want to note the dependency upon "jq" for the shell scripts that get the coin info from the exchanges.  For an updated ubuntu 12.04 it is just apt-get install jq

No need to change or add repos like the jq sites says.

J
sr. member
Activity: 378
Merit: 254
small fry
WHOOPS
i let OVH suspend BTCDPool.com accidently due to an outstanding balance.
i will pay it today and once it is reactivated i will make an archive of the entire pool's files and upload it somewhere.

in return for this, i will ask each of you to go to an exchange and buy some bitcoindark and hold onto it. Smiley
and if you find it useful, to consider making a donation! I won't try and blackmail coins out of anyone for any of this info though.

donation addresses:
Bitcoindark (BTCD) - RRuXHtWdGFE95BSDjfPZNEfRhn9XKfHqky
Bitcoin (BTC) - 1ALLcKCwUrQCQ9XPkxwv2pKstyau9XogpV
Litecoin (LTC) - LTWwzpPhdHD9KzDcGh4SfkfiKPbFiSoAVV


check out what the latest "my miner" reports look like:
http://hashrate.org/miner/8896310590202454791


PS thanks for the JQ info - I'm happy somebody is actually looking at this and deriving some value from it. Smiley

 
full member
Activity: 274
Merit: 122
So a couple of things I am not seeing here, maybe I am missing it.

1. How should the miners connect?  Do they use their payout address for the target coin when mining all coins? (I am assuming yes)

2. I have not seen any code that gets the exchange to send the coins back to your target wallet.  This is still part of the still to come or is that a manual operation for the pool operator?

3. If a shift is sent to an exchange I am assuming that the payout just fail until there is enough funds in the wallet of the target coin to payout what is owed?

Really liking what you are doing so far.

J
Pages:
Jump to: