Bitcoin Forum
November 04, 2024, 02:24:40 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Pool mathematics  (Read 4707 times)
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 20, 2011, 11:23:29 PM
 #1

Hey guys,

I'm working on starting up another pool to increase the options available, but I'm not as knowledgeable about the implementations so I'm hoping somebody could help me out.

How should I go about calculating the pool performance (Mhashes/s and GHashes/s) from the number of valid getworks (the ones that result in a hash smaller than the minimum difficulty)? From some basic math, I've figured it's 4*valid_getworks GHashes/s, but I'd like confirmation (or rebuttal).

I'm using score-based payout according to slush's pool but I'm willing to change that if users are interested in another cheat-resistant/proof method.

Thanks!
grndzero
Sr. Member
****
Offline Offline

Activity: 392
Merit: 250


View Profile
April 20, 2011, 11:32:21 PM
 #2

I don't see a need to startup another pool using the same strategy as someone else. There's already 2 proportional and 2 score based.

You might want to have a look at this http://bitcointalk.org/index.php?topic=4787.0

Holy-Fire thinks he's got a method that is better against cheating than the current pool strategies in place.

I don't know whether it is or isn't, but he might help you implement it.


Ubuntu Desktop x64 -  HD5850 Reference - 400Mh/s w/ cgminer  @ 975C/325M/1.175V - 11.6/2.1 SDK
Donate if you find this helpful: 1NimouHg2acbXNfMt5waJ7ohKs2TtYHePy
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 21, 2011, 01:53:42 AM
 #3

Yeah, I was looking at that earlier. I'll contact him for the proof he mentioned.

Does anybody know the correct calculation for GHashes/s based on getworks? Or is there another way to calculated it?
[Tycho]
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500



View Profile WWW
April 21, 2011, 02:48:39 AM
 #4

Yeah, I was looking at that earlier. I'll contact him for the proof he mentioned.

Does anybody know the correct calculation for GHashes/s based on getworks? Or is there another way to calculated it?
You can't calculate hashing luck from getworks. Anyone can request them at any rate.

Welcome to my bitcoin mining pool: https://deepbit.net - Both payment schemes (including PPS), instant payout, no invalid blocks !
ICBIT Trading platform : USD/BTC futures trading, Bitcoin difficulty futures (NEW!). Third year in bitcoin business.
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 21, 2011, 03:56:03 AM
 #5

Yeah, I was looking at that earlier. I'll contact him for the proof he mentioned.

Does anybody know the correct calculation for GHashes/s based on getworks? Or is there another way to calculated it?
You can't calculate hashing luck from getworks. Anyone can request them at any rate.

That's why I qualified it with valid getworks earlier, those are getworks that are also submitting previous work with a valid hash.
[Tycho]
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500



View Profile WWW
April 21, 2011, 04:02:20 AM
 #6

Yeah, I was looking at that earlier. I'll contact him for the proof he mentioned.
Does anybody know the correct calculation for GHashes/s based on getworks? Or is there another way to calculated it?
You can't calculate hashing luck from getworks. Anyone can request them at any rate.
That's why I qualified it with valid getworks earlier, those are getworks that are also submitting previous work with a valid hash.
Multiply to 71. That will be some kind of guesstimation.

Welcome to my bitcoin mining pool: https://deepbit.net - Both payment schemes (including PPS), instant payout, no invalid blocks !
ICBIT Trading platform : USD/BTC futures trading, Bitcoin difficulty futures (NEW!). Third year in bitcoin business.
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 21, 2011, 04:14:06 AM
 #7

Multiply to 71. That will be some kind of guesstimation.

How did you arrive at that number? I read something about each getwork being 2^x hashes worth of work, but I forgot what x was and can't find that post again. It may have been 2^18 or 262,144 hashes, which would mean 4 getworks is 1MHashes of work? That seems to match slush's stats (deepbit doesn't say how many getworks there are).
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
April 21, 2011, 04:18:37 AM
 #8

Multiply to 71. That will be some kind of guesstimation.

How did you arrive at that number? I read something about each getwork being 2^x hashes worth of work, but I forgot what x was and can't find that post again. It may have been 2^18 or 262,144 hashes, which would mean 4 getworks is 1MHashes of work? That seems to match slush's stats (deepbit doesn't say how many getworks there are).

1 minute timedelta  (60sec)

hashrate = (shares_per_timedelta * (2 ** 32)) / timedelta)

to Mhash/sec:

hashrate  / 1000000

~71,5



BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 21, 2011, 04:24:25 AM
 #9

Multiply to 71. That will be some kind of guesstimation.

How did you arrive at that number? I read something about each getwork being 2^x hashes worth of work, but I forgot what x was and can't find that post again. It may have been 2^18 or 262,144 hashes, which would mean 4 getworks is 1MHashes of work? That seems to match slush's stats (deepbit doesn't say how many getworks there are).

1 minute timedelta  (60sec)

hashrate = (shares_per_timedelta * (2 ** 32)) / timedelta)

to Mhash/sec:

hashrate  / 1000000

~71,5


where did you get the shares_per_timedelta from? It looks like you answered my question indirectly. Each share is one valid getwork and 2**32 hashes, so therefore valid_getworks * (2**32) / (10**9) = GHashes/s.

Thanks!
geebus
Sr. Member
****
Offline Offline

Activity: 258
Merit: 250



View Profile WWW
April 22, 2011, 01:04:48 PM
 #10

Multiply to 71. That will be some kind of guesstimation.

How did you arrive at that number? I read something about each getwork being 2^x hashes worth of work, but I forgot what x was and can't find that post again. It may have been 2^18 or 262,144 hashes, which would mean 4 getworks is 1MHashes of work? That seems to match slush's stats (deepbit doesn't say how many getworks there are).

1 minute timedelta  (60sec)

hashrate = (shares_per_timedelta * (2 ** 32)) / timedelta)

to Mhash/sec:

hashrate  / 1000000

~71,5


where did you get the shares_per_timedelta from? It looks like you answered my question indirectly. Each share is one valid getwork and 2**32 hashes, so therefore valid_getworks * (2**32) / (10**9) = GHashes/s.

Thanks!


It works like this...

Minutes_to_Average = 5
Delta = 60 * 5

Current_Shares = The total number of shares submitted in the round
Shares_Before_Delta = Shares submitted before Delta-seconds ago

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Ghash/s = (((Total_Hash/s / 1000) / 1000) / 1000)



Feel like donating to me? BTC Address: 14eUVSgBSzLpHXGAfbN9BojXTWvTb91SHJ
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 24, 2011, 08:01:56 AM
 #11


It works like this...

Minutes_to_Average = 5
Delta = 60 * 5

Current_Shares = The total number of shares submitted in the round
Shares_Before_Delta = Shares submitted before Delta-seconds ago

Total_Hash/s = (((Current_Shares - Shares_Before_Delta) * 2^32) / Delta)

Ghash/s = (((Total_Hash/s / 1000) / 1000) / 1000)


I was inclined to believe this was true, but upon further thought, I don't think so anymore. Each share is simply some hash that's below the minimum difficulty. There can be 0, 1, 2, or more of these hashes in a single getwork response. While a getwork response is worth 2**32 hashes of work, a share isn't necessarily worth that much.

Looking at how other pool calculate their hash speeds, it seems they assume each getwork has, at least on average, a single valid share.

Is there a way to find which getwork created a share? That way, I can disregard double-share getworks and have a more realistic pool measure.
xenon481
Sr. Member
****
Offline Offline

Activity: 406
Merit: 250



View Profile
April 24, 2011, 01:30:11 PM
 #12

Shares and GetWorks are completely and utterly unrelated.

There is an expected number of hashes that you have to calculate on average before you find a share. The expected number of hashes is dependent upon the difficulty. All current pools use a difficulty of 1, so the expected number of hashes per share on average is 2^32.

It is only a coincidence that the number of possible hashes in a GetWork is also 2^32. There is absolutely no causation between the two.

Tips Appreciated: 171TQ2wJg7bxj2q68VNibU75YZB22b7ZDr
fahhem (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
April 24, 2011, 06:04:33 PM
 #13

Shares and GetWorks are completely and utterly unrelated.

There is an expected number of hashes that you have to calculate on average before you find a share. The expected number of hashes is dependent upon the difficulty. All current pools use a difficulty of 1, so the expected number of hashes per share on average is 2^32.

It is only a coincidence that the number of possible hashes in a GetWork is also 2^32. There is absolutely no causation between the two.

Ohh ok, so it's based on the difficulty. Thanks!
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!