lapitsky (OP)
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 202
Merit: 27
Atom foundation
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 23, 2019, 09:00:26 PM |
|
получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден? ![Lips sealed](https://bitcointalk.org/Smileys/default/lipsrsealed.gif) Хэш это 256 битное число Таргет это 256 битное число Если найденный хэш меньше или равен таргету, значит зашибись! значит нули вообще не причем? то есть любой хешь, ниже таргета?
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2318
Merit: 2333
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 23, 2019, 09:32:32 PM |
|
то есть любой хешь, ниже таргета?
Верно. значит нули вообще не причем?
Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b. Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
|
|
|
|
lapitsky (OP)
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 202
Merit: 27
Atom foundation
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 23, 2019, 10:02:20 PM |
|
Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b.
Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
приведу пример в двоичной системе, как я это вижу: есть число таргет (a) = 99 мы находим число 1 (b) и удовлетворяем формулу a<b тогда первое попавшееся число удовлетворяет, формулу. мне кажется я просто не до дупляю что-то с 256 битной системе ![Undecided](https://bitcointalk.org/Smileys/default/undecided.gif)
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2318
Merit: 2333
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 23, 2019, 10:28:14 PM |
|
есть число таргет (a) = 99 мы находим число 1 (b) и удовлетворяем формулу a<b тогда первое попавшееся число удовлетворяет, формулу.
Так "находим" или "первое попавшееся"? Это разные вещи. Слово "находим" предполагает некоторую последовательность действий. мне кажется я просто не до дупляю что-то с 256 битной системе
Арифметические операции над 256-битными числами выполняются точно так же, как и над 8-битными. Вам, может, лучше сначала книжку про Bitcoin прочитать. На русском языке. Там есть разные разделы: Ключи, Транзакции, Блокчейн - выбирайте любой. А то вопросы вы уж совсем какие-то непонятные задаёте.
|
|
|
|
lapitsky (OP)
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 202
Merit: 27
Atom foundation
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 24, 2019, 08:41:51 PM |
|
Так "находим" или "первое попавшееся"? Это разные вещи. Слово "находим" предполагает некоторую последовательность действий.
https://github.com/neiros/---TTC--TDC---/blob/TDC/src/miner.cpp#L779просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget) Вам, может, лучше сначала книжку про Bitcoin прочитать. На русском языке. Там есть разные разделы: Ключи, Транзакции, Блокчейн - выбирайте любой. спасибо, почитаю, что-то новое обязательно найду. принцип работы nonce я понимаю, хочется понять под капотом
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2318
Merit: 2333
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 24, 2019, 09:03:36 PM |
|
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)
Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target. И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей?
|
|
|
|
lapitsky (OP)
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 202
Merit: 27
Atom foundation
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 24, 2019, 09:08:21 PM |
|
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)
Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target. И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей? почему каждый хеш блока, который нашел нужный nonce, выглдят так: 0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 или 00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?
|
|
|
|
kzv
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 24, 2019, 09:17:14 PM |
|
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)
Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target. И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей? почему каждый хеш блока, который нашел нужный nonce, выглдят так: 0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 или 00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями? Ну вроде во втором классе средней школы проходят. 1 = 01 = 001 = 0001 = 00000...000001 2 = 02 = 002 = 0002 = 00000...000002 0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 = 2a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 = 16ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 ВНЕЗАПНО: 1 < 2 0001 < 0002 16ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 < 2a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 < 0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2318
Merit: 2333
|
то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?
Когда майнился самый первый блок Bitcoin, его сложность была равна 1. Этой сложности соответствует: target = 00000000ffff0000000000000000000000000000000000000000000000000000 00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу. target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!). При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
|
|
|
|
lapitsky (OP)
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 202
Merit: 27
Atom foundation
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 25, 2019, 05:46:36 PM |
|
Ну вроде во втором классе средней школы проходят. 1 = 01 = 001 = 0001 = 00000...000001 2 = 02 = 002 = 0002 = 00000...000002
0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 = 2a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 = 16ea0bd16532a3d726a01b60dcf34d0756c5140c76a007
ВНЕЗАПНО:
1 < 2 0001 < 0002
допер ![Grin](https://bitcointalk.org/Smileys/default/grin.gif) 00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу.
target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!).
При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
получается, что нули спереди, это не результат перебора nonce, а просто потому что мы 16-ю систему перевели в 256 и в начале автоматом выставились нули? то есть смысл nonce, просто перебирать числа, чтобы наше число оказалось меньше числа таргет и чем меньше таргет, тем соответственно больше в начале нулей, так как отображение 256 бит! бомба, когда понимаешь, так просто кажется, в начале дебри были какие-то ![Grin](https://bitcointalk.org/Smileys/default/grin.gif)
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2318
Merit: 2333
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 25, 2019, 07:25:28 PM |
|
получается, что нули спереди, это не результат перебора nonce,
Нужно подобрать такой nonce, чтобы хеш заголовка блока был меньше либо равен target. Если, к примеру, target имеет 10 нулей спереди, то и хеш заголовка блока должен иметь 10 или более нулей спереди. Поэтому нули спереди в результирующем хеше - это именно результат перебора nonce. а просто потому что мы 16-ю систему перевели в 256 и в начале автоматом выставились нули?
Ничего никуда не перевели. Вы путаете основание системы счисления (16) и разрядность (256), что странно, для человека, изучающего программирование. то есть смысл nonce, просто перебирать числа, чтобы наше число оказалось меньше числа таргет и чем меньше таргет, тем соответственно больше в начале нулей, так как отображение 256 бит!
Как-то так. Но фраза про 256 бит была лишней, так как это справедливо для любой разрядности. Число 0099 меньше числа 9999, поэтому у числа 0099 больше нулей спереди, чем у числа 9999.
|
|
|
|
|