Блокчейн, выборы и прозрачность, ч. 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 не будет опубликован. Обязательные поля помечены *