Блокчейн, выборы и прозрачность, ч. 1

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

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

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

 

 В двух словах, что такое блокчейн

 

 Пример простейшего блокчейна

 

 Взрослые хэш-функции

 

 Промежуточные итоги

 

 Точно всё? А если найду?

 

 Публичные, распределённые, твои

 

 Опять подведём итоги

 

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

20 Comments

  1. CheBurator

    Спсб за понятное разъяснение.

    .

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

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

    — но ведь можно «сделать» так чтобы вычисление хеша было достаточно ресурсоемким, тогда пересчет множества хешей за приемлемое время (а ресурс у лоумышленника ограничен) будет проблемным…?

    .

    опять же — если мы в текущий момент времени не можем сразу сказать изменилось что-то где-то раньше в цепочке — то смысл всей цепочки? только в том, что рано или поздно когда-то будет обнаружено что было вмешательство и блок данных, по которому стоит «неверный» хеш является «неправильным» — и все? какая с этого существенная польза в момент расчета текущего хеша? (как пример, есть блокчейн собственности на «квартиру». я, покупая «квартиру», в момент покупки (а покупака должна совершаться БЫСТРО, за отведенное время) — должен быть уверен, что я покупаю «правильную» квартиру. и еслия я не проверю всю цепочку — я не смогу этого сказать (а время проверки всей цепочки превышает отведенное время на покупку)… И — всё, приплыли..?!

    .

    или я неправильно все понимаю?

    Reply ↓
  2. CheBurator

    Вот это как-то не особо понятно

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

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

    Reply ↓
  3. CheBurator

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

    Reply ↓
  4. for_sale

    (2)

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

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

    Reply ↓
  5. for_sale

    (1)

    но ведь можно «сделать» так чтобы вычисление хеша было достаточно ресурсоемким, тогда пересчет множества хешей за приемлемое время (а ресурс у лоумышленника ограничен) будет проблемным…?

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

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

    (1)

    … И — всё, приплыли..?!

    Именно приплыли — вы всё правильно поняли) В том же биткоине, если вы когда-нибудь пользовались обменниками, то вы им перечисляете биткоины, а они вам деньги слать не торопятся — потому что ждут подтверждения от множества узлов о том, что ваша транзакция попала в правильный блок и блок не отвергнут сетью. Т.е. да, приходится ждать, пока не будет проверена вся цепь от начала времён. Уже от разработчика зависит — как долго это всё будет происходить. Теоретически, наверное, можно придумать какие-то «индексы», но я бы в правильную техническую реализацию какого-то большого блокчейна не лез без как минимум докторской степени.

    Reply ↓
  6. for_sale

    (3)

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

    Reply ↓
  7. CheBurator

    (3) дочитал до конца, вроде этот вопрос ок.

    Reply ↓
  8. mkalimulin

    Ваши ошибки относительно приватного блокчейна.

    1. Он не дает существенной дополнительной нагрузки на базу. Потому что база сама по себе, а блокчейн сам по себе. Он физически может вестись в другой базе.

    2. Блокчейн прекрасно работает в ситуации, когда требуется менять уже введенные документы. Запись о таком изменении точно так же попадает в блокчейн. Тут нет ничего особенного.

    Ваш вывод о бесполезности приватного блокчейна — неверен. Также неверно противопоставление распределенного блокчейна и приватного. Они оба полезны. Но для разных случаев. Для криптовалюты нужен распределенный. Для доверия достаточно приватного.

    Reply ↓
  9. for_sale

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

    (8)

    Для доверия достаточно приватного.

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

    (8)

    1. Он не дает существенной дополнительной нагрузки на базу. Потому что база сама по себе, а блокчейн сам по себе. Он физически может вестись в другой базе.

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

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

    Reply ↓
  10. for_sale

    (8)

    Потому что база сама по себе, а блокчейн сам по себе.

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

    Так что, как и прежде, я крайне рекомендую вам разобраться в работе блокчейна и вообще в том, что это такое. Потому что, насколько я понял, вы смастерили какую-то обработку на 1С и решили, что вы — мастер блокчейнов)) И теперь не хотите больше ничего понимать. А понимать вам ещё много, насколько я вижу по вашим комментариям.

    Reply ↓
  11. mkalimulin

    (10) Можно хранить в отдельной базе ИД документов и хэши. Вот вам и будет «база сама по себе, а блокчейн сам по себе».

    Reply ↓
  12. for_sale

    (11)

    И велосипед, который будет постоянно ходить по базе и пересчитывать хэши?)

    Reply ↓
  13. tolyan_ekb

    У меня такой вопрос. Допустим база существует несколько лет и я новый участник. Скачал и обновил базу с нескольких узлов. Теперь я должен на своем компе хранить все это добро и стать узлом базы? Обычный пользовательский ПК потянет такую базу?

    Reply ↓
  14. mkalimulin

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

    Reply ↓
  15. for_sale

    (13)

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

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

    Reply ↓
  16. for_sale

    (14)

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

    Reply ↓
  17. for_sale

    (13)

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

    Reply ↓
  18. mkalimulin

    (16) С работой блокчейна вообще, и в приложении к криптовалютам, я знаком. И познакомился с ней задолго до того, как реализовал приватный блокчейн на 1С. И, по видимому, значительно раньше вас. На чем основано ваше стремление отправить меня учиться? Вы думаете, что в области блокчейна я не знаю чего-то, что знаете вы? Почему вы так решили?

    Reply ↓
  19. tolyan_ekb

    (17) Спасибо за ответ. Во второй части статьи самостоятельно нашел его ))

    Reply ↓
  20. tolyan_ekb

    (17) Сам почему-то не дошел до этой мысли, а в прочитанных ранее статьях это как-то особенно не выделялось, хотя и было написано.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *