я считаю это не совсем честно по отношению к клиенту сети. Почему «последняя миля» не учитывается? Если взять например блокчейн, где клиенты выполняют массивные вычисления, или при получении некоторых данных должны их расшифровать, накатить на свои базы, или пообщаться с другими клиентами — то это может быть значимый кусок производительности всей сети. Вы можете получить ситуацию «алло шеф, у меня транзакции по полминуты висят», а в ответ: «ничего не знаем, у нас по графику 1000 tps в магистральной сети».
Есть еще проекты где клиенты соединяются между собой, а еще есть L2 решения — когда одна цепочка коммитит изменения и диспуты в вышестоящую L1 цепочку — в этих случаях с производителностью все совсем сложно. Так что клиентскую часть в децентрализованных сетях имеет смысл учитывать. В традиционных системах клиент обычно ничего серьезного не делает, шлет мелкие запросы да качает данные, поэтому их и не измеряют.
Спасибо за коммент — действительно стоило рассказать про этот вид алгоритмов, я, честно говоря, был ограничен объемом статьи, слишком большая получалась, поэтому все что хотелось не удалось затолкать. Тоже изучали VDF, по сути proof-of-work эфира или биткоина это тоже в некотором роде VDF и для мелочевки можно и его использовать. У нас еще очень важным требованием является быстрая финальность, поэтому сходу подобрать VDF под необходимость выдавать строго надежный beacon каждую секунду-две нам не удалось и мы решили разбить задачу на две: сначала сделать быструю и предсказуемую генерацию PVRB из наждежного seed, а вот генерацию seed — вынести в отдельную, возможно медленную и асинхронную задачу, и вот там, возможно, VDF будут к месту.
Сгенерированный хеш, конечно же влияет на исторические данные системы, собственно он и есть эти данные, но его замена невозможно без атаки на консенсус сети, кроме того финальность сильно помогает в этом вопросе.
В случае рандома — как только появится железо, умеющее что-то сбрутить, сеть может хардфоркнуться на другой алгоритм, устойчивый к этой железяке. Кроме того, если такое железо появится, то скорее всего атаковать рандом не будет смысла — проще будет напрямую вывести криптовалюту с адресов.
что касается причины попыток найти PVRB, то как я сказал, PVRB в блокчейнах — то же самое что генераторы псеводслучайных последовательностей для симметричной криптографии на отдельных компьютерах. Эти генераторы — техническая основа огромного числа протоколов, поточных шифров, протоколов расширения ключа, даже хеширования.
И в блокчейнах происходит развитие этих концепций, по сути блокчейн-технологии — это про создание распределенных компьютеров, в которых недоверенные узлы объединяются для решения одной задачи. Поэтому merkle tree в них — аналог хеширования, PVRB — аналог ГПСП, транзакции — вызовы функций, и т.п. К сожалению, нюансов и атак очень много, поэтому нельзя взять и быстро на коленке запилить что угодно на блокчейне.
действительно, PoW — один из способов реализации PVRB — если затраты на подбор хеша огромны, то «перемайнивать» блок, ради нового значения рандома будет слишком дорого. Но все равно, если на кону возможность с гарантированной вероятностью больше 50% удваивать ставку, просто удвоив майнинговые мощности (выбирая между хотя-бы двумя рандомами), такой PVRB можно атаковать. Поэтому в таких PVRB все равно приходится делать протокол коллективной генерации — все должны потрудиться, отдать свои PoW хеши (или использовать иную Verifiable Delay Function), и из них сконструировать результат. Причем важно, что результат должен быть unbiasable — один и только один, вне зависисмости от действий сговорившейся группы участников.
Тут некоторое недопонимание — в криптографии вообще нет «доказанно стойких» (кроме XOR :)). Имеется в виду доказанно стойки при некоторых условиях. В реальности эти условия не соблюдаются, либо не имеют смысла. Поэтому приходится стараться максимально приближаться к «доказанно стойким» схемам. Например, когда мы гененрируем одноразовый ключ для симметричного шифрования, мы полагаемся на то, что наш генератор — стойкий. Это, возможно не так, но анализируя алгоритм, криптографы говорят, что «он стойкий, при условии что гененратор непредсказуем, и открытый текст непредсказуем, и т.д. и т.п.» Cardano занимается как раз реализацией различных практических вариантов PVRB, выбирая наиболее надежный. Учитывая опыт их команды, желающие могут просто подождать пока они это сделают и тупо забирать хороший рандом прямо из из блокчейна. Сначала они использовали одну схему, использующую Fiat-Shamir secret sharing, сейчас вроде стали другую, не смотрел пока, но буду писать следующую статью — постараюсь описать
ну можно сравнить атаку на PVRB в каком нибудь онлайн казино, и атаку на PVRB, работающего в алгоритме консенсуса какого нибудь блокчейна типа EOS. Вторая позволяет сделать double spend и потенциально организовать кидок на десятки миллионов (в зависимости от тоо, сколько в атаку может вложить атакующий). В первом случае — придется обманывать казино, а оно обычно ограничивает размеры ставок, да и с KYC может прижучить. Поэтому игры — это важно, и, наверное, какая нибудь огромная лотерея и может являться вкусной целью, но у блокчейна к PVRB есть и более серьезные запросы. Кстати про арбираж сделок и RandPay там тоже неспроста — эти задачи важны также и с инженерной точки зрения — чтобы поддержать масштабирование блокчейнов и убрать ненужные взаимодействия.
Имелась в виду доказуемая надежность консенсуса, а не PVRB. Это означает, что если PVRB стойкий, то консенсус доказуемо такой же стойкий, как PVRB. «Доказуемо стойкий» никогда не означает «защищен навсегда от всего», а обычно означает что «при заданных допущениях — взломать ту часть, которая доказуемо стойкая не получится». Ключевое здесь «при заданных допущениях».
Например есть «доказуемо стойкий» шифр Шеннона, который является в первую очередь моделью, для доказательства стойкости других шифров, а не реальным алгоритмом. В чистом виде он неюзабелен
имеется в виду доказуемой стойкостью равной стойкости используемого PVRB. Типа «если используемый рандом идеально стойкий, то Ouroboros доказуемо имеет ту же степень стойкости». Это частая история в криптографии — например когда используют хеширование, допускают что оно «идеально стойкое», чтобы оценивать остаток алгоритма. В случае Ouroboros более-менее понятно почему доказуемо стойкое — если «идеально рандомно» выбирать BP, то чаще будут выбираться честные BP если их тупо больше чем нечестных. Но каждый раз когда вы добавляете очередное усложнение в протокол, возможна порча этой доказуемости…
ну у этой схемы (называется commit-reveal) проблемы с контролем бита. Если я на последнем шаге «говорю свое число», то перед тем как «говорить» я могу решить, стоит мне это делать или нет и тем самым контролирую результат. Прикидываю что получится и в том и в другом варианте (к примеру я играю на «красное-черное» в рулетку и выбираю тот рандом, который приводит именно к «черному»).
Я уже готовлю следующую статью, там как раз и разберу почему схема на хешах применима, но очень ограничено. Если про «вскрытие-невскрытие», то обычно это решают депозитом на этапе commit, который отнимут, если не будет reveal. Но это ограничивает цену игры и для консенсусов и других важных вещей не годится
Здесь очень много технических нюансов, и сплетается одновременно и криптография, и архитектура систем, плюс — крайне мало готового кода, гораздо чаще — proof-of-concept или вообще голая статья. Также, ограничения блокчейна все таки крайне серьезные, и все это делает задачу еще сложнее. Статью по конкретным решениям конечно хочется хорошо написать, а инфы крайне мало, и можно легко ошибиться или пропустить что то реально важное. Поэтому я так расплывчато написал когда и про что напишем. Да нам и самим надо понять, стоит ли нам раскрывать сейчас как мы хотим эту задачу решать в ближайшее время, или продолжать мониторить криптографов, пока они не разродятся еще каким нибудь решением, которое «на этот раз уже точно». За похвалу спасибо, будем стараться писать интересно
Спасибо, постараюсь дальше тоже интересно писать :) Про недостаток инфы — правда, найти много хорошей доки по смарт-контрактам в одном месте не получится — молодая крайне область, довольно специфичная и недостаток статей и книг чувствуется.
ну NFC в мочке уха это капец несекъюрно, а тату — особенно, сфоткали разок и твой ID слит. Заодно можно и горные лыжи повпаривать. А по поводу «грузится блокчейн» тоже не стоит, он как раз в силу доступности кучи нод в чужих горах понадежней будет традиционных сервисов. Полезете на гору в Тибете, а великий китайский файрвол заблокирует сервера аутентификации для вашего NFC в ухе. Ну а хранение медицинской инфы на блокчейне имхо не вариант вообще, он для другого создан
Слишком масштабно для первой пробы технологии. Конечно же нет, и космолеты, запускаемые кучей проектов разумеется сразу не полетят. Ценность блокчейна — в дешевизне и простоте архитектуры. Он не лечит от ошибок и обмана, это просто алгоритмы, в которых целостность данных и неоспоримость исполнения кода стоит на первом месте. Не путайте ее с человеческой «честностью» данных — это совершенно разные вещи. Имхо, сначала всё таки зарботает что то небольшое — типа продажи кофе или каких то информационных услуг, и только после сотен проб технологии мы возможно перейдем к тем самым «неоспоримым реестрам»
Ну вообще то, если говорить об операциях с недвижимостью, то конечно же тупая девочка должна быть не одна, а вместе с валидаторами, которые не дадут ошибиться в фиксации сделки. Кроме того проблемы «девочки» и в государственном реестре точно так же актуальны, ибо эта централизованная инфа растекается по сотням внешних баз, и исправление ошибки в центральной базе не факт что доедет до периферии. Только в случае блокчейна отловить ошибку будет намного проще. Ну и вообще, приведение частной ошибки при обсуждении технологии — не особо правильно — ибо то, что вы описали, можно просто предусмотреть заранее.
Да, порог входа для обычных юзеров сейчас по прежнему крайне высокий, 90% отваливаются не дойдя до эфира ваще, мы это хорошо видим на проекте. Оппонирую я больше по привычке, на хабре обычно первый комментарий под любой статьей про крипту — хейтерский :) А за статью спасибо, всё по делу и полезно для ознакомления всем блокчейн-разработчикам.
Кстати, по поводу фейсбука — только вчера читал текст от Цукерберга, где тот грозится изучить вопрос децентрализации очень подробно, и он там явно говорит, что понимает насколько паршивая сейчас ситуация, и что собирается заняться вплотную вопросом.
Существующие системы тоже не очень то успешно решают вышеописанные проблемы, под каждый ваш пункт можно найти пример из облажавшихся централизованных систем.
Регистрация на фейсбуке с емейлами-подтверждениями и сливом данных всем кому ни попадя проще чем установка расширения Metamask в два клика (ну а эфир к примеру друг кидает мне на 10$, этого хватит чтобы сотни простых транзакций послать)?
Биржи зачем записали в «блокчейн»? Они централизованные, и блокчейн там совсем сбоку прикручен.
Вы описываете проблему публичных данных, в то время, когда в централизованных системах из за утечек тех самых «защищенных» централизованно данных воруют миллионы аккаунтов — не лучше ли сразу делать системы, в которых данные, которые можно своровать отсутствуют?
С чего это блокчейн должен решить проблему цензуры?
Почему блокчейн — это «хранилище» — он никогда им не был (только в фантазиях некоторых айсиошников), блокчейн — это про журналирование сделок, автоматические расчеты, управление ключами, но точно не про storage — тут каждый байт важен.
Неохота быть эдаким восторженным фанатом блокчейна (хотя в душе я им являюсь, канеш), действительно, блокчейн не волшебная палочка и за его преимущества надо платить, он точно не под все задачи годится. Но в правильных областях и правильно приготовленный он совершенно точно гораздо привлекательнее любых существующих систем. Всё в точности так же, как было когда появились первый сайты и браузеры, которые потихоньку вытеснили почти весь софт для обмена публичной информацией в компьютерных сетях
Для эфира точно так же можно использовать web3.js без всякого метамаска. Правда от необходимости иметь эфир для отправки транзакций и ставить подпись на транзакцию это не спасет. Большой разницы на фронтенде между EOS и Etheereum нет.
В теории может. Тут есть естественная защита, в виде комиссии за любую транзакцию, т.е. спамеру дорого будет стоить любая массированная атака на Ethereum, поэтому просто валить тупыми транзакциями по изменению данных бессмысленно. Но если этот контракт является более сложным, например оплачивает работу валидаторов данных, то атака типа «автматически валидировать всё и получать за каждое действие награду» вполне реальна и опасна, никаких возможностей остановить ее у децентрализованных сетей нет, любая валидная транзакция будет выполнена. Невозможность останавливать такие атаки — одна из серьезных проблем блокчейна.
Есть еще проекты где клиенты соединяются между собой, а еще есть L2 решения — когда одна цепочка коммитит изменения и диспуты в вышестоящую L1 цепочку — в этих случаях с производителностью все совсем сложно. Так что клиентскую часть в децентрализованных сетях имеет смысл учитывать. В традиционных системах клиент обычно ничего серьезного не делает, шлет мелкие запросы да качает данные, поэтому их и не измеряют.
В случае рандома — как только появится железо, умеющее что-то сбрутить, сеть может хардфоркнуться на другой алгоритм, устойчивый к этой железяке. Кроме того, если такое железо появится, то скорее всего атаковать рандом не будет смысла — проще будет напрямую вывести криптовалюту с адресов.
И в блокчейнах происходит развитие этих концепций, по сути блокчейн-технологии — это про создание распределенных компьютеров, в которых недоверенные узлы объединяются для решения одной задачи. Поэтому merkle tree в них — аналог хеширования, PVRB — аналог ГПСП, транзакции — вызовы функций, и т.п. К сожалению, нюансов и атак очень много, поэтому нельзя взять и быстро на коленке запилить что угодно на блокчейне.
Например есть «доказуемо стойкий» шифр Шеннона, который является в первую очередь моделью, для доказательства стойкости других шифров, а не реальным алгоритмом. В чистом виде он неюзабелен
Я уже готовлю следующую статью, там как раз и разберу почему схема на хешах применима, но очень ограничено. Если про «вскрытие-невскрытие», то обычно это решают депозитом на этапе commit, который отнимут, если не будет reveal. Но это ограничивает цену игры и для консенсусов и других важных вещей не годится
Кстати, по поводу фейсбука — только вчера читал текст от Цукерберга, где тот грозится изучить вопрос децентрализации очень подробно, и он там явно говорит, что понимает насколько паршивая сейчас ситуация, и что собирается заняться вплотную вопросом.
Регистрация на фейсбуке с емейлами-подтверждениями и сливом данных всем кому ни попадя проще чем установка расширения Metamask в два клика (ну а эфир к примеру друг кидает мне на 10$, этого хватит чтобы сотни простых транзакций послать)?
Биржи зачем записали в «блокчейн»? Они централизованные, и блокчейн там совсем сбоку прикручен.
Вы описываете проблему публичных данных, в то время, когда в централизованных системах из за утечек тех самых «защищенных» централизованно данных воруют миллионы аккаунтов — не лучше ли сразу делать системы, в которых данные, которые можно своровать отсутствуют?
С чего это блокчейн должен решить проблему цензуры?
Почему блокчейн — это «хранилище» — он никогда им не был (только в фантазиях некоторых айсиошников), блокчейн — это про журналирование сделок, автоматические расчеты, управление ключами, но точно не про storage — тут каждый байт важен.
Неохота быть эдаким восторженным фанатом блокчейна (хотя в душе я им являюсь, канеш), действительно, блокчейн не волшебная палочка и за его преимущества надо платить, он точно не под все задачи годится. Но в правильных областях и правильно приготовленный он совершенно точно гораздо привлекательнее любых существующих систем. Всё в точности так же, как было когда появились первый сайты и браузеры, которые потихоньку вытеснили почти весь софт для обмена публичной информацией в компьютерных сетях