🌐 Релиз EOS.IO DAWN 2.0 + отчёт о разработке
Нами был выпущен EOS.IO Dawn 2.0 вместе с публичной тестовой сетью, которая будет поддерживаться командой block.one. Этот релиз обеспечивает альфа-имплементацию большей части оставшихся функций, выход которых изначально был намечен на 21 декабря 2017 года. Как гласит наша дорожная карта, “Фаза 2 — минимально жизнеспособная тестовая сеть” осенью 2017 года должна продемонстрировать:
- Код P2P сети
- Санацию Wasm и CPU “песочницу”
- Отслеживание использования ресурсов / его ограничение
- Тестирование импорта Genesis
- Коммуникация между блокчейнами
На сегодняшний день мы смогли добиться первичной реализации большинства этих функций, однако по причине ведения параллельной разработки наша имплементация коммуникации между блокчейнами в данный момент существует на отдельной ветке, которая не будет использоваться в исходной версии тестовой сети.
Заинтересованные в испытании производительности нашего релиза EOS.IO Dawn 2.0 могут найти весь код блокчейна и сети, необходимый для запуска и работы собственной сети, в нашем репозитории на Github. Наше внутреннее тестирование показывает, что мы способны поддерживать несколько тысяч трансферов в секунду и 1-секундные блоки, используя нашу однопоточную имплементацию на оборудовании со средними возможностями. Тем не менее, нам известны векторы атак, для которых пока не внедрены решения. Например, в первый раз компиляция новых контрактов может занять до 34 мс, что может быть использовано злоумышленником для фрагментации сети при скорости транзакций свыше 30 TPS.
Наше решение этой проблемы — установить ограничения на частоту, с которой может обновляться код контракта, равно как на и время задержки между тем, когда код обновляется, и когда этот новый код может быть задействован при транзакции. Эта временная задержка будет составлять порядка 60 секунд, чтобы позволить всем производителям блоков скомпилировать/кэшировать оптимизированные инструкции x86 из сетевой сборки.
Из-за этих незакрытых векторов атаки тестирование производительности останется задачей для личных тестовых сетей, но тестирование функций теперь может выполняться в публичной тестовой сети, которую мы искусственно ограничиваем до 30 TPS для обеспечения доступа и бесперебойной работы.
В течение последующих 6 месяцев мы продолжим постоянное тестирование и настройку сети в целях повышения её стабильности и производительности.
Новые особенности Dawn 2.0
Тестирование импорта Genesis
Мы внедрили инструмент моментального снимка (снапшота), который импортирует исходное состояние на основе распределения токенов EOS ERC-20 в сети Ethereum. В нашу тестовую сеть будет включены только балансы, зарегистрированные действительным публичным ключом EOS. Около 20% токенов ERC-20 были зарегистрированы надлежащим образом с использованием публичного ключа EOS. Инструмент моментального снимка также включает в себя инструмент резервирования для всех незарегистрированных токенов ERC-20 на счету аккаунта в Ethereum, при помощи которого мы можем восстановить публичный ключ из подписанных транзакций в сети Ethereum. Эта функция применима к 99% всех токенов EOS ERC-20, но для осуществления ввода и вывода она требует импортировать ваш приватный Ethereum-ключ в ваш кошелек EOS.IO.
В целях безопасности наша тестовая сеть не будет запрашивать у пользователей импорт приватных Ethereum-ключей, восстановленных с помощью процесса резервирования. Если ваш приватный ключ EOS был скомпрометирован во время тестирования, вы всегда можете зарегистрировать новый ключ в сети Ethereum.
Краны токенов
Также мы внедрили функцию “крана”, чтобы позволить тестировать сеть тем, у кого еще нет токенов или зарегистрированного действительного публичного ключа EOS.
Ограничение на использование ресурсов и скорость
Мы установили ограничение базовой скорости и отслеживание использования ресурсов. Оно следит за использованием пропускной способности, хранилища базы данных и вычислительных мощностей. На данный момент были обнаружены некоторые баги в нашем алгоритме ограничения скорости, но ничто из этого не может серьезно помешать тестированию и разработке приложений.
Нам известно, что многие люди запрашивали больше информации о том, как будет действовать ограничение скорости, кому будет выставлен счет, и каким образом сдавать в аренду свои токены для получения дохода.
Пропускная способность
Все транзакции потребляют часть максимальной пропускной способности сети в соответствии с настройками производителей блоков. Все аккаунты, полномочия которых необходимы для транзакции, получают среднюю за 3 дня пропускную способность, увеличенную в соответствии с размером транзакции. Пропускная способность требует, чтобы авторизующий аккаунт (а не контракт) обладал долей токенов, либо получил токены, делегированные поставщиком приложения.
Вычислительная способность
Все транзакции требуют определенных вычислений. Вычисление может выполняться параллельно, поэтому его можно сравнить с многополосным шоссе, на каждой полосе которого существует свой трафик. Каждая область (полоса) будет иметь свой собственный, независимый лимит скорости, а пользователю будет выставлен счет O(S^2) за требуемое ему количество параллельных областей (полос) и установлено ограничение скорости в зависимости от наиболее перегруженной области.
Хранилище базы данных
Контракты EOS.IO имеют доступ к размещенной в памяти базе данных, в которой они могут хранить информацию о состоянии приложения. Контракт формируется и рассчитывается на основе общего объема хранимых данных, а также постоянного коэффициента накладных расходов для каждой отдельной записи базы данных. Эта база данных в памяти является независимым и отдельным от EOS.IO протоколом хранения для децентрализованного массового размещения и хранения данных.
Код P2P сети
У нас есть базовая реализация кода mesh-сети, которую можно увидеть в нашей публичной тестовой сети. block.one использует 21 независимый сервер, каждый из которых настроен с одним из первоначальных производителей.
EOS Dawn 3.0
Бесконечное масштабирование и бесконечная децентрализация
Святой Грааль технологии блокчейн — это обеспечение защищенной связи между двумя независимыми блокчейнами, не требующей от блокчейнов заверения всей информации друг друга. Для этого необходимо, чтобы один блокчейн был легким клиентом другого блокчейна.
Легкие клиенты проверяют подлинность транзакций, используя только заголовки блоков и доказательства Меркла. EOS.IO станет первым протоколом proof-of-stake с поддержкой валидации для легких клиентов. Но гораздо важнее то, что он — единственный, кто способен генерировать proof-of-completeness (доказательство полноты). Это означает, что будет возможно доказать получение всех соответствующих предыдущих сообщений от другой цепи в верном порядке без периода задержки/ожидания.
И если обычно легким клиентам нужно обрабатывать все заголовки блоков, то EOS.IO позволит им обрабатывать заголовки блоков только при смене производителей, или когда потребуется новое сообщение из более позднего блока. Это позволит реже, но эффективнее обмениваться информацией между цепочками наряду с частым обменом. В худшем случае оверхэд при коммуникации между двумя блокчейнами каждые 500 мс составит примерно 2 транзакции в секунду сверх общего количества отправленных сообщений.
Согласно этой модели коммуникация будет надежна и безопасна, пока как минимум ⅓ производителей является честной. Более того, если даже один производитель нечестен, то он может быть автоматически наказан, если подпишет любое сообщение, потенциально способное навредить легкому клиенту (т.е. другому блокчейну).
И, наконец, время приема-передачи для коммуникации с другим блокчейном зависит от задержки до необратимости каждой цепи. Цепочки на основе EOS.IO будут способны отправить сообщение другой цепочке EOS.IO и получить криптографически заверенный ответ менее чем за три секунды.
Такой уровень коммуникации и безопасности между блокчейнами позволяет создавать между цепями двусторонние привязки с очень низкой задержкой. В то время как двусторонняя привязка является наиболее очевидным примером, любая B2B-коммуникация может быть выполнена с использованием этого же метода.
Публичная / Приватная коммуникация
С интерчейн-коммуникацией у приватных блокчейнов появится возможность поддерживать безопасную двустороннюю связь с публичными блокчейнами. Это позволяет создавать различные блокчейн-приложения, для которых не подходит публичный характер традиционных блокчейнов. Например, кто-нибудь сможет создать швейцарский банк среди блокчейнов, который будет супер-секретным для всех, кроме владельцев банка и определенного круга лиц.
Достижения в разработке
Для того, чтобы выпустить свою публичную тестовую сеть, мы разбили нашу разработку на два параллельных пути, дабы реорганизовать значительную часть нашего кода для читабельности, производительности и коммуникации между блокчейнами. Работа по рефакторингу проводится в ветке eos-noon.
В предыдущих обновлениях мы обозначали наше намерение сосредоточиться на архитектурах с общей памятью, чтобы позволить разработчикам легко выполнять синхронный доступ на чтение и атомарные транзакции с другими контрактами. Следствием такого подхода стала потеря горизонтального масштабирования при испытаниях за пределами единственной высококлассной машины.
С EOS Dawn 3.0 мы будем восстанавливать способность производить мульти-машинное горизонтальное масштабирование, используя для этого до 65 000 разных областей. Все области будут использовать одни и те же аккаунты и код контракта, но останутся независимыми в базах данных памяти. Контракты в пределах одной области должны использовать асинхронные транзакции для связи со своими ответными сторонами в других областях. С подобной архитектурой единичный производитель блоков может быть имплементирован в качестве кластера.
Рабочая интеграция с Apple Secure Enclave
В нашем последнем обновлении мы заявили о намерении поддерживать ту же эллиптическую кривую, что и Apple, Android и многие другие смарт-карты. Наша ветка eos-noon теперь включает в себя полностью функциональный proof-of-concept, в котором на последних MacBook Pro сообщения подписываются и проверяются при помощи Touch ID (а также Face ID). Аналогичный код работает в нативных приложениях для iPhone. Это означает, что мобильные приложения на базе EOS.IO станут одними из самых надежных блокчейн-кошельков среди существующих аналогов.
Кроме того, ветка eos-noon уже интегрировала эту поддержку для разного типа подписей, что дает возможность использовать secure enclave для подписания транзакций, которые будут подтверждены в eos-noon.
Подтверждение блока за 500 мс
В нашей ветке eos-noon мы внедрили ряд изменений в базовую структуру DPOS с целью поддержки 500 мс-блоков (2 блока каждую секунду). Это новшество значительно повысит отзывчивость децентрализованных приложений. Для достижения этого мы внесли некоторые изменения в процесс планирования выпуска блоков.
Один и тот же производитель теперь будет производить 12 блоков подряд, прежде чем передать процесс следующему производителю. Данное правило решает одну из главных трудностей производства — переход между производителями. В новой структуре внезапная задержка может привести к тому, что при каждой передаче будет пропущено несколько блоков, но подтверждения между передачами должны быть очень быстрыми. Мы будем экспериментировать с различными периодами передачи. Чем они дольше, тем меньше пропущенных блоков во время нормальной работы, но тем дольше будет простой, если одна из нод повиснет. Со скоростью 500 мс и передачей 12 блоков “время простоя” не будет хуже, чем, например, когда один производитель в Steem или BitShares пропускает один блок. В таком случае первое подтверждения может занять до 6 секунд.
Удаление "запасных" производителей
Интер-блокчейн коммуникация требует, чтобы легкие клиенты отслеживали все блоки, в которых изменяется набор активных производителей. “Список запасных производителей” требует ежеминутного добавления или удаления нового производителя, что заставляет легкие клиенты обрабатывать как минимум один заголовок блока в минуту, если не больше. В целях снижения частоты изменения набора производителей мы преобразовали планирование блоков включением в него только топ-21 производителя. Мы рассматриваем вариант включения какой-то выплаты для таких запасных производителей, но в действительности они не будут заниматься производством блоков.
Односекундная необратимость
Каждый производитель блоков подписывает каждый блок, что позволит сделать блок необратимым, как только ⅔+ производителей подписали его. Производителям разрешается подписывать только один заголовок на всю цепочку блоков. В случае форка это не позволит производителям подписывать блоки одного порядка на обоих форках. Любая такая подпись будет являться криптографическим доказательством проступка производителя, на который можно отреагировать при помощи разных методов, включая автоматическую потерю позиции производителя, потенциальную потерю связи и потенциальную ответственность за причиненный ущерб после арбитража.
В отличие от других протоколов, которые собирают ⅔+ подписей перед созданием следующего блока, DPOS EOS выполняет оптимистичную конвейерную обработку, которая позволяет блокчейну развиваться и в “состоянии ожидания” во время сбора подписей. Эти дополнительные подписи происходят вне блокчейна и могут быть отсечены после того, как блок стал необратимым в соответствии с традиционными правилами DPOS Steem или BitShares.
В рамках этой модели можно добиться византийской отказоустойчивости, поскольку получение ⅔+ подписей для любого блока без криптографического доказательства византийских нод представляется невозможным.
Устранение перетасовки графика производителей
Для снижения количества пропущенных во время передачи блоков желательно свести к минимуму задержку между следующими друг за другом производителями. Если согласно графику производитель в Нью-Йорке следует за производителем из Китая, то может потребоваться 250 мс для получения блока в нормальных условиях (50% интервала между блоками) и, возможно, гораздо дольше в случае перегруженности сети. С другой стороны, производители из Нью-Йорка и Техаса будут иметь задержку всего в 50 мс (10% интервала между блоками). Это означает, что вероятность пропуска блоков во время передачи из Нью-Йорка в Техас будет значительно ниже, чем в случае передачи из Нью-Йорка в Китай.
Если мы запланируем производство блоков таким образом, чтобы оно циркулировало из Нью-Йорка в Техас, а затем в Калифорнию, на Гавайи, в Японию, Китай, Индию, Израиль, Италию, Англию, Исландию и обратно в Нью-Йорк, то ни на одном из участков передача не займет больше 50–100 мс. Однако если порядок будет рандомизирован, то среднее время передачи значительно увеличится.
Перетасовка производителей была введена для того, чтобы один производитель не мог навредить последующему. В мире, где производители считались потенциально вредоносными, подобное сопрягалось с риском, но в мире проверенных, публичных производителей с высококачественными центрами обработки данных дела обстоят иначе. Существует конституция и установленные правила поведения, а также процесс разрешения споров в тех случаях, когда один из производителей умышленно причиняет вред своему соседу.
В рамках EOS производители будут голосовать за порядок ротации производства таким образом, чтобы свести к минимуму среднюю задержку и предельно снизить общее количество пропущенных блоков из-за загруженности сети интернет.
Известные проблемы
Существует ряд известных проблем с EOS Dawn 2.0, и ожидается, что в раннем релизе будет присутствовать заметная нестабильность. Цель этого релиза заключается в том, чтобы продемонстрировать базовые возможности, и в течение последующих 6 месяцев наша команда будет устранять ошибки и повышать показатели стабильности и производительности.
Чтобы поддержать стабильность тестовой сети, мы отключили голосование за производителей.
Заключение
Мы хотели бы поблагодарить нашу команду разработчиков со всего мира за круглосуточную работу по созданию и выпуску EOS Dawn 2.0, альфа-версия которого станет самой надежной, высокопроизводительной и наиболее децентрализованной платформой для приложений среди всех существующих. Мы работаем в соответствии с опубликованной нами дорожной картой и реализуем больше функций и возможностей, чем планировали изначально. Мы с нетерпением ждем 2018 года и уверены в том, что к моменту завершения распределения токена EOS все функции будут завершены, а ошибки – устранены.
Дисклеймер
block.one является компанией-разработчиком ПО и выпускает программное обеспечение EOS.IO в качестве бесплатного программного обеспечения с открытым исходным кодом. Это программное обеспечение может позволить тем, кто его устанавливает, запустить блокчейн или децентрализованное приложение с функциями, описанными выше. block.one не будет запускать публичный блокчейн на основе программного обеспечения EOS.IO. За реализацию функций и/или предоставление услуг, описанных выше, по своему усмотрению, будут нести ответственность исключительно третьи стороны и сообщество, а также те, кто захочет стать производителями блоков. block.one не гарантирует, что кто-либо будет реализовывать эти функции или предоставлять такие услуги, или что программное обеспечение EOS.IO будет принято и применено каким-либо определенным образом.
Все заявления в этом документе, за исключением заявлений об исторических фактах, включая любые заявления о бизнес-стратегии block.one, ее планах, перспективах, разработках и целях, являются лишь прогнозными заявлениями. Эти утверждения носят сугубо предсказательный характер и отражают текущие убеждения и ожидания block.one относительно будущих событий, которые основаны на предположениях и подвержены рискам, неопределенностям и изменениям в любое время. Мы работаем в быстро меняющейся среде. Время от времени появляются новые риски. Учитывая эти риски и неопределенности, мы предостерегаем вас от всецелого полагания на эти прогнозные заявления. Фактические результаты, производительность или события могут существенно отличаться от тех, которые содержатся в прогнозных заявлениях.
Некоторые из факторов, которые могут привести к существенным отличиям фактических результатов, производительности или событий от прогнозных заявлений, содержащихся в настоящем документе, включают в себя, без ограничений: волатильность рынка; постоянную доступность капитала, финансирования и персонала; принятие продукта; коммерческий успех любых новых продуктов или технологий; конкуренцию; государственное регулирование и законы; а также общие экономические, рыночные или деловые условия. Любое прогнозное заявление, сделанное block.one, актуально только в дату его публикации, и block.one не несет никакой ответственности и прямо отказывается от каких-либо обязательств по обновлению или изменению своих прогнозных заявлений, будь то в результате появления новой информации, последующих событий или иных факторов.
Оригинал поста: ЗДЕСЬ