Bitcoin Forum
November 22, 2017, 03:29:42 PM *
News: Latest stable version of Bitcoin Core: 0.15.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: [1]
  Print  
Author Topic: Calculating Difficulty from Getwork "Target" Value  (Read 1264 times)
BinaryMage
Hero Member
*****
Offline Offline

Activity: 560


Ad astra.


View Profile
April 02, 2013, 09:02:21 AM
 #1

According to the wiki, difficulty can be calculated by dividing the maximum target by the current target.

However, I'm unclear on how exactly the target value returned from a getwork call is encoded (and more importantly, how it should be de-encoded to calculate difficulty using this method).

Do I simply swap it to little-endian (and if so, how?), or is there a more complicated process?

Example code (Python) using the current target:

Code:
>> target = "00000000000000000000000000000000000000000000006e8102000000000000"
>> target = process(Target)
>> maxtarget = "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
>> difficulty = int(maxtarget, 16) / int(target, 16)
>> print difficulty
6695826

Any advice would be appreciated.

-- BinaryMage -- | OTC | PGP
1511364582
Hero Member
*
Offline Offline

Posts: 1511364582

View Profile Personal Message (Offline)

Ignore
1511364582
Reply with quote  #2

1511364582
Report to moderator
Join ICO Now Coinlancer is Disrupting the Freelance marketplace!
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1511364582
Hero Member
*
Offline Offline

Posts: 1511364582

View Profile Personal Message (Offline)

Ignore
1511364582
Reply with quote  #2

1511364582
Report to moderator
1511364582
Hero Member
*
Offline Offline

Posts: 1511364582

View Profile Personal Message (Offline)

Ignore
1511364582
Reply with quote  #2

1511364582
Report to moderator
BinaryMage
Hero Member
*****
Offline Offline

Activity: 560


Ad astra.


View Profile
April 02, 2013, 09:25:16 AM
 #2

Simply swapping to little-endian does the trick.

For reference:

Code:
>> target = "00000000000000000000000000000000000000000000006e8102000000000000"
>> target = target.decode('hex')
>> target = target[::-1]
>> target = target.encode('hex')
>> maxtarget = "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
>> difficulty = int(maxtarget, 16) / int(target, 16)
>> print difficulty
6695928 # Slightly different because I'm using the non-truncated maximum target

-- BinaryMage -- | OTC | PGP
Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!