lapitsky (OP)
Member
Offline
Activity: 202
Merit: 27
Atom foundation
|
|
April 23, 2019, 09:00:26 PM |
|
получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден? Хэш это 256 битное число Таргет это 256 битное число Если найденный хэш меньше или равен таргету, значит зашибись! значит нули вообще не причем? то есть любой хешь, ниже таргета?
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
April 23, 2019, 09:32:32 PM |
|
то есть любой хешь, ниже таргета?
Верно. значит нули вообще не причем?
Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b. Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
|
|
|
|
lapitsky (OP)
Member
Offline
Activity: 202
Merit: 27
Atom foundation
|
|
April 23, 2019, 10:02:20 PM |
|
Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b.
Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
приведу пример в двоичной системе, как я это вижу: есть число таргет (a) = 99 мы находим число 1 (b) и удовлетворяем формулу a<b тогда первое попавшееся число удовлетворяет, формулу. мне кажется я просто не до дупляю что-то с 256 битной системе
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
April 23, 2019, 10:28:14 PM |
|
есть число таргет (a) = 99 мы находим число 1 (b) и удовлетворяем формулу a<b тогда первое попавшееся число удовлетворяет, формулу.
Так "находим" или "первое попавшееся"? Это разные вещи. Слово "находим" предполагает некоторую последовательность действий. мне кажется я просто не до дупляю что-то с 256 битной системе
Арифметические операции над 256-битными числами выполняются точно так же, как и над 8-битными. Вам, может, лучше сначала книжку про Bitcoin прочитать. На русском языке. Там есть разные разделы: Ключи, Транзакции, Блокчейн - выбирайте любой. А то вопросы вы уж совсем какие-то непонятные задаёте.
|
|
|
|
lapitsky (OP)
Member
Offline
Activity: 202
Merit: 27
Atom foundation
|
|
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: 2334
Merit: 2374
|
|
April 24, 2019, 09:03:36 PM |
|
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)
Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target. И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей?
|
|
|
|
lapitsky (OP)
Member
Offline
Activity: 202
Merit: 27
Atom foundation
|
|
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
|
|
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: 2334
Merit: 2374
|
то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?
Когда майнился самый первый блок Bitcoin, его сложность была равна 1. Этой сложности соответствует: target = 00000000ffff0000000000000000000000000000000000000000000000000000 00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу. target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!). При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
|
|
|
|
lapitsky (OP)
Member
Offline
Activity: 202
Merit: 27
Atom foundation
|
|
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
допер 00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу.
target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!).
При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
получается, что нули спереди, это не результат перебора nonce, а просто потому что мы 16-ю систему перевели в 256 и в начале автоматом выставились нули? то есть смысл nonce, просто перебирать числа, чтобы наше число оказалось меньше числа таргет и чем меньше таргет, тем соответственно больше в начале нулей, так как отображение 256 бит! бомба, когда понимаешь, так просто кажется, в начале дебри были какие-то
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
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.
|
|
|
|
|