Pages:
Author

Topic: [ANN] Eloipool - FAST Python3 pool server software - GBT/stratum/dyntarget/proxy - page 14. (Read 123146 times)

hero member
Activity: 812
Merit: 587
Space Lord
Could anyone help me with setting up the config.py?
Thanks!
legendary
Activity: 2576
Merit: 1186
Was wondering if anyone had tried eloipool on a windows server?
"Windows" and "server" don't go together. And no, it won't work on Windows. You could possibly port it to use select(), but that's going to run into scaling problems very quickly. Too bad Windows doesn't have any sane socket polling interface - but I guess that's why it isn't a server platform.

Also, which version of the bitcoind is recommended for the best performance.
Eligius and I think some others are running my 0.6.0.eligius branch, based on 0.6.0.x (but does have even better GBT support than mainline).
sr. member
Activity: 388
Merit: 250
Save A Life, Adopt a Pet Today!
Howdy,

Was wondering if anyone had tried eloipool on a windows server?  Also, which version of the bitcoind is recommended for the best performance.

legendary
Activity: 2576
Merit: 1186
How to setup stratum in eloipool? stratumserver.py is included but can't find any settings of stratum there.
Thanks
Just add a StratumAddresses to the config.
legendary
Activity: 3122
Merit: 1032
#1 VIP Crypto Casino
How to setup stratum in eloipool? stratumserver.py is included but can't find any settings of stratum there.
Thanks
member
Activity: 76
Merit: 10
By the way, what is the use of GotWorkURI? Shares found from getmemorypool work cannot be submitted via getwork, or can they?
GotWorkURI is for merged mining. gotwork != getwork

I think that eloipool need more complex exemple configuration and step by step quick start guide  (in few scenerios ?  ) . Is there any example for merged mining configuration ? Could someone post  some config files ?  I tried to do it, but it is to complicated . just few lines of config from eloipool and bitcoin (altcoin) daemon proxy ?

UpstreamURI ? SecretUser? UpstreamBitCoinNode ?GotWorkURI ? BitCoinNodeAddresses ?

Whish version bitcoind shuld i use ? with merged ? which proxy ?

i have tries many  difrent configuration, and it still does not work....

could someone post example config ? is it possible to get it all together online ?


member
Activity: 76
Merit: 10
i see that there is in fact two errors when i use {target2bdiff(target)}

1.  JSONRPCHandler  ERROR   Error during JSON-RPC
and then
2. TypeError: unsupported operand type(s) for /: 'int' and 'NoneType

Code:
>>> 2012-12-29 15:10:46,080     JSONRPCHandler  ERROR   Error during JSON-RPC call: doJSON_getwork['00000002b3adf6e137be13xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxxxxx/eloipool12.py", line 573, in receiveShare
    checkShare(share)
  File "/xxxxxxxxxxxxxxxxxx/eloipool12.py", line 392, in checkShare
    checkData(share)
  File "/xxxxxxxxxxxxxxxxxx/eloipool12.py", line 353, in checkData
    raise RejectedShare('bad-prevblk')
util.RejectedShare: bad-prevblk

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxxxxx/jsonrpcserver.py", line 200, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/xxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 44, in doJSON_getwork
    return self.doJSON_submitwork(data)
  File "/xxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 81, in doJSON_submitwork
    self.server.receiveShare(share)
  File "/xxxxxxxxxxxxxxxxxx/eloipool12.py", line 579, in receiveShare
    logShare(share)
  File "/xxxxxxxxxxxxxxxxxx/eloipool12.py", line 568, in logShare
    i.logShare(share)
  File "/xxxxxxxxxxxxxxxxxx/sharelogging/logfile.py", line 60, in logShare
    logline = self.fmt.formatShare(share)
  File "/xxxxxxxxxxxxxxxxxx/util.py", line 55, in formatShare
    (stmt, params) = self.applyToShare(*a, **ka)
  File "/xxxxxxxxxxxxxxxxxx/util.py", line 62, in applyToShare
    params.append(f(share))
  File "/xxxxxxxxxxxxxxxxxx/util.py", line 115, in
    return lambda s: target2bdiff(subfunc(s))
  File "/xxxxxxxxxxxxxxxxxx/util.py", line 44, in target2bdiff
    bdiff = bdiff1target / target
TypeError: unsupported operand type(s) for /: 'int' and 'NoneType'


i dont know if it is importent
legendary
Activity: 2576
Merit: 1186
i have add  {target2bdiff(target)}  and get this error

Code:

Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpcserver.py", line 200, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 44, in doJSON_getwork
    return self.doJSON_submitwork(data)
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 81, in doJSON_submitwork
    self.server.receiveShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/eloipool12.py", line 579, in receiveShare
    logShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/eloipool12.py", line 568, in logShare
    i.logShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/sharelogging/logfile.py", line 60, in logShare
    logline = self.fmt.formatShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 55, in formatShare
    (stmt, params) = self.applyToShare(*a, **ka)
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 62, in applyToShare
    params.append(f(share))
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 115, in
    return lambda s: target2bdiff(subfunc(s))
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 44, in target2bdiff
    bdiff = bdiff1target / target
TypeError: unsupported operand type(s) for /: 'int' and 'NoneType'

so it look like  {target2bdiff(target)}  is buggy



but   {target2pdiff(target)}  seems to be ok Smiley
what means when someone have 1 ? and other user None ? as a result    {target2pdiff(target)}  in share log ?
Some errors/rejects occur before the pool knows the target the share is being submitted at, so those get None.
As you noticed, target2bdiff doesn't like this currently... should be an easy fix.
member
Activity: 76
Merit: 10
i have add  {target2bdiff(target)}  and get this error

Code:

Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpcserver.py", line 200, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 44, in doJSON_getwork
    return self.doJSON_submitwork(data)
  File "/xxxxxxxxxxxxxxxxxxxxx/jsonrpc_getwork.py", line 81, in doJSON_submitwork
    self.server.receiveShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/eloipool12.py", line 579, in receiveShare
    logShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/eloipool12.py", line 568, in logShare
    i.logShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/sharelogging/logfile.py", line 60, in logShare
    logline = self.fmt.formatShare(share)
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 55, in formatShare
    (stmt, params) = self.applyToShare(*a, **ka)
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 62, in applyToShare
    params.append(f(share))
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 115, in
    return lambda s: target2bdiff(subfunc(s))
  File "/xxxxxxxxxxxxxxxxxxxxx/util.py", line 44, in target2bdiff
    bdiff = bdiff1target / target
TypeError: unsupported operand type(s) for /: 'int' and 'NoneType'

so it look like  {target2bdiff(target)}  is buggy



but   {target2pdiff(target)}  seems to be ok Smiley
what means when someone have 1 ? and other user None ? as a result    {target2pdiff(target)}  in share log ?
legendary
Activity: 2576
Merit: 1186
but eloipool does not log share  difficult by default ? how to enable  this feature ?

or I have  to swith off dynamic target/difficult (DynamicTargeting =0 ) to get correct PPS calculation ...


or it does not depends from DynamicTargeting  variable, and PPS calculation  (and in fact other method ?) is impossible in eloipool ?
Eloipool doesn't log anything by default. You have to configure it.
Take your pick (add to share log statement - note the difference between curly braces and normal parenthesis):
  • {target} - Full target as a number (up to 256 bit; you probably don't really want this)
  • {target2pdiff(target)} - Target converted to "pool difficulty" (pdiff 1 = first 32 bits of target are 0, rest is 1; this is what pools used before vardiff)
  • {target2bdiff(target)} - Target converted to truncated "bitcoin difficulty" (bdiff 1 = first 32 bits of target are 0, next 16 are 1, then the rest are 0; this is what bitcoind reports as the difficulty)
member
Activity: 76
Merit: 10
but eloipool does not log share  difficult by default ? how to enable  this feature ?

or I have  to swith off dynamic target/difficult (DynamicTargeting =0 ) to get correct PPS calculation ...


or it does not depends from DynamicTargeting  variable, and PPS calculation  (and in fact other method ?) is impossible in eloipool ?
legendary
Activity: 2576
Merit: 1186
is it possible to use PPS reward shares count to use with  GBT/stratum/dyntarget ? does GBT/stratum/dyntarget/proxy affects shares  count ?
i want to use eloipool with PPS reward method (count shares in database) is it correct  ? or wrong method with eloipool and  GBT/stratum/dyntarget/proxy enabled ?
Eloipool just handles the miners. It's up to you how you pay them. As long as you log the share target/difficulty, you should be able to calculate the correct PPS value for each share.
member
Activity: 76
Merit: 10
is it possible to use PPS reward shares count to use with  GBT/stratum/dyntarget ? does GBT/stratum/dyntarget/proxy affects shares  count ?
i want to use eloipool with PPS reward method (count shares in database) is it correct  ? or wrong method with eloipool and  GBT/stratum/dyntarget/proxy enabled ?
legendary
Activity: 2576
Merit: 1186
Those are wrong data from client.
thanks for very fast answer Smiley
is it danger (someone try to mess (steal 25 BTC? fake shares ?) , or DoS pool ? )  ?or just ignore this messages ?
Nah, I just ignore them. The error is caught and ignored in Eloipool, but logged just in case the admin cares (like when I'm debugging it or BFGMiner Wink)

whish database should I use ? (mysql is useless... exception, disconnections etc.) whish version sql lib should i use ? which do you prefer on jour computer ?
I use sqlite+flatfile for testing, and Eligius uses Postgres. I think EclipseMC figured out the MySQL mess...
member
Activity: 76
Merit: 10
Those are wrong data from client.
thanks for very fast answer Smiley
is it danger (someone try to mess (steal 25 BTC? fake shares ?) , or DoS pool ? )  ?or just ignore this messages ?

which database should I use ? (mysql is useless... exception, disconnections etc.) which version sql lib should i use ? which do you prefer on Your computer ?
legendary
Activity: 2576
Merit: 1186
Those are wrong data from client.
member
Activity: 76
Merit: 10
hi, i got this errors in log,

Code:
2012-12-27 20:11:24,359 JSONRPCHandler  ERROR   Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxx/jsonrpcserver.py", line 264, in handle_request
    return self.doJSON(data, self.path[:3] == b'/LP')
  File "/xxxxxxxxxxxxxxx/jsonrpcserver.py", line 223, in doJSON
    data = data.decode('utf8')
  File "/usr/lib/python3.1/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 213-215: invalid data


Code:
2012-12-27 21:18:40,371 JSONRPCHandler  ERROR   Error during JSON-RPC call: doJSON_submitblock['02000000579f07f9c10be136a4ab439144d1ad74b2e21e512xxxxxxxxxxxxxxxxxxxxxxxxxxH', {}]
Traceback (most recent call last):
  File "/xxxxxxxxxxxxxxxxxx/jsonrpcserver.py", line 200, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/xxxxxxxxxxxxxxxxxx/jsonrpc_getblocktemplate.py", line 85, in doJSON_submitblock
    data = bytes.fromhex(data)
ValueError: non-hexadecimal number found in fromhex() arg at position 166


is there any solution  ?
i have last version from December 16 2012,

is it just wrog data from clinet ? or i have just lost 25 BTC ?
is there ANY support or manual  to this pool software ? Tongue ?
member
Activity: 66
Merit: 10
Ok, i'm trying to get eloipool with litecoin, and i'm getting this error:

 python eloipool.py
Traceback (most recent call last):
  File "eloipool.py", line 43, in
    bcnode = BitcoinNode(config.UpstreamNetworkId)
  File "/home/pi/eloipool/bitcoin/node.py", line 132, in __init__
    super().__init__(*a, **ka)
TypeError: super() takes at least 1 argument (0 given)

Can someone give some help on this. My config goes like this:

Code:
### Settings relating to server identity

# Name of the server
ServerName = 'PT LTC Pool'

### Settings relating to server scaling/load

# Share hashes must be below this to be valid shares
# If dynamic targetting is enabled, this is a minimum
ShareTarget = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff

# Automatically adjust targets per username
# 0 = disabled
# 1 = arbitrary targets
# 2 = power of two difficulties (zero bit counts)
DynamicTargetting = 0

# How many shares per minute to try to achieve on average
DynamicTargetGoal = 8

# Number of seconds hashrate is measured over
DynamicTargetWindow = 120

# Minimum and maximum of merkle roots to keep queued
WorkQueueSizeRegular = (0x100, 0x1000)

# Minimum and maximum of BLANK merkle roots to keep queued
# (used if we run out of populated ones)
WorkQueueSizeClear = (0x1000, 0x2000)

# Minimum and maximum of BLANK merkle roots to keep queued, one height up
# (used for longpolls)
WorkQueueSizeLongpoll = (0x1000, 0x2000)

# How long to wait between getmemorypool updates normally
MinimumTxnUpdateWait = 5

# How long to wait between retries if getmemorypool fails
TxnUpdateRetryWait = 1

# How long to sleep in idle loops (temporary!)
IdleSleepTime = 0.1

### Settings relating to reward generation

# Address to generate rewards to
TrackerAddr = 'LTC Address'  # testnet

# Coinbaser command to control reward delegation
# NOTE: This example donates 1% of block rewards to Luke-Jr for Eloipool develo$
CoinbaserCmd = 'echo -e "1\\n$((%d / 100))\\LTC Address"'

### Settings relating to upstream data providers

# JSON-RPC server for getmemorypool
UpstreamURI = 'http://ltc user:ltc password@localhost:9332'

# Set to True if you want shares meeting the upstream target to wait for a
# response from the upstream server before logging them. Otherwise, for such
# shares, upstreamResult will always be True and upstreamRejectReason will
# always be None. Note that enabling this may cause shares to be logged out of
# order, or with the wrong timestamp (if your share logger uses the log-time
# rather than share-time).
DelayLogForUpstream = False

# Bitcoin p2p server for announcing blocks found
UpstreamBitcoindNode = ('127.0.0.1', 9333)

# Network ID for the primary blockchain
UpstreamNetworkId = b'\xFA\xBF\xB5\xDA'

# Secret username allowed to use setworkaux
#SecretUser = ""

# URI to send gotwork with info for every share submission
#GotWorkURI = ''

# Share hashes must be below this to be submitted to gotwork
GotWorkTarget = 0x00000000fffffffffffffffffffffffffffffffffffffffffffffffffffff$

# Aim to produce blocks with transaction counts that are a power of two
# This helps avoid any chance of someone abusing CVE-2012-2459 with them
# 1 = cut out feeless transactions; 2 = cut out even fee-included transactions $
POT = 2

# Avoid mining feeless transactions except to satisfy POT
# Note this only works if POT is in fact enabled in the first place
Greedy = False

### Settings relating to network services

# Addresses to listen on for JSON-RPC getwork server
# Note that Eloipool only supports IPv6 sockets, and if you want to bind to an
# IPv4 address you will need to prepend it with ::ffff: eg ::ffff:192.168.1.2
JSONRPCAddresses = (
        ('::ffff:poollink.no-ip.org', 9337),
)

# Addresses to listen on for Bitcoin node
# Note that Eloipool only supports IPv6 sockets, and if you want to bind to an
# IPv4 address you will need to prepend it with ::ffff: eg ::ffff:192.168.1.2
BitcoinNodeAddresses = (
        ('::ffff:poollink.no-ip.org', 9338),
)

# Addresses that are allowed to "spoof" from address with the X-Forwarded-For h$
TrustedForwarders = ('::ffff:127.0.0.1',)


# Logging of shares:
ShareLogging = (
        {
                'type': 'logfile',
                'filename': 'share-logfile',
                'format': "{time} {Q(remoteHost)} {username} {YN(not(rejectReas$
        },
        {
                'type': 'sql',
                'engine': 'postgres',
                'dbopts': {
                        'host': 'localhost',
'database': 'pooldb',
                        'user': 'eloipool',
                        'password': 'somethingsecret',
                },
                'statement': "insert into shares (rem_host, username, our_resul$
        },
        {
                'type': 'sql',
                'engine': 'mysql',
                'dbopts': {
                        'host': 'localhost',
                        'db': 'eloidb',
                        'user': 'dbuser',
                        'password': 'dbadmin',
                },
                'statement': "insert into shares (rem_host, username, our_resul$
        },
{
                'type': 'sql',
                'engine': 'sqlite',
                'dbopts': {
                        'database': 'share.db',
                },
                'statement': "insert into shares (remoteHost, username, rejectR$
        },
)


What is wrong here?
member
Activity: 66
Merit: 10
So what's the latest stable release of eloipool that i can use? I've seen some forks in github too, are they good or is better to stick with the one from Luke in Gitourios?
Is eloi good for litecoins? I'm trying to set a private pool but been having a hard time. Tryed ecoinpool, pushpool and i want to give a shot at eloipool. My limited knowledge in programming is giving me some difficulties in setting up the pool, and so little info on how to set it up also. Ecoinpool has a really nice tutorial on how to setup, but it's been unmaintained for quite some time now, and running in couchdb, written in erlang, it's giving me a hard time to setup. The db grows way too big for my available space. Can't get it to use mysql to use a frontend like simplecoin. How about eloipool, are there any good open source frontend that i can use?

Thanks
mrb
legendary
Activity: 1512
Merit: 1028
Pages:
Jump to: