Pages:
Author

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

legendary
Activity: 2576
Merit: 1186
Segregated witness and SegNet are now supported in the "segwit" branch.
newbie
Activity: 2
Merit: 0
If TrackerAddr is not defined, will the bitcoind provide a generation address?How to estimate the current hashrate of the pool?
sr. member
Activity: 359
Merit: 251
I got a working version put together. I started a new thread here for support etc.

https://bitcointalksearch.org/topic/n00b-friendly-eloipool-solo-pool-make-your-own-pool-point-and-click-software-1235123


Good luck to anyone else looking to try to figure this out. It took me a while but it was worth it. All knowledge is priceless Smiley
sr. member
Activity: 359
Merit: 251
Note: After mining several test blocks successfully it seems that the coinbaser address doesn't work, nor does the mining to the miner's address. The only address that receives coins is the TrackerAddr address in the config.py file.
sr. member
Activity: 359
Merit: 251
In frustration I completely removed my eloipool installation and started from scratch using a different build and I'll be darned if it isn't working now. A few stales from time to time, but difficulty rises quickly and the bad shares are all gone. It's running fast and easy.

I'll continue testing this weekend. If all goes well I'll have a downloadable point-and-click version ready soon. Entirely n00b friendly.
sr. member
Activity: 359
Merit: 251
Ok, successfully mined a test coin, but it failed to show up at the target address.
Good thing I'm on the test net and not shooting myself for missing 25 btc!  Cheesy
sr. member
Activity: 359
Merit: 251
Running on Bitcoin testnet I keep getting this error when a test block is found

Code:
2015-10-23 15:26:56,261	BitcoinRPC	DEBUG	<-114- "bad-version"
2015-10-23 15:26:56,261 merkleMaker ERROR Upstream 'primary' rejected proposed block from 'primary': bad-version
2015-10-23 15:26:56,261 merkleMaker CRITICAL Traceback (most recent call last):
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 694, in run
    self.merkleMaker_I()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 684, in merkleMaker_I
    self.merkleMaker_II()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 662, in merkleMaker_II
    return self._updateMerkleTree()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 550, in _updateMerkleTree
    self._updateMerkleTree_I()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 536, in _updateMerkleTree_I
    raise RuntimeError('Failed to create usable template')
RuntimeError: Failed to create usable template



I believe it has to do with the difference in Test coins vs real coins. Trying to figure it out now...

sr. member
Activity: 359
Merit: 251
ALso, if someone has a copy of midstate.so and wouldn't mind sharing the code (cut,paste) I'd sure appreciate it as Gitorious is dead and not serving it anymore.
sr. member
Activity: 359
Merit: 251
For fun and as a soundboard I'll start posting my progress here. If anyone feels froggy please jump in, though I know this isn't that type of thread (support).

Moving on, it seems like the latest writeups all call for the process to be called "eloipool.py", but on my systems - and I've gone through several at this point trying to get it working - but all my systems run the process as "python3" so the killall scripts don't operate correctly.


As for errors, this one pops up all the time on the commandline after running : eloipool.py: no process found. I discovered this is due to newblock.sh trying to kill the process by calling it eloipool.py instead of python3. Fixed.

Now I'm still getting this error with the merklemaker:

Code:
2015-10-23 09:13:02,020	BitcoinRPC	DEBUG	-5967379-> getblocktemplate [{"capabilities": ["coinbasevalue", "coinbase/append", "coinbase", "generation", "time", "transactions/remove", "prevblock"]}]
2015-10-23 09:13:02,020 BitcoinRPC DEBUG -5967380-> getmemorypool [{"tx": "obj", "capabilities": ["coinbasevalue", "coinbase/append", "coinbase", "generation", "time", "transactions/remove", "prevblock"]}]
2015-10-23 09:13:02,021 BitcoinRPC DEBUG -5967381-> getmemorypool []
2015-10-23 09:13:02,022 merkleMaker CRITICAL Traceback (most recent call last):
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 694, in run
    self.merkleMaker_I()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 684, in merkleMaker_I
    self.merkleMaker_II()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 650, in merkleMaker_II
    return self._updateMerkleTree()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 550, in _updateMerkleTree
    self._updateMerkleTree_I()
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 513, in _updateMerkleTree_I
    r = self._updateMerkleTree_fromTS(TS)
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 478, in _updateMerkleTree_fromTS
    MP = self._CallGBT(TS)
  File "/apple/eloipool-server/eloipool/merklemaker.py", line 328, in _CallGBT
    MP = access.getblocktemplate(self.GBTReq)
  File "/apple/eloipool-server/eloipool/bitcoinrpc/authproxy.py", line 134, in __call__
    'Content-type': 'application/json'})
  File "/usr/lib/python3.2/http/client.py", line 971, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.2/http/client.py", line 999, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/lib/python3.2/http/client.py", line 854, in putrequest
    raise CannotSendRequest(self.__state)
http.client.CannotSendRequest: Request-sent


And if I downgrade using the command in my previous post I get thousands of stale, bad, or discarded shares on the miner (see pic). So I'm back to going through this and trying to get it running. I'll post if I come up with a solution.


Got Stale? Check that "Rejected" vs "Accepted" - Ouch!




sr. member
Activity: 359
Merit: 251
I'm working on a "Cut and paste" version of this pool server for the average "joe" to download, fire up, and begin mining. No programming or linux experience necessary. I've got most of the bugs worked out and instructions typed, but the Python errors are tangling me up. If you've put this server together and can provide a little insight for the greater good, PM me.
sr. member
Activity: 359
Merit: 251
Will do. What version should I be using?

I've "downgraded" by using this command

Code:
git checkout -b 770881c8bd9b1f92427290270b37a28751cf9df0


This sent my "bad" shares & rejected through the roof.  Shocked

legendary
Activity: 2576
Merit: 1186
Downgrade python-bitcoinrpc.
sr. member
Activity: 359
Merit: 251
I just got this running and mining is working (finally!) but I'm receiving an error in my log file, similar to another user. If a fix was posted I didn't see it.

Does anyone with more python experience have an idea of where to troubleshoot?

Code:
2015-10-19 15:05:54,195 BitcoinRPC DEBUG -45550-> getblocktemplate [{"capabilities": ["coinbasevalue", "coinbase/append", "coinbase", "generation", "time", "transactions/remove", "prevblock"]}]
2015-10-19 15:05:54,216 BitcoinRPC DEBUG -45551-> getmemorypool [{"tx": "obj", "capabilities": ["coinbasevalue", "coinbase/append", "coinbase", "generation", "time", "transactions/remove", "prevblock"]}]
2015-10-19 15:05:54,216 BitcoinRPC DEBUG -45552-> getmemorypool []
2015-10-19 15:05:54,218 merkleMaker CRITICAL Traceback (most recent call last):
  File "/eloipool/merklemaker.py", line 704, in run
    self.merkleMaker_I()
  File "/eloipool/merklemaker.py", line 694, in merkleMaker_I
    self.merkleMaker_II()
  File "/eloipool/merklemaker.py", line 660, in merkleMaker_II
    return self._updateMerkleTree()
  File "/eloipool/merklemaker.py", line 560, in _updateMerkleTree
    self._updateMerkleTree_I()
  File "/eloipool/merklemaker.py", line 523, in _updateMerkleTree_I
    r = self._updateMerkleTree_fromTS(TS)
  File "/eloipool/merklemaker.py", line 484, in _updateMerkleTree_fromTS
    MP = self._CallGBT(TS)
  File "/eloipool/merklemaker.py", line 332, in _CallGBT
    MP = access.getblocktemplate(self.GBTReq)
  File "/eloipool/bitcoinrpc/authproxy.py", line 134, in __call__
    'Content-type': 'application/json'})
  File "/usr/lib/python3.2/http/client.py", line 971, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.2/http/client.py", line 999, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/lib/python3.2/http/client.py", line 854, in putrequest
    raise CannotSendRequest(self.__state)
http.client.CannotSendRequest: Request-sent
full member
Activity: 190
Merit: 100
0.045 BTC Bounty- Help me get my eloipool running right so people can connect & fees are deducted


Hi,

I got bitcoind & eloipool up & running on my VPS, but I have no mining gear with which to test it- bfgminer returns an error about 'no servers to connect to' when I run it from my desktop using the public IP address of the VPS.

Bounty will be paid to anyone who can sort out the configuration such that bitcoin miners can connect to the pool & pool fees are deducted properly.

It could be configured properly now, but I can't tell without connecting to it myself to see. Either way, I'd like you to record the screen or something to prove its working right, so I can pay you knowing I'm not getting scammed.

PM me if interested.

Thanks,

-N
hero member
Activity: 765
Merit: 500
Is it possible to submit a block without using an JSON-RPC call to bitcoind?  Is that what bitcoin/node.py is for?
Reason I ask is because I constantly experience an issue that is similar to this: https://github.com/bitcoin/bitcoin/issues/2889
member
Activity: 112
Merit: 10
★Bitin.io★ - Instant Exchange
Although I have never done any of this before and have no idea what prerequisites are needed, I will attempt to give this a try on my linux system. I'm trying to setup a private pool for my machines to run off.
newbie
Activity: 23
Merit: 0
Luke, sorry, I got stuck here-->

Quote
jsonrpc_getwork WARNING Error importing 'midstate' module; work will not provide midstates
>>> Traceback (most recent call last):
  File "./eloipool.py", line 957, in
    MM.start()
  File "/home/pool/eloipool/merklemaker.py", line 699, in start
    self._prepare()
  File "/home/pool/eloipool/merklemaker.py", line 121, in _prepare
    TS['access'] = URI2Access(TS['uri'])
  File "/home/pool/eloipool/merklemaker.py", line 111, in URI2Access
    access = jsonrpc.ServiceProxy(uri)
AttributeError: 'module' object has no attribute 'ServiceProxy'

Any help pls?  Huh
newbie
Activity: 28
Merit: 0
Luke you probably don't remember me but you help teach me to overclock on a phenom II well push it further with memory timings. I am gonna try this out. Subbing gonna read all first but hopefully it sounds what I am looking for.
hero member
Activity: 549
Merit: 608
Thank you very much Luke.
legendary
Activity: 2576
Merit: 1186
I've setup a local stratum server using eloipool. I'm trying to test the stratum server manually using either telnet or curl as in:

curl --data-binary '{"id": 1, "method": "mining.subscribe", "params": []}'  -H 'content-type:text/plain;' http://myuser:[email protected]:3334/

The connection is closed as soon as the first line of the http headers is sent (usually POST) (curl prints: curl: (52) Empty reply from server)

Any idea of what's happening?
Eloipool does not support StratumMP over HTTP (nor does any other StratumMP server AFAIK), only GBT and getwork.
For StratumMP, you need to connect over a raw TCP stream.
Pages:
Jump to: