Pages:
Author

Topic: Using eloipool with litecoind (Read 5382 times)

member
Activity: 111
Merit: 10
My avatar is in the shop
September 23, 2014, 07:50:22 PM
#26
legendary
Activity: 1148
Merit: 1018
It's about time -- All merrit accepted !!!
member
Activity: 111
Merit: 10
My avatar is in the shop
September 22, 2014, 01:35:34 PM
#24
Cheers, I got this working: https://github.com/CryptoManiac/eloipool-scrypt
 Tongue  Cheesy But my princess is in another castle.  Sad
newbie
Activity: 57
Merit: 0
September 02, 2013, 01:09:22 AM
#23
I have been testing around with https://github.com/moopless/stratum-mining-litecoin.git
Support vardiff and stratum from the box, and was very easy to get running. Dunno about performance tho, only have ran it with 1-2 users. Getting mmcfe run the way you want is the 'B'.

Who knows why the link is not working?
full member
Activity: 168
Merit: 100
August 24, 2013, 01:27:10 AM
#22
I have been testing around with https://github.com/moopless/stratum-mining-litecoin.git
Support vardiff and stratum from the box, and was very easy to get running. Dunno about performance tho, only have ran it with 1-2 users. Getting mmcfe run the way you want is the 'B'.
legendary
Activity: 3108
Merit: 1359
newbie
Activity: 57
Merit: 0
August 23, 2013, 06:41:15 PM
#19
Someone found a solution which allows eloipool to work with  litcoin?
I can not believe that this is an impossible task!
sr. member
Activity: 448
Merit: 250
April 29, 2013, 09:59:30 AM
#18
I'm currently trying to get this implemented as well.  I bypassed the failing tests for the moment, and the program seems to startup and listen for connections, but when trying to connect to the stratum port I get:

AttributeError: 'StratumServer' object has no attribute 'JobBytes'


Continuing to dig into it.
hero member
Activity: 938
Merit: 1000
www.multipool.us
April 25, 2013, 07:02:56 PM
#17
Did anyone tried this:

https://github.com/Tydus/eloipool-litecoin

?

Works ?


I tried it, can't get it to work.

I'm currently hung up on the following error:

Traceback (most recent call last):
  File "./eloipool.py", line 80, in
    from bitcoin.txn import Txn
  File "/home/ltc/eloipool-litecoin/bitcoin/txn.py", line 146, in
    _test()
  File "/home/ltc/eloipool-litecoin/bitcoin/txn.py", line 124, in _test
    assert t.txid == b"C\xeczW\x9fUa\xa4*~\x967\xadAVg'5\xa6X\xbe'R\x18\x18\x01\xf7#\xba3\x16\xd2"
AssertionError
legendary
Activity: 2688
Merit: 1240
April 12, 2013, 01:50:49 PM
#16
Did anyone tried this:

https://github.com/Tydus/eloipool-litecoin

?

Works ?
legendary
Activity: 3108
Merit: 1359
March 31, 2013, 12:37:36 AM
#15
Using blocknotify for pushpool I set blocknotify to run this script:

Code:
#!/usr/bin/env python

import sys
import os

os.system("killall -s SIGUSR1 pushpoold")


I seem to find more uses for blocknotify in every project I am working on... Cheesy
This variant is acceptable only if pushpoold and bitcoind runned by the same account. Configurations like this not recommended for security reasons.

The preferred option is:

1) run litecoind and pushpoold using separated accounts (I usually using accounts named like "litecoin" and "pushpool")
2) simple C program for notify event handling:

Code:
#include 

int main(void)
{
    system("ps -ef | grep pushpoold | grep -v grep | awk '{print $2}' | xargs kill -s SIGUSR1 > /dev/null 2> /dev/null");

    return 0;
}

Code:
gcc -o blocknotify blocknotify.c 
chown pushpool:pushpool ./blocknotify
chmod ug+s ./blocknotify
and then in litecoin.conf:
Code:
blocknotify='/opt/blocknotify'
legendary
Activity: 1064
Merit: 1000
March 31, 2013, 12:21:03 AM
#14
Like the origin, alexhz's fork uses 10s timer and SIGUSR1 as a trigger events to request new work template from upstream. Litecoind has getworkex integrated, so this daemon can work with unpatched litecoind, but blknotify script is required.

I also found this simple little block monitor quite useful:
-blknotify option will be simplier and more reliable.

You are 100% correct. I have been using the blocknotify option for a number of things, including some experiments with the explorers and tripping database updates..

Using blocknotify for pushpool I set blocknotify to run this script:

Code:
#!/usr/bin/env python

import sys
import os

os.system("killall -s SIGUSR1 pushpoold")


I seem to find more uses for blocknotify in every project I am working on... Cheesy
legendary
Activity: 3108
Merit: 1359
March 15, 2013, 02:36:40 PM
#13
Balthazar, got that code for me ? Still looking for vardiff code
Oh, I'm sorry because I forget about it. Embarrassed But I found the sources, and can send it to you. Give me your e-mail in PM. Smiley
legendary
Activity: 2688
Merit: 1240
March 15, 2013, 01:53:41 PM
#12
Balthazar, got that code for me ? Still looking for vardiff code
legendary
Activity: 1099
Merit: 1000
March 15, 2013, 07:16:53 AM
#11
OP, can you please reply to my PM's ?
Thanks.
legendary
Activity: 3108
Merit: 1359
March 13, 2013, 07:13:37 PM
#10
It's quite simple, and I have implementation of this feature for btc. I'll try to find my sources tomorrow.
legendary
Activity: 2688
Merit: 1240
March 13, 2013, 06:02:07 PM
#9
Thanks a lot, I've got the block monitor script up an running, it willingly sends the signal when a new block is found on the network.

blkmon was doing nothing :-/

Where in the code is difficulty defined ? All I see is EASY_TARGET in config.c .. Which is

Code:
define EASY_TARGET "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000"

in original code.

Would that need to be defined for each worker separately ?
legendary
Activity: 3108
Merit: 1359
March 13, 2013, 05:32:50 PM
#8
Like the origin, alexhz's fork uses 10s timer and SIGUSR1 as a trigger events to request new work template from upstream. Litecoind has getworkex integrated, so this daemon can work with unpatched litecoind, but blknotify script is required.

I also found this simple little block monitor quite useful:
-blknotify option will be simplier and more reliable.
legendary
Activity: 1064
Merit: 1000
March 13, 2013, 04:28:10 PM
#7
I do not know of a patch, but variable difficulty is one of the things I have looked in to.

It did not appear that it would be that hard to implement.

I was thinking of a non-registered login where miners would use whatever payout address they want as the username and the password would be the difficulty the miner wanted.Perhaps coded like Bitparking pools (d=xx) anything else in the password field would just be ignored.


In the sever.c code it is fairly easy to find and enable/disable the  password/username check and/or add whatever code you wanted to run at miner login.
Code:
 /* password database authentication check */
        pass_db = pwdb_lookup(user);
        if (!pass_db || (strcmp(pass, pass_db) && *pass_db != '\0'))
                goto out;

        rc = true;
        strncpy(username_out, user, 64);
        username_out[64] = 0;

out:
        free(pass_db);
        free(bin);
        free(t_type);
        free(t_b64);
        free(t_userpass);
        return rc;
Perhaps a check to make sure the address is a valid address for the chain, then place the payout address in the pool_worker database along with the password(difficulty desired).

One could just as easy use a registered system and add a difficulty field to the pool_worker table.

Either way, the simplicity of the pushpool code, makes alterations easier then with some of the newer pool software.

Quick hint: if using the native blkmond for long poll trips, there are two places in the blkmond code that directly contain and use the "magic" number for the chain:

Code:
 def got_data(self):
                while True:
                        if len(self.recvbuf) < 4:
                                return
                        if self.recvbuf[:4] != "\xFC\xC1\xB7\xDC":
                                raise ValueError("got garbage %s" % repr(self.recvbuf))
                        if self.ver_recv < 209:
                                if len(self.recvbuf) < 4 + 12 + 4:
                                        return

Code:
 def send_message(self, message, pushbuf=False):
                if self.state != "connected" and not pushbuf:
                        return
                print "send %s" % repr(message)
                command = message.command
                data = message.serialize()
                tmsg = "\xFC\xC1\xB7\xDC"
                tmsg += command
                tmsg += "\x00" * (12 - len(command))
                tmsg += struct.pack("

I sometimes think that the pool software developers purposely bury things like "magic numbers" instead of having them defined in the config file in order to make it more of a "challenge" to adapt the software to other coins.. Cheesy

Some of the new daemons have a block notify feature that could be used to completely remove the need for a complex block monitor.

I also found this simple little block monitor quite useful:

Code:
#!/usr/bin/env python
from jsonrpc.authproxy import AuthServiceProxy
import sys
import os

access = AuthServiceProxy("http://RPCUSER:[email protected]:8332")
blockcount = access.getblockcount()
from time import sleep
while(True):
        newcount = access.getblockcount()
        if newcount > blockcount:
                os.system("killall -s SIGUSR1 pushpoold")
                sys.stdout.write("B")
                sys.stdout.flush()
                blockcount = newcount
                sleep(1)
        else:
                sleep(0.1)
Thanks to metonymous

Bitcointalk thread:

https://bitcointalksearch.org/topic/blkmond-lite-8797

Pages:
Jump to: