Каковы преимущества технологии сэмплирования доступности данных? Зачем она нам нужна?
Фото от @testalizeme?utm_source=medium&utm_medium=referral">Testalize.me on Unsplash
Предварительные знания:
Следующее будет опубликовано в качестве данных, чтобы назвать Доступность данных, но некоторые слова, связанные с Доступностью данных, такие как DAS и DAC, останутся в оригинале, чтобы читатели не потеряли связь с оригинальным английским текстом. Для ознакомления с названием Data Publication, пожалуйста, обратитесь к:
Эта серия статей познакомит с механизмом функционирования DAS через Danksharding, а также сходствами и различиями между Celestia, EigenDA и AvailDA. Первая статья познакомит с необходимостью DAS и преимуществами, которые приносит DAS.
В настоящее время наиболее распространенной ситуацией, в которой обсуждается выпуск данных в экосистеме Ethereum, является обсуждение проектирования L2: L2 сам по себе также является цепочкой, поэтому у него также будут свои собственные блоки и данные транзакций, так куда же следует поместить эти данные? Пользователям нужна эта информация для обеспечения безопасности.
Для получения более подробной информации о взаимосвязи между Rollup и публикацией данных, пожалуйста, обратитесь к:
Но на самом деле это не только L2, сама цепь Ethereum также столкнется с проблемой выхода данных, потому что легкие узлы не будут загружать полные блоки данных, как полные узлы, поэтому легким узлам нужно верить, что «когда появляется новый блок, фактически выпущены полные данные блока». Когда легкий узел обманут в вере в «неполный» блок, последствия те же, что и когда его обманывают в вере в «незаконный» блок - он подключается к ветвям, которые не используются другими. Признанные ветви форков.
Полные узлы не будут верить неполным блокам, но легкие узлы будут
Так кому доверяет текущий легкий узел Ethereum, чтобы гарантировать, что данные нового блока полностью опубликованы? Ответ - "Валидаторам". Когда легкий узел получает новый блок, он не загружает полные данные блока, но видит, сколько валидаторов проголосовали за блок. Когда достаточно валидаторов голосует за этот блок, он поверит, что полная информация об этом блоке действительно была опубликована. Это предположение принадлежит Честному Большинству, то есть убеждению, что большинство валидаторов - хорошие люди.
Когда достаточное количество валидаторов подпишет блок, легкий узел поверит, что блок полностью выпущен.
Примечание: В настоящее время легкие узлы Ethereum фактически не собирают голоса сотен тысяч валидаторов для расчетов, потому что число является слишком большим, а вычисления слишком ресурсоемкими. Вместо этого назначается еще одна партия Синхронного Комитета с гораздо меньшим числом, включающая в себя гарантию валидаторской подписи для легкого узла. Это считается переходным подходом, ожидая более полного и зрелого дизайна для замены его в будущем.
«Вера в то, что большинство валидаторов — хорошие люди» звучит как разумный и хороший выбор, но что, если мы можем добиться большего? Что, если однажды действительно случится так, что большинство валидаторов захотят объединить усилия, чтобы обмануть нас, говоря, что у них есть полные данные блока, но на самом деле их нет, но пока в p2p-сети есть несколько хороших людей, мы можем избежать обмана?
Такая великолепная способность определенно не появится из ниоткуда. Чтобы обладать этой способностью, вам нужно построить достаточно стабильную p2p сеть, иметь достаточное количество пользователей, и даже добавить функции конфиденциальности на уровне сети. Эта способность является фокусом этой серии статей - Data Availability Sampling (DAS).
В блокчейне с DAS легкие узлы будут не просто пассивно получать данные о новых блоках, а совместно участвовать в работе DAS: каждый легкий узел должен перейти в p2p-сеть за каждым блоком. По пути он ищет несколько фрагментов данных в блоке и сохраняет данные, а также делится ими с другими узлами, когда они запрашивают данные. Как и в случае с децентрализованным протоколом обмена файлами BitTorrent, узлы сети сохраняют и обмениваются данными, которые им нужны, вместе, вместо того, чтобы полагаться на централизованный сервер.
Легкие узлы работают вместе для извлечения и передачи фрагментов блоков через сеть p2p
Примечание: В идеальном сценарии все пользователи блокчейна должны запускать легкие узлы, участвовать в работе DAS и обеспечивать безопасность вместе, вместо того, чтобы полностью доверять другим узлам, как сейчас.
Каждый легкий узел не может поверить, что данные блока были полностью опубликованы, пока он успешно не получит каждый кусок запрашиваемых данных. Однако, как только он получит все запрашиваемые данные, он может безопасно полагать, что данные блока были опубликованы. Информация была опубликована полностью. Но почему легкие узлы могут безопасно полагать, что полные данные блока были опубликованы, даже если у них есть только фрагментированные данные? Это потому, что другие легкие узлы в сети также будут хранить фрагменты данных отдельно, так что когда это необходимо, все смогут работать вместе, чтобы собрать полные данные из фрагментов данных друг друга, и еще одна волшебная способность DAS заключается в том, что данные, сохраненные легкими узлами, не нужно покрывать полными данными блока. Легкие узлы могут восстановить 100% данных, лишь получив 50% данных.
Пока у легких узлов есть более 50% фрагментарных данных, они могут восстановить полные блочные данные.
Примечание: это не обязательно 50%, может быть выше, в зависимости от настройки DAS, но определенно будет меньше 100%.
Поэтому в DAS, даже если большинство валидаторов проголосуют за определенный блок, легкие узлы не будут легко верить блоку. Легкий узел будет выполнять выборочное (выборочное), то есть, запрос фрагментных данных блока. Когда все запрошенные фрагменты будут получены, будет считаться, что данные блока полностью раскрыты.
По сравнению с Ethereum, который в настоящее время не имеет DAS, легкие узлы должны полагаться на «большинство валидаторов - хорошие люди», что является предположением о честном большинстве; после того как Ethereum присоединится к DAS, легкие узлы будут полагаться на «небольшое количество узлов, которые (будут выбирать и) являются «хорошими людьми, хранящими информацию», что является предположением о честном меньшинстве.
Примечание: "Few" означает, что количество легких узлов, которые необходимо отобрать и сохранить для восстановления полных данных, относительно невелико по сравнению со всеми (очень многими) легкими узлами в сети.
Как уже упоминалось ранее, когда легкий узел получает все запрошенные фрагменты данных, он будет считать, что данные блока были полностью опубликованы, и легкие узлы в сети могут работать вместе, чтобы одолжить их при необходимости. Полные данные могут быть восстановлены из фрагментированных данных, но... что, если человек, который создал блок, злонамеренен, и сначала не выпустил достаточно данных блока? Что, если он нацелен на определенный легкий узел и больше не предоставляет никаких данных после предоставления необходимых фрагментов этому легкому узлу?
Алиса успешно получила запрошенную информацию, поэтому она считает, что информация о блоке была полностью раскрыта, и в конечном итоге она заберет блок, который был отброшен другими узлами.
Тогда этот бедный легкий узел придется обмануть, и это также ограничение и компромисс DAS: гарантия "полного освобождения данных", предоставленная DAS, является гарантией вероятности, а не 100% и категорической гарантией, но это все равно лучше, чем полностью доверять большинству валидаторов. Если вам кажется, что гарантия вероятности недостаточно безопасна, и вы хотите быть уверены на 100%, что данные блока были полностью опубликованы, то, к сожалению, вам придется запустить полный узел самостоятельно, чтобы загрузить полные данные блока.
Примечание: Программа, запускающая легкий узел, не имеет способа узнать, что ее обманули. Для программы, как только она получает все запрошенные данные, она будет считать, что блок был полностью опубликован. Пользователи могут узнать только через свои собственные социальные каналы, что определенный блок фактически не полностью выпущен, и быстро указать своим легким узлам пометить блок как неполные данные.
Если человек, который создал блок, злонамеренный и хочет обмануть некоторые легкие узлы, то, к сожалению, он сможет обмануть эти легкие узлы. Однако существует верхний предел количества обманщиков. В конце концов, злоумышленник не может выпустить слишком много блоков, чтобы легкие узлы действительно могли работать вместе для восстановления полных данных.
В настоящее время вас, возможно, беспокоит, может ли ваша безопасность основываться только на "не враждебности к лицу, производящему блок", или "злоумышленник не знает, кто я, поэтому он на меня не нацеливается"? Да, но вот почему ранее было упомянуто, что DAS нуждается в функции конфиденциальности сетевого уровня, потому что если злоумышленник может узнать, "кто" запрашивает фрагмент данных, или знает, что три фрагмента A, B и C - "одно и то же" Лицо" ищет, то он естественным образом может легко нацелиться на цель и предоставить информацию другой стороне. Если у сетевого уровня сегодня есть функция конфиденциальности, то злоумышленник не сможет узнать, кто запрашивает этот кусок информации. Естественно, не будет способа обмануть цель, и эффективность атаки злоумышленника будет значительно снижена: у него нет способа определить, была ли цель обманута, или даже какой-либо легкий узел.
Если злоумышленнику неизвестно, кто запрашивает информацию, ему будет очень сложно обмануть легкие узлы.
Для обеспечения безопасности DAS требуется:
Какова будет проблема, если блоки не будут кодироваться с использованием кодирования стирания, а легкие узлы будут непосредственно выбирать оригинальное содержимое блока? Ответ: фрагменты данных, выбранные легкими узлами, должны охватывать 100% для обеспечения целостности данных. Даже если легкие узлы вместе выбирают 99% данных блока, этот блок все равно будет неполным и не признан.
Без кодирования стирания, если хотя бы немного блока отсутствует, это означает, что блок не был полностью выпущен.
Если блок закодирован кодированием стирания, то 100% данных могут быть восстановлены с помощью, например, любых 50% данных. Это означает, что легкие узлы могут гарантировать, что они могут восстановить данные, пока фрагменты данных, выбранные вместе, достигнут 50% охвата. Полная информация о блоке. По сравнению с 100% охватом, требование к 50% охвату намного проще. Для злонамеренных производителей блоков будет намного сложнее скрыть некоторую информацию, чтобы обмануть легкие узлы.
Примечание: 50% - просто пример. Для восстановления различных нужд требуется разный процент.
Если легкий узел не сохраняет достаточно фрагментарных данных, то, даже если данные блока кодируются с использованием кодирования стирания, 100% данных не могут быть восстановлены. Например, если легкие узлы хранят только 40% фрагментарных данных в общей сложности и не могут восстановить 100% данных вместе, то эти узлы будут обмануты и поверят, что данные блока были полностью выпущены.
Как обеспечить сохранение достаточного объема данных легкими узлами? Нам нужно иметь достаточное количество легких узлов или достаточное количество выборок для каждого легкого узла. Если у нас достаточно легких узлов, количество времени выборки для каждого легкого узла не должно быть высоким; но если легких узлов недостаточно, то количество времени выборки для каждого легкого узла должно быть достаточно высоким, чтобы обеспечить совместную работу легких узлов для сохранения достаточного объема данных.
Примечание: Если количество легких узлов продолжает расти, размер данных, которые они могут хранить вместе, на самом деле может увеличиться, если количество образцов остается неизменным. Например, Celestia, о которой будет рассказано в этой серии статей, может поддерживать гибкий размер блока. Блокчейн: размер блока Celestia может быть отрегулирован в зависимости от количества легких узлов в сети.
Легкие узлы должны обмениваться фрагментированными данными через сеть p2p, чтобы при необходимости можно было восстановить полные блочные данные. Если сеть p2p нестабильна и не может обрабатывать большое количество запросов на данные, узлы могут не получить определенные фрагменты данных. Кроме того, также необходимо предотвратить обращение всех фрагментов данных в одной и той же сети p2p, что приведет к перегрузке пропускной способности сети. В идеале легкий узел должен иметь возможность получать только те данные, которые запрашивает, а не все остальные нерелевантные данные. Поток через его руки через сети p2p.
Кроме того, сетевому уровню также необходимо иметь функции конфиденциальности, иначе легкий узел будет идентифицирован злоумышленником. Злоумышленник не будет публиковать более 50% данных, но предоставит фрагментированные данные, запрошенные заблокированным легким узлом. Чтобы ввести легкий узел в заблуждение, заставив его верить, что блоковые данные были полностью раскрыты.
Детали этих трех частей будут подробно рассмотрены в этой серии статей.
Каковы преимущества технологии сэмплирования доступности данных? Зачем она нам нужна?
Фото от @testalizeme?utm_source=medium&utm_medium=referral">Testalize.me on Unsplash
Предварительные знания:
Следующее будет опубликовано в качестве данных, чтобы назвать Доступность данных, но некоторые слова, связанные с Доступностью данных, такие как DAS и DAC, останутся в оригинале, чтобы читатели не потеряли связь с оригинальным английским текстом. Для ознакомления с названием Data Publication, пожалуйста, обратитесь к:
Эта серия статей познакомит с механизмом функционирования DAS через Danksharding, а также сходствами и различиями между Celestia, EigenDA и AvailDA. Первая статья познакомит с необходимостью DAS и преимуществами, которые приносит DAS.
В настоящее время наиболее распространенной ситуацией, в которой обсуждается выпуск данных в экосистеме Ethereum, является обсуждение проектирования L2: L2 сам по себе также является цепочкой, поэтому у него также будут свои собственные блоки и данные транзакций, так куда же следует поместить эти данные? Пользователям нужна эта информация для обеспечения безопасности.
Для получения более подробной информации о взаимосвязи между Rollup и публикацией данных, пожалуйста, обратитесь к:
Но на самом деле это не только L2, сама цепь Ethereum также столкнется с проблемой выхода данных, потому что легкие узлы не будут загружать полные блоки данных, как полные узлы, поэтому легким узлам нужно верить, что «когда появляется новый блок, фактически выпущены полные данные блока». Когда легкий узел обманут в вере в «неполный» блок, последствия те же, что и когда его обманывают в вере в «незаконный» блок - он подключается к ветвям, которые не используются другими. Признанные ветви форков.
Полные узлы не будут верить неполным блокам, но легкие узлы будут
Так кому доверяет текущий легкий узел Ethereum, чтобы гарантировать, что данные нового блока полностью опубликованы? Ответ - "Валидаторам". Когда легкий узел получает новый блок, он не загружает полные данные блока, но видит, сколько валидаторов проголосовали за блок. Когда достаточно валидаторов голосует за этот блок, он поверит, что полная информация об этом блоке действительно была опубликована. Это предположение принадлежит Честному Большинству, то есть убеждению, что большинство валидаторов - хорошие люди.
Когда достаточное количество валидаторов подпишет блок, легкий узел поверит, что блок полностью выпущен.
Примечание: В настоящее время легкие узлы Ethereum фактически не собирают голоса сотен тысяч валидаторов для расчетов, потому что число является слишком большим, а вычисления слишком ресурсоемкими. Вместо этого назначается еще одна партия Синхронного Комитета с гораздо меньшим числом, включающая в себя гарантию валидаторской подписи для легкого узла. Это считается переходным подходом, ожидая более полного и зрелого дизайна для замены его в будущем.
«Вера в то, что большинство валидаторов — хорошие люди» звучит как разумный и хороший выбор, но что, если мы можем добиться большего? Что, если однажды действительно случится так, что большинство валидаторов захотят объединить усилия, чтобы обмануть нас, говоря, что у них есть полные данные блока, но на самом деле их нет, но пока в p2p-сети есть несколько хороших людей, мы можем избежать обмана?
Такая великолепная способность определенно не появится из ниоткуда. Чтобы обладать этой способностью, вам нужно построить достаточно стабильную p2p сеть, иметь достаточное количество пользователей, и даже добавить функции конфиденциальности на уровне сети. Эта способность является фокусом этой серии статей - Data Availability Sampling (DAS).
В блокчейне с DAS легкие узлы будут не просто пассивно получать данные о новых блоках, а совместно участвовать в работе DAS: каждый легкий узел должен перейти в p2p-сеть за каждым блоком. По пути он ищет несколько фрагментов данных в блоке и сохраняет данные, а также делится ими с другими узлами, когда они запрашивают данные. Как и в случае с децентрализованным протоколом обмена файлами BitTorrent, узлы сети сохраняют и обмениваются данными, которые им нужны, вместе, вместо того, чтобы полагаться на централизованный сервер.
Легкие узлы работают вместе для извлечения и передачи фрагментов блоков через сеть p2p
Примечание: В идеальном сценарии все пользователи блокчейна должны запускать легкие узлы, участвовать в работе DAS и обеспечивать безопасность вместе, вместо того, чтобы полностью доверять другим узлам, как сейчас.
Каждый легкий узел не может поверить, что данные блока были полностью опубликованы, пока он успешно не получит каждый кусок запрашиваемых данных. Однако, как только он получит все запрашиваемые данные, он может безопасно полагать, что данные блока были опубликованы. Информация была опубликована полностью. Но почему легкие узлы могут безопасно полагать, что полные данные блока были опубликованы, даже если у них есть только фрагментированные данные? Это потому, что другие легкие узлы в сети также будут хранить фрагменты данных отдельно, так что когда это необходимо, все смогут работать вместе, чтобы собрать полные данные из фрагментов данных друг друга, и еще одна волшебная способность DAS заключается в том, что данные, сохраненные легкими узлами, не нужно покрывать полными данными блока. Легкие узлы могут восстановить 100% данных, лишь получив 50% данных.
Пока у легких узлов есть более 50% фрагментарных данных, они могут восстановить полные блочные данные.
Примечание: это не обязательно 50%, может быть выше, в зависимости от настройки DAS, но определенно будет меньше 100%.
Поэтому в DAS, даже если большинство валидаторов проголосуют за определенный блок, легкие узлы не будут легко верить блоку. Легкий узел будет выполнять выборочное (выборочное), то есть, запрос фрагментных данных блока. Когда все запрошенные фрагменты будут получены, будет считаться, что данные блока полностью раскрыты.
По сравнению с Ethereum, который в настоящее время не имеет DAS, легкие узлы должны полагаться на «большинство валидаторов - хорошие люди», что является предположением о честном большинстве; после того как Ethereum присоединится к DAS, легкие узлы будут полагаться на «небольшое количество узлов, которые (будут выбирать и) являются «хорошими людьми, хранящими информацию», что является предположением о честном меньшинстве.
Примечание: "Few" означает, что количество легких узлов, которые необходимо отобрать и сохранить для восстановления полных данных, относительно невелико по сравнению со всеми (очень многими) легкими узлами в сети.
Как уже упоминалось ранее, когда легкий узел получает все запрошенные фрагменты данных, он будет считать, что данные блока были полностью опубликованы, и легкие узлы в сети могут работать вместе, чтобы одолжить их при необходимости. Полные данные могут быть восстановлены из фрагментированных данных, но... что, если человек, который создал блок, злонамеренен, и сначала не выпустил достаточно данных блока? Что, если он нацелен на определенный легкий узел и больше не предоставляет никаких данных после предоставления необходимых фрагментов этому легкому узлу?
Алиса успешно получила запрошенную информацию, поэтому она считает, что информация о блоке была полностью раскрыта, и в конечном итоге она заберет блок, который был отброшен другими узлами.
Тогда этот бедный легкий узел придется обмануть, и это также ограничение и компромисс DAS: гарантия "полного освобождения данных", предоставленная DAS, является гарантией вероятности, а не 100% и категорической гарантией, но это все равно лучше, чем полностью доверять большинству валидаторов. Если вам кажется, что гарантия вероятности недостаточно безопасна, и вы хотите быть уверены на 100%, что данные блока были полностью опубликованы, то, к сожалению, вам придется запустить полный узел самостоятельно, чтобы загрузить полные данные блока.
Примечание: Программа, запускающая легкий узел, не имеет способа узнать, что ее обманули. Для программы, как только она получает все запрошенные данные, она будет считать, что блок был полностью опубликован. Пользователи могут узнать только через свои собственные социальные каналы, что определенный блок фактически не полностью выпущен, и быстро указать своим легким узлам пометить блок как неполные данные.
Если человек, который создал блок, злонамеренный и хочет обмануть некоторые легкие узлы, то, к сожалению, он сможет обмануть эти легкие узлы. Однако существует верхний предел количества обманщиков. В конце концов, злоумышленник не может выпустить слишком много блоков, чтобы легкие узлы действительно могли работать вместе для восстановления полных данных.
В настоящее время вас, возможно, беспокоит, может ли ваша безопасность основываться только на "не враждебности к лицу, производящему блок", или "злоумышленник не знает, кто я, поэтому он на меня не нацеливается"? Да, но вот почему ранее было упомянуто, что DAS нуждается в функции конфиденциальности сетевого уровня, потому что если злоумышленник может узнать, "кто" запрашивает фрагмент данных, или знает, что три фрагмента A, B и C - "одно и то же" Лицо" ищет, то он естественным образом может легко нацелиться на цель и предоставить информацию другой стороне. Если у сетевого уровня сегодня есть функция конфиденциальности, то злоумышленник не сможет узнать, кто запрашивает этот кусок информации. Естественно, не будет способа обмануть цель, и эффективность атаки злоумышленника будет значительно снижена: у него нет способа определить, была ли цель обманута, или даже какой-либо легкий узел.
Если злоумышленнику неизвестно, кто запрашивает информацию, ему будет очень сложно обмануть легкие узлы.
Для обеспечения безопасности DAS требуется:
Какова будет проблема, если блоки не будут кодироваться с использованием кодирования стирания, а легкие узлы будут непосредственно выбирать оригинальное содержимое блока? Ответ: фрагменты данных, выбранные легкими узлами, должны охватывать 100% для обеспечения целостности данных. Даже если легкие узлы вместе выбирают 99% данных блока, этот блок все равно будет неполным и не признан.
Без кодирования стирания, если хотя бы немного блока отсутствует, это означает, что блок не был полностью выпущен.
Если блок закодирован кодированием стирания, то 100% данных могут быть восстановлены с помощью, например, любых 50% данных. Это означает, что легкие узлы могут гарантировать, что они могут восстановить данные, пока фрагменты данных, выбранные вместе, достигнут 50% охвата. Полная информация о блоке. По сравнению с 100% охватом, требование к 50% охвату намного проще. Для злонамеренных производителей блоков будет намного сложнее скрыть некоторую информацию, чтобы обмануть легкие узлы.
Примечание: 50% - просто пример. Для восстановления различных нужд требуется разный процент.
Если легкий узел не сохраняет достаточно фрагментарных данных, то, даже если данные блока кодируются с использованием кодирования стирания, 100% данных не могут быть восстановлены. Например, если легкие узлы хранят только 40% фрагментарных данных в общей сложности и не могут восстановить 100% данных вместе, то эти узлы будут обмануты и поверят, что данные блока были полностью выпущены.
Как обеспечить сохранение достаточного объема данных легкими узлами? Нам нужно иметь достаточное количество легких узлов или достаточное количество выборок для каждого легкого узла. Если у нас достаточно легких узлов, количество времени выборки для каждого легкого узла не должно быть высоким; но если легких узлов недостаточно, то количество времени выборки для каждого легкого узла должно быть достаточно высоким, чтобы обеспечить совместную работу легких узлов для сохранения достаточного объема данных.
Примечание: Если количество легких узлов продолжает расти, размер данных, которые они могут хранить вместе, на самом деле может увеличиться, если количество образцов остается неизменным. Например, Celestia, о которой будет рассказано в этой серии статей, может поддерживать гибкий размер блока. Блокчейн: размер блока Celestia может быть отрегулирован в зависимости от количества легких узлов в сети.
Легкие узлы должны обмениваться фрагментированными данными через сеть p2p, чтобы при необходимости можно было восстановить полные блочные данные. Если сеть p2p нестабильна и не может обрабатывать большое количество запросов на данные, узлы могут не получить определенные фрагменты данных. Кроме того, также необходимо предотвратить обращение всех фрагментов данных в одной и той же сети p2p, что приведет к перегрузке пропускной способности сети. В идеале легкий узел должен иметь возможность получать только те данные, которые запрашивает, а не все остальные нерелевантные данные. Поток через его руки через сети p2p.
Кроме того, сетевому уровню также необходимо иметь функции конфиденциальности, иначе легкий узел будет идентифицирован злоумышленником. Злоумышленник не будет публиковать более 50% данных, но предоставит фрагментированные данные, запрошенные заблокированным легким узлом. Чтобы ввести легкий узел в заблуждение, заставив его верить, что блоковые данные были полностью раскрыты.
Детали этих трех частей будут подробно рассмотрены в этой серии статей.