Перейти к публикации
nikkolo

Идентификация блоков

Рекомендованные сообщения

Каждый блок который хранится на узле и идентифицируется своим хешем, что делается и делается ли вообще для решения проблемы когда два разных блока имеют одинаковый хеш? При запросе блока с определенным хешем возвращается два и более? В книге Mastering Bitcoin не нашел ответа, сомневаюсь что это не предусмотрено. Я представляю как можно решить эту проблему, но хотелось поинтересоваться как это реализовано в Bitcoin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто первый, тот и прав, а второй - становится orphan.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, Lexis77 сказал:

Кто первый, тот и прав, а второй - становится orphan.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все правильно сказали. Если на узел пришло два разных блока с одинаковым номером, это и есть ветвление.

 

Bitcoin-Blockchain-fork.png

 

Узел сохраняет оба блока и ждет следующего номера блока по порядку, чьего блока хеш будет включен в последующий блок тот блок и оставляем, а про блок не имеющий включения хеша в следующий блок забываем. На сколько я знаю больше 4 таких отпавших блоков подряд за всю историю не было. Биржи обычно ждут 4-6 блоков, если злоумышленник решит атаковать сеть таким образом, предоставив цепь из 7 блоков подряд, то у ему придется как миниум владеть большими вычислительными мощностями, чем имеются в мире а настоящий момент, что экономически не реально, а также есть иные нюансы теории вероятности.

 

Bitcoin-blockchain-merge.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Позволю себе вставить код из книжки Mastering Bitcoin:

$ bitcoin-cli getblockhash 277316
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4
$ bitcoin-cli getblock
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4

 

{
"hash" : "0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4", #### Вот про этот хеш я говорю
"confirmations" : 35561,
"size" : 218629,
"height" : 277316,
"version" : 2,
"merkleroot" :
"c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e",
"tx" : [
"d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f",
"b268b45c59b39d759614757718b9918caf0ba9d97c56f3b91956ff877c503fbe",
... еще 417 транзакций ...
],
"time" : 1388185914,
"nonce" : 924591752,
"bits" : "1903a30c",
"difficulty" : 1180923195.25802612,
"chainwork" : "000000000000000000000000000000000000000000000934695e92aaf53afa1a",
"previousblockhash" :
"0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569",
"nextblockhash" :
"000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"
}

А в том случае о котором вы говорите проблема состоит в том что приходят одновременно два блока с одинаковой высотой

Изменено пользователем nikkolo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, nikkolo сказал:

 

Позволю себе вставить код из книжки Mastering Bitcoin:

$ bitcoin-cli getblockhash 277316
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4
$ bitcoin-cli getblock
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4

 

{
"hash" : "0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4", #### Вот про этот хеш я говорю
"confirmations" : 35561,
"size" : 218629,
"height" : 277316,
"version" : 2,
"merkleroot" :
"c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e",
"tx" : [
"d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f",
"b268b45c59b39d759614757718b9918caf0ba9d97c56f3b91956ff877c503fbe",
... еще 417 транзакций ...
],
"time" : 1388185914,
"nonce" : 924591752,
"bits" : "1903a30c",
"difficulty" : 1180923195.25802612,
"chainwork" : "000000000000000000000000000000000000000000000934695e92aaf53afa1a",
"previousblockhash" :
"0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569",
"nextblockhash" :
"000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"
}

А в том случае о котором вы говорите проблема состоит в том что приходят одновременно два блока с одинаковой высотой

А вы о каком случае говорите? Что 2 блока с одинаковым хешем пришло? Это невозможно, при изменении хотябы одного бита данных в блоке изменится не менее половины всех битов результирующего хеша этого блока, читаем лавинный эффейкт, криптография 1й класс. Еще минусов понаставили, офигеть :rtfm:

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, nikkolo сказал:

При запросе блока с определенным хешем возвращается два и более? В книге Mastering Bitcoin не нашел ответа, сомневаюсь что это не предусмотрено

Точно не знаю, но это вполне может не быть предусмотрено. Дело в том, что хеш из 256 бит, возможных хешей 2**256=115792089237316195423570985008687907853269984665640564039457584007913129639936, а блоков не так уж и много - около полумиллиона. Вероятность того, что хеши у блоков совпадут, очень мала.

 

Можем даже посчитать, сколько лет понадобится сегодняшней сети биткоина, если вместо обычной работы она будет искать блоки с совпадающими хешами. Текущий хешрейт сети 25*10**18 хеш/сек, 2**128 вместо 2**256 из-за  "парадокса дней рождения". Считаем: 2**128/(25*10**18)/60/60/24/365=431611322832 лет!

Изменено пользователем sankopolo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, vvvb1 сказал:

А вы о каком случае говорите? Что 2 блока с одинаковым хешем пришло? Это невозможно, при изменении хотябы одного бита данных в блоке изменится не менее половины всех битов результирующего хеша этого блока, читаем лавинный эффейкт, криптография 1й класс. Еще минусов понаставили, офигеть :rtfm:

 

 

Ой я специально минусов не ставил

А как отменить?

Изменено пользователем nikkolo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ага,

 

18 минут назад, sankopolo сказал:

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

431,611322832 млрд лет!

 возраст Вселенной — 14 млрд лет.

 

18 минут назад, nikkolo сказал:

Ой я специально минусов не ставил

А как отменить?

 

кликнуть по стрелки и вбрать зеленую вместо красной

aaf82893c043d33c456f88e5271e4a6a.jpeg

 

Изменено пользователем vvvb1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

large.5ab2afc0735c3_.PNG.be47395fdcefd6c2c80a2e908cc28787.PNG

29 минут назад, vvvb1 сказал:

ага,

 

 возраст Вселенной — 14 млрд лет.

 

 

кликнуть по стрелки и вбрать зеленую вместо красной

aaf82893c043d33c456f88e5271e4a6a.jpeg

Я или слепой или их у меня нет

Как я её нажал если её нет?)))

Изменено пользователем nikkolo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо большое за разъяснения, извините за минус я правда не понимаю куда я кликнул на форме что он появился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×