Author

Topic: [OLD] Eligius: ASIC, no registration, no fee CPPSRB BTC + 105% PPS NMC, 877 # - page 153. (Read 458255 times)

legendary
Activity: 2576
Merit: 1186
Finally got around to removing the old debug info ("fee"), so now Eligius is completely fee-free (as of midnight UTC tonight).
hero member
Activity: 642
Merit: 500
CPU usage was hardly being touched when I looked at top.  This was an Ubuntu guest on an ESXi host (HP DL380 G5).

Sure thing.  I'll make one in a bit.
legendary
Activity: 2576
Merit: 1186
I tried this yesterday (which is why I was asking).  I changed the listener IP in the python script and connected my rigs.  One rig worked just fine, but when I added more machines, cgminer couldn't get work quickly enough and kept disconnecting/reconnecting from/to the proxy.  I only tested it for a short time though before going to bed.
Hmm, not sure what might cause that. How's it look on CPU usage? Can you create me a pcap file?
Code:
tcpdump -i any -s0 -w pcap port 8337 or port 9332
hero member
Activity: 642
Merit: 500
I tried this yesterday (which is why I was asking).  I changed the listener IP in the python script and connected my rigs.  One rig worked just fine, but when I added more machines, cgminer couldn't get work quickly enough and kept disconnecting/reconnecting from/to the proxy.  I only tested it for a short time though before going to bed.
legendary
Activity: 2576
Merit: 1186
Sure enough, 3.1.4 works.  Weird.

Is this proxy meant to run an individual copy on each miner?  In other words, it's not meant to run one instance with multiple miners?
It should be fine with multiple miners, but it only supports one upstream username.
hero member
Activity: 642
Merit: 500
Sure enough, 3.1.4 works.  Weird.

Is this proxy meant to run an individual copy on each miner?  In other words, it's not meant to run one instance with multiple miners?
legendary
Activity: 2576
Merit: 1186
Hmmm...   I was using 3.2.2.  Perhaps I should try an earlier version?
I'm not sure what version introduced the bug. Just that 3.1.4 is bug-free.
hero member
Activity: 642
Merit: 500
Hmmm...   I was using 3.2.2.  Perhaps I should try an earlier version?
legendary
Activity: 2576
Merit: 1186
Hey Luke.  I was giving gmp-proxy a try and ran into a snag.  The server starts fine, but as soon as a mining client connects, I get an error regarding string conversion.  I'm fairly certain I have everything configured correctly (unless the newest git isn't supposed to be used against Eligius yet?):

Code:
ERROR:JSONRPCHandler:Error during JSON-RPC call: doJSON_getwork[]
Traceback (most recent call last):
  File "/tmp/eloipool/jsonrpcserver.py", line 156, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/tmp/eloipool/jsonrpc_getwork.py", line 40, in doJSON_getwork
    hdr = self.server.getBlockHeader(self.Username)
  File "gmp-proxy.py", line 67, in MakeWork
    MRD = getMRD()
  File "gmp-proxy.py", line 47, in getMRD
    MRD = makeMRD(mp)
  File "gmp-proxy.py", line 26, in makeMRD
    coinbase = a2b_hex(mp['coinbasetxn'])
TypeError: 'str' does not support the buffer interface
This is a bug in CPython. It's fixed in git, and at least in 3.1.4.
hero member
Activity: 642
Merit: 500
Hey Luke.  I was giving gmp-proxy a try and ran into a snag.  The server starts fine, but as soon as a mining client connects, I get an error regarding string conversion.  I'm fairly certain I have everything configured correctly (unless the newest git isn't supposed to be used against Eligius yet?):

Code:
ERROR:JSONRPCHandler:Error during JSON-RPC call: doJSON_getwork[]
Traceback (most recent call last):
  File "/tmp/eloipool/jsonrpcserver.py", line 156, in _doJSON_i
    rv = getattr(self, method)(*params)
  File "/tmp/eloipool/jsonrpc_getwork.py", line 40, in doJSON_getwork
    hdr = self.server.getBlockHeader(self.Username)
  File "gmp-proxy.py", line 67, in MakeWork
    MRD = getMRD()
  File "gmp-proxy.py", line 47, in getMRD
    MRD = makeMRD(mp)
  File "gmp-proxy.py", line 26, in makeMRD
    coinbase = a2b_hex(mp['coinbasetxn'])
TypeError: 'str' does not support the buffer interface
legendary
Activity: 2576
Merit: 1186
This is interesting but I don't understand the low level details. Does this imply that mining this way with the proxy achieves the same independence as p2p or solo regarding 51% attacks and/or voting?
51% attacks, yes, provided enough users choose to audit the blocks.

"voting": in theory, but supporting it on Eligius would be a lot of work for effectively nothing (BIP 16 sucks, and it'll probably be over within a month anyway)
hero member
Activity: 784
Merit: 1009
firstbits:1MinerQ
This is interesting but I don't understand the low level details. Does this imply that mining this way with the proxy achieves the same independence as p2p or solo regarding 51% attacks and/or voting?
legendary
Activity: 2576
Merit: 1186
Also, Eligius now supports longpolling for getmemorypool, and I have posted an initial draft-draft of a BIP for getmemorypool on the Bitcoin Wiki.
Correct me if I am wrong, but what this means to the miners is that they now have a way to verify that the work they have done is being reflected in the blocks that the pool produces. This is a good improvement if implemented widely, but for now needs somewhat manual checking.
Pretty much. They can also append their own stuff to the coinbase if they like. gmp-proxy uses that to generate local work, so you can have pretty much unlimited local miners running off a single work.
rjk
sr. member
Activity: 448
Merit: 250
1ngldh
Also, Eligius now supports longpolling for getmemorypool, and I have posted an initial draft-draft of a BIP for getmemorypool on the Bitcoin Wiki.
Correct me if I am wrong, but what this means to the miners is that they now have a way to verify that the work they have done is being reflected in the blocks that the pool produces. This is a good improvement if implemented widely, but for now needs somewhat manual checking.
legendary
Activity: 2576
Merit: 1186
Also, Eligius now supports longpolling for getmemorypool, and I have posted an initial draft-draft of a BIP for getmemorypool on the Bitcoin Wiki.
legendary
Activity: 2576
Merit: 1186
What do you mean by DECENTRALIZED?
The same way as p2pool: miners can make their own work.
hero member
Activity: 714
Merit: 500
What do you mean by DECENTRALIZED? 

Is this a lie ? Eligius can't be decnetralized,seriously.
legendary
Activity: 2576
Merit: 1186
I am satisfied that getmemorypool is working, so it has been promoted to non-testing. Here are some simple setup instructions for Linux. Note that this does not support longpolling yet, so there may be high stales.
legendary
Activity: 2576
Merit: 1186
I have written a short (57 line) one-user proof-of-concept getmemorypool proxy, and included it in Eloipool's serve_getmemorypool branch. By using this locally, you can add code to audit the blocks in any way you want. Due to Eligius currently requiring the "test_" prefix, you will need to add it to the gmp-proxy.py file (prepend "getmemorypool" and "submitblock"). Please contact me on IRC if you would like to help take this to the next level.

To use (after the edits just mentioned), just run
Code:
./gmp-proxy.py http://youraddress:[email protected]:8337
Then connect your miner to localhost on port 9332

Edit: Note that this uses Eloipool's JSONRPCServer class, which I optimized to handle heavy loads. Unfortunately, there is no way to do this in a Windows-compatible manner, so this gmp-proxy.py will not work on Windows yet. It might be possible to grab an old thread-based JSONRPCServer from earlier Eloipool versions, but I haven't tried it.
legendary
Activity: 2576
Merit: 1186
For testing purposes only (ie, I don't guarantee this works yet), Eligius now supports getmemorypool-based mining. Currently, miners are not allowed to modify anything except nonce/ntime, but it does at least enable auditing what goes into the blocks you're working on in realtime (and possibly switching to another pool if anything looks awry).

Since this is untested, and not supported by any miner (as far as I know), I have renamed the JSON-RPC method to "test_getmemorypool" for now; please get in touch with me on IRC if you want to work on a miner/proxy implementing this. Probably the best starting points for implementing a proxy are either the p2pool client (Python2/Twisted) or the BitPenny client (C++).

See also for technical details: Alternative to getwork for miners/proxies
Jump to: