Proof of History: Часы для блокчейна

Подробное описание ключевой инновации Solana

Solana — самый производительный permissionless блокчейн в мире. На текущих итерациях сеть Solana Testnet из 200 физических отдельных узлов поддерживает устойчивую пропускную способность более 50 000 транзакций в секунду при работе с графическими процессорами. Это достижение как таковое требует внедрения нескольких оптимизаций и новых технологий, в результате будет осуществлен прорыв в пропускной способности сети, который свидетельствует о новом этапе в разработке блокчейна.

7 ключевых технических инноваций, которые делают сеть Solana возможной:

  • Proof of History (POH)— часы перед консенсусом;
  • Tower BFT — PoH-оптимизированная версия PBFT;
  • Turbine — протокол распространения блоков;
  • Gulf Stream — протокол пересылки транзакций без Mempool;
  • Pipeline VM— Параллельно исполняемые смарт-контракты;
  • Cloudbreak — База данных горизонтально масштабируемых учетных записей;
  • Репликаторы — Распределенное хранение реестра

Одной из самых сложных проблем в распределенных системах является согласование во времени. На самом деле, некоторые доказывают, что наиболее важной особенностью алгоритма Биткойн Proof of Work является децентрализованная тактовая частота системы. В Solana мы считаем, что именно Proof of History дает нам такое решение, мы создали на его основе блокчейн.

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

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

Что если бы вы могли просто доверять метке времени, которая закодирована в сообщении? Огромное количество оптимизаций распределенных систем внезапно окажется в вашем распоряжении. Например:

“Синхронизированные часы интересны тем, что их можно использовать для повышения производительности распределенных алгоритмов. Они позволяют заменить общение локальными вычислениями.”
Лисков Б. В. Практическое использование синхронизированных часов в распределенных системах

В нашем случае это означает высокую пропускную способность и высокую производительность блокчейна

Proof of History

Что будет, если вы не будете доверять штампу времени, а сможете доказать, что сообщение появилось до или после события? Когда вы делаете фотографию с обложкой New York Times, вы создаете доказательство того, что ваша фотография была сделана после публикации этой газеты, либо у вас есть какой-то способ повлиять на то, что публикует New York Times. С помощью Proof of History вы можете создать историческую запись, которая доказывает, что событие произошло в определенный момент времени.

Proof of History Timestamps

Штамп времени Proof of History

Сутью Proof of History является высокочастотная функция проверяемой задержки. Функция проверяемой задержки требует определенного количества последовательных шагов для оценки, но в то же время создает уникальный результат, который может быть эффективно и публично проверен.

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

Для хеш-функции SHA256 этот процесс невозможно распараллелить без атаки методом брутфорс с использованием 2¹²⁸ ядер.

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

Верхняя граница времени

Recording messages into a Proof of History sequenceЗапись сообщений в последовательность Proof of History

Данные могут быть вставлены в последовательность путем добавления хеша данных в предыдущее сгенерированное состояние. Состояние, входные данные и счетчик публикуются. Добавление входных данных приводит к непредсказуемым изменениям всех будущих выходных данных. До этих пор распараллелить это все еще невозможно, пока хеш-функция устойчива к атаке нахождения прообраза и конфликтам при хешировании, невозможно создать входные данные, которые будут генерировать желаемый хеш в будущем, либо создать альтернативную историю с теми же хешами. Мы можем доказать, что прошло время между любыми двумя операциями добавления данных. Мы можем доказать, что данные были созданы за некоторое время до их добавления. Также как мы знаем, что события, опубликованные в New York Times, произошли до того, как была написана газета.

Нижняя граница времени

Lower bound on time with Proof of HistoryНижняя граница времени Proof of History

Входные данные в Proof of History могут иметь ссылки на саму Proof of History. Обратная ссылка может быть вставлена ​​как часть подписанного сообщения с подписью пользователя, поэтому ее нельзя изменить без закрытого ключа пользователя. Это все равно что фотографировать на заднем плане газету New York Times. Поскольку это сообщение содержит хеш 0xdeadc0de, мы знаем, что оно было сгенерировано после создания счетчика 510144806912.

Но поскольку сообщение также вставляется обратно в поток «Proof of History», оно выглядит так, как будто вы сделали фотографию с фоном New York Times, а на следующий день New York Times опубликовала это фото. Мы знаем, что содержание этой фотографии существовало до и после определенного дня.

Верификация

Хотя записанная последовательность может быть сгенерирована только на одном ядре процессора, выходные данные могут быть проверены параллельно.

Parallel VerificationПараллельная проверка

Каждый записанный срез данных может быть проверен от начала до конца на отдельных ядрах за 1/(количество ядер) времени, которое потребовалось для генерации. Таким образом, современный графический процессор с 4000 ядрами может проверить секунду за 0,25 миллисекунды.

ASICS

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

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

Мы используем SHA256, благодаря Биткоину было проведено значительное исследование в области ускорения криптографической хэш-функции. Эту функцию невозможно ускорить, используя большую площадь матрицы, например, с помощью таблицы поиска (Look Up Table) или развернув ее без влияния на тактовую частоту. Intel и AMD выпускают потребительские чипы, которые могут выполнить полный цикл SHA256 за 1,75 цикла.

Поэтому у нас есть довольно сильная уверенность в том, что пользовательский ASIC не будет в 100 раз быстрее, не говоря уже о 1000 раз. Скорее всего, он будет в пределах 30% от доступной производительности сети. Мы можем создать протоколы, которые используют эту границу и позволяют злоумышленнику лишь очень ограниченную, легко обнаруживаемую и недолговечную возможность для DoS-атаки. Подробнее об этом в следующей статье!

Код

solana-labs/solana
solana — High Performance Blockchaingithub.com

Если вам нравится rust и cuda, и вы хотите построить самый быстрый блокчейн в мире, пожалуйста, свяжитесь с нами hello@solana.com

Внедрение в Solana метода Proof of History, наряду с такими инновациями, как Tower BFT, Proof of Replication и Gulf Stream, в совокупности создают самый производительный блокчейн в мире. Тестет Solana работает уже сегодня. Вы можете посмотреть его по адресу http://explorer.solana.com/. В целях экономии мы используем только несколько узлов. Однако во многих случаях мы распространили его более чем на 200 физических отдельных узлов (не на совместно используемом оборудовании) в 23 центрах обработки данных в AWS, GCE и Azure для сравнительного анализа.

Среда выполнения также работает уже сегодня, разработчики могут развернуть код в тестовом режиме уже сейчас. Сегодня разработчики могут создавать смарт-контракты на C, мы активно работаем над набором инструментов для Rust. Rust будет основным языком для разработки смарт-контрактов Solana. Набор инструментов Rust общедоступен как часть Solana Javascript SDK, мы продолжаем работу над пакетом разработки ПО.

Вскоре Solana запустит общедоступную бета-версию, стимулирующую валидаторов для запуска узлов через Tour de SOL — аналог «Game of Stakes» у Cosmos, которая ставит перед общественностью задачу протестировать пределы сети Solana, зарабатывая при этом токены.