Author

Topic: [1500 TH] p2pool: Decentralized, DoS-resistant, Hop-Proof pool - page 768. (Read 2591916 times)

hero member
Activity: 516
Merit: 643
It stopped after a while, but it popped up every dozen seconds or so for several minutes while it was happening.

But, if bitcoind and p2pool had different ideas about which block they should be building on, that is a pretty big problem, is it not?

The problem was other users building on blocks that you didn't think were the right ones to build on, not any disagreement between your local daemons. There is no problem, except that the error shouldn't be displayed, or at least should be smaller with an explanation.
kjj
legendary
Activity: 1302
Merit: 1026
I'm getting this using p2pool 0.9 (1bdeed1) and bitcoind 0.6rc1:

Constantly or just occasionally? Maybe you were on a Bitcoin block fork..

It stopped after a while, but it popped up every dozen seconds or so for several minutes while it was happening.

But, if bitcoind and p2pool had different ideas about which block they should be building on, that is a pretty big problem, is it not?
hero member
Activity: 516
Merit: 643
I'm getting this using p2pool 0.9 (1bdeed1) and bitcoind 0.6rc1:

Constantly or just occasionally? Maybe you were on a Bitcoin block fork..
kjj
legendary
Activity: 1302
Merit: 1026
I'm getting this using p2pool 0.9 (1bdeed1) and bitcoind 0.6rc1:

Code:
2012-02-23 01:01:45.821401 New work for worker! Difficulty: 0.999985 Share difficulty: 515.666135 Total block value: 50.048000 BTC including 82 transactions
2012-02-23 01:01:45.825691
2012-02-23 01:01:45.825773 Error when requesting noncached value:
2012-02-23 01:01:45.825843 > Traceback (most recent call last):
2012-02-23 01:01:45.825909 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 388, in errback
2012-02-23 01:01:45.825979 >     self._startRunCallbacks(fail)
2012-02-23 01:01:45.826044 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks
2012-02-23 01:01:45.826107 >     self._runCallbacks()
2012-02-23 01:01:45.826164 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 542, in _runCallbacks
2012-02-23 01:01:45.826227 >     current.result = callback(current.result, *args, **kw)
2012-02-23 01:01:45.826286 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 1076, in gotResult
2012-02-23 01:01:45.826347 >     _inlineCallbacks(r, g, deferred)
2012-02-23 01:01:45.826406 > --- ---
2012-02-23 01:01:45.826465 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks
2012-02-23 01:01:45.826527 >     result = result.throwExceptionIntoGenerator(g)
2012-02-23 01:01:45.826586 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator
2012-02-23 01:01:45.826648 >     return g.throw(self.type, self.value, self.tb)
2012-02-23 01:01:45.826706 >   File "/opt/p2pool/p2pool/main.py", line 178, in
2012-02-23 01:01:45.826768 >     height_cacher = deferral.DeferredCacher(defer.inlineCallbacks(lambda block_hash: defer.returnValue((yield bitcoind.rpc_getblock('%x' % (block_hash,)))['blockcount'])))
2012-02-23 01:01:45.826829 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks
2012-02-23 01:01:45.826891 >     result = result.throwExceptionIntoGenerator(g)
2012-02-23 01:01:45.826950 >   File "/usr/lib/python2.6/dist-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator
2012-02-23 01:01:45.827010 >     return g.throw(self.type, self.value, self.tb)
2012-02-23 01:01:45.827069 >   File "/opt/p2pool/p2pool/util/jsonrpc.py", line 67, in callRemote
2012-02-23 01:01:45.827128 >     raise Error(**resp['error'])
2012-02-23 01:01:45.827203 > p2pool.util.jsonrpc.Error: -5 Block not found
2012-02-23 01:01:45.827252
2012-02-23 01:01:47.954886 P2Pool: 17388 shares in chain (10647 verified/17392 total) Peers: 10 (0 incoming)
sr. member
Activity: 410
Merit: 252
Watercooling the world of mining
Hello

Im currently Trying to implement a p2pool plattfrom on my ARM board.
P2pool itself seems to run just fine.
The catch seems to bitcoin client.
I have not succeded in recompiling it for ARM so far,so in tried using Electrum wich itself works just fine.

The problem is it does not the job of the original client am i correct ?
Or is it possible to make p2pool run with it ?

Or has anybody compiled a original bitcoin client version that is likely to run on a ubuntu ARM plattform ?

Many thanks in advance
legendary
Activity: 3920
Merit: 2349
Eadem mutata resurgo
Garr:
Bitcoind not up to date? What's the output from "bitcoind getinfo"?

This:

{
    "version" : 50200,
    "balance" : 44520.93652163,
    "blocks" : 197724,
    "connections" : 8,
    "proxy" : "",
    "generate" : false,
    "genproclimit" : 1,
    "difficulty" : 1376302.26788638,
    "hashespersec" : 0,
    "testnet" : false,
    "keypoololdest" : 1307423814,
    "keypoolsize" : 153,
    "paytxfee" : 0.00000000,
    "errors" : "See bitcoin.org/feb20 if you have trouble connecting after 20 February"
}

That is without p2pool and cgminer running.

Assuming your output for the "balance" is genuine ... wow! p2pool rocks that much?

Also, word of warning, for security reasons you probably do not want to have a live instance of bitcoind used for mining pointing at a wallet containing upwards of U$200K ... unless you are supremely confident and good at network security. Best to read up on how to create storage safe, off-line wallets, etc for large amounts .... can provide links if you need them.
hero member
Activity: 516
Merit: 643
Finally created a "share explorer"! Play with it here: http://forre.st:9332/web/explorer (or on your local P2Pool installation)
member
Activity: 266
Merit: 36
cgminer:
Code:
[2012-02-22 08:44:00] Accepted 00000000.1c5c9ad1.2ea00ae6 GPU 0 thread 0
[2012-02-22 08:44:06] Pool 0 not providing work fast enough
[2012-02-22 08:45:06] Pool 0 http://127.0.0.1:9332 not responding!


I used to get that on older versions of cgminer - what version are you using / try updating to 2.2.7?

I am running 2.2.7.   (Note: the problem was "fixed" by rebooting Ubuntu 11.04.)
newbie
Activity: 13
Merit: 0
cgminer:
Code:
[2012-02-22 08:44:00] Accepted 00000000.1c5c9ad1.2ea00ae6 GPU 0 thread 0
[2012-02-22 08:44:06] Pool 0 not providing work fast enough
[2012-02-22 08:45:06] Pool 0 http://127.0.0.1:9332 not responding!


I used to get that on older versions of cgminer - what version are you using / try updating to 2.2.7?
newbie
Activity: 13
Merit: 0
9f55b0458c8064ca899b0992500802e52dee37eb fixed things for me, thanks!
member
Activity: 266
Merit: 36
cgminer:
Code:
[2012-02-22 08:44:00] Accepted 00000000.1c5c9ad1.2ea00ae6 GPU 0 thread 0
[2012-02-22 08:44:06] Pool 0 not providing work fast enough
[2012-02-22 08:45:06] Pool 0 http://127.0.0.1:9332 not responding!

I stopped/restarted p2pool; this is the repeating state output:
Code:
2012-02-22 08:56:08.357215 P2Pool: 27608 shares in chain (24672 verified/27612 total) Peers: 0 (0 incoming)
2012-02-22 08:56:08.357297  Local: 0H/s in last 0.0 seconds Local dead on arrival: ??? Expected time to share: ???
2012-02-22 08:56:08.357320  Shares: 0 (0 orphan, 0 dead) Stale rate: ??? Efficiency: ??? Current payout: 0.4370 BTC
2012-02-22 08:56:08.357346  Pool: 270GH/s Stale rate: 7.9% Expected time to block: 6.1 hours

Times are USA PST (GMT -0800).

What's wrong?

Edit:  "fixed" by rebooting (Ubuntu 11.04)
newbie
Activity: 13
Merit: 0
Just updated (0ad46ea0be3cae43184fef40d34469880d86f02e -> 5e04126742449ed026b2ea940f33a19656de6a6d), started getting a new error I haven't seen before:
Code:
2012-02-22 08:55:57.536599 > Traceback (most recent call last):
2012-02-22 08:55:57.536700 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 823, in _inlineCallbacks
2012-02-22 08:55:57.536739 >     result = g.send(result)
2012-02-22 08:55:57.536774 >   File "/home/.../p2pool/p2pool/util/jsonrpc.py", line 105, in render_POST
2012-02-22 08:55:57.536808 >     result = yield method_meth(request, *params)
2012-02-22 08:55:57.536842 >   File "/home/.../p2pool/p2pool/bitcoin/worker_interface.py", line 21, in rpc_getwork
2012-02-22 08:55:57.536877 >     return self.parent._getwork(request, data, long_poll=self.long_poll)
2012-02-22 08:55:57.536911 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 944, in unwindGenerator
2012-02-22 08:55:57.536960 >     return _inlineCallbacks(None, f(*args, **kwargs), Deferred())
2012-02-22 08:55:57.536994 > --- ---
2012-02-22 08:55:57.537028 >   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 823, in _inlineCallbacks
2012-02-22 08:55:57.537062 >     result = g.send(result)
2012-02-22 08:55:57.537095 >   File "/home/.../p2pool/p2pool/bitcoin/worker_interface.py", line 63, in _getwork
2012-02-22 08:55:57.537129 >     defer.returnValue(self.merkle_root_to_handler[header['merkle_root']](header, request))
2012-02-22 08:55:57.537164 >   File "/home/.../p2pool/p2pool/main.py", line 652, in got_response
2012-02-22 08:55:57.537197 >     reactor.callLater(1, grapher.add_localrate_point, bitcoin_data.target_to_average_attempts(target), not on_time)
2012-02-22 08:55:57.537232 > exceptions.NameError: global name 'grapher' is not defined
I'm running python 2.6.5 (Ubuntu 10.04 LTS).  P2Pool continues to run but dumps a lot of these, and appears to be failing to receive work from the worker.  Not sure if it's failing to accept just the low-difficulty work or if shares will be missed too - haven't let it run long enough to "probably" have missed a share.  The data/rrd.poolrate and rrd.stalerate files seem to be udpated, but not the rrd.local*rate files.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Why such a difference in the statistics and the client at all times?

As kjj says it is because you are seeing it indirectly.

An example might help:
say I was flipping coins (and you could verify the coin flip was fair).  You couldn't see the actual coin flips you were only notified when a heads occurred.  Given that you could estimate my "flip rate" but it would be an estimate.  20 heads per minute ~= 40 flips per minute but I might actually be flipping at 42 flips per minute or 37 flips per minute.

With a coin flip since the measured outcome occurs 50% of the time (heads = 1 share) thus your estimate is going to be pretty accurate even over a short period of time.  Now imagine I rolled a pair of dice and notified you on snake eyes (2x ones).  Since that only occurs 1 in 36 times the "roll rate" would be 36x the snake eye rate but variance would be higher as you get less observations (snake eyes) relative to the event rate (rolling the dice).

With mining there is even less observations relative to the event.  Difficult 1 share = once every 2^32 ~= 4.2 billion hashes.  The pool only sees the shares thus it has less data to work with to approximate the rate.  p2pool uses shares higher than difficult 1 and that means even less observations.

The only software that knows your hashrate is the miner.  Everything else is estimating it by looking at shares.  Even your payment is an estimate using shares as a proxy for the hashrate (and thus actual work attempted).
donator
Activity: 1218
Merit: 1079
Gerald Davis
I intend to move towards the high-difficulty p2pool backbone idea eventually, but that will obviously require a lot of thought and changes.

Excellent.  I doubt I can help with the coding but if you need to help in tacking down the details of implementation I would be glad to participate in any technical discussion or go over any whitepapers or design docs.

It is the most ambitious goal but a long share time high difficulty backbone would be immensely valuable.  

* Would allow creating an arbitrary number of p2pools.
* Would allow conventional pools to connect and provide a 3rd party method to verify a pool is legit.
* Would allow creating concepts like a distributed pps pool (payment would be semi-centralized meaning operator could cheat but it would be immediately obvious).
hero member
Activity: 516
Merit: 643
forrestv, are you considering acting on any of these ideas?  What are you current thoughts on this?

I've though about it quite a bit Smiley I plan to start a second P2Pool once P2Pool reaches about 400GH/s, because only then will we have enough power to make splitting into two okay. The upcoming protocol change lets new P2Pools safely be created.

Any method of dynamically creating P2Pools runs the risk of hurting miners because a pool can't simply be terminated if the hash rate lowers, since the last day of shares that were mined won't be built on top of and won't get their fair reward.

I intend to move towards the high-difficulty p2pool backbone idea eventually, but that will obviously require a lot of thought and changes.
kjj
legendary
Activity: 1302
Merit: 1026
Why such a difference in the statistics and the client at all times?

Because what you see as your hashing rate is an estimate based on a random process.

Any time you see a hash rate other than directly from your mining software, you need to read it as "the amount of work that another person would have to do to have a good change of duplicating my work" not as "the amount of work I've done".
hero member
Activity: 700
Merit: 503
Why such a difference in the statistics and the client at all times?
legendary
Activity: 4592
Merit: 1851
Linux since 1997 RedHat 4
Hmm the highest is only 508.9%
Not bad - haven't hit a really long one yet.
... and also to better understand the meaning of that:

14:50:53 20-Feb-2012 UTC
DeepBit: block 167671 (share count)/difficulty = 829% ...
hero member
Activity: 742
Merit: 500
donator
Activity: 1218
Merit: 1079
Gerald Davis
I have multiple miners mining at one p2pool server. Each miner has it's own bitcoin address. 

How is the payout split to each bitcoin address? 

Does each miner need to find blocks added to the share chain or is the payout split to the addresses based on work submitted to my p2pool server? 

Thanks

Each miner has its own address? I thought addresses were at P2Pool level, not miner level, so all those miners will only contribute to the single P2Pool instance getting paid to its address?

You can use worker level addresses.  It is useful for someone running a public p2pool.  The address in the username is where credit is given.
Jump to: