Bitcoin Forum
May 27, 2024, 09:24:46 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 [3]  All
  Print  
Author Topic: Проверка подписи, а не хешей блоков  (Read 379 times)
neiros
Legendary
*
Offline Offline

Activity: 3514
Merit: 1100



View Profile WWW
May 16, 2018, 09:40:28 AM
 #41


...А неправильными неудобные для них вопросы - они обычно да, только с точки зрения сектантов и бывают...
При такой шаблонной дифференциации очень легко самому стать сектантом. Лови мерит за то, что заставил "сектанта" подумать спустя минуту как я написал ответ на этот пост - https://bitcointalk.org/index.php?topic=3685211.msg37363114#msg37363114

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



а в биткойне как нода определяет, какая транзакция "правильная", а какая - нет, при получении одновременно двух разных транзакций с одного выхода, ещё не включенных в блок?
Как владелец ноды решит, так и будет. Выбора у него только 2:
- либо включает одну
- либо другую

Что не запрещено, то разрешено.

DevilOper
Member
**
Offline Offline

Activity: 280
Merit: 26


View Profile
May 16, 2018, 09:49:02 AM
 #42

Как владелец ноды решит, так и будет.
Аптом и речь, при этом тот поциент, который неаффтор, утверждал, что существуют некие магические алгоритмы, которые в биткоэне этот момент решают однозначно, а вот в предложении автора - нифига.
Потому и слился ответить на вопрос, я полагаю.
(Я кстати в пользу бедных аффтора митинговал - но он больше озабочен пуканами, нежели сутью - посему чёта обиделся  Cheesy )
Quote
Если бы не чекпоинты, алгоритмы пересчета сложности каждого блока чувствовали бы себя не очень хорошо. Алгоритму биткоина это фиолетово в гораздо большей степени.
Не очень понял, что имеется в виду под "алгоритмом биткойна" - а вот костыли в виде чекпойнтов как раз наглядно показывают мифичность утверждений про некие волшебные алгоритмы иммутабельности блокчейна.
neiros
Legendary
*
Offline Offline

Activity: 3514
Merit: 1100



View Profile WWW
May 16, 2018, 10:23:21 AM
 #43

Не очень понял, что имеется в виду под "алгоритмом биткойна" - а вот костыли в виде чекпойнтов как раз наглядно показывают мифичность утверждений про некие волшебные алгоритмы иммутабельности блокчейна.
На счёт алгоритмов это к старушкам с клюкой. Эти алгоритмы почти 400 ярдов на сегодняшний день стоят - https://coinmarketcap.com/charts/
Как там в одной рекламе для сектантов: заплати налоги и спи спокойно
Так же и с чекпоинтами: поставил чекпоинт и хрен кто сворует или нагадит.
Защиты ценности много не бывает.

A-Bolt
Legendary
*
Offline Offline

Activity: 2317
Merit: 2318


View Profile
May 16, 2018, 10:37:10 AM
 #44

Чтобы проверить блок на валидность, не нужно перебирать noncе. - это да, а как другие участники сети проверят?

Любой участник при получении нового блока
1. Вычисляет хеш заголовка блока.
2. Проверяет хеш на соответствие алгоритму изменения сложности.
3. В заголовке проверяемого (и любого другого) блока хранится хеш предыдущего блока. Проверяется: соответствует ли этот хеш уже существующему блоку.

Ни одна из перечисленных операций не требует перебора nonce.  

Quote
вы же отправляете доказательство работы, а это и есть nonce.

Nonce - это не доказательство работы. Доказательство работы - это сам блок, хеш заголовка которого, удовлетворяет алгоритму изменения сложности. А noncе - это просто один из параметров заголовка блока, который может изменяться нодой-майнером, наравне с меткой времени и хешем всех транзакций (корень дерева Меркла), для получения требуемого хеша.

Quote
можно просто создавать следующий блок n+1, проводить pow блока,  достигать консенсуса в сети.

а как это происходит в биткони? так же и тут.
Пример с битка:
Вот, поступил на ноду 2 блок 103 (nonce 44444 + хеш блока 102). Как этой ноде понять, что предыдущий блок для этого блока - это блок 102 (nonce 33333 + хеш блока 101), а не блок 102 (nonce 99999 + хеш блока 101)?  Wink

Хеш блока - однозначно идентифицирует конкретный блок, в отличие от порядкового номера. Хеш - идентификатор, придающий блоку уникальность. Блоки 102 из разных цепочек - имеют разные хеши. А в заголовке блока 103 хранится уникальный хеш, который указывает на единственный блок из конкретной цепочки.

Нода Биткойн не верит никому и ничему, кроме PoW. Поэтому, ей приходится собирать блокчейн по блокам с самого genesis-блока из блоков швыряемых ей в произвольном (в общем случае) порядке другими нодами (необязательно честными). Поэтому, порядковые номера блоков нода проставляет для себя самостоятельно, руководствуясь ссылкой на предыдущий блок в виде его хеша.
Vtools
Full Member
***
Offline Offline

Activity: 411
Merit: 135


View Profile WWW
May 16, 2018, 10:47:17 AM
 #45

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

Интересно, можно ли придумать более устойчивый алгоритм, не требующий чекпоинтов.
Например будет ли устойчив алгоритм, основанный на принципах:
1. При выборе текущей ветки блоков - выбирается цепочка с максимальной мощностью.
2. Сложность цепочки определяется как сумма мощностей всех ее блоков.
3. Под мощностью понимается логарифм проделанных вычислений, который аппроксимируется количеством нулей в "красивом" хеше.

Restart of the TERA project in 2022
Web ܀ ANN ܀ Discord ܀ Telegram ܀ Twitter
lapitsky (OP)
Member
**
Offline Offline

Activity: 202
Merit: 27

Atom foundation


View Profile
May 16, 2018, 10:58:18 AM
 #46

а в биткойне как нода определяет, какая транзакция "правильная", а какая - нет, при получении одновременно двух разных
хеш (содержит хеш предыдущего и этого блока) + nonce дает нужное количество нулей в хеше

Вот если бы ВЫ были внимательны, а не занимались выяснением, кто какое впечатление производит или у кого какие пуканы - то заметили бы, что спрашивал я совсем не это, да и автор изначально утверждал одно, а потом ловко подменил своё утверждение совершенно другим.

Я считаю беседу с вами, унылой тратой времени, то есть бесполезной, ни к чему хорошему она не приведет, так что по сути сами разбирайтесь в себе и своих тараканах. Вы для меня скучный собеседник.
ps: тему завел ради интереса, чтобы размять мозги, а размял чей-то пукан  Grin

Ни одна из перечисленных операций не требует перебора nonce.  

я имел ввиду, nonce создает майнер, а нода определяет, что nonce верный.

Nonce - это не доказательство работы. Доказательство работы - это сам блок, хеш заголовка которого, удовлетворяет алгоритму изменения сложности. А noncе - это просто один из параметров заголовка блока, который может изменяться нодой-майнером, наравне с меткой времени и хешем всех транзакций (корень дерева Меркла), для получения требуемого хеша.

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

Хеш блока - однозначно идентифицирует конкретный блок, в отличие от порядкового номера. Хеш - идентификатор, придающий блоку уникальность. Блоки 102 из разных цепочек - имеют разные хеши. А в заголовке блока 103 хранится уникальный хеш, который указывает на единственный блок из конкретной цепочки.
Да и так создается новая цепочка, потому что 103 блок цепляется только за верную цепочку, но побеждает самая длинная, и цеплялся он, не цеплялся, вся цепочка отваливается.

Нода Биткойн не верит никому и ничему, кроме PoW. Поэтому, ей приходится собирать блокчейн по блокам с самого genesis-блока из блоков швыряемых ей в произвольном (в общем случае) порядке другими нодами (необязательно честными). Поэтому, порядковые номера блоков нода проставляет для себя самостоятельно, руководствуясь ссылкой на предыдущий блок в виде его хеша.
Это верно и это один из правильных ответов: чтобы подделать блок в блокчейн, понадобится нереальное количество ресурсов.

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

Activity: 280
Merit: 26


View Profile
May 16, 2018, 10:59:34 AM
 #47

Интересно, можно ли придумать более устойчивый алгоритм, не требующий чекпоинтов.
Например будет ли устойчив алгоритм, основанный на принципах:
1. При выборе текущей ветки блоков - выбирается цепочка с максимальной мощностью.
2. Сложность цепочки определяется как сумма мощностей всех ее блоков.
3. Под мощностью понимается логарифм проделанных вычислений, который аппроксимируется количеством нулей в "красивом" хеше.

Проблема с "суммарной сложностью" в том, что каждый раз при появлении новой цепочки блоков, претендующей на "истинный блохчейн" - нужно полностью пересчитывать обе начиная с места "развилки". Это, конечно, быстрее, чем подбор красивого хэша - но всё равно, рано или поздно упрётся в то, что подобные "развилки" начнут серьёзно тормозить сеть. Не говоря уж о том, что открывается широкий простор для DDoS атак.

С чекпойнтами же: как только у нас появляется чекпойнт - всё, весь предыдущий блохчейн не нужен(с).
В таком случае можно ставить чекпойнт после каждой транзакции.
Vtools
Full Member
***
Offline Offline

Activity: 411
Merit: 135


View Profile WWW
May 16, 2018, 11:46:18 AM
 #48

Интересно, можно ли придумать более устойчивый алгоритм, не требующий чекпоинтов.
Например будет ли устойчив алгоритм, основанный на принципах:
1. При выборе текущей ветки блоков - выбирается цепочка с максимальной мощностью.
2. Сложность цепочки определяется как сумма мощностей всех ее блоков.
3. Под мощностью понимается логарифм проделанных вычислений, который аппроксимируется количеством нулей в "красивом" хеше.

Проблема с "суммарной сложностью" в том, что каждый раз при появлении новой цепочки блоков, претендующей на "истинный блохчейн" - нужно полностью пересчитывать обе начиная с места "развилки". Это, конечно, быстрее, чем подбор красивого хэша - но всё равно, рано или поздно упрётся в то, что подобные "развилки" начнут серьёзно тормозить сеть. Не говоря уж о том, что открывается широкий простор для DDoS атак.

С чекпойнтами же: как только у нас появляется чекпойнт - всё, весь предыдущий блохчейн не нужен(с).
В таком случае можно ставить чекпойнт после каждой транзакции.



Верно, при появлении новой цепочки пересчёт сложности происходит.
Но можно ввести такое правило:
1. Сначала передаётся цепочка заголовков блоков, каждая примерно 100 байт и не более чем из например 50 блоков
2. Цепочка принимается для пересчёта если её средняя сложность не меньше чем текущая сложность цепочки принятой нодой за главную (ну или хотя бы 90%)
3. Пока условие 2 соблюдается, делается запрос очередной партии из 50 блоков для поиска развилки
4. После того как найдена развилка - загружаются блоки

После загрузки и валидации блоков, проверяется текущее состояние главной цепочки и загружаемой, т к возможна ситуация когда текущая цепочка ушла далеко вперёд и загружаемая стала менее мощной. Все решилось мощностью последних блоков. Если есть актуальная загруженная цепочка с большей мощностью, то она становится главной.

Таким образом для ДДос атаки нужно обладать 90% мощностью сети.
Нода тратит минимум вычислительных ресурсов - 50 хешей. К слову для того чтобы подсоединиться к текущей ноде другой ноде, нужно потребовать выполнения pow на десятки тысяч расчетов хешей. Нода, которая отправила заведомо неправильную цепочку - банится.







Restart of the TERA project in 2022
Web ܀ ANN ܀ Discord ܀ Telegram ܀ Twitter
DevilOper
Member
**
Offline Offline

Activity: 280
Merit: 26


View Profile
May 16, 2018, 12:03:11 PM
 #49

...много...

Я вот хотел сперва начать комментировать по пунктам, но на самом деле, проще сказать, что опутывание (относительно простого) алгоритма разными запутанными правилами добавляет только путаницы, но не безопасности.

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

Ещё лучше: нода, которая отправила заведомо неправильную транзакцию (дабл спендинг, например) - банится.

Правда, это никак не решает проблему гарантированной селекции правильных транзакций (блоков) от заведомо неправильных.
Vtools
Full Member
***
Offline Offline

Activity: 411
Merit: 135


View Profile WWW
May 16, 2018, 03:41:43 PM
 #50

Я вот хотел сперва начать комментировать по пунктам, но на самом деле, проще сказать, что опутывание (относительно простого) алгоритма разными запутанными правилами добавляет только путаницы, но не безопасности.

У меня была такая мысль, что все что сложнее 2+2 лучше не обсуждать. С другой стороны я это уже реализовал все это в программе и понимаю, что все равно нужно публиковать описание. Вот и выложил, вдруг есть светлые головы, которые смогут понять...


Quote
Ещё лучше: нода, которая отправила заведомо неправильную транзакцию (дабл спендинг, например) - банится.
Правда, это никак не решает проблему гарантированной селекции правильных транзакций (блоков) от заведомо неправильных
Ага, это есть в биткоине, но это никак не помогает увеличить скорость транзакций - например за счет уменьшения количества проверок транзакций. Т.к. ну и что что ноду можно забанить, если транзакция неверна, а ты поверил, то и тебя забанят. Вобщем бан это инструмент только для защиты от ДДос атак.


Restart of the TERA project in 2022
Web ܀ ANN ܀ Discord ܀ Telegram ܀ Twitter
DevilOper
Member
**
Offline Offline

Activity: 280
Merit: 26


View Profile
May 16, 2018, 08:47:28 PM
 #51

У меня была такая мысль, что все что сложнее 2+2 лучше не обсуждать.

Дело не в том, что "сложнее не обсуждать". Любую идею можно упростить, опустив несущественные для целей обсуждения детали. И лишь потом добавлять их по мере возникновения вопросов.

А когда сразу начинаются какие-то не особо существенные детали, да ещё и не особо систематизированные - создаётся впечатление, что автор сам не вполне понимает, что же он пытается донести до публики.
Vtools
Full Member
***
Offline Offline

Activity: 411
Merit: 135


View Profile WWW
May 16, 2018, 09:03:39 PM
 #52

У меня была такая мысль, что все что сложнее 2+2 лучше не обсуждать.

Дело не в том, что "сложнее не обсуждать". Любую идею можно упростить, опустив несущественные для целей обсуждения детали. И лишь потом добавлять их по мере возникновения вопросов.

А когда сразу начинаются какие-то не особо существенные детали, да ещё и не особо систематизированные - создаётся впечатление, что автор сам не вполне понимает, что же он пытается донести до публики.

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



Restart of the TERA project in 2022
Web ܀ ANN ܀ Discord ܀ Telegram ܀ Twitter
DevilOper
Member
**
Offline Offline

Activity: 280
Merit: 26


View Profile
May 16, 2018, 10:13:49 PM
 #53

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

Да не нужно извиняться, но по кускам и несистематизировано - понимать действительно трудно.
info_infoman1
Jr. Member
*
Offline Offline

Activity: 98
Merit: 1


View Profile
May 22, 2018, 08:59:57 AM
 #54

как бы там ни было, ссылка на предыдущий блок или сам заголовок блока это самая мала часть блокчейна, основная нагрузка это входы выходы транзакций и подписи к ним, экономически смысла делать безблоковую цепь нету, не много удастся сэкономить а ущерб будет огромный....
Pages: « 1 2 [3]  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!