Bitcoin Forum
October 31, 2024, 12:17:44 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Материал по блокчейну, подскажите  (Read 432 times)
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
April 23, 2019, 09:00:26 PM
 #21

получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден?  Lips sealed


Хэш это 256 битное число
Таргет это 256 битное число

Если найденный хэш меньше или равен таргету, значит зашибись!

значит нули вообще не причем? то есть любой хешь, ниже таргета?

⚡⚡⚡
Atom - пишу свою крипту, присоединяйся в ополчение - https://bitcointalk.org/index.php?topic=3428149.0
⚡⚡⚡
A-Bolt
Legendary
*
Offline Offline

Activity: 2334
Merit: 2374


View Profile
April 23, 2019, 09:32:32 PM
 #22

то есть любой хешь, ниже таргета?

Верно.

Quote
значит нули вообще не причем?

Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b.

Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
April 23, 2019, 10:02:20 PM
 #23

Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b.

Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.

приведу пример в двоичной системе, как я это вижу:

есть число таргет (a) = 99
мы находим число 1 (b) и удовлетворяем формулу a<b
тогда первое попавшееся число удовлетворяет, формулу.

мне кажется я просто не до дупляю что-то с 256 битной системе  Undecided


⚡⚡⚡
Atom - пишу свою крипту, присоединяйся в ополчение - https://bitcointalk.org/index.php?topic=3428149.0
⚡⚡⚡
A-Bolt
Legendary
*
Offline Offline

Activity: 2334
Merit: 2374


View Profile
April 23, 2019, 10:28:14 PM
 #24

есть число таргет (a) = 99
мы находим число 1 (b) и удовлетворяем формулу a<b
тогда первое попавшееся число удовлетворяет, формулу.

Так "находим" или "первое попавшееся"? Это разные вещи.
Слово "находим" предполагает некоторую последовательность действий.

Quote
мне кажется я просто не до дупляю что-то с 256 битной системе

Арифметические операции над 256-битными числами выполняются точно так же, как и над 8-битными.

Вам, может, лучше сначала книжку про Bitcoin прочитать. На русском языке. Там есть разные разделы: Ключи, Транзакции, Блокчейн - выбирайте любой.

А то вопросы вы уж совсем какие-то непонятные задаёте.
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
April 24, 2019, 08:41:51 PM
 #25

Так "находим" или "первое попавшееся"? Это разные вещи.
Слово "находим" предполагает некоторую последовательность действий.
https://github.com/neiros/---TTC--TDC---/blob/TDC/src/miner.cpp#L779
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)

Вам, может, лучше сначала книжку про Bitcoin прочитать. На русском языке. Там есть разные разделы: Ключи, Транзакции, Блокчейн - выбирайте любой.

спасибо, почитаю, что-то новое обязательно найду. принцип работы nonce я понимаю, хочется понять под капотом

⚡⚡⚡
Atom - пишу свою крипту, присоединяйся в ополчение - https://bitcointalk.org/index.php?topic=3428149.0
⚡⚡⚡
A-Bolt
Legendary
*
Offline Offline

Activity: 2334
Merit: 2374


View Profile
April 24, 2019, 09:03:36 PM
 #26

просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)

Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target.

И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей?
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
April 24, 2019, 09:08:21 PM
 #27

просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)

Ну, всё правильно. Выполняется сравнение двух чисел, и по результату сравнения принимается решение: итерировать ли дальше nonce или мы таки нашли хеш заголовка блока, подходящий под текущий target.

И чего вы к этим нулям прицепились? С чего вы, вообще, взяли что происходит сравнение по количеству нулей?

почему каждый хеш блока, который нашел нужный nonce, выглдят так:
0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040
или
00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007

то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?

⚡⚡⚡
Atom - пишу свою крипту, присоединяйся в ополчение - https://bitcointalk.org/index.php?topic=3428149.0
⚡⚡⚡
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
April 24, 2019, 09:17:14 PM
Merited by lapitsky (1)
 #28

просто в коде не нашел сравнение по количеству нулей в начале, вижу только 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


OpenTrade - Open Source Cryptocurrency Exchange
A-Bolt
Legendary
*
Offline Offline

Activity: 2334
Merit: 2374


View Profile
April 24, 2019, 10:07:03 PM
Merited by chimk (5), Coin-1 (1), lapitsky (1)
 #29

то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?

Когда майнился самый первый блок Bitcoin, его сложность была равна 1.
Этой сложности соответствует:
Code:
target = 00000000ffff0000000000000000000000000000000000000000000000000000
 

00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу.

target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!).

При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
April 25, 2019, 05:46:36 PM
 #30

Ну вроде во втором классе средней школы проходят.
1 = 01 = 001 = 0001 = 00000...000001
2 = 02 = 002 = 0002 = 00000...000002

0000000000000000002a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040 = 2a3efa7588628ea72576cd1fc7384c2ed4ca9e26d77040
00000000000000000016ea0bd16532a3d726a01b60dcf34d0756c5140c76a007 = 16ea0bd16532a3d726a01b60dcf34d0756c5140c76a007

ВНЕЗАПНО:

1 < 2
0001 < 0002


допер  Grin


00000000ffff0000000000000000000000000000000000000000000000000000 - это константа, это - максимально возможный target, его нельзя превысить, то есть, хеш блока всегда будет меньше либо равен этому числу.

target - 256-битное число. Числа фиксированной длины принято отображать с нулями перед значащими цифрами. Так принято для наглядности. То есть, у хеша любого блока будет минимум 8 нулей спереди (при отображении в шестнадцатеричном виде!).

При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.

получается, что нули спереди, это не результат перебора nonce, а просто потому что мы 16-ю систему перевели в 256 и в начале автоматом выставились нули?

то есть смысл nonce, просто перебирать числа, чтобы наше число оказалось меньше числа таргет и чем меньше таргет, тем  соответственно больше в начале нулей, так как отображение 256 бит!

бомба, когда понимаешь, так просто кажется, в начале дебри были какие-то  Grin

⚡⚡⚡
Atom - пишу свою крипту, присоединяйся в ополчение - https://bitcointalk.org/index.php?topic=3428149.0
⚡⚡⚡
A-Bolt
Legendary
*
Offline Offline

Activity: 2334
Merit: 2374


View Profile
April 25, 2019, 07:25:28 PM
 #31

получается, что нули спереди, это не результат перебора nonce,

Нужно подобрать такой nonce, чтобы хеш заголовка блока был меньше либо равен target. Если, к примеру, target имеет 10 нулей спереди, то и хеш заголовка блока должен иметь 10 или более нулей спереди. Поэтому нули спереди в результирующем хеше - это именно результат перебора nonce.

Quote
а просто потому что мы 16-ю систему перевели в 256 и в начале автоматом выставились нули?

Ничего никуда не перевели. Вы путаете основание системы счисления (16) и разрядность (256), что странно, для человека, изучающего программирование.

Quote
то есть смысл nonce, просто перебирать числа, чтобы наше число оказалось меньше числа таргет и чем меньше таргет, тем  соответственно больше в начале нулей, так как отображение 256 бит!

Как-то так. Но фраза про 256 бит была лишней, так как это справедливо для любой разрядности. Число 0099 меньше числа 9999, поэтому у числа 0099 больше нулей спереди, чем у числа 9999.
Pages: « 1 [2]  All
  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!