Pages:
Author

Topic: Проверка подписи, а не хешей блоков (Read 414 times)

jr. member
Activity: 98
Merit: 1
как бы там ни было, ссылка на предыдущий блок или сам заголовок блока это самая мала часть блокчейна, основная нагрузка это входы выходы транзакций и подписи к ним, экономически смысла делать безблоковую цепь нету, не много удастся сэкономить а ущерб будет огромный....
member
Activity: 280
Merit: 26
Я извиняюсь, все собираюсь оформить в виде единого систематизированного документа. Просто подумал вначале потренироваться на кошках, выкладывая наработки кусочками, но как я понял (в т.ч. по соседней ветке) их по отдельности не понять. Еще раз прошу прощения...

Да не нужно извиняться, но по кускам и несистематизировано - понимать действительно трудно.
full member
Activity: 411
Merit: 139
У меня была такая мысль, что все что сложнее 2+2 лучше не обсуждать.

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

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

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


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

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

А когда сразу начинаются какие-то не особо существенные детали, да ещё и не особо систематизированные - создаётся впечатление, что автор сам не вполне понимает, что же он пытается донести до публики.
full member
Activity: 411
Merit: 139
Я вот хотел сперва начать комментировать по пунктам, но на самом деле, проще сказать, что опутывание (относительно простого) алгоритма разными запутанными правилами добавляет только путаницы, но не безопасности.

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


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

member
Activity: 280
Merit: 26
...много...

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

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

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

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

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

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



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

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

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






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

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

С чекпойнтами же: как только у нас появляется чекпойнт - всё, весь предыдущий блохчейн не нужен(с).
В таком случае можно ставить чекпойнт после каждой транзакции.
member
Activity: 202
Merit: 27
Atom foundation
а в биткойне как нода определяет, какая транзакция "правильная", а какая - нет, при получении одновременно двух разных
хеш (содержит хеш предыдущего и этого блока) + nonce дает нужное количество нулей в хеше

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

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

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

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

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

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

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

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

Интересно, можно ли придумать более устойчивый алгоритм, не требующий чекпоинтов.
Например будет ли устойчив алгоритм, основанный на принципах:
1. При выборе текущей ветки блоков - выбирается цепочка с максимальной мощностью.
2. Сложность цепочки определяется как сумма мощностей всех ее блоков.
3. Под мощностью понимается логарифм проделанных вычислений, который аппроксимируется количеством нулей в "красивом" хеше.
legendary
Activity: 2317
Merit: 2318
Чтобы проверить блок на валидность, не нужно перебирать 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-блока из блоков швыряемых ей в произвольном (в общем случае) порядке другими нодами (необязательно честными). Поэтому, порядковые номера блоков нода проставляет для себя самостоятельно, руководствуясь ссылкой на предыдущий блок в виде его хеша.
legendary
Activity: 3556
Merit: 1100
Не очень понял, что имеется в виду под "алгоритмом биткойна" - а вот костыли в виде чекпойнтов как раз наглядно показывают мифичность утверждений про некие волшебные алгоритмы иммутабельности блокчейна.
На счёт алгоритмов это к старушкам с клюкой. Эти алгоритмы почти 400 ярдов на сегодняшний день стоят - https://coinmarketcap.com/charts/
Как там в одной рекламе для сектантов: заплати налоги и спи спокойно
Так же и с чекпоинтами: поставил чекпоинт и хрен кто сворует или нагадит.
Защиты ценности много не бывает.
member
Activity: 280
Merit: 26
Как владелец ноды решит, так и будет.
Аптом и речь, при этом тот поциент, который неаффтор, утверждал, что существуют некие магические алгоритмы, которые в биткоэне этот момент решают однозначно, а вот в предложении автора - нифига.
Потому и слился ответить на вопрос, я полагаю.
(Я кстати в пользу бедных аффтора митинговал - но он больше озабочен пуканами, нежели сутью - посему чёта обиделся  Cheesy )
Quote
Если бы не чекпоинты, алгоритмы пересчета сложности каждого блока чувствовали бы себя не очень хорошо. Алгоритму биткоина это фиолетово в гораздо большей степени.
Не очень понял, что имеется в виду под "алгоритмом биткойна" - а вот костыли в виде чекпойнтов как раз наглядно показывают мифичность утверждений про некие волшебные алгоритмы иммутабельности блокчейна.
legendary
Activity: 3556
Merit: 1100

...А неправильными неудобные для них вопросы - они обычно да, только с точки зрения сектантов и бывают...
При такой шаблонной дифференциации очень легко самому стать сектантом. Лови мерит за то, что заставил "сектанта" подумать спустя минуту как я написал ответ на этот пост - https://bitcointalksearch.org/topic/m.37363114

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



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

Что не запрещено, то разрешено.
member
Activity: 280
Merit: 26
... Пока производите впечатление зануды...
если бы вы были внимательны, то прочитали ответ на свой вопрос, в ответе другому собеседнику.
Вот если бы ВЫ были внимательны, а не занимались выяснением, кто какое впечатление производит или у кого какие пуканы - то заметили бы, что спрашивал я совсем не это, да и автор изначально утверждал одно, а потом ловко подменил своё утверждение совершенно другим.
Поэтому для отставших от поезда торопыг вопрос не жалко и повторить: а в биткойне как нода определяет, какая транзакция "правильная", а какая - нет, при получении одновременно двух разных транзакций с одного выхода, ещё не включенных в блок?
Quote
свой горящий пукан можешь успокоить
О чём бы человек не говорил - он всегда говорит о себе(с) не помню, кто.
member
Activity: 280
Merit: 26
Всё тобой написанное или сказанное в ту же секунду автоматически становится правильным.

Тут ведь какое дело: в этой теме я пока что, в основном, задавал вопросы. А неправильными неудобные для них вопросы - они обычно да, только с точки зрения сектантов и бывают.

В некоторых других темах - я давал ссылки на сторонние работы. Ну, и на педивикию, куда ж без неё.
legendary
Activity: 3556
Merit: 1100
Я то понимаю, что некоторые здесь продвинуты настолько, что одной лишь только мыслью меняют любые законы мироздания... Wink Grin
О, как.
Ну точно, как я и предполагал: святой блохчейн нам даден свыше, божественный и непогрешимый. (Или дадён, как правильно-то?)
Всё тобой написанное или сказанное в ту же секунду автоматически становится правильным.
По-моему мало уже у кого остались на счёт этого какие-либо сомнения. Grin
member
Activity: 202
Merit: 27
Atom foundation
Чтобы проверить блок на валидность, не нужно перебирать noncе. Нужно просто вычислить хеш блока и проверить его на соответствие алгоритму изменения сложности (на количество тех самых N нулевых бит).
Перебирать noncе нужно при создании нового блока. Создание блока и его валидация - это совершенно разные операции.  
Чтобы проверить блок на валидность, не нужно перебирать noncе. - это да, а как другие участники сети проверят? вы же отправляете доказательство работы, а это и есть nonce.

А nonce перебирать надо, чтобы выполнить определенную сложность работы, получить нужный хеш и отправить всем доказательство.

Создание блока и его валидация - это совершенно разные операции.  

Я и говорю, валидация может быть по проверке подписей внутри блока, создание блока по pow. отправка всем доказательства. все


Чтобы текущий блок соединить с предыдущим, необходимо, чтобы на вход хеш-функции вместе с noncе подавался ещё и хеш предыдущего блока. Если вы с этим не согласны, то что вы вкладываете в понятие "соединяется с предыдущим блоком"?
можно просто создавать следующий блок n+1, проводить pow блока,  достигать консенсуса в сети.

Чтобы отбросить альтернативную цепочку или принять её в качестве основной , нода должна её сначала составить из отдельно поступающих блоков.
Вот, поступил на ноду 2 блок 103 (nonce 44444). Как этой ноде понять, что предыдущий блок для этого блока - это блок 102 (nonce 33333), а не блок 102 (nonce 99999)?

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


вы молодец, держитесь до последнего, так и продолжайте

Да помилуйте, какое "держитесь" - тут чисто медицинское любопытство.
Вот вы, я вижу, словарик юного либерала детсадовских отвечалок плотно скурили. Просто любопытно, а своими словами умеете?
(Впрочем, не трудитесь - из дискуссии вижу, что нет.)

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

Так ведь, я одному из поциентов (да, тепрь их оба-два) задал вопрос

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

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

Скажем, лишний ноль в хэше - грубо соответствует в два раза большей сложности. Т.е., если мне повезло намайнить лишних 4 нуля - магнолия могу ли я одним таким блоком заорфанить три других, с обычной сложностью?
Grin Дааа, и ты тут еще пациентов ищешь?)

member
Activity: 280
Merit: 26
Я то понимаю, что некоторые здесь продвинуты настолько, что одной лишь только мыслью меняют любые законы мироздания... Wink Grin
О, как.
Ну точно, как я и предполагал: святой блохчейн нам даден свыше, божественный и непогрешимый. (Или дадён, как правильно-то?)
Quote
Алгоритм работы от этого нисколько не поменяется.
"Алгоритм работы" - это что, какая-то старуха с клюкой, как говаривал тов. Преображенский? Которая приходит, и гадит в сортирах "работает"...?
legendary
Activity: 3556
Merit: 1100
Ну вы ж понимаете (ну, я надеюсь), что таймстамп-то можно любой поставить.

Я то понимаю, что некоторые здесь продвинуты настолько, что одной лишь только мыслью меняют любые законы мироздания... Wink Grin
Но таймстамп здесь совсем не причём.

Время здесь какое угодно можно поставить - http://90.188.88.19:3001/api/getblock?hash=0000004c78b0c1e7ae15911172ae15c3dc1768c0ed9c44226733ab2ff35caafe
Алгоритм работы от этого нисколько не поменяется.


P.S. Хотя, если подумать, то в каком то смысле это некоторая теоретическая уязвимость, которую вполне возможно реализовать на практике...
Pages:
Jump to: