Pages:
Author

Topic: Материал по блокчейну, подскажите (Read 442 times)

legendary
Activity: 2317
Merit: 2318
получается, что нули спереди, это не результат перебора nonce,

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

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

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

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

Как-то так. Но фраза про 256 бит была лишней, так как это справедливо для любой разрядности. Число 0099 меньше числа 9999, поэтому у числа 0099 больше нулей спереди, чем у числа 9999.
member
Activity: 202
Merit: 27
Atom foundation
Ну вроде во втором классе средней школы проходят.
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
legendary
Activity: 2317
Merit: 2318
то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?

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

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

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

При пересчёте сложности target может уменьшаться. Понятно, что при его уменьшении, нулей спереди станет больше. Значит, и у хеша блока число нулей спереди увеличится, он ведь должен быть меньше или равен target.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
просто в коде не нашел сравнение по количеству нулей в начале, вижу только 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

member
Activity: 202
Merit: 27
Atom foundation
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)

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

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

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

то есть всегда в начале нули? получается ближайшее значение к таргет, это значение с нулями?
legendary
Activity: 2317
Merit: 2318
просто в коде не нашел сравнение по количеству нулей в начале, вижу только if (thash <= hashTarget)

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

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

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

спасибо, почитаю, что-то новое обязательно найду. принцип работы nonce я понимаю, хочется понять под капотом
legendary
Activity: 2317
Merit: 2318
есть число таргет (a) = 99
мы находим число 1 (b) и удовлетворяем формулу aтогда первое попавшееся число удовлетворяет, формулу.

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

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

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

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

А то вопросы вы уж совсем какие-то непонятные задаёте.
member
Activity: 202
Merit: 27
Atom foundation
Утверждение "мы ищем хеш с нулями в начале" не противоречит утверждению "любой хеш ниже таргета", а является следствием из него. Если a< b, то количество значащих цифр числа a меньше либо равно количеству значащих цифр числа b.

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

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

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

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

legendary
Activity: 2317
Merit: 2318
то есть любой хешь, ниже таргета?

Верно.

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

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

Впрочем, если вас сбивают с толку эти нули - не обращайте на них внимания.
member
Activity: 202
Merit: 27
Atom foundation
получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден?  Lips sealed


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

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

значит нули вообще не причем? то есть любой хешь, ниже таргета?
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден?  Lips sealed


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

Если найденный хэш меньше или равен таргету, значит зашибись!
member
Activity: 202
Merit: 27
Atom foundation

Ничего не нужно переводить. Просто сравниваются два 265-битных числа.
Что в десятичном, что в каком ином формате это те же самые числа - одно больше, другое меньше.

if (thash <= hashTarget)

https://github.com/neiros/---TTC--TDC---/blob/TDC/src/miner.cpp#L779


получается мы ищем хеш с нулями в начале, потом переводим хеш в 265-бит, и проверяем, чтобы он был меньше таргет, тогда хеш валиден?  Lips sealed
legendary
Activity: 3556
Merit: 1100
а как он определяет, что меньше этого таргета? он переводит его в десятичные и сравнивает?  или как происходит сравнение?

Ничего не нужно переводить. Просто сравниваются два 265-битных числа.
Что в десятичном, что в каком ином формате это те же самые числа - одно больше, другое меньше.

if (thash <= hashTarget)

https://github.com/neiros/---TTC--TDC---/blob/TDC/src/miner.cpp#L779
member
Activity: 202
Merit: 27
Atom foundation
Чем больше нулей в начале, тем меньше 265-битное число.
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - максимальное
00000000000000000000000000000000ffffffffffffffffffffffffffffffff - среднее
0000000000000000000000000000000000000000000000000000000000000000 - минимальное

Все те 265-битные числа меньше этого таргета - 0000002cd2130000000000000000000000000000000000000000000000000000
Любой хеш меньше таргета будет валидным.


я не понял  Undecided

а как он определяет, что меньше этого таргета? он переводит его в десятичные и сравнивает?  или как происходит сравнение?
legendary
Activity: 3556
Merit: 1100

толковая статья, но не могу принципа работы уловить, там написано:
Quote
Хеш блока может быть каким угодно, но не меньше больше 265-битного числа значения таргета, например, такого:
0000002cd2130000000000000000000000000000000000000000000000000000
Валидный хеш блока биткоина или подобных криптовалют при таком таргете может бить таким
0000002cd2107f99fb83761bdb34a4a86ca1acb711a3c6082acb7af567960ef3
или таким
00000000b7082acb7af5672cd21b7f98a1916c3c61a60ef3a9fb83761bdb344a
или таким и т.п.
000000000000000000000a4ac3761bdb321b7f98b7af5672c1a3c6f8b6ca196f

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

Чем больше нулей в начале, тем меньше 265-битное число.
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - максимальное
00000000000000000000000000000000ffffffffffffffffffffffffffffffff - среднее
0000000000000000000000000000000000000000000000000000000000000000 - минимальное

Все те 265-битные числа меньше этого таргета - 0000002cd2130000000000000000000000000000000000000000000000000000
Любой хеш меньше таргета будет валидным.



PS. ошибка в статье нашлась Roll Eyes надо будет исправить.
member
Activity: 202
Merit: 27
Atom foundation

толковая статья, но не могу принципа работы уловить, там написано:
Quote
Хеш блока может быть каким угодно, но не меньше 265-битного числа значения таргета, например, такого:
0000002cd2130000000000000000000000000000000000000000000000000000
Валидный хеш блока биткоина или подобных криптовалют при таком таргете может бить таким
0000002cd2107f99fb83761bdb34a4a86ca1acb711a3c6082acb7af567960ef3
или таким
00000000b7082acb7af5672cd21b7f98a1916c3c61a60ef3a9fb83761bdb344a
или таким и т.п.
000000000000000000000a4ac3761bdb321b7f98b7af5672c1a3c6f8b6ca196f

почему  таргете в начале 6 нулей, а в внизу написано, что валидны хеши с большим количеством нулей?
legendary
Activity: 3556
Merit: 1100

difficulty = target_from_bits(0x1d00ffff) / target

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

Судя по формуле: difficulty = количеству таких 0x1d00ffff (00000000ffff0000000000000000000000000000000000000000000000000000) попугаев.
Другими словами никому это число не нужно.

Главное это target - величина 265-битного числа, с которым сравнивается хеш блока.

https://ss-iqr.blogspot.com/2018/12/difficulty.html
member
Activity: 202
Merit: 27
Atom foundation
https://en.bitcoin.it/wiki/Difficulty

bits это компактное представление target. Можно так написать
target = target_from_bits(bits);

target (цель) это 256 битное число. Чем меньше это число, тем больше сложность. Формула перевода невероятно сложная, но я ее тут приведу.

Приготовьтесь:

difficulty = target_from_bits(0x1d00ffff) / target

 Wink

сложность определяется количеством нулей в хеше, не могу понять, число difficulty на выходе будет равно количеству нулей?
newbie
Activity: 24
Merit: 1
Всем привет, пишу свою крипту, дошел до фазы создания блоков. хочу изобрести велосипед и местами со своим блэкджеком.
Подскажите толковый материал, а именно по принципу работы входов-выходов, как именно хранятся данные в блоках, скорость работы базы и какой принцип работы поиска в базе (на физическом носители или в памяти)? Буду признателен, если кто сталкивался с технической частью
Как-то все сумбурно, начините с основ прочитайте книги такие как
1) Как деньги обрели свободу How Money Got Free есть на русском языке. Отрывки из его книги публиковались во многих изданиях, в том числе, в The Atlantic, The New Yorker, American Banker и Avaunt.
2) Технология блокчейн — то, что движет финансовой революцией сегодня
3) Блокчейн для бизнеса
4) Революция блокчейн
5) Биткойн для чайников

Книжки очень интересные и дают полное познание процессов
Pages:
Jump to: