Bitcoin Forum
May 05, 2024, 11:19:58 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Вычисление сложности имеющейся шары  (Read 993 times)
ntking (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile WWW
March 27, 2014, 02:35:03 PM
Last edit: March 27, 2014, 03:44:41 PM by ntking
 #1

Все уже обыскал - нигде не нашел. Если не заметил очевидное - извините.
Собственно вопрос:
Есть шара, поступившая на пул: 0064670f или 0006e02d
Как вычислить ее сложность? По какой формуле? Ведь майнер, тот же bfgminer, как-то определил ее сложность, значит есть алгоритм. Очевидно, что она сложностью > 256, но какой именно?
Если будет пример на PHP - это будет просто супер!

Пример вычисления сложности хеша в p2pool:
Hash: 0000000000068b7e6f8636683b1e5dca8ef15e13f219bb2d9ac8ea73501a4247
Difficulty: 9170.497780453901

Т.е. пул с легкостью определил сложность хеша = 9.17k. Как?

Что-то нашел на javascript, но мне это не помогло, т.к. нужен пример на PHP:
Code:
function target_to_difficulty(target) { return (0xffff0000 * Math.pow(2, 256-64) + 1)/(target + 1); }
b.append('p').text('Difficulty: ' + target_to_difficulty(share.share_data.target));

P.S. Визуально я понимаю, что чем больше нулей слева направо - тем выше сложность.
Make sure you back up your wallet regularly! Unlike a bank account, nobody can help you if you lose access to your BTC.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714951198
Hero Member
*
Offline Offline

Posts: 1714951198

View Profile Personal Message (Offline)

Ignore
1714951198
Reply with quote  #2

1714951198
Report to moderator
Xtc
Legendary
*
Offline Offline

Activity: 1972
Merit: 1028


;u


View Profile WWW
March 27, 2014, 06:45:32 PM
 #2

Это для форка? В форках расчет сложности может отличаться, как в лайткойне например:
Quote
, в лайткоинах сложность отображается криво из-за узаконенного бага. Для получения реального значения нужно умножать на 65536.
про две сложности лайткоина тут https://forum.btcsec.com/index.php?/topic/1106-slozhnost-shary/

Для биткойна вот формулы на php, используй на свой страх:
Code:
$shara = 0x0000000000068b7e6f8636683b1e5dca8ef15e13f219bb2d9ac8ea73501a4247;
echo (pow(2,256))/($shara+1); //diff 43006778181236

Code:
$shara = 0x0064670f;
echo (pow(2,256-224))/($shara+1); //diff 652.73

Code:
$shara = 0xFFFFFFFF;
echo (pow(2,256-224))/($shara+1); //diff 1

Запусти и сравни с результатами которые cgminer показывает.
ntking (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile WWW
March 27, 2014, 07:55:13 PM
Last edit: March 28, 2014, 08:00:27 AM by ntking
 #3

Спасибо Вам большое, Ваш пост очень помог! Теперь еще бы оптимизировать последнюю строку, а то по сравнению со мной индийцы нервно курят в углу со своим кодом:
Code:
	$hash = 0000000000068b7e6f8636683b1e5dca8ef15e13f219bb2d9ac8ea73501a4247;
$shara = substr($hash, 8, 8);
$diffshara =(pow(2,256-224))/("0x".$shara+1);
if ($diffshara < 1000) {$diffshara = floor($diffshara);} elseif (($diffshara > 999) && ($diffshara < 10000)) {$diffshara = round($diffshara / 1000, 2)."k";}elseif (($diffshara > 9999) && ($diffshara < 100000)) {$diffshara = round($diffshara / 1000, 1)."k";} // и так далее
Есть мысли или тут без моей галиматьи в последней строке никак?

P.S. "Тут я выругался матом"! Накатал целую поэму, а форум написал что-то насчет 360 секунд и похерил сообщение(((( "Назад" не помогло! Изложу вкратце.
Xtc
Legendary
*
Offline Offline

Activity: 1972
Merit: 1028


;u


View Profile WWW
March 27, 2014, 10:30:44 PM
 #4

Это к биткойну то не относится
Code:
if ($diffshara < 1000) {$diffshara = floor($diffshara);}
elseif($diffshara>1000000000000) {$diffshara = round(($diffshara/1000000000000),1).'T';}
elseif($diffshara>1000000000) {$diffshara = round(($diffshara/1000000000),1).'B';}
elseif($diffshara>1000000) {$diffshara = round(($diffshara/1000000),1).'M';}
elseif($diffshara>1000) {$diffshara = round(($diffshara/1000),1).'k';}
ntking (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile WWW
March 28, 2014, 08:28:23 AM
Last edit: March 28, 2014, 10:54:48 AM by ntking
 #5

Это к биткойну то не относится
Code:
if ($diffshara < 1000) {$diffshara = floor($diffshara);}
elseif($diffshara>1000000000000) {$diffshara = round(($diffshara/1000000000000),1).'T';}
elseif($diffshara>1000000000) {$diffshara = round(($diffshara/1000000000),1).'B';}
elseif($diffshara>1000000) {$diffshara = round(($diffshara/1000000),1).'M';}
elseif($diffshara>1000) {$diffshara = round(($diffshara/1000),1).'k';}
Да Вы правы, не относится. В любом случае Ваш подход "на уменьшение" мне понравится и я его применил. Все работает отлично, Спасибо Большое.
Code:
	if ($diffshara < 1000) {$diffshara = floor($diffshara);
} elseif ($diffshara > 99999999){$diffshara = round($diffshara / 1000000, 0)."M";
} elseif ($diffshara > 9999999) {$diffshara = round($diffshara / 1000000, 1)."M";
} elseif ($diffshara > 999999) {$diffshara = round($diffshara / 1000000, 2)."M";
} elseif ($diffshara > 99999) {$diffshara = round($diffshara / 1000, 0)."k";
} elseif ($diffshara > 9999) {$diffshara = round($diffshara / 1000, 1)."k";
} elseif ($diffshara > 999) {$diffshara = round($diffshara / 1000, 2)."k";}

Может для Вас будет нетрудно еще кое чем помочь?

Дано: отрезок времени, Diff шар, кол-во шар.
Нужно узнать: скорость генерации.

К примеру: 120 сек, 128, 5шт, как узнать скорость генерации. Я в данный момент усиленно гуглю, но скорее всего это очень просто.
Quote
Мб получается: 128 * 5 = 640 (Diff 1)
за 120сек 640 решений Diff 1, т.е. 5.33 решений в  1сек
Есть предположение, что должно получиться 23.06GH/s, но как получить эту цифру (если она правильная) - не знаю. Получил я ее простым практическим (грубым) вычислением необходимой скорости генерации для получения 1-го решения в 1 секунду = 4327.2MH/s
Xtc
Legendary
*
Offline Offline

Activity: 1972
Merit: 1028


;u


View Profile WWW
March 28, 2014, 10:09:43 AM
 #6

Ты почти правильно подобрал, правильное значение 4.295Gh/s Smiley Вот теорию нагуглил
Quote
Сколько хешей необходимо, чтобы найти шару?
В среднем, одна шара может быть найдена каждые 2^32, или 4.295 миллиарда расчётных хешей. При скорости в 1 Mхеш/с можно находить шару практически каждые 72 минуты.
http://ru.bitcoinwiki.org/FAQ:_Майнинг_в_пулах
ntking (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile WWW
March 28, 2014, 11:01:17 AM
Last edit: March 30, 2014, 02:04:47 PM by ntking
 #7

Ты почти правильно подобрал, правильное значение 4.295Gh/s Smiley Вот теорию нагуглил
Quote
Сколько хешей необходимо, чтобы найти шару?
В среднем, одна шара может быть найдена каждые 2^32, или 4.295 миллиарда расчётных хешей. При скорости в 1 Mхеш/с можно находить шару практически каждые 72 минуты.
http://ru.bitcoinwiki.org/FAQ:_Майнинг_в_пулах
Ну я ж практически подобрал скорость)) А теоретически получилось 2^32=4294967296H/s Спасибо за помощь!


P.S. Занимаюсь вебмордой к пулу, отсюда и такие вопросы.
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!