Локальные блокчейны не просто бесполезны. Они — активное зло.

 Публичный пост
27 сентября 2021  7664

«Локальный блокчейн» — это как «жареный лёд», это оксюморон, взаимоисключающее сочетание слов.

На этих словах даже Сам возразил, мол:

По мне понимание блокчейнов как глобальных сетей типа биткоина — это олдскул, где кроме STONKS ничего полезного и не придумали, а реальная прикладная польза сейчас вся в локальных. Но это для отдельного треда тема, да. Пиши пост :)

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

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

  • Как, спросите вы, разве локальный блокчейн не решает проблему доверия? Нет, не решает.

  • Разве локальный блокчейн не обеспечивает неизменяемость занесённых в него данных? Нет, не обеспечивает.

  • Разве локальный блокчейн не позволяет выводить на чистую виду мухлёж с данными задним числом? Нет, не позволяет.

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

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

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

...и каждый блок внутри себя ссылается на хэш предыдущего блока...

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

Внимание вопрос: что я вот только что описал? (скролл вниз до спойлера)

 
 
 
 
 
 
 
 
 
 
 
 
 
(скролль ещё ниже...)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

А я описал git, простецкую копеечную систему контроля версий, которая появилась задолго до изобретения любых блокчейнов и их особых свойств, из-за которых, собственно, и поднялся когда-то весь блокчейн-хайп. Сюрприз, ёпт!

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

Да, локальные блокчейны сводятся к такому вот связному списку a la git, где ключи контролирует владелец системы (правительство города, банк, госреестр недвижимости и т.д.)

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

А ещё некоторые — я таких встречал — думают, что блокчейн это когда "ну вот хэши там всякие, ЭЦП, криптография". Муахахахаха. Надеюсь, тут у нас таких нет.

 

! По опыту я знаю, что многим кажется, что даже git это адекватный локальный блокчейн. С первого и даже второго взгляда и правда так может казаться, но дьявол тут в деталях, и в некоторые из них я сейчас подробно залезу. Пожалуйста, ползунок внимания ненадолго передвиньте на максималку.

Обеспечивает ли git или локальный блокчейн неизменяемость занесённых данных?

Нет конечно, всю историю можно с самого первого блока переписать, пересчитав все хэши и подписи, ключи-то у владельца(ев) есть. Для примера, в git'е это функции git reset и git push --force, в локальном блокчейне возможно ровно то же самое.

Решает ли git или локальный блокчейн проблему доверия?

Нет конечно. Например, возмущённая общественность видит, что в локальном блокчейне госреестра недвижимости у N-го блока засветилось аж два варианта следующего блока, считай, две ветки. В одной из них следующим блоком идёт (N+1), а в другой — (N+1)' ("н-плюс-один-штрих"), оба варианта блока правильно подписаны, обе ветки легитимно ссылаются на все предыдущие блоки, вплоть до генезис-блока и вообще выглядят полностью красиво и официально.

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

Нет, не умеет. Только высший авторитет, центральный сервер, владелец, которому требуется доверять, сможет сказать какая из веток истинная. Опять же, в примере с git'ом эту роль выполняет владелец репки на условном github'е или собственном сервере: кто имеет право пушить в мастер, тот и определяет какая ветка "правильная".

А когда госреестр и так царь и бог всех данных, то будь там хоть реляционная база, хоть txt-файлик, хоть локальный блокчейн — никакой разницы вообще. Только в последнем случае подрячики съели жирный кусок из денег налогоплательщиков. А Васе Пупкину теперь на социальное жильё не хватит.

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

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

Разве git или локальный блокчейн не позволяет выводить на чистую виду мухлёж с данными задним числом?

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

Более того, данные даже не должны быть специально подписаны, достаточно чтобы они раздавались с сервера по HTTPS, и тогда через трюк под названием TLS Notary можно неопровержимо доказать всему честному народу и товарищу майору, что вон тот сервак с тем SSL/TLS-сертификатом раздавал вот эти данные, вот хорошая реализация этого трюка.

А если есть задача доказать, какая из версий данных правильная или какая была раньше, то тут, повторюсь, никакие локальные блокчейны не помогут, ибо в локальном блокчейне держатель ключей и/или нод — царь и бог. Ну а если владелец сам честен, а мухлюет кто-то из других игроков, пользующихся системой, то у нас получается самая обычная trust system, где мы доверяем владельцу, что он разрулит конфликт данных, а для этого и расшаренной экселевской таблички достаточно, локальный блокчейн тут не сделает никакой разницы.

К слову, аналогия с git'ом настолько популярна, что вот это теперь один из самых залайканных моих ответов на stackoverflow.

— Слушай, ну что ты привязался, ну называем мы это блокчейном, и что? Ну да, ничего это не даёт, и что теперь-то. Считай у нас вот просто такой формат хранения и представления данных, типа как нереляционная база, тебе жалко чтоли? Люди, между прочим, зарплату получают, чё душнишь-то?

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

В 2008 произошла настоящая революция: была решена Задача Византийских Генералов, которую многие считали нерешаемой, это был настоящий научный прорыв в математической теории игр. Редко когда до этого математический результат насколько непосредственно стал влиять на жизнь настоящих людей, компьютеры научились делать принципиально новые вещи, которые раньше многие считали даже теоретически невозможными, именно потому что они сводились к Задаче Византийских Генералов, которая в общем случае считалась нерешаемой. Именно этот научный прорыв и принципиально новую функциональность назвали блокчейном.

Заметьте, что асимметричное шифрование, хэш-функции, связные списки, P2P-сети (привет, торрент!) и даже proof-of-work существовали задолго до того, изобретател(и) блокчейна стояли на плечах этих гигантов.

Есть причина почему люди хотят называть свои продукты "блокчейном": потому тем самым они примазываются к флёру инновационности, они абьюзят поверье "блокчейн придёт, всюду порядок наведёт" в свою пользу. А поверье это массовое, реальное и осязаемое, вот тут его транслирует Плющев (промежуток с 7:04 - 7:15)

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

Да и вообще, скучная автоматизация без слова "блокчейн" в названии втридорога не продаётся, правда ведь?

Отдельный и очень важный вопрос: локальные блокчейны есть у правительства Германии, ОАЭ, да и у консорциума банков R3 тоже. Они что, идиоты? Почему всякие нанотехнологии, ИИ и псевдо-блокчейны так охотно проглатываются казалось бы умными структурами. Дело далеко не [только] в коррупции. Эти структуры неоднородны и в них есть три группы людей, которые кровно заинтереснованы в таких недо-инновациях. Я это видел своими глазами, пишите в комментах, если хотите пост про это.

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

Но откровенные мошенники тоже есть (надеюсь, что не среди нас). Они прекрасно знают, что они втридорога втюхивают обычный CRUD с ЭЦП. Я таких видел, и не раз, и даже с удовольствием участвовал в их разоблачении. А некоторые из них даже не стесняются, вот скриншот с сайта одного из блакчейнч-стартапов:

Но вернёмся к добросовестным. Никто никого обвинять не собирается, но вот вам простая мысль: можешь ли ты продавать под именем "Сметана" свой сметанный молочносодержащий продукт в странах, где это не запрещено законом?

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

А если ты говоришь, что "понимание блокчейнов как глобальных сетей типа биткоина — это олдскул, где кроме STONKS ничего полезного и не придумали" (да, это про тебя, @vas3k), то про применение глобальных блокчейнов это прям тема отдельного поста, но вот тебе простая мысль:

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

Связанные посты
143 комментария 👇

😱 Комментарий удален модератором...

  Развернуть 1 комментарий

(горько плачет)

  Развернуть 1 комментарий

Urvi Babla — шикарно!

  Развернуть 1 комментарий

Так, я тут немного загуглил и, честно говоря, выпал в осадок. Оказывается, на Urvi Babla есть немало ссылок, включая профиль в LinkedIn с большой активностью и эндорсментами. Либо это какой-то реально крутой проект с запредельным уровнем пост-иронии, либо подтверждение факта «жизнь не перешутишь».

Извините за оффтоп. Не смог сдержаться, чтоб не поделиться.

  Развернуть 1 комментарий

@crystax, не, это не пост-ирония.

Есть имя Urvi (в эстонском языке кстати тоже есть такое имя, даже министр у нас была Urvi Palo): https://www.prokerala.com/kids/baby-names/urvi-10551.html

И есть фамилия Babla: https://forebears.io/surnames/babla

  Развернуть 1 комментарий

@crystax, чорд, да если она окажется реальным человеком, то это будет самый крутой смешок от вселенной, что я когда-либо видел в жизни!!

  Развернуть 1 комментарий

@zahhar, Эстонское имя Urvi — это ок, это более-менее привычно (ну, для меня). Но оказывается, в Индии это тоже довольно распространённое имя (только произносится не Урви, а Уви) — на хинди оно даже что-то там значит.

Просто вот это вот сочетание «Урви бабла» и деятельности, которой занимается тётка (инвестиции и прочий финансинг), убивает наповал.

  Развернуть 1 комментарий

@crystax, я на это имя натыкался года четыре назад в твиттере. Сейчас глянул — аккаунт засаспендили.
https://twitter.com/UrviBabla

  Развернуть 1 комментарий

@danik, это реальный человек. И как бы ни было смешно, из компании Blockchain.
https://www.linkedin.com/in/urvi-babla-1673324/

Довольно успешный британский стартап.

  Развернуть 1 комментарий
Вастрик Блогер, питонист, мизантроп 27 сентября 2021

Спасибо за раскрытие темы в отдельном посте.

Но я прочитал это так: локальный блокчейн это просто децентрализованный связанный список, типа git. Окей, но ведь git и есть пример охуенно полезной штуки, решающей свою задачу. И намного более полезной, чем какой-нибудь догекоин, что я и говорил в приведённой тобой цитате.

Так что локальные блокчейны получаются МОГУТ быть полезны и никакое не зло, как написано в заголовке. Да, в них нет каких-то свойств глобальных блокчейнов, ну и ок. Просто не применяй их там, где эти свойства нужны.

Это как говорить, что велосипеды зло потому что нормального транспортного средства всегда должно быть четыре колёса для устойчивости. Ну нет же, я понял, но все ещё не согласен :)

  Развернуть 1 комментарий

@vas3k, git — офигенно полезная штука, она создавалась именно таковой (связная цепь блоков), чтобы было удобно резолвить конфликты вручную.

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

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

  Развернуть 1 комментарий

@danik, окей, сорян, я вижу в треде много фанатизма и мне сложно в такой ситуации вести диалог.

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

Если тот же git изобрели ради коллаборации между програмистами, а я использую его в своем одиночном проекте, это не значит, что «локальный git бесполезен и активное зло». Да, может изначально его придумали для другого, но я свою задачу решил и радуюсь.

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

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

Сольюсь, ты победил.

  Развернуть 1 комментарий

@danik, по большому счету локальный блокчейн — это event sourcing с подписью содержимого события. Без подписи это активно используется много где и приносит ощутимую пользу в тех задачах, где нужно уметь посмотреть состояние системы в каждый момент времени.

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

  Развернуть 1 комментарий

@a1tavista,

локальный блокчейн — это event sourcing с подписью содержимого события

о, крутое определение, нравится

  Развернуть 1 комментарий

@a1tavista,

локальный блокчейн — это event sourcing с подписью содержимого события

Ту же самую роль играет любой сторедж данных (если можно хранит данные -- можно хранить и подписи к ним), включа гит, включая экслевскую табличку (где отдельной колонкой идут подписи), включая обычную реляционную БД, включая xml-файлик.

По свойствам и функционалу локальный блокчейн не может ничего такого, чего не может вышеперечисленное.

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

А вот про это отдельный раздел в посте, см.

Они что, идиоты? Почему всякие нанотехнологии, ИИ и псевдо-блокчейны так охотно проглатываются казалось бы умными структурами...
  Развернуть 1 комментарий

@vas3k, щас посмотрел выпуск IT-бороды с тобой. Да йопт, ты ж в нормальном блокчейне работаешь, децентрализованном, настоящем. Тебе ли жаловаться, у тебя всё очень круто :-)

  Развернуть 1 комментарий

Вынужден ворваться в тред. Очень этого не хотелось делать, так как и пост, и мой эмоциональный отклик вызвал у меня дежавю 10+ летней давности. То самое несладкое ощущение, когда "в интернете кто-то не прав" :)
Какую цепочку я увидел в посте:
"все ключи у кого-то одного" => "этот кто-то может заменить всю историю/леджер" => "это всё не имеет смысла. Зло, фарс и распил"
За последний пункт я не могу ничего сказать, так как я всего лишь разработчик, и это уже вне моих технических компетенций. Но с первыми двумя вещами готов поспорить.

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

Для блокчейнов разработано много различных консенсусов. Proof-of-Work и Proof-of-Stake, пожалуй, самые популярные из них. Они применяются в основном в публичных сетях по ряду свойств, одно из наиболее важных из которых является экономическая мотивация участников сети. Также у этих консенсусов есть ряд недостатков, которые несущественны для публичных сетей.
В приватных же сетях применение таких консенсусов недопустимо по ряду причин:

  1. В приватных сетях не нужна никакая "экономика" и денежная мотивация майнеров;
  2. Эти консенсусы страшно медленные. Очень много времени отводится на синхронизацию, т.к. публичные узлы сильно географически раскиданы и разнятся по железу. Поэтому как правило блоки выпускаются довольно редко.
  3. Публичные консенсусы основаны на конкурировании между участниками сети за выпуск следующего блока. Посему высока вероятность образования форков, т.е. появления двух и более валидных блоков одновременно в разных сегментах сети. Да, когда ноды синхронизируют эти блоки между собой, по правилам консенсуса будет выбрана "более крутая" цепочка. Это также значит, что альтернативные цепочки будут уничтожены, а транзакции вернутся обратно в пул неподтверждённых. Это вносит в любой бизнес-процесс ещё больше условностей и ожиданий. Получается, если интегрироваться бизнес-приложением с такой сетью, то никогда не будет гарантий, что на нодах, с которыми работает приложение, самая актуальная и "сильная" цепочка. И что транзакции, которые приложение отправило в ноду, не будут отроллбечены через 10-15 минут, а может и вовсе через неделю.
  4. ... что на самом деле приводит нас к следующему пункту – публичные консенсусы не финальны. Значит в любой момент времени может оказаться так, что все эти годы где-то существовала альтернативная и "более правильная" цепочка блоков, которую по правилам консенсуса все узлы мира обязаны применить вместо своей.

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

  • скорость работы (как throughput, так и latency – т.е., сколько транзакций можно обработать в секунду, и сколько времени требуется транзакции от "входа" в сеть до момента появления в блоке, т.е. уже провалидированной);
  • безопасность – борьба с возможными атаками в сети;
  • гарантии – например, как раз финальность блоков. Гарантия того, что будучи провалидированной, транзакция никогда не будет перезаписана или отменена.

Я уже более 3.5 лет работаю над блокчейн платформой, которая ныне называется Waves Enterprise. Свой путь мы начинали как раз с того, что у нас был форк публичной платформы Waves с консенсусом Proof-of-Stake, и стояла задача слепить из этой платформы энтерпрайз решение. Одной из моих самых крупных задач была как раз разработка нашего Proof-of-Authority консенсуса, с помощью которого мы хотели упорядочить работу майнеров: задать понятные правила выбора майнера (детерминированная очередь майнеров, а не игра в хешики или сравнение стейков у кого больше), увеличить частоту выпуска блоков, а следовательно и скоростные показатели.
В прошлом году моя команда модифицировала алгоритм, и мы выпустили так называемый Crash Fault Tolerance. По технической внутрянке, это тот же PoA, в который добавили обратную связь в виде голосований за финализацию блока. Таким образом, к скорости добавили безопасности и гарантий. Валидаторы должны голосовать за принятие блока, и впоследствии эти голоса также записываются в блокчейн. Блок без достаточного количества голосов валидным не считается. Если консенсуса валидаторов не собирается (например, происходит сетевая сегментация сети, ну связь между ЦОДДами рвётся), то блокчейн встаёт колом, никто не майнит альтернативные цепочки, т.к. нет гарантий их финальности.

Возвращаясь к бизнес-применениям.
Как я упоминал в своём интро, на нашей платформе построена крупнейшая блокчейн сеть РФ, это так называемая блокчейн платформа ФНС. Туда входят все российские банки (за редким исключением иностранных банков), налоговая, аудиторы и регуляторы. На каждой стороне стоят блокчейн ноды в количестве 1-3 штук (в зависимости от нагрузки сегмента сети). Всего более 200+ узлов. Изначально решаемая задача была выдача льготных кредитов малому-среднему бизнесу в пандемию. Было требование, что кредит должен быть выдан один раз одному юр-лицу. Плюс впоследствии списки должны отгружаться куда-то, чтобы государство за этих юр-лиц платило банкам проценты.
Системы, которая позволяла бы достоверно между банками договариваться и защищаться от факта фрода, если юрлицо параллельно подавало 10 заявок в разные банки, не существовало. Тут и пригодился блокчейн, поверх которого был написан приклад, реализующий этот бизнес-процесс. Блокчейн выступает как единый источник правды, и по результатам выполнения смарт-контракта приклад на стороне каждого участника может выдать однозначный ответ.
Сейчас поверх этой блокчейн сети разрабатывается ряд новых проектов.

Исходя из этого примера, я в упор не вижу, где тут существует какой-то один единственный "владелец всех ключей" и какую атаку он может произвести на 200+ узлов, большая часть из которых живёт в закрытых контурах и защищается свирепыми банковскими безопасниками с винтовками. Более того, в недалёком будущем эта блокчейн сеть будет мигрироваться с PoA алгоритма на CFT, где атака полной замены всего леджера просто невозможна в случае, если один участник не владеет физически всеми ключами и нодами. А он и не владеет.

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

  Развернуть 1 комментарий

@kantefier, а зачем блокчейн, если можно просто завести каждому банку зеркало его данных на серверах ФНС/ЦБ и выдать всем нужные доступы + подписывать изменения?

  Развернуть 1 комментарий

@yeputons, вот этим мне и не нравятся эти баталии :) я ответил на технические вопросы, которые меня смутили в посте. Бизнесовые вопросы это совсем другая сфера.
Я не согласен с видением автора касательно приватных блокчейнов как уязвимых систем. Своё несогласие я обосновал из личного опыта.

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

Возвращаясь к техническим аспектам, это:

  • возможные атаки на централизованный сервер ФНС/ЦБ;
  • возможность коррупции в виде подкупа администраторов централизованного сервиса;
  • отказоустойчивость централизованного сервиса в условиях чудовищных нагрузок.
  Развернуть 1 комментарий

@kantefier, о, давайте тогда про технику. Верно ли я понял, что технические требования примерно такие?

  1. Несколько сотен пользователей, причём любые несколько машин (не очень много) могут стать византийскими. Включая любой "центральный сервер", если мы такой выделяем.
  2. Пользователи добавляют данные от своего имени, это должно быть можно проверить потом, даже если автор стал византийским.
  3. Хотим, чтобы вся валидация шла автоматически: если кто-то византийский и скрыл/подделал данные, то это сразу видно всем участникам и все помнят старые данные.

Если да, то, кажется, альтернатива без слова "блокчейн" — несколько баз данных (по одной у пользователя) с исторической информацией, которые регулярно друг с другом синхронизируются. Причём надо все данные ещё и подписывать/валидировать. Но, видимо, тогда мы приходим к вопросу "а как понимать, что изменилось и не пересчитывать хэши во всей БД на каждый чих" и один из способов — как раз упорядочить изменения в цепочку блоков, получим тот самый блокчейн, верно?

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

  Развернуть 1 комментарий

@yeputons, Гуд, другое дело.
Да, требования можно плюс-минус свести к такому списку. Только чуток подправлю нюансы:
2й пункт: каждый пользователь владеет своими ключами. Сама по себе ЭЦП даёт возможность установить авторство по определению.
3й пункт: если кто-то выпускает блок с невалидными данными, то каждая нода сети этот блок отклонит на уровне протокола. Кстати, ещё в PoA мы, например, реализовывали механизм наказания майнеров, которые пропускают свои раунды (или приносят невалидные блоки, что на уровне протокола равноценно - валидного блока в ожидаемый промежуток времени не появилось).

Про альтернативу – согласен. То есть если мы стараемся изобрести систему без блокчейна, или же попросту исходить из предпосылки "допустим, блокчейна не существует", то мы рано или поздно приходим... к блокчейну!
Да, забыл отметить важную вещь. Блокчейн по сути это и есть распределённая база данных, в которой хранимые процедуры называются смарт-контрактами. Прелесть вся в том, что майнинг/валидация это последовательная операция, что обеспечивает каждой операции и вызову атомарность.
В описанном мною бизнес-кейсе пришлось бы отдельно решать эти проблемы. А что, если данные о новой заявке в централизованный сервис поступили в момент записи такой же заявки? Окей, в случае одного сервиса ответ простой – добавляем транзакционность! Делаем коммиты и роллбеки операций.
Если же эту систему распределять и вносить фактор недоверия, то мы и получаем блокчейн.

Ну и да. Практика показывает, что в энтерпрайз среде пользователями являются другим системы. Никто напрямую с блокчейном не работает. Как пользователи банка не работают напрямую с Постгресом или Ораклом. Блокчейн платформа лежит где-то в фундаменте, с этой платформой и другими системами интегрируется приклад, реализующий конкретный бизнес-процесс. У нас этим занимается отдельная команда Интегратор.

  Развернуть 1 комментарий

@kantefier, спасибо за инсайты!

Кейс суперинтересный. Мне сложно обсуждать его в отрыве от бизнеса (потому что в отрыве от бизнеса мало какое ИТ-решение вообще можно обсуждать — ведь они создаются для оптимального решения бизнес-задач), но я попробую.

Вот как я понял бизнес-кейс:

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

Помимо этого у нас есть нефункциональные требования к системе:

  • В программе участвуют все банки России, имеющие лицензию ЦБ, кроме филиалов зарубежных банков. Таких банков сейчас порядка 350-400 (по banki.ru их 373 в рейтинге включая иностранные).
  • Программа распространяется на все представители малого-среднего бизнеса в России, которых, по данным из открытых источников, насчитывается 6 миллионов юрлиц. Сколько их них захотят взять кредит — хз, ну пусть 80%. То есть у нас будет максимум 5 млн уникальных пользователей.
  • Я смог нагуглить, что программа ограничена во времени: ходатайствовать о льготных кредитах можно было только в течение 1 года, то есть порядка 250 рабочих дней.
  • ЦБ выделило 12 системообразующих банков, которые консолидировали 74% экономических активов, потому будет логично предположить, что порядка 4 млн из 5 млн юрлиц обратятся в эти 12 банков, то есть каждому большому банку придёт по 333 333 клиента за 250 дней, или примерно по 1500 запросов на выдачу кредита в рабочий день. Остальные 350 банков будут бороться за свои 1 млн клиентов - то есть у них будет примерно по 10 запросов в рабочий день.

Ещё важные ограничения:

  • Сам Клиент никак с системой напрямую не взаимодействует. Все решения принимаются Банками, подключенными к системе.
  • ЦБ принимает заявки тоже не от кого попало, а только от Банков, которые имеют лицензию ЦБ. Значит, если ЦБ выдал банку лицензию — это означает что он выдал некую ЭЦП, передал полномочия. То есть в нашей системе не может появиться никакого хрена с горы (банка без лицензии ЦБ).

Первым делом попробуем понять, где тут может быть проблема византийских генералов. Будем называть лицо, которое сознательно пытается нарушить правило, "Византийским Банком" или "Византийским Клиентом".

  1. Византийский Банк пытается выдать кредит несуществующему Клиенту.
  2. Византийский Банк пытается выдать несколько кредитов одному и тому же Клиенту, который обратился в их банк.
  3. Византийский Банк пытается выдать фиктивный кредит (только на бумаге) некому реальному Клиенту, который НЕ обращалось за кредитом (по крайней мере в этот банк либо вообще), но который имеет право получить льготный кредит.
  4. Византийский Банк пытается выдать кредит Клиенту, который уже ранее получил такой кредит в другом банке.
  5. Византийский Клиент пытается получить кредит в банке после того, как другой банк уже одобрил ему один льготный кредит.

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

Мотивация клиента стать византийским — чтобы получить как можно больше дешевых денег (займ на внерыночных условиях).

ЦБ — как конечный центр, принимающий решение о том кому из банков лицензии выдавать, а у кого забирать, а также кому потому выплачивать дотации за льготные кредиты, византийским быть не может по определению. Надеюсь с этим не спорим?

Если всё так, то, внимание, вопрос: где же тут проблема византийских генералов? Или другими словами: если мы перенесёмся назад в 2007-й год, за год до публикации Накамотой вайтпейпера о блокчейне, попали ли бы мы в ситуацию, что мы не можем создать такую систему на основе технологий тех времен — базы данных, ЭЦП и конечного автомата?

  Развернуть 1 комментарий

@zahhar, как я понял, тут ещё из требований есть "мы хотим быстро выявлять византийцев без возни с бумажками и заказной почты неделями", чтобы нельзя было просто так пожаловаться, что это у ЦБ софт кривой на сервере, документам не соответствует и зря транзакции не принимает.

То есть до 2007 года (или когда там) не возникает каких-то дополнительных проверок в этой системе. Она работает, но, видимо, может меньше случаев автоматически разруливать так, чтобы ей стороны доверяли. Видимо. Не специалист.

  Развернуть 1 комментарий

@yeputons, возможно. Но! Что мне в принципе не понять, так это то, как блокчейн способен разрешить скажем такую ситуацию:

Клиент "К" приходит в банк "Б" взять кредит, а ему банк "Б" говорит — извиняйте, но по данным нашей системы вы уже взяли кредит в банке "Х". Клиент "К" такой — я ничего не знаю про это, в банк "Х" я не ходил никогда, давайте мне кредит или я буду жаловаться что у вас тут софт кривой.

Как тут блокчейн поможет?

  Развернуть 1 комментарий

@zahhar, это уже вопросы к внутренним процессам банка или его отношениям с ЦБ, мне кажется. Технически никак не помогает, конечно, как и вообще технически связать блокчейн с реальным миром сложновато.

Подозреваю, что когда у нас просто "выгрузка из ЦБ" — это одно дело, одни вероятности ошибок в выгрузке и один вид ответственности. Например, действительно можно сказать, что это банк криво скачивает данные из ЦБ.

И другое дело — это когда мы ежедневно дампим по куче разных каналов выгрузку и верифицируем криптографически напрямую полученные от банка X данные. Фантазирую: например, можно в банке Б выдать клиенту бумажку "по данным системы в банке X кредит взят, проверяется таким-то QR-кодом внутри банка", с которой он уже сам может хоть в банк X, хоть в ЦБ, хоть в суд, хоть в третьем банке провалидировать, но главное для банка Б — не в банк Б.

Разумеется, можно то же самое сделать и если мы просто скачиваем данные из ЦБ по вообще всем выданным кредитам и валидируем подпись, а на бумажке пишем "вот такие данные от ЦБ получены, там вы есть".

Но дальше, наверное, хочется не подписывать каждую выгрузку целиком, получаем подписи diff'ов, и вот уже что-то вроде блокчейна получили. Или хочется не бинарное "выгрузка верная целиком/неверная где-то", а более детализированное: до этого блока всё верно, начиная с этого неверно.

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

  Развернуть 1 комментарий

@yeputons, боюсь без тредстартера @kantefier мы тут быстро зайдём в тупик предположений.

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

А описанные в задачи условия вообще диаметрально противоположны:

  • во-первых, никто не может в стране основать юрлицо без регистрации. Так что и Клиенты, и Банки перед тем как стать легитимными пользователями системы проходят "инициацию" — получают ОГРН, ИНН, а банки ещё и лицензию ЦБ. То есть этот процесс уже централизован.
  • во-вторых, Клиенты тут напрямую не могут взаимодействовать с другими Клиентами — вот если бы выдавались P2P-кредиты, тогда можно было бы думать ещё.
  • в-третьих, даже Банкам не нужно здесь взаимодействовать друг с другом напрямую, т.к. они не проводят "торгов" за право выдать Клиенту кредит, не выдают кредит "вскладчину" — так что не нужно обходить все 357 банков чтобы о чём-то там договориться между собой.
  • в-четвёртых, Банку конкретно в этом кейсе не выгодно становиться Византийским, т.к. он рискует потерей дорогостоящей лицензии. У нас не система реального времени, как в биткоине каком, где совершенные транзакции почти невозможно откатить (только если форком). Тут если ЦБ решит, что Банк играл нечестно (а решить он это может ретроспективно — проверяя отчётность за предыдущий финансовый год), то просто отзовёт лицензию и всё, gave over.

Так какую же бизнесовую или техническую задачу тут решает блокчейн, кроме, простите, удовлетворения амбиций менеджеров, щекотания эго разработчиков, и распила бабла налогоплательщиков?

  Развернуть 1 комментарий

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

Алсо, если система не зависит от Центробанка (и Центро-чего-угодно, by design), то это втройне интересно, принимая во внимание щекотливые вопросы мировой финансовой системы, представителем которой выступает ЦБ.

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

Это как армию реформировать до сильнейшей в мире под вопли от коррупции или подготовить крупнейшую в истории эвакуацию промышленности под визги о репрессиях.

  Развернуть 1 комментарий

@KiEwsD6gHcJanH5P, если ты думаешь, что система не зависит от ЦБ, то ты наивен и заблуждаешься.

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

  Развернуть 1 комментарий

@zahhar, для моей тоже.

но визги — это отдельный факт пропаганды, я упомянул именно его, а не сами репрессии.

про ЦБ не в курсе, разве ув. ТС прольет свет) по идее, на уровне дизайна его можно исключить?)

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

Солидарен с тобой, братан!

Но будь морально готов к тому, что всем пофиг. Когда несколько лет назад появлялись все эти РКН блокировки под соусом защиты детей от чего-то "страшного", многие из нас думали, что все фигня. Норм спецы не пойдут это дело пилить, и нехорошие люди с авторитарными замашками лососнут, ведь они тупые. И трансгранничных коннектов с провайдерами очень много, не чета Китаю. А сейчас куча хардскиллованных спецов работают на конторки, которые поставляют всякие DPI решения и прочее. И гордятся этим! И даже что-то лопочут про то, что надо ведь как-то с "плохой информацией" бороться, и что да, начальники тупые, но мы вроде "норм все делаем". И ведь у этих людей даже нет финансовой необходимости это делать, какая есть у всяких бедных учителей.

И все опять упирается в социальную и политическую образованность и борьбу со своей ограниченностью.

  Развернуть 1 комментарий

@Foxcool, а в вашем понимании американцы, официально использующие
исторический приоритет Arpanet в целях навязывания своей воли суверенным странам всего мира — нехорошие, с авторитарными?

  Развернуть 1 комментарий

@KiEwsD6gHcJanH5P, я не считаю условный запад и США пушистым зверем и доставщиком только добрых ништячков. Проблема состоит в действиях элит. Если на действия элит США мы повлиять не можем, то на действия своих должны. По многим параметрам наши текущие элиты очень выгодны т.н. внешним врагам: мы качаем нефть и прочие ресурсы, продаем ее за доллары, покупаем готовую продукцию. Сверхдоходы, которые попадают в руки олигархам и чиновникам (им скорее всего коррупционным путем) как правило отправляются тоже и страны в западные банки, виллы и прочее, укрепляя экономики т.н. врагов нашей с вами самостийности. Думаю, во-многом поэтому никто по-настоящему с РФ не соперничает, а какой-то кипиш начинается только если совсем берега путаем с экспансией на чужие территории и вот это вот все.

По поводу нежелательного влияния через интернет. Вряд ли крупные игроки этого рынка имеют такие преимущества благодаря тому, что интернет вырос из их арпанета. Скорее всего те преимущества были получены из-за более близких к нашему времени причин:

  • работающие законы и более гибкое законодательство

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

  • наличие денег в странах

Речь идет и о состоятельном массовом потребителе, которому пару десятком баксов в месяц - не проблема, так и о венчурном капитале и развитом рынке инвестирования. Многие такие вещи мы сейчас наблюдаем благодаря крипте, когда проекты запускают краудлоаны и получают финансирование на своих условиях. На западе такие инвестиции были и в рамках легаси мира.

  • Прочие факторы, которые уже я могу не замечать или недооценивать - английский язык международный и т.д.

В чем проблема ответных действий наших властей? Они скорее похожи не на попытку усиления собственного рынка, а на очередную попытку "бомбить Воронеж". Даже аргументация нацелена на идиотов: "Интернет нам могут отключить снаружи, так давайте мы научимся его отключать изнутри!". Естественно, здесь не может быть речи о решении конкретной проблемы шатдауна снаружи.

Правильным решением будет работа с архитектурой системы в сторону распределенности. Т.е., в большинстве случаев, чтобы усилить суверенитет государства, лучшим ответом будет усиление граждан по-отдельности. И при наличии такой огромной власти, такие вещи можно делать без конских затрат. Уж точно без необходимости строить дорогущие ЦОД под закон Яровой.

Реально, текущая политика колониальная, и это видно невооруженным глазом. У нас как были все дороги замкнуты на Москву, так и остались. И это в формально федеративной стране, которая протяжена на 10 часовых поясах! Регионы, которые находятся по краям, не получают выгод от соседства с другими странами - все анально огорожено так, что мышь не проскочит. Внешняя политика и поведение элит направлены не на привлечение инвестиций и развитие инфраструктуры в стране, а на то, чтобы русских перестали вообще куда-то пускать за порог. Та же Зубаревич рассказывала в какой-то передаче, что своими силами нам Дальний Восток не поднять никак. Нужно привлекать инвестиции, нужно быть открытыми и иметь человеческое лицо. И народ даже в регионах перерос свою власть, и сейчас это все больше видно.

А по поводу того, как отвечать на недружественные действия в контексте интернетов снаружи, то все достаточно просто: https://t.me/darkfox_info/181 . Есть или готовые технологии или технологии в зачаточном состоянии, которые позволяют не доверять центрам в других странах, и при этом не пытаться создавать такие центры у себя. Начиная от ДНС на блокчейнах (ENS уже есть на эфире, скорее всего будет аналогичный парачейн на полькадоте) и заканчивая нижними уровнями с роутингом и мешстями как бэкап. И даже если сейчас какие-то технологии вроде Игдрассиля сырые, то ничего не мешает простимулировать их развитие хотя бы в качестве бэкап технологий а ля "Гражданская оборона".

Вообще, где-то смотрел видео, в котором объяснялось, какие огромные возможности за эти годы были потеряны: это касается и сытых нулевых и наличия одновременно в рукам и конституционного большинства в ГД, и президентского поста в сверхпрезидентской республике, и огромной лояльности граждан. Это ведь огромное благо для людей применить свои силы и записать в себя в историю, как великих реформаторов. Наверняка уже не будет в Росиии ни у кого такой власти. А на деле все выродилось в попытку построить свой Китай, только с мощнейшей централизованной коррупцией.

Извините, наболело.

  Развернуть 1 комментарий

@Foxcool, и да, на политическом уровне, кмк, это очень важный аргумент в пользу того, что страна должна развиваться в сторону минархизма. Т.е государство должно быть небольшим и эффективным. Решать те задачи, которые рыночком не решаются. Это не отрицает, того, что людям нужна развитая социалка и прочее.

  Развернуть 1 комментарий

@danik, мне кажется, выше уже совсем не про блокчейн. Но и не про выборы.

  Развернуть 1 комментарий

@yeputons, прости, я на этом посте выгорел (оказца, такое бывает), вернусь сюда после выходных. Но с тобой согласен, да.

  Развернуть 1 комментарий
Слава Тюрденев Менеджерю стартап, программирую 27 сентября 2021

Так и не понял чем отличается локальный блокчейн от глобального, кроме стоимости обмана.

  Развернуть 1 комментарий

@t-v-n, радикально стоимость отличается именно между локальным блокчейном и аналогичным ему по функционалу HTTP-сервачку с базой за три копейки. А про глобальные блокчейны — это прям отдельный пост, зачем они нужны, кому на самом деле полезны и так далее.

  Развернуть 1 комментарий

@danik, получается блокчейн биткоина это такой же гит, только стоимость его переписи злоумышленником просто радикально большая, а вот стоимость переписи условного блокчена для голосований в одной большой славянской стране - радикально небольшая?

  Развернуть 1 комментарий

@t-v-n, я б заострил: любая большая или небольшая, славянская или неславянская страна, как бы ни напрягалась, при всём желании не сможет задним числом подменить данные в глобальном блокчейне.

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

  Развернуть 1 комментарий

@t-v-n, и да, у тебя вышла удачная формулировка. Блокчейн -- это в принципе тот же гит, но с такой системой экономических стимулов, что те, кто играет по правилам, получают экономический стимул дальше так и делать, а те, кто играет против правил, терают настоящие живые деньги каждую секунду. И это ведёт к тому, что хрен ты этот биткоиновский блокчейн перепишешь.

  Развернуть 1 комментарий

@danik, окей тогда вопрос как это решается в локальном блокчейне и зачем он тогда и когда он начинает называться блокчейном

  Развернуть 1 комментарий

@norguhtar, в локальном блокчейне это не решается никак, и называть его блокчейном это зашквар, именно об этом и весь пост :-)

  Развернуть 1 комментарий

@danik, Проще говоря блокчейн начинается когда у нас есть выбор консенсуса. Нет выбора это граф и как он уложен не так уж важно

  Развернуть 1 комментарий

@norguhtar, ну почему, "выбор консенсуса" вполне может быть и "как постановит госкомиссия ФГУП БДЫЩ АБВГД", так что важно чтобы консенсус не мог определяться группой лиц, которые в принципе могут сговориться или действовать по одной указке. Если последнее условие не выполняется, то надо ставить обычную базу или расшаренную экселевскую табличку, по функционалу это будет равно.

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@danik,

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

Сможет.
Fun fact, в эфире недавно энтузиаст релизил POC(google mev bandit reorg), который встраивает в geth возможность заплатить майнеру за подмену данных в включенных в чейн блоках, легально, без смс, просто плати больше, чем матожидание майнера от честного поведения и переписывай эфириум сколько хочешь.

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

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

  Развернуть 1 комментарий

@danik, в локальном блокчейне мы просто должны верить что организатор честный и обман будет стоить ему в чем-бы то ни было больше, чем честное поведение.
В глобальном блокчейне мы просто должны верить что теория игр защитит нас от 51% атак.
Так, получается?
oh shi....

  Развернуть 1 комментарий

@t-v-n, Блокчейн становится таковым если у нас не база на блоках хешированных, а когда есть консенсус. И в этом собственно отличие

  Развернуть 1 комментарий

@norguhtar, блокчейн отдельно, а консенсус отдельно. Вам ничего не мешает сделать цепочку блоков вообще без консенсуса и назвать это блокчейном. И это будет блокчейном потому, что почему бы и нет?

  Развернуть 1 комментарий

@t-v-n, тогда git блокчейн!

  Развернуть 1 комментарий

@norguhtar, все так.

  Развернуть 1 комментарий

@norguhtar, падажжи, а в гите есть merkle trie?

  Развернуть 1 комментарий

@norguhtar, а так всегда со стороны кажется, пока в детали не углубишься, так что пойдём в детали! Дьявол всегда в них :-)

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

  Развернуть 1 комментарий

@danik, Дак как раз не про локальный речь же идет :)

  Развернуть 1 комментарий

@danik, И как этот вопрос в банках к примеру решается? Они же тоже для этого используют

  Развернуть 1 комментарий

Ну и тредик тут у вас, пока писал коммент, дискуссия уже ушла :-) Ща, я попытаюсь на самое важное ответить.

но вот может дорого стоить в условных политических очках. А может и не стоить.

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

все так.

Сорян, но тут весь пост про то, что git -- не блокчейн, прочти, пожалуйста. Либо я опять тебя не понял :-)

И как этот вопрос в банках к примеру решается? Они же тоже для этого используют

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

  Развернуть 1 комментарий

В глобальном блокчейне мы просто должны верить что теория игр защитит нас от 51% атак.

Так, получается?

Во-первых, от 51% теория игр не защищает даже теоретически. А от 49% -- более чем, и на практике в том числе, проверяемо и доказуемо, верить не надо. И уж тем более это не эквивалентно вере в добросовестность физического или юридического лица.

  Развернуть 1 комментарий

google mev bandit reorg

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

  Развернуть 1 комментарий

@danik,

локальный блокчейн не сделает никакой разницы по сравнению с расшаренной табличкой обыкновенной (репутационный урон будет одинаковый).

Сделает. На подделку локального блокчейна уйдет больше ресурсов, чем на подделку таблички.

Либо я опять тебя не понял :-)

Это постирония, забей.

И уж тем более это не эквивалентно вере в добросовестность физического или юридического лица.

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

Короч, опять возвращаюсь к вопросу про СТОИМОСТЬ переписывания данных. Что у локального, что у глобального блокчейна она есть. Никто не гарантирует неизменяемость и окончательное решение проблемы доверия. К тейкам про локальные блокчейны у меня претензий нет, но вводить челиков в заблуждение, говоря что глоальный блокчейн неизменяем - это неправильно.

  Развернуть 1 комментарий

@t-v-n,

На подделку локального блокчейна уйдет больше ресурсов, чем на подделку таблички.

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

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

Блин, ну слушай, ты начинаешь уже прям натягивать, ну типа "я знаю, что популярной имплементации ECDSA возможных приватных ключей больше, чем атомов во вселенной, и тепловая её смерть наступит быстрее, чем я подберу ключ к рандомному публичному ключу, но ты мне предлагаешь в это ВЕРИТЬ, но ведь никто не гарантирует безопасность аутентичность электронной подписи, подписанной приватным ключом ECDSA!". Не, формально и буквалистски ты прав, конечно, но блин! Ну хорош, чел!

  Развернуть 1 комментарий

@norguhtar, предположим, каждая из партий поднимает ноду и может выступать верификатором голосования.

Мы имеем классическую проблему Византийских генералов: каждая партия теоретически заинтересована в мухлеже в свою пользу, более того — любые N партий из M могут скооперироваться против остальных, чтобы создать главную цепочку из удобных себе блоков и провозгласить её результатами выборов, а цепочки, которые строили другие (возможно — честные, а возможно не очень) игроки считать ерундой.

Значит на момент закрытия выборов у нас будет от 1 (в лучшем случае, тогда всё просто) до M разных цепочек из которых предстоит выбрать единственно правильную, если M>1.

А теперь, внимание, вопрос: как избиратель (или ЦИК) в этой ситуации поймёт, чья цепочка победила?

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

Если у нас PoS: то сначала вопрос что они такого застекали, чем они рискуют, что им будет ссыкотно нарушать правила? Я вижу только одно решение - всё имущество кандидатов + их свобода.

Но при таком правиле, если его суметь соблюсти, даже бумажные выборы станут честными %)

  Развернуть 1 комментарий

@zahhar, как вариант голоса за партию заносятся только на их сервер. А бюллетени берутся из сервиса выдачи бюллетеней и дальше кладутся на их сервак. Блок строится от количества проголосовавших. В зависимости от набранного числа голосов. К примеру давайте делаем 100. Набрали 100 внесли свой блок с голосами. А каково? :)

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@norguhtar, ну тогда опять же нам нужен публичный блокчейн.
Можно вон — найти применение NFT даже :)

Очень упрощенно:

  1. Избиратель идёт в госуслуги, авторизуется, и если госуслуги подтверждают его право голосовать — то на ETH-адрес избирателя отправляется ERC-921-совместимый токен с определенными метаданными.
  2. Избиратель отправляет свой NFT-токен на смарт-контракт выборов, в котором описаны методы voteForApples(candidateId), voteForBananas(candidateId) и так далее.

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

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

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

Нужен новый закон о выборах :)

  Развернуть 1 комментарий

@zahhar, и да и нет. Нам же никто не мешает держать шифрованный блокчейн до конца выборов. Как это и сейчас делается. А расшифровка данных проводится при завершении выборов.

  Развернуть 1 комментарий

@norguhtar, как ты предлагаешь шифровать Etherium?

  Развернуть 1 комментарий

@zahhar, можно шифровать блоки которые содержат информацию о за кого и кто

  Развернуть 1 комментарий

@norguhtar, что значит "шифровать блоки"? блоки — это наборы транзакций, их собирают майнеры. алгоритм сборки определен спецификацией эфира, а сами транзакции не могут быть зашифрованными, т.к. они меняют стейт системы.

  Развернуть 1 комментарий

@zahhar, Ну как бы не обязательно же эфириум выбирать. Можно сделать и свой

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@zahhar, Не ну погоди. Когда-то и эфириум не был публичным. Это же с ростом базы происходит нет?

  Развернуть 1 комментарий

@norguhtar, не совсем. Эфир изначально был публичным: любой мог стать майнером.

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

В Эфире в самом начале действительно было мало пользователей. Он был централизованным, но публичным всё-таки.

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

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

  Развернуть 1 комментарий

@zahhar, Не совсем понимаю как шифрование части блока сюда не укладывается

  Развернуть 1 комментарий

@norguhtar, а я не понимаю что такое "шифрование части блока". Какой части?

Блок — это пачка транзакций + метаданные о самом блоке. Ничто из этого зашифровать нельзя, т.к. всё нужно для определения консенсуса и построения цепочки блоков.

Зашифровать можно только что-то внутри каждой транзакции. Что именно — зависит от конкретного протокола.

Например в Эфире у транзакции есть атрибут "Data". Туда влезает, емнип, что-то порядка 100КБ данных — иначе транзакция потребует больше верхнего лимита газа и не будет вообще включена ни в какой блок.

В целом — да, можно что-то пошифровать и положить внутрь атрибута Data для транзакции, которая потом будет включена в блок.

Это даст возможность проверять кто уже голосовал, но не за кого. И даже переголосовывать легко.

  Развернуть 1 комментарий

@zahhar, Да дата. На самом деле нет. Смотрите у нас есть публичный ключ, я беру его и шифрую бюллетень и подпись с публичным ключом пользователя им. И кладу в транзакцию. Это как раз и будет прошло голосование. Переголосовать да пользователь сможет. А вот посмотреть в реальном времени кто за кого голосовал уже нет.

  Развернуть 1 комментарий

@norguhtar, всё так, да.

Только всё же шифровать нужно каким-то публичным ключом, общим для всего голосования — как мне думается, иначе потом мы не расшифруем голоса.

Приватный ключ, общий для всего голосования, может быть разделен на N частей, которые случайным образом распределяются между всеми наблюдателями и ЦИКом (с запасом, на случай если кто-то свой профукает).

Подписывать зашифрованную часть транзакции избирателю не нужно, т.к. он же подписывает всю транзакцию (1 транзакция — это голос одного пользователя), так что то от кого идёт транзакция — уже удостоверено.

  Развернуть 1 комментарий

@zahhar, Именно так и делалось в дистанционном голосовании. Потому что эту часть делали люди из касперского.

  Развернуть 1 комментарий

@norguhtar, молодцы они, чё. Понятное дело, что никто не будет в реальности использовать для выборов Эфир — потому что там надо за газ платить в буржуйской валюте, а платные выборы — это ноу-гоу.

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

Нафига нам вообще блоки и, как следствие — блокчейн? Мы же можем с тем же успехом писать транзакцию в распределенную СУБД, которая экспонируется в реальном времени в интернеты.

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

  Развернуть 1 комментарий

@zahhar, Ну если мы кладем связанные блоки в СУБД почему бы и нет. Дальше когда происходит завершение выборов, выкладывается ключ расшифровки и все дружно базу расшифровывают и считают. Должно совпадать с ЦИК

  Развернуть 1 комментарий

@norguhtar, зачем нам вообще ждать, когда соберется блок транзакций?

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

В случае голосования ничто из этого не нужно. Все транзакции можно писать напрямую в БД. Изменить их нельзя (приватныц ключ только у избирателя).

Я понимаю, что можно опасаться "А вдруг они будут выкинуты из БД?". Но точно так же можно опасаться "А вдруг они будут выкинуты из блока?"

  Развернуть 1 комментарий

@zahhar, Нет так ты слона не продашь :)

  Развернуть 1 комментарий

@norguhtar, А вот это аргумент! :)

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@norguhtar,

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

И тогда другие партии начинают вкидывать левые голоса друг другу и все голосование идет по бороде тк все блоки всех партий аннулированы

  Развернуть 1 комментарий

@aovlllo, А откуда они возьмут ключи избирателей? Как бы левые голоса с левыми ключами будут отсеяны как мусор

  Развернуть 1 комментарий

@norguhtar, а как тогда может количество избирателей и бюллетеней не совпадать? А если есть взаимосвязь голоса и избирателя - то какая такая тайность голосования?

  Развернуть 1 комментарий

@aovlllo, изи бюллетеней делается больше см. карусель в случае бумажных выборов. :)

  Развернуть 1 комментарий

@norguhtar, ну так и почему партии не могут так же подгадить другим партиям?

  Развернуть 1 комментарий

@aovlllo, к примеру как? Агитировать избирателей голосуйте за них? :D

  Развернуть 1 комментарий

@norguhtar, еще раз

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

я комментировал вот это вот. Как может количество бюллетеней не биться с количеством избирателей? Ну видимо вкинуты левые бюллетени, да?

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

Или я вообще этот пассаж про выкидывание блоков понял неправильно

  Развернуть 1 комментарий

@aovlllo, Можешь скипнуть, после дальнейшей дискуссии есть мысль, что их не будет. Более того отсеять к примеру мертвые души никак.

  Развернуть 1 комментарий

@norguhtar, Понял, принял)

  Развернуть 1 комментарий

@aovlllo, мы там выше договорились уже что блоки (даи блокчейн) не нужны в принципе.

Самая большая угроза цифровым выборам (не важно на какой технологии) — это кастование голосов за тех людей, кто сознательно на выборы не идут.

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

Выполнимая, но нетривиальная в реализации, а особенно — в контроле. Ну это если включить режим параноика на максимум.

  Развернуть 1 комментарий

@danik,

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

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

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

Блин, ну слушай, ты начинаешь уже прям натягивать, ну типа "я знаю, что популярной имплементации ECDSA возможных приватных ключей больше, чем атомов во вселенной, и тепловая её смерть наступит быстрее, чем я подберу ключ к рандомному публичному ключу, но ты мне предлагаешь в это ВЕРИТЬ, но ведь никто не гарантирует безопасность аутентичность электронной подписи, подписанной приватным ключом ECDSA!". Не, формально и буквалистски ты прав, конечно, но блин! Ну хорош, чел!

Тебе принесли POC штуки, которая позволяет буквально заплатить майнерам за реорганизацию блокчейна. Она обоснована с теоретико-игровой и технической стороны.
Что бы было, будь у майнеров рабочая bribe нода и желание переиграть хак polynetwork в свою сторон? А что будет дальше?
Если у тебя есть какое-то аргументированное обоснование того, что майнеры не смогут в обозримом будущем извлекать MEV не только из мемпула, но и из уже включенных блоков, а не пассажи про взлом подписей - давай посмотрим.

  Развернуть 1 комментарий

@danik,

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

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

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

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

Первый вопрос: как это сделать на настоящем блокчейне?


В варианте с «локальным» блокчейном кажется что можно поступить так:

  • Государство выкладывает каждый новый документ как новый блок
  • Энтузиасты периодически скачивают себе весь блокчейн и убеждаются что ничего не меняется
  • Если энтузиасты замечают что что-то меняется, то бьём тревогу и предоставляем доказательства

И заменить это гитом нельзя, потому что для гита у нас документы не подписаны закрытым ключом государства.

Второй вопрос: чем это не использование локального блокчейна?

  Развернуть 1 комментарий

@optozorax, отличный кейс! Пошли в детали, в которых дьявол :-)

  1. В гите каждый блок (коммит) подписывается закрытым ключом, это прям исходно встроенный функционал.
  2. Для вышеприведённой схемы достаточно, чтобы энтузиасты скачивали даже нарочито простой txt файлик формата
| содержимое документа №1 | подпись содержимого документа №1 госключом |
| содержимое документа №2 | подпись содержимого документа №2 госключом |
...
  1. Даже если государство отказывается явно подписывать ключом, то, если данные раздаются по HTTPS, можно заюзать TLS Notary, в виде госключа будет выступать закрытый ключ SSL/TLS-сертификата.

Локальный блокчейн ненужон сразу на трёх уровнях! Обожаю такое :-)

P.S. На месте энтузиастов я бы ещё регулярно сбрасывал хэш всех скачиваемых данных на глобальный открытый (а.к.а. "настоящий") блокчейн, чтобы все мухлежи имели ещё и неопровергаемую привязку ко времени.

  Развернуть 1 комментарий

@danik, ок, тогда как лучше организовать эту систему с настоящим блокчейном?

  Развернуть 1 комментарий

@optozorax, знаешь, тут ещё вопрос а что вообще в принципе можно сделать: когда у тебя заведомо централизованная история (государство), ни глобальный блокчейн, ни палочка Гермионы не поможет.

Но я могу выдумать довольно узкий кейс, когда:

  1. Кроме госреестра в государстве есть независимые ветви власти, которым можно доверять (независимые суды).
  2. По какой-то причине эти доверенные ветви власти не могут по бюрократическим каналам заставит госреестр отправлять им регулярно подписанный слепок своих документов.
  3. Но если этим судам доказательства мухлежа предоставить, то они примут их во внимание и честно вынесут решение.
  4. Исполнительная власть честно исполнит решение суда.

Это всё очень маловероятно на практике, но для мысленного экспермента пусть будет так. Тогда энтузиасты регулярно выкачивают слепки документов госреестра, подписанные либо явно госключом, либо через HTTPS ключом SSL/TLS-сертификата, и хэш этих слепков кладут на глобальный блокчейн (например, биткоина или эфириума).

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

  Развернуть 1 комментарий

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

Твой случай покрывается ЭЦП и сервером точного времени.

Если хочешь моднее — то в гит уже лет 5 как завезли ЭЦП через PGP (https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work).

Твой же алгоритм сломается на шаге


"Если энтузиасты замечают что что-то меняется, то бьём тревогу и предоставляем доказательства"


Чтобы этот шаг работал, все коммиты (то есть новые версии документов) должны быть подписаны майнерами — то есть вот этими самыми энтузиастами, а не государством.

Но если они подписаны майнерами, причём любой может стать майнером в любой момент и в любой момент перестать быть майнером (без последствий) — то это уже публичный блокчейн, а не приватный.

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

То есть такой "блокчейн" эквивалентен любой БД (реляционной или документальной), которая экспонируется рид-онли во весь мир и в которую все записи пишутся только с ЭЦП ключом.

  Развернуть 1 комментарий

@optozorax, давайте я задам вопрос а зачем тут блокчейн?

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@psydvl, смотри, глобальный блокчейн -- это когда никто в принципе не может ничего в нём изменить, даже если очень очень захочет. Блокчейн биткоина, например, уже вырос до того, что любая разумная на данный момент коалиция государств не сможет ни переписать его задним числом, ни остановить его работу. Максимум -- это заставить законопослушную часть общества на своей территории его не использовать.

Понятно, что это небинарное состояние, а градиент, но твои две малинки пока даже близко ещё не там :-)

  Развернуть 1 комментарий

@danik, нууу вообще говоря были же случаи когда китайский пул держал 51% мощностей :)

  Развернуть 1 комментарий

@norguhtar, here we go again :-) 51% это настолько драматически выглядящая ситуация, что её очень сильно переоценивают.

  1. Как только пул получает так много, от него превентивно многие майнеры отскакивают, именно чтобы не получить обрушивающий обменный курс заголовок про 51% в газете.

  2. Владелец пула != владелец майнинговых мощностей. Если он хоть мизинцем дрогнет в сторону какого-либо мухлежа, майнеры мигом перескочат на другой пул.

  3. Даже если бы Китай организовал побороть собственную внутреннюю коррупцию и прижать к ногтю всех майнеров внутри, то даже при этом им бы понадобились годы, чтобы имея даже 51% успевать и намайнивать новые блоки, и перемайнивать старые блоки (а их надо имено перемайнивать!), пока не доберутся хотя бы до того, что был всего день назад (YMMV, но порядок именно такой).

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

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

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@GMCLJvDxYsAU2MMV, о, ты вовремя про ветви власти, я как раз в комментах конструировал теоретический кейс, где хотя бы хоть каким-то краем блокчейн (глобальный, конечно) мог бы хоть как-то помочь: https://vas3k.club/post/12025/?comment_order=-upvotes#comment-abc33331-0306-4e5e-bfa3-c92f8632911b

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

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

  Развернуть 1 комментарий

@danik,

смарт-контракты вместо арбитражных судов и т.д.), но не заставить центральную власть работать.

Смарт-контракты надо еще заставлять выполнять. С этим худо-бедно справляются даже неработающие государства. Без государства — анархия и необходимость платить парням с битами, чтобы следили за исполнением.

  Развернуть 1 комментарий

@dmitriid, если у тебя есть работающая судебная и исполнительная система (будь то суды с приставами или хотя бы даже парни с битами), то ненужны тебе смарт-контракты.

По определению смарт-контракт -- это то, для чего не понадобится и не может понадобиться третье доверенное лицо (судьи, бандиты) для его исполнения.

Я могу сделать предположение, что у тебя неверное понимание как работают смарт-контракты, но я хз как это вежливо сделать, а тут срачи мигом разгораются.

  Развернуть 1 комментарий

@danik, Не, я как раз понимаю, как они работают: они работают только для цифровых вещей, которые могут на 100% контролироваться средой исполнения этих самых смарт контрактов. То есть сфера весьма ограниченная.

Их просто пытаются пихать везде, где как раз возникают вопросы о том, как заставить их исполняться :)

  Развернуть 1 комментарий

@dmitriid,

Их просто пытаются пихать везде, где как раз возникают вопросы о том, как заставить их исполняться :)

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

  Развернуть 1 комментарий

@danik, :D

  Развернуть 1 комментарий

@GMCLJvDxYsAU2MMV, "локальным блокчейном" он будет ровно до тех пор, пока участников (майнеров) номинирует кто-то сверху.

То есть если у тебя 3 ветви власти, но люди получают ключи "сверху" и эти ключи в любой момент могут быть отозваны, а люди — поменены по приказу, то такой блокчейн ничего не стоит, будь он хоть сто раз криптографически валиден.

Но в твоём посыле есть интересная мысль: Государство это действительно целая толпа. Толпа граждан.

То есть вполне легитимен такой государственный блокчейн, в котором майнером или валидатором может выступить любой граджданин. Будет считать, что подавляющее большинство граждан нельзя лишить гражданства, а блокчейн будет proof-of-stake, где граждане будет стекать производную от своей экономической активности — например, величину уплаченных налогов (ну или там стаж * зарплату, что-то такое).

Соответственно, граждане (майнеры) могут в любой момент активизироваться/деактивизироваться, новые майнеры будут появляться по мере вступления людей в гражданство или достижения какого-то возраста, и естественным образом убывать. Более "опытные" майнеры (с большим стеком) будут иметь больше веса в принятии решений, но и не смогут пороть чушь — так как могут быть наказаны (лишиться пенсии) в случае, если их учичат в коррупции.

Как-то так.

  Развернуть 1 комментарий

Мне аналогия с git нравится!

Но кажется, что git лучше сравнивать с глобальным блокчейном.
Git он же ведь тоже децентрализованный. Ты можешь как угодно изменить историю локально используя -force. Но ты не сможешь подменить эти изменения всем. Взять например любой популярный репозиторий на Github. Ты, как автор репозитория можешь сделать изменения задним числом, поменять историю как тебе вздумается. Но это не пройдет незамеченным, если этот репозиторий склонирован у других.

Та же история с блокчейном - в локальном ты можешь пересчитать все хеши. Но как подменить эти же хеши в глобальном - тут уже проблема.

Локальный блокчейн - это локальный git, который ты никуда не заливаешь

  Развернуть 1 комментарий

@qujOFXQkuV3OvXHR, да!
Вообще идея локального блокчейна сомнительна, как и рассказывает автор. Блокчейн - это способ достижения консенсуса между независимыми друг от друга системами. Весьма дорогой причем. Если не применять его для этих нужд, а юзать как обычную БД, то получается как с тем конем и машинкой (:

  Развернуть 1 комментарий
Anatoly Shipitsin Специалист по НЕХ 27 сентября 2021

Все хорошо, но у меня есть вопрос. Под локальным подразумевается любой публично доступный блокчейн или как? К примеру если блок подписывается моим закрытым ключом и я предоставляю блок с хешем и подписью и публичным ключом в блокчейн, то в блокчейне подлог данных уже не сделать. Ну при условии конечно если у нас публичный ключ подписан независимым CA.

  Развернуть 1 комментарий

@norguhtar,

Могу не так понятть вопрос, но попробую:

  • Гит - это не блокчейн. Это направленный ациклический граф. Блокчейн - это частный случай направленного ациклического графа. Гит прекрасен.

  • Блокчкейн - изначально есть попытка решить пак проблем, связанных с доверием. Блокчейн битка тот же не требует подписей ключом, подписанным неким СА внешним. Там суть сводится к том, что побеждает самая длинная цепочка. А цепочка не строится изи. Каждый блок в норме майнится 10 минут. Т.е. чтобы построить конкурирующую цепочку текущей главнйо цепочке битка - надо откуда-то родить кучу лет.

  • Открытость данных в блоке - одно из требований. Вы можете хоть руками чекнуть, что блок смайнен как положено, что транзакции внутри подписаны теми, от чьего имени они выполнены и вот это все. Вам не нужно доверять какому-то субъекту отдельному, поэтому и нет необходимости кого-то удостоверять или даже знать имя там и прочее.

  • Приватные цепочки находят свое применение для конкретных бизнес-кейсов. Например, вы являетесь крупным банком со своими фин инструментами и хотите сделать какие-то общие дела с другми несколькими банками. Например проводить транзакции не через внешние централизванные платежные системы или ЦБ, а без доверия вышеназванным субъектам и важим банкам-колленгам (можно в эти темы углубиться, загуглив "проблема византийсуких генералов") . Вы строите приватный блокчейн, который доступен только вашим коллегам банкам (ну может еще каким-то внешним аудиторам. если вы хотите сами) и синхронизируетесь информацией о переводах друг между дружкой. Это один из примеров специализированного приватного чейна, который полезен.

Статей на тему того, кому и зачем нужен блокчейн есть немало https://101blockchains.com/do-you-need-a-blockchain/ . Примерно по этой фразе и гуглятся, включая схемы-картинки.

Согласен с автором в том, что контекст задачи голосования ПУБЛИЧНЫЙ. Вы решаете не внутренние корпоративные движухи по делам, которые касаются только ваших контрагентов. Голосование на выборах касается всех граждан, как минимум. Не говоря уже о том, что такие вещи принято изучать и анализировать ученым разных специальностей для изучения политических процессов (Россия очень интересная страна для мировых политологов, как пример информационной автократии с кучкей данных для изучения). Но проблема голосования упирается в первую очередь в необходимость делать его тайным + обеспечивать соответствие 1 голоса 1 гражданину. Подробнее тут https://t.me/darkfox_info/445 .

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

Позиция Кирилла как раз сводится к тому, что в принципе схема рабочая, если бы не вот эта тема с переголосованием. Так хотя бы можно было четко видеть, сколько человек отголосовало за кого. Может быть было близко к обычным выборам по надежности. Мертвы едуши наверняка бы тоже были заметны. Но имеем, что имеем.


В дополнение накину тезисов:

  • специализированные цепочки могут быть публичными. Пример из истории - Namecoin, которым хотели на бч держать доменные имена. Сейчас идея публичных специализированных цепочек развивается в парити. Полькадот и кеусама - это релэйчейны нулевого уровня. которые даруют безопасность и прочие ништяки для цепочек первого уровня. Они как раз будут все больше специализированными. Такой подход эффективнее: чтобы получить распределенный сервис по торговле фин инструментами и ликвижность, вам не обязательно привязываться к одной эплоподобной экосистеме и платить конские комиссии, например, за эфир. Цепочки будут улучшать вместе общую распределенную экосистему. аликвидность будет перетекать туда. где что-то выполняется эффектевнее (дешевле, лучше, быстрее и т.п.)
  • развитие идеи анонимных транзакций на блокчейнах без доверия - отдельная серьезная задача, над которой умные люди давно сидят. Не уверен, что это может быть применима для голосования тайного. Аудит же нужен.
  • Голосование не тайное, а в формате самоуправления акционерного общества - изи для блокчейна. Сейчас многие успешные финансовые инструменты на том же эфире и польке управляются как ДАО - распределенная автономная организация. Здесь все рабюотает как раз потому, что не надо обеспечивать тайное голосование каких-то определенных кем-то людей. Сколько у тебя акций (токенов) - столько и веса в принятии решений. Риски от принятых решений несут больше те, кто эти решения и принимает.
  Развернуть 1 комментарий

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

Мой вопрос был, а что если я добавлю на хеш-сумму блока еще подпись? Более того если говорить за дистанционное голосование именно так и было. От каждого электронного бюллетеня считалась хеш-сумма и ставилась подпись. В итоге чтобы поменять блок мало просто его поменять, надо или подменить публичный ключ (аналогичным) или получить приватный и только после этого пересчитывать. Если у вас нет при этом приватного ключа на стороне сервера, это не сделать никак. Только через подлог и замену публичного ключа.

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

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

Ещё раз слёзно попрошу про голосование вон туда: https://vas3k.club/link/11955/

Блокчейн в выборах это настолько отдельная тема, что сейчас она только отвлечёт от того, что мы тут обсуждаем

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
Anatoly Shipitsin Специалист по НЕХ 27 сентября 2021

Давайте начнем отсюда https://vybory.gov.ru/materials

Тут есть техническая информация о том как это все организовано.

НО там нет описания схемы переголосования. А весь кавардак был заведен через него.

  Развернуть 1 комментарий

@norguhtar, но мы ж тут не про выборы конкретно, а про приватные блокчейны в целом.

Применительно к выборам: снова там не нужен приватный блокчейн. Им пришлось втащить блокчейн из-за отсутствия ЭПЦ у подавляющего большинства россиян. Если бы вместе с паспортом каждому гражданину выдавалась бы ЭЦП, то всё голосование можно было бы сделать без блокчейна. Глядишь ещё и получилось бы более-менее понятно.

  Развернуть 1 комментарий

@zahhar, Не совсем. Фишка в том что даже при наличие ЭЦП дает возможность подписать бюллетень, но не препятствует его удалению. Есть проблема с вбросами, но вот удаление невозможно. Плюс блокчейн дает возможность верифицировать всю цепочку.

  Развернуть 1 комментарий

@norguhtar, ОООК, давай попробуем тут чисто за технику.

Если у меня есть ЭЦП и я подписал им выданный мне бюллютень, загрузил его на сервер и сохранил себе подтверждение сервера о приёмке моего бюллетеня (тоже как ЭЦП), а затем все подписанные бюллютени после окончания вркмени голосования были сделан общедоступными — то их можно подсчитать и проверить, был ли мой голос учтён, так?

И если я не найду там среди учтённых бюллетений свой — то могу подать в суд, приложив подписанный своей ЭЦП бюллютень, в котором удостоверено, что я подписал его в отведенное окно и могу предоставить подтверждение сервера о приёмке бюллютеня.

Зачем тут блокчейн?
(Пока оставим в стороне воспрос анонимности избирателя)

"Верифицировать цепочку" тем более не нужно. Это не деньги, где транзакция на одном аккаунте изменяет состояния как минимум на двух других аккаунтах (моём и оппонента) и где существует возможность double spending (то есть построение неограниченного числа форков), так что нам нужно постоянно держать единый возможный стейт.

Выборы — не тот случай.

На выборах у каждого избирателя (владельца ЭЦП) есть только 1 возможность голосовать, причём использование (или неиспользование) этой возможности никак не влияет на возможности других избирателей.

В системе голосования у избирателя существует несколько стостояний:

  • "Может голосовать" (по-умолчанию его из всей массы владельцев ЭЦП получают только граждане-физические лица, достигшие избирательного возраста),
  • "Бюллетень выдан" (собственно тут встраивается анонимизация и прочие механизмы контроля)
  • "Бюллетень принят" (тут можно встраивать механизмы проверки голоса или там переголосования или что угодно дальше).

Для реализации этого достаточно любой открытой БД и сервера точного времени.

  Развернуть 1 комментарий

@zahhar, Все бы ничего но подписание ЭЦП как раз указывает кто подписал :) Так что нет так не выйдет. Насчёт же нам не нужен блокчейн, возникает вопрос что делать с наблюдателями? Выборы все так же должны быть наблюдаемы.

  Развернуть 1 комментарий

@norguhtar, почему не выйдет? В Эстонии выборы с 2005 года на ЭЦП. Наблюдатели там тоже есть — имеют доступ к самой обычной реляционной БД и к коду и к логам.

Да, теоретически можно узнать кто за кого голосовал. Но эти данные лежат на разных серверах и один человек не может делать запросы ко всем серверам одновременно с целью узнать кто за кого голосовал.

Можно узнать кто голосовал, но не узнать за кого. Можно узнать как голосовали, но не кто именно прогосовал так, а не иначе.

Итоги голосования хранятся 30 дней либо до решения суда по всем жалобам, после чего физически уничтожаются в присутствии наблюдателей из ОБСЕ.

  Развернуть 1 комментарий

@zahhar, Я имею ввиду что напрямую подписание ЭЦП участника не проходит. Там все же идет выдача ключа подписи в слепую и хранить прямую связь с прямо запрещено, это будет приводить к нарушению анонимности. Ну вот с наблюдателями и интересует как поставлен процесс. Что они видят и как это происходит. Просто пока это выглядит так что если люди не смотрят сами за свой голос, я могу шатать базу как угодно и у тех же наблюдателей ничего не сохраняется.

  Развернуть 1 комментарий

@norguhtar, я не уверен, что ты меня читаешь, потому, извини, я чутка повторюсь вначале ответа.

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

Шатать базу как угодно можно что с блокчейном, что без, только всё равно достаточно затруднительно: для этого у злоумышленника должны быть приватные ключи избирателей. Но т.к. приватный ключ инициализируется в момент выдачи гражданину аппаратного токена, являющегося носителем пары ключей, то к злоумышленнику он попасть не может (если только вся система не прогнила настолько, что ключи утекают при их выдачи или ещё до этого) .

Соответственно, деятельность наблюдателей на электронных выборах начинается с проверки избирательных списков, а затем — проверки хода голосования и подсчёта голосов. Она не особенно отличается от процедуры наблюдения за бумажными выборами.

Конечно, если у нас изначально нет доверия к системе выдачи ЭЦП и мы можем полагать, что злоумышленники могут нагеренить сколько угодно пар и использовать их — то грош цена вообще всей системе ЭЦП и выборам на её основе.

Смотри, даже если ты можешь сколько угодно наблюдать за своим голосом, ты не будешь делать это постоянно. И если после голосования ты такой приходишь в блокчейн проверять и видишь, что "твой" голос отдан за другого кандидата, что что ты сделаешь? Правильно, ничего не сделаешь.

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

  Развернуть 1 комментарий

@zahhar, Как бы ЭЦП выданное мне как гражданину использовать в качестве средства подписи, это сразу автоматом указывать прям на бюллетене кто голосовал :) Я вот про что. По этому использовать пару ключей выданных мне как гражданину нельзя. Более того в РФ есть прям единый реестр всех выданных ключей. Мало в слепую выдать бюллетень, надо еще выдать дополнительную пару ключей для голосования. А это как раз усложняет последующую верификацию голосов. Тот самый я могу проверить свой голос. Так же мне не очень понятно что значит с проверки хода голосования и подсчета голосов? Как это осуществлять? В случае базы данных мы просто же селект делаем и все. Или будем каждый электронный бюллетень доставать показывать и в ручную считать?

  Развернуть 1 комментарий

@norguhtar, ну понятно что в Эстонии не используется прямо ЭЦП.

Там такая система (была по крайней мере когда я этим занимался, но там ребята постоянно развивают, так что архитектура меняется, может быть на сегодняшний день описанное мное уже устарело):

  • (1) сервис/БД с публичными ключами всех пользователей ЭЦП,
  • (2) сервис/БД с избирателями, кто имеет право участвовать в голосовании — выборка из предыдущего сервера, где данные каждого избирателя уже анонимизированы (убраны все личные данные) и обогащены случайными сидами. Эта база перед началом выборов лочится, с неё снимается хеш, подписывается ЭПЦ председателя ЦИКа и ещё какими-то кренделями — вот тебе первый этап наблюдения. Тут наблюдатели могут делать любые статистические запросы к этой БД — типа, сколько там избирателей, валидны ли их публичные ключи (в Эстонии можно проверить не ревоукнута ли ЭЦП или может быть она вообще не существует), когда были сгенерены публичные ключи и т.п.
  • (3) сервис точного времени
  • (4) сервис выдачи-приёмки бюллютеней — который собственно принимает запросы от клиента электронного голосования, проверяет в сервисе (2) что избиратель ещё НЕ голосовал (или переголосовывает) + в сервисе (1) что избиратель не ревоукнул свою ЭЦП после того, как список избирателей был сформирован (например, потерял карточку или её отобрал злоумышленник), затем выдаёт бюллетень на голосование вместе со специальным токеном, который был производной от ключа, если я правильно помню.
  • (5) сервис приёмки заполненных бюллетеней — здесь происходила проверка токена, выданного на предыдущем этапе, но полной анонимизация участника всё равно не было, т.к. нужно было оставить заход на переголосование онлайн + на переголосование на бумаге в последний день голосования (когда электронного голосования не было).
  • (6) сервис подсчёта голосов — он выбраковывал голоса, чьи ЭЦП были ревоукнуты во время голосования (на случай, если твою ЭЦП использовали против твоей воли, но потом ты сбежал от злоумышленников и ревоукнул ЭЦП в оффлайне) + выбраковывал голоса тех, кто потом переголосовал в оффлайне и собственно подсчитывал голоса за всех кандидатов.
  • (7) сервисы инфобезопасности, мониторинга и аудита.

Наблюдатели — да, делали сами или заказывали различные выборки из реляционной БД. Каждый бюллетень не "доставали" насколько я знаю.

  Развернуть 1 комментарий

@zahhar,

пункт 1/2/3 вопросов нет

А вот с пункта 4 начинаются вопросики. Почему проверяет то в сервисе 2? В сервисе 5 поди голосовал или нет? Как-то не логично в сервисе 2 это смотреть. Тем более что на время выборов база в read only

К сервису 5 тоже есть вопросы и 6 тоже они же должны быть прозрачны для наблюдателей. И как сделать это прозрачным в этом случае не очень понятно. По моей логике, наблюдатели получают уведомления о проведении голоса и пишут в свою базу. Далее независимо подсчитывают голоса и сверяются с ЦИК.

  Развернуть 1 комментарий

@norguhtar, вот тут исходный код системы с последнего голосования в 2019 году: https://github.com/vvk-ehk/ivxv — вдруг если интересно поковыряться как оно там.

  Развернуть 1 комментарий

@zahhar, положил в закладки почитать на досуге.

  Развернуть 1 комментарий

@norguhtar, слёзно умоляю не обсуждать тут "блокчейн в выборах", для этого есть отдельный пост, а тут это только отвлечёт от темы: https://vas3k.club/link/11955/

  Развернуть 1 комментарий

@danik, Там к сожалению все опять скатилось в политику. А не в техническое обсуждение вопроса

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@norguhtar, это оооочень большая и страшно интересная тема, но она отдельная, сюда тупо не вместится. Я бы с огромным удовольствием поучаствовал, но видимо пост про это надо писать не сразу после выборов в России или других стран участников Клуба, где электронное голосование вызывало столько эмоций, иначе срачей не избежать

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб