Author

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

hero member
Activity: 686
Merit: 500
full member
Activity: 165
Merit: 100
As someone who is enduring a very long sharechain download time (I'm running p2pool on a slow HD), I was curious if this patch which greatly increases blockchain verification speed has been implemented in p2pool for its sharechain?  https://github.com/bitcoin/bitcoin/pull/964

Cheers


hero member
Activity: 504
Merit: 502
Quote from: Luke-Jr
It's trivial to get the IPs of every p2pool miner, and spread the DDoS across them. Many (most?) mining pools can withstand far more bandwidth being thrown at them, than the equivalent in miners' connections, so the DDoS will require less bandwidth to pull off. Furthermore, since such a DDoS takes out the miners' connection, it effectively prevents any failover including solo mining.

To contrast, not only do other pools have higher DDoS resistance in terms of bandwidth, but they generally keep their miners' IPs private, so when/if the pool goes down, the miners are free to failover to another pool.

If there is consistently below average (10%) block solutions is this indicative of a possible attack?

In an attack, what would be targeted to disuade people from using p2pool? Of course, something that would effect Bitcoin generation, but what ways specifically could p2pool be attacked that would reduce coin generation?

Would an intermittent DDoS be more difficult to notice but enough to reduce coin generation?

I would think that if you can get a major public list of p2pool miners you could DDOS them individually at the same time.
full member
Activity: 196
Merit: 100
Web Dev, Db Admin, Computer Technician
Quote from: Luke-Jr
It's trivial to get the IPs of every p2pool miner, and spread the DDoS across them. Many (most?) mining pools can withstand far more bandwidth being thrown at them, than the equivalent in miners' connections, so the DDoS will require less bandwidth to pull off. Furthermore, since such a DDoS takes out the miners' connection, it effectively prevents any failover including solo mining.

To contrast, not only do other pools have higher DDoS resistance in terms of bandwidth, but they generally keep their miners' IPs private, so when/if the pool goes down, the miners are free to failover to another pool.

If there is consistently below average (10%) block solutions is this indicative of a possible attack?

In an attack, what would be targeted to disuade people from using p2pool? Of course, something that would effect Bitcoin generation, but what ways specifically could p2pool be attacked that would reduce coin generation?

Would an intermittent DDoS be more difficult to notice but enough to reduce coin generation?
hero member
Activity: 737
Merit: 500
Thanks twmz - I thought it was something like that, and I knew I'd seen something along those lines before, but I wanted to be sure, plus your explanation was very clear.

So: 
Code:
sum(totalRoundShares)/sum(roundDuration) /10^9*2^32
should give a reasonably accurate hashrate estimate?

Yes, that is the reverse of what I did to get the totalRoundShares in the first place.  I take a weighted average of the hashrate data points (taken every 5 minutes) and use that with round duration to calculate the round shares.  If you are looking for the hashrate, it would be easier to just get them directly from http://p2pool.info/stats instead of reverse engineering them from the block data Smiley

donator
Activity: 2058
Merit: 1007
Poor impulse control.
Thanks twmz - I thought it was something like that, and I knew I'd seen something along those lines before, but I wanted to be sure, plus your explanation was very clear.

So: 
Code:
sum(totalRoundShares)/sum(roundDuration) /10^9*2^32
should give a reasonably accurate hashrate estimate?
hero member
Activity: 737
Merit: 500
I don't know if this has been covered before, but going through the results on http://p2pool.info/blocks I've noticed a few rounds with negative round shares and negative round duration. Can anyone explain this for me? Most recently occurred on block 179106.

Round duration = Timestamp of the block that was just found - Timestamp of the block before that

As previously discussed "round shares" is actually a calculated value that is derived from the round duration and hashrate during that round.

Block timestamps are not precise.  First, they are based on miner's clocks which may not be accurate.  Second, with ntime rolling, they may have been arbitrarily adjusted.  Sometimes when a block that comes very shortly after another block ends up having a timestamp earlier than the block it came after.  When both blocks happen to be p2pool blocks, that makes the round duration (and therefore, also the round shares) negative.

The p2pool.info UI just hides this oddity.  

The small variations in block timestamp go both ways.  Sometimes a block's timestamp will be a little bit ahead and sometimes it will be a little bit behind.  So these small variations average out in the long term.  They are left in the raw data so that the luck calculations will be unaffected.  For example, some rounds will be 100 shares to high while other rounds will be 100 shares too low.  Since luck is basically "SUM(shares in some rounds) / SUM(expected shares for those rounds)" it doesn't matter if the rounds are 105 + 95 or 100 + 100.  As long as the average variation in timestamp is "0", it doesn't affect luck calculations.

And yes, as has been suggested in the past, it would be more accurate to count the actual hashes in the share chain to know exactly how many hashes went into finding a block.  But there are a number of technical challenges to making that work and the improvement in accuracy isn't enough to make it worth it to me to do that work.
donator
Activity: 2058
Merit: 1007
Poor impulse control.
I don't know if this has been covered before, but going through the results on http://p2pool.info/blocks I've noticed a few rounds with negative round shares and negative round duration. Can anyone explain this for me? Most recently occurred on block 179106.
legendary
Activity: 2912
Merit: 1060
hero member
Activity: 591
Merit: 500
They have an email notification system that can notify you when you receive a payment at that address.
Blockchain.info's email notifications have always been kinda weird with generated coins for me.
hero member
Activity: 697
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

I guess I'll have to dig through p2pool to see if there is a way to dump the individual user generated BTC to the logs. I'd hate to have to curl and scrape that page.

The following output gives an URL
GOT BLOCK FROM PEER! Passing to bitcoind! 74b22adc bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc

Historically, not all blocks get announced in every p2pool node with a message like you listed there.  That has recently changed, in theory.  Once you have the block hash, you can get details of the block either from bitcoind using the getblock RPC call or from blockchain.info's or blockexplorer.com's JSON APIs.

Also, you don't need to scrape p2pool.info to get the list of p2pool block.  There is a JSON API you can just call to get the raw data if you want it:  http://p2pool.info/blocks  Of course you have to do some post processing if you are wanting to confirm that your address was paid in any given block.

Thanks for the info on the JSON output from p2pool.info. I'll use that + blockexplorer to start pulling my btc output and various shares stats.
hero member
Activity: 737
Merit: 500
Is there any way by crawling the p2pool logs to see when a block is found by p2pool and the reward distributed to my wallet? I'm not seeing any notifications in the p2pool logs. Trying to automate a report email so I can start gathering some mining stats with p2pool.

Another alternative to the suggestions already made is to go create a wallet at blockchain.info.  Then add your payment address to that wallet.  You can add it as a public-key-only address and just have blockchain.info monitor the address for transactions without it worrying about having it fully enabled with the private key.  They have an email notification system that can notify you when you receive a payment at that address.
hero member
Activity: 737
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

I guess I'll have to dig through p2pool to see if there is a way to dump the individual user generated BTC to the logs. I'd hate to have to curl and scrape that page.

The following output gives an URL
GOT BLOCK FROM PEER! Passing to bitcoind! 74b22adc bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc

Historically, not all blocks get announced in every p2pool node with a message like you listed there.  That has recently changed, in theory.  Once you have the block hash, you can get details of the block either from bitcoind using the getblock RPC call or from blockchain.info's or blockexplorer.com's JSON APIs.

Also, you don't need to scrape p2pool.info to get the list of p2pool block.  There is a JSON API you can just call to get the raw data if you want it:  http://p2pool.info/blocks  Of course you have to do some post processing if you are wanting to confirm that your address was paid in any given block.
hero member
Activity: 697
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

Here's the last block and the payouts.

http://blockchain.info/block-index/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17

I guess I'll have to dig through p2pool to see if there is a way to dump the individual user generated BTC to the logs. I'd hate to have to curl and scrape that page.

The following output gives an URL
GOT BLOCK FROM PEER! Passing to bitcoind! 74b22adc bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc

that could then be scraped with grep, awk and sed

curl http://blockexplorer.com/block/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17 | grep ${btcaddress} | awk '{print $3}' | sed 's|||'

I guess that is a temporary solution. The GOT BLOCK FROM PEER! message should have a way to output this like..

GOT BLOCK FROM PEER! Passing to bitcoind! derpderpderp bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc. Shares: x (y orphan, z dead) Stale rate: xx% Efficiency: yy% Block payout: x.y BTC



why not just call bitcoind listtransactions  it'll show all the mined blocks individually to your address.

I have an unusual case where I cannot SSH in to my boxes but instead have them dumping logs to me via email. I simply want to monitor the hashing rate and btc production remotely and if a box goes down I stop by the upcoming weekend. I have the rigs setup with conservative clocks and usually visit once every other week to install another machine and such.
hero member
Activity: 658
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

Here's the last block and the payouts.

http://blockchain.info/block-index/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17

I guess I'll have to dig through p2pool to see if there is a way to dump the individual user generated BTC to the logs. I'd hate to have to curl and scrape that page.

The following output gives an URL
GOT BLOCK FROM PEER! Passing to bitcoind! 74b22adc bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc

that could then be scraped with grep, awk and sed

curl http://blockexplorer.com/block/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17 | grep ${btcaddress} | awk '{print $3}' | sed 's|||'

I guess that is a temporary solution. The GOT BLOCK FROM PEER! message should have a way to output this like..

GOT BLOCK FROM PEER! Passing to bitcoind! derpderpderp bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc. Shares: x (y orphan, z dead) Stale rate: xx% Efficiency: yy% Block payout: x.y BTC



why not just call bitcoind listtransactions  it'll show all the mined blocks individually to your address.
sr. member
Activity: 409
Merit: 251
Crypt'n Since 2011
Quote from: Luke-Jr
Uh, what? p2pool is more susceptible to DoS than other pools...

Would you mind explaining how/why?  I usually think of a typical DDoS attack against a public mining pool address, perhaps you are referring to a different DoS method that I'm not considering.
It's trivial to get the IPs of every p2pool miner, and spread the DDoS across them. Many (most?) mining pools can withstand far more bandwidth being thrown at them, than the equivalent in miners' connections, so the DDoS will require less bandwidth to pull off. Furthermore, since such a DDoS takes out the miners' connection, it effectively prevents any failover including solo mining.

To contrast, not only do other pools have higher DDoS resistance in terms of bandwidth, but they generally keep their miners' IPs private, so when/if the pool goes down, the miners are free to failover to another pool.

That's why you should use p2pmining.com to mine p2pool  Grin
hero member
Activity: 686
Merit: 500
Mined 3 LTC blocks with P2Pool already in two days with only 21kH/s, good luck for the pool, bad luck for me.  Undecided
hero member
Activity: 697
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

Here's the last block and the payouts.

http://blockchain.info/block-index/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17

I guess I'll have to dig through p2pool to see if there is a way to dump the individual user generated BTC to the logs. I'd hate to have to curl and scrape that page.

The following output gives an URL
GOT BLOCK FROM PEER! Passing to bitcoind! 74b22adc bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc

that could then be scraped with grep, awk and sed

curl http://blockexplorer.com/block/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17 | grep ${btcaddress} | awk '{print $3}' | sed 's|||'

I guess that is a temporary solution. The GOT BLOCK FROM PEER! message should have a way to output this like..

GOT BLOCK FROM PEER! Passing to bitcoind! derpderpderp bitcoin: http://blockexplorer.com/block/00000000000000b8fea2523bd5ba56ab32e6cd6e0a1068d6f983e92074b22adc. Shares: x (y orphan, z dead) Stale rate: xx% Efficiency: yy% Block payout: x.y BTC

hero member
Activity: 658
Merit: 500
Go to http://p2pool.info/ and go through each block and look for your payout address, or go to blockchain.info and put your payout address in the search box.

Here's the last block and the payouts.

http://blockchain.info/block-index/000000000000009743ecaf0e954afc3d1ee59cebbeb47e22d32bb4f6db52cc17
hero member
Activity: 697
Merit: 500
Is there any way by crawling the p2pool logs to see when a block is found by p2pool and the reward distributed to my wallet? I'm not seeing any notifications in the p2pool logs. Trying to automate a report email so I can start gathering some mining stats with p2pool.
Jump to: