Grumlin (OP)
Legendary
Offline
Activity: 2893
Merit: 1158
|
|
March 29, 2013, 05:40:44 PM |
|
Люди, кому не лень, объясните пожалуйста, желательно на пальцах, каким образом происходит генерация хеша? из литературы Созданный блок будет принят остальными пользователями только в том случае, если SHA-256 хэш заголовка равен или ниже определенной цели, которая вычисляется из параметра bits. Например, если значение bits 0x1a0115cb, то целью является 0x0115cb * 2**(8*(0x1a - 3)) = 0x0000000000000115cb0000000000000000000000000000000000000000000000. Максимально возможная цель (то есть минимальная сложность) определяется значением bits 0x1d00ffff. Как система проверки правильности решения (правильности найденного блока) помогает безопасности Bitcoin?
Чтоб понять идею процесса майнинга, давайте рассмотрим вот это:
полезная нагрузка = <некоторые данные, касательно событий происходящих в Bitcoin сети> nonce = 1 hash = SHA2( SHA2( полезная нагрузка + nonce ) )
Работа, производимая майнером (добытчиком) заключается в постоянном увеличении значения "nonce" до тех пор пока хэш-функция не выдаст значение, которое обладает очень редким свойством: оно должно быть меньше чем определённое пороговое значение. (Другими словами: Хэш значение должно "начинаться с определённого количества нулей", если вы рассматриваете хэш в представлении с фиксированной длиной то именно так это формулируется)
Как можно увидеть, в результате майнинга мы ничего такого особенного не вычисляем. Мы просто пытаемся найти число (называемое "nonce") которое, будучи добавленным к полезной нагрузке даст в результате вычисления хэш функции результат с определёнными свойствами. не совсем допонимаю, как же все таки этот хеш мы высчитываем, и как высчитывается сложность?
|
|
|
|
Vicus
|
|
March 29, 2013, 05:43:40 PM |
|
|
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 05:53:50 PM |
|
не совсем допонимаю, как же все таки этот хеш мы высчитываем, и как высчитывается сложность?
По хэшу: Берем [ПредыдущийХэш]+[Нонс]. Хэшируем с помощью SHA256 2 раза: SHA256(SHA256([ПредыдущийХэш]+[Нонс])). Считаем сколько ноликов впереди. Если ноликов достаточно много, то мы нашли нужный Нонс, иначе подставляем другой Нонс (обычно предыдущий увеличиваем на 1). По сложности: Смотрим за сколько минут в среднем находится Нонс. Меняем требование на число ноликов так, чтобы в среднем было 10 минут.
|
|
|
|
Grumlin (OP)
Legendary
Offline
Activity: 2893
Merit: 1158
|
|
March 29, 2013, 06:06:30 PM |
|
не совсем допонимаю, как же все таки этот хеш мы высчитываем, и как высчитывается сложность?
По хэшу: Берем [ПредыдущийХэш]+[Нонс]. Хэшируем с помощью SHA256 2 раза: SHA256(SHA256([ПредыдущийХэш]+[Нонс])). Считаем сколько ноликов впереди. Если ноликов достаточно много, то мы нашли нужный Нонс, иначе подставляем другой Нонс (обычно предыдущий увеличиваем на 1). По сложности: Смотрим за сколько минут в среднем находится Нонс. Меняем требование на число ноликов так, чтобы в среднем было 10 минут. как то не совсем описана, считаем количество ноликов. это прикольно, а если математически, то как? плюс ещё, Берем [ПредыдущийХэш]+[Нонс], мы что делаем, записываем в строку "хеш+число" и от этой строки находим хеш, либо мы к предыдыщему хешу както математически прибавляем нонс? про сложность я имел ввиду, как она вообще щитается? т.е. откуда само число появляется? и как мы определяем, что хеш соответствует сложности?
|
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 06:31:52 PM |
|
как то не совсем описана, считаем количество ноликов. это прикольно, а если математически, то как?
плюс ещё, Берем [ПредыдущийХэш]+[Нонс], мы что делаем, записываем в строку "хеш+число" и от этой строки находим хеш, либо мы к предыдыщему хешу както математически прибавляем нонс?
про сложность я имел ввиду, как она вообще щитается? т.е. откуда само число появляется? и как мы определяем, что хеш соответствует сложности?
256 битов, полученных с помощью SHA256, являются 256-битным числом. Оно должно быть меньше определенного значения, зависящего от сложности. Больше сложность - меньше значение. Это если без подсчета ноликов. [ПредыдущийХэш]+[Нонс] по сути записываем в строку. Хотя там не только эти 2 значения. Сложность считается так - берем среднее значение времени, за которое были найдены нонсы последних блоков. Предположим, получили 5 минут. Значит сложность надо увеличить в 2 раза.
|
|
|
|
naima53
|
|
March 29, 2013, 06:37:36 PM |
|
Сложность считается так - берем среднее значение времени, за которое были найдены нонсы последних блоков. Предположим, получили 5 минут. Значит сложность надо увеличить в 2 раза.
А если время ускорилось?
|
Donate me) 16f6iWHHkVEnDReeBQPT9GwCNwUfPTXrp2
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 06:43:00 PM |
|
Сложность считается так - берем среднее значение времени, за которое были найдены нонсы последних блоков. Предположим, получили 5 минут. Значит сложность надо увеличить в 2 раза.
А если время ускорилось? Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
|
|
|
|
naima53
|
|
March 29, 2013, 06:48:29 PM |
|
Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
Так, а что является источником времени? Среднее время, выставленное на машинах нод?
|
Donate me) 16f6iWHHkVEnDReeBQPT9GwCNwUfPTXrp2
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 06:52:57 PM |
|
Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
Так, а что является источником времени? Среднее время, выставленное на машинах нод? Timestamp в блоках.
|
|
|
|
naima53
|
|
March 29, 2013, 06:55:59 PM |
|
Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
Так, а что является источником времени? Среднее время, выставленное на машинах нод? Timestamp в блоках. А там откуда берется?
|
Donate me) 16f6iWHHkVEnDReeBQPT9GwCNwUfPTXrp2
|
|
|
Grumlin (OP)
Legendary
Offline
Activity: 2893
Merit: 1158
|
|
March 29, 2013, 06:59:28 PM |
|
[ПредыдущийХэш]+[Нонс] по сути записываем в строку. Хотя там не только эти 2 значения.
не путайте меня и людей, это операция сложения
|
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 06:59:45 PM |
|
Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
Так, а что является источником времени? Среднее время, выставленное на машинах нод? Timestamp в блоках. А там откуда берется? Записывает майнер. Особо не помухлюет, потому что блоки с очень большим расхождением между реальным временем и заявленным игнорируются.
|
|
|
|
naima53
|
|
March 29, 2013, 07:02:00 PM |
|
Это если время ускорилось. Если, к примеру, стало 20 минут, то сложность надо уменьшить в 2 раза.
Так, а что является источником времени? Среднее время, выставленное на машинах нод? Timestamp в блоках. А там откуда берется? Записывает майнер. Особо не помухлюет, потому что блоки с очень большим расхождением между реальным временем и заявленным игнорируются. Что есть "реальным"? Статистика (среднее) по всем майнерам? Иными словами Вы хотите сказать что у нас полная привязка к системной дате юзеров майнеров (хоть и распределенная) ?
|
Donate me) 16f6iWHHkVEnDReeBQPT9GwCNwUfPTXrp2
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 07:03:56 PM |
|
Что есть "реальным"? Статистика (среднее) по всем майнерам? Иными словами Вы хотите сказать что у нас полная привязка к системной дате юзеров майнеров (хоть и распределенная) ?
Реальное для каждого майнера свое. То, которые выставлено на компе.
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
March 29, 2013, 08:06:45 PM |
|
Ё-мое, как можно не понимать таких вещей)
В качестве времени в сети используется значение, расчитываемое на базе локальногомвремени нод с отбросом неправдоподобно расходящихся значений. От него и должны плясать таймстампы, если сильно отличается (в биткоине "сильно" это 7200 секунд), то блок отклоняется.
|
|
|
|
gades
|
|
March 29, 2013, 08:12:42 PM |
|
De-decentralization of Bitcoin The Bitcoin Confiscation Of April 5, 2013
Интересны ссылки у вас в подписи
|
|
|
|
naima53
|
|
March 29, 2013, 08:56:36 PM |
|
Ё-мое, как можно не понимать таких вещей)
Я вот подумал гипотетически если все ноды ускорят время одновременно в 10 раз(не переведут стрелки а именно ускорят), то мы будем иметь в 10 раз снижение сложности?
|
Donate me) 16f6iWHHkVEnDReeBQPT9GwCNwUfPTXrp2
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
March 29, 2013, 08:58:37 PM |
|
Ё-мое, как можно не понимать таких вещей)
Я вот подумал гипотетически если все ноды ускорят время одновременно в 10 раз(не переведут стрелки а именно ускорят), то мы будем иметь в 10 раз снижение сложности? Тогда им проще договориться, что сложность просто надо считать опять равной 1.
|
|
|
|
WhiteShum
Legendary
Offline
Activity: 1834
Merit: 1001
|
|
March 29, 2013, 09:05:42 PM |
|
De-decentralization of Bitcoin The Bitcoin Confiscation Of April 5, 2013
Интересны ссылки у вас в подписи А если подумать головой и поискать что это был за закон,то все фантазии сразу отпадут п.с. когда обороты битков достигнут Х,то он может и останется децентрализованным,в чем я сомневаюсь на 99%,частично будет анонимным, но будет подконтролен "уолл-стрит",никаких очередных теорий заговора,просто бизнес.
|
|
|
|
Grumlin (OP)
Legendary
Offline
Activity: 2893
Merit: 1158
|
|
March 29, 2013, 09:13:11 PM |
|
интересует вопрос, есть блок https://blockchain.info/block/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048, если взять, предыдущий хеш, взять нонсе(перевести её в 16 систему), приплюсовать их, потом взять два раза sha 256, нифига не получается следующий хеш. Кто нибудь объяснит мне, откуда что берется?
|
|
|
|
|