Bitcoin Forum
November 11, 2024, 06:18:21 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Нестыковочка в расчётах производительно  (Read 1848 times)
kcaterpillar (OP)
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
August 06, 2013, 12:49:26 AM
 #1

Привет всем!
Сейчас частенько указывают производительность систем и оборудования в гигахэшах/сек и даже в терахэшах/сек. Т.е. значительные мощности. Для перебора всего NONCE в подписи блока требуется 2^32 вычислений SHA256, а значит при вычислитеьной мощности системы в 4.2 гигахэш/c весь NONCE можно будет перебрать за одну секунду.  Нередко заявляют о наличии и более мощных систем, например в пулах. Получается, что на полный перебор требуется доли секунды, а откуда тогда берется сложность вычисления при таких мощностях? Почему тогда среднее время нахождения блока 10 минут?

Возможно, перебора только одного НОНСа недостаточно, идёт перебор еще каких-то входящих данных? Но об этом нигде ничего не говорят, наоборот, везде указывают, что происходит перебор именно NONCE, 32 бита, но это 4.2 гигахэша. Где же сложность, где proof-of-work?

Проясните ситуацию плиз, кто в курсе.
Спасибо.
awoland
Legendary
*
Offline Offline

Activity: 1498
Merit: 1021

Was mich nicht umbringt macht mich stärker [F.N.]


View Profile WWW
August 06, 2013, 03:38:12 AM
 #2

А самому открыть исходники и посмотреть не судьба?

Was mich nicht umbringt macht mich stärker [F.N.]
kcaterpillar (OP)
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
August 06, 2013, 04:38:14 AM
 #3

К изучению исходников приступаю, я новичок и всё сразу не объять. Но дело не во мне. Во всех официальных и популярных источниках ни слова об этом - только перебираем НОНС и всё. Думаю это не правильно, информация выглядит искажённой, что для такого проекта несолидно. Вот, например, перерыл весь форум по теме - тоже самое - перебираем НОНС. Понимаю, что не всё так просто, вот и выясняю.

А что касается вопроса, думаю форум для того и существует, чтобы гуру просто и доходчиво рассказали новичкам, а дальше и в исходниках будет веселее в тонкости входить. Тема то интересная многим думаю.
awoland
Legendary
*
Offline Offline

Activity: 1498
Merit: 1021

Was mich nicht umbringt macht mich stärker [F.N.]


View Profile WWW
August 06, 2013, 04:54:17 AM
 #4

"Перебираем nonce" - упрощённая информация о сути процесса генерации. Естественно при этом не просто 32-битное число пребирается, а перебираются  sha256-хэши заголовка структуры блока с заполненными полями, одним из которых является nonce. Кроме nonce туда ещё много чего входит...
Если нужны подробности - исходники открыты.

Was mich nicht umbringt macht mich stärker [F.N.]
mnyonpa
Full Member
***
Offline Offline

Activity: 140
Merit: 100



View Profile
August 06, 2013, 05:33:29 AM
 #5

"Перебираем nonce" - упрощённая информация о сути процесса генерации. Естественно при этом не просто 32-битное число пребирается, а перебираются  sha256-хэши заголовка структуры блока с заполненными полями, одним из которых является nonce. Кроме nonce туда ещё много чего входит...
Если нужны подробности - исходники открыты.

А какие ещё поля меняются при переборе кроме nonce?

BTC address for donations: 1EEjkAqLXTxscD24D1S6aXWtxPUWxSkHcd
t309
Legendary
*
Offline Offline

Activity: 1946
Merit: 1000


View Profile
August 06, 2013, 07:24:04 AM
 #6

ну как минимум еще время
kcaterpillar (OP)
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
August 06, 2013, 08:01:24 AM
 #7

Перебирать время? Это было бы совсем некорректно, полагаю. Время меняется, но согласно часам, а не перебором. У майнера конечно есть возможность изменить поле время в каких-то пределах, но перебирать его, это уж слишком. Поле время - важная характеристика при генерации блока, оно должно соответствовать своему назначению.

Тогда уж предлагаю при майнинге перебирать сумму перевода в транзакциях и адрес получателя:-)


mnyonpa
Full Member
***
Offline Offline

Activity: 140
Merit: 100



View Profile
August 06, 2013, 08:50:27 AM
 #8

Перебирать время? Это было бы совсем некорректно, полагаю. Время меняется, но согласно часам, а не перебором. У майнера конечно есть возможность изменить поле время в каких-то пределах, но перебирать его, это уж слишком. Поле время - важная характеристика при генерации блока, оно должно соответствовать своему назначению.

Тогда уж предлагаю при майнинге перебирать сумму перевода в транзакциях и адрес получателя:-)

Нет, идея наверное в том, что если перебрано 4 млрд. нонсов и решение блока всё ещё не найдено, то майнер может обновить поле времени и нонсы можно перебирать заново.

BTC address for donations: 1EEjkAqLXTxscD24D1S6aXWtxPUWxSkHcd
RoadTrain
Legendary
*
Offline Offline

Activity: 1386
Merit: 1009


View Profile
August 06, 2013, 09:23:53 AM
 #9

Перебирать время? Это было бы совсем некорректно, полагаю. Время меняется, но согласно часам, а не перебором. У майнера конечно есть возможность изменить поле время в каких-то пределах, но перебирать его, это уж слишком. Поле время - важная характеристика при генерации блока, оно должно соответствовать своему назначению.

Тогда уж предлагаю при майнинге перебирать сумму перевода в транзакциях и адрес получателя:-)



Есть ещё nonce в coinbase-транзакции, который тоже можно перебирать, насколько мне известно.
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
August 06, 2013, 11:43:00 AM
 #10

Перебирать время? Это было бы совсем некорректно, полагаю. Время меняется, но согласно часам, а не перебором. У майнера конечно есть возможность изменить поле время в каких-то пределах, но перебирать его, это уж слишком. Поле время - важная характеристика при генерации блока, оно должно соответствовать своему назначению.

Тогда уж предлагаю при майнинге перебирать сумму перевода в транзакциях и адрес получателя:-)




60 секунд задание не меняется, эти 60 сек можно перебирать.
Потом пул обновляет задание (уже с новыми транзакциями).

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
Alex AXe
Legendary
*
Offline Offline

Activity: 1218
Merit: 1019



View Profile
August 06, 2013, 04:53:15 PM
 #11

А вопрос ведь интересный! Действительно - кто не ленивый и посмотрел исходники? Что там перебирается?

BTC: 1PReUo29T7zSq9RjfBUbcVaYwfZ66mGvzs |  Украинская биржа криптовалют
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
August 06, 2013, 05:32:39 PM
 #12

При использовании старого протокола getwork перебирается nonce, и да, ограниченный размер числа порождает проблему его неэффективого использования для мощных майнеров. Если за время, пока перебирается все 2^32 значений не будет изменено задание (не изменится время, не изменится список транзакций,..) то майнер получит ту же саму работу и будет ее считать заново.

p.s. Кстати, в этом случае существует не нулевая вероятность, что решения на таком коротком интервале даже не может быть найдено (т.е. для определенных комбинаций транзакций и времени решения блока может вообще не существовать!), но эта проблема не заметна, так как текущий блок очень быстро меняется (появляются новые транзакции в течении секунды и быстрее).

Эта проблема сначала частично решалась перебором времени, но для слишком высоких мощностей
и этого недостаточно, так как время можно менять ограниченном интервале (считанные сотни секунд), т.е. проблема всплывала не при 4GH/s а при 1000GH/s.

Был предложен новый протокол - getworktemplate (уже давно работает, с 0.7 версии), который добавляет в первую транзакцию максимум 100-байтовое число extraNonce (2^800 значений) и майнеры уже перебирают и его... думаю из-за этого ограничения проблему слишком быстрого перебора все доступных значений можно еще долго не увидеть.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
Alex AXe
Legendary
*
Offline Offline

Activity: 1218
Merit: 1019



View Profile
August 06, 2013, 05:38:43 PM
 #13

Перебирается nonce,
Если все значения перебрали - обновляется время и снова перебирается nonce,
Через 60 секунд (минимум) обновляется транзакция - это значит что у нас новое значение merkle root.
Т.е. за 10 минут переберем 2,5 триллиона вариантов. Если нет транзакций в сети - то жоппа.


Был предложен новый протокол - getworktemplate (уже давно работает, с 0.7 версии), который добавляет в первую транзакцию максимум 100-байтовое число extraNonce (2^800 значений) и майнеры уже перебирают и его... думаю из-за этого ограничения проблему слишком быстрого перебора все доступных значений можно еще долго не увидеть.
А ну вот и ответ. Все в порядке, значит.

BTC: 1PReUo29T7zSq9RjfBUbcVaYwfZ66mGvzs |  Украинская биржа криптовалют
Alex AXe
Legendary
*
Offline Offline

Activity: 1218
Merit: 1019



View Profile
August 06, 2013, 08:45:10 PM
 #14

Да и без этого можно было прожить: меняем кошелек - меняется сигнатура, транзакция, и, соответственно, merkle root. Можно снова задавать старые значения времени и перебирать nonce.
Правда из-за асиков пришлось бы много кошельков на лету генерировать и все это обсчитывать, а это сильно больше затрат выч. ресурсов чем текущая схема реализованная через мутацию транзакции в getworktemplate. Но ведь вполне можно было бы и без этого "костыля" обойтись.
Не обязательно генерировать на лету. Можно было сгенерировать заранее миллион (или сколько нужно) кошельков и перебирать и их.

BTC: 1PReUo29T7zSq9RjfBUbcVaYwfZ66mGvzs |  Украинская биржа криптовалют
mnyonpa
Full Member
***
Offline Offline

Activity: 140
Merit: 100



View Profile
August 07, 2013, 12:53:20 AM
 #15

rPman, спасибо за объяснение!

BTC address for donations: 1EEjkAqLXTxscD24D1S6aXWtxPUWxSkHcd
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
August 07, 2013, 04:56:34 AM
 #16

Не обязательно генерировать на лету. Можно было сгенерировать заранее миллион (или сколько нужно) кошельков и перебирать и их.

Это обсуждалось, но решили что содержать этот миллион кошельков неудобно/криво, и лучше переложить работу на майнеров.

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
Wizet
Full Member
***
Offline Offline

Activity: 180
Merit: 100


View Profile
August 07, 2013, 08:33:04 AM
 #17

Не обязательно генерировать на лету. Можно было сгенерировать заранее миллион (или сколько нужно) кошельков и перебирать и их.
Это обсуждалось, но решили что содержать этот миллион кошельков неудобно/криво, и лучше переложить работу на майнеров.
В общем случае на пул, разработчики учли реалиии, ибо соло-майнинг нынче не в моде.

Everyone lies, but always in his own
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!