Bitcoin Forum

Local => Кодеры => Topic started by: Maximion on November 08, 2022, 11:25:59 AM



Title: Критичность храненея подписей в БЧ
Post by: Maximion on November 08, 2022, 11:25:59 AM
Является ли критичным обязательное хранение подписей в БЧ?
По идее если сеть так или иначе пришла к консенсусу по данным, то зачем хранить и хешировать подписи, если они не несут вроде никакой ценности уже?


Title: Re: Критичность храненея подписей в БЧ
Post by: ~DefaultTrust on November 08, 2022, 11:36:53 AM
Является ли критичным обязательное хранение подписей в БЧ?
По идее если сеть так или иначе пришла к консенсусу по данным, то зачем хранить и хешировать подписи, если они не несут вроде никакой ценности уже?
Подписи хранить конечно не обязательно.
Просто без подписи битки считаются ничейными, а значит их может забрать любой. В реальности заберет тот, чья транзакция первой попадет в блок - это или майнер или тот, кто назначит самую большую комиссию.


Title: Re: Критичность храненея подписей в БЧ
Post by: Maximion on November 08, 2022, 02:08:21 PM
Является ли критичным обязательное хранение подписей в БЧ?
По идее если сеть так или иначе пришла к консенсусу по данным, то зачем хранить и хешировать подписи, если они не несут вроде никакой ценности уже?
Подписи хранить конечно не обязательно.
Просто без подписи битки считаются ничейными, а значит их может забрать любой. В реальности заберет тот, чья транзакция первой попадет в блок - это или майнер или тот, кто назначит самую большую комиссию.

почему ничейными? речь о том что транзакции остаются с подписью и блоки тоже, но когда блок А ссылается на блок Б то он может ссылаться(хешировать) только на фактические данные а не всё подряд. Остальные получая блок Б делают тоже самое, тем самым манейр блока А не может туда вписапь шопопало, иначе он просто выпадет из консенсуса


Title: Re: Критичность храненея подписей в БЧ
Post by: ~DefaultTrust on November 08, 2022, 03:31:24 PM
Является ли критичным обязательное хранение подписей в БЧ?
По идее если сеть так или иначе пришла к консенсусу по данным, то зачем хранить и хешировать подписи, если они не несут вроде никакой ценности уже?
Подписи хранить конечно не обязательно.
Просто без подписи битки считаются ничейными, а значит их может забрать любой. В реальности заберет тот, чья транзакция первой попадет в блок - это или майнер или тот, кто назначит самую большую комиссию.

почему ничейными? речь о том что транзакции остаются с подписью и блоки тоже, но когда блок А ссылается на блок Б то он может ссылаться(хешировать) только на фактические данные
Подпись включена в хэш транзакции. Не будет подписи - никак не проверить правильность хэша транзакции. Не проверите хэш транзакции - не сможете проверить хэш блока.
Клиентам, которые в сети, в принципе пофиг на эти проверки. Они получили свою копию БЧ и могут спать спокойно. А если клиент новый? Ему надо каждый блок качать друг за другом и проверять все хэши на валидность.
Если удастся подписи надежно хранить в другом месте, то в это другое место можно и все остальное запихнуть тогда.


Title: Re: Критичность храненея подписей в БЧ
Post by: igor72 on November 11, 2022, 02:22:34 PM
Подпись включена в хэш транзакции. Не будет подписи - никак не проверить правильность хэша транзакции. Не проверите хэш транзакции - не сможете проверить хэш блока
В сегвит подпись не входит в хэш транзакции, а таких транзакций уже процентов 80, если не ошибаюсь.


Title: Re: Критичность храненея подписей в БЧ
Post by: A-Bolt on November 11, 2022, 03:24:43 PM
В сегвит подпись не входит в хэш транзакции
Смотря в какой хеш. У нас теперь для транзакций два ID (https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#Transaction_ID): txid и wtxid. Для wtxid транзакция хешируется вместе с witness.

Сами по себе ID транзакций в блоке не хранятся, вместо этого хранится корень дерева Меркла, который вычисляется из ID всех транзакций. И теперь у нас два таких корня. Первый - hashMerkleRoot вычисляется из txid всех транзакций и хранится в заголовке блока. Второй - witness root hash (https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#commitment-structure) вычисляется из wtxid всех транзакций и помещается в выход типа OP_RETURN транзакции coinbase. Получается, что txid транзакции coinbase зависит от witness root hash. hashMerkleRoot, в свою очередь, зависит от txid coinbase, а хеш блока, опять же, зависит от hashMerkleRoot.

Итого получаем: хеш блока зависит от witness каждой транзакции по следующей схеме:
witness -> wtxid -> witness root hash -> coinbase_txid -> hashMerkleRoot -> block_hash


Title: Re: Критичность храненея подписей в БЧ
Post by: igor72 on November 11, 2022, 03:47:47 PM
и помещается в выход типа OP_RETURN транзакции coinbase.
Спасибо, этого не знал. Видел эти op_return в первой транзакции, теперь понятно, что там. Хотя их там часто по три штуки вместо одного.


Title: Re: Критичность храненея подписей в БЧ
Post by: amaclin1 on December 02, 2022, 09:36:30 AM
Является ли критичным обязательное хранение подписей в БЧ?
По идее если сеть так или иначе пришла к консенсусу по данным, то зачем хранить и хешировать подписи, если они не несут вроде никакой ценности уже?
Ценность как раз есть.
Вот подключается к сети новый участник и скачивает блокчейн.
Ему для этого надо проверить, что он скачивает тот блокчейн, который у всех остальных добропорядочных узлов в мире, а не тот, который ему подсовывает сосед-злоумышленник. А для этого нужно проверить в том числе что все транзакции во всех блоках валидные. А без подписей это не доказать.

Сеть не может прийти к консенсусу данных (это просто бессмысленный набор слов) - потому что сеть это просто много отдельных узлов. Это не какой-то единый мозг, надо понимать, что это скорее стая птиц. Снаружи кажется что это нечто единое. А на самом деле обеспечивается действиями каждого участника самостоятельно. Не стая птиц летит на юг. Каждая из птиц летит сама на юг, глядя на соседей и повинуюсь правилам/инстинктам

Надо еще добавить, что
1) существуют способы ускорения начальной проверки подписей - контрольные точки. Но по сути дела - это некий лайфхак
2) вынесение подписей в сегвите - это не способ избавиться от подписей в блокчейне, а костыль, позволяющий без изменения консенсуса увеличить количество транзакций в блоке. То есть тоже никуда не деться от хранения
3) вы лично можете у себя на винчестере подписи не хранить - всем остальным в мире на это плевать с высокой колокольни