Рубрика: Новости

История CEO BlockCypher о бедах эфириума и «больших, страшных нодах» Виталика Бутерина

Из-за хардфорка Constantinople аналитический сервис BlockCypher временно остался без API эфириума. В своей статье на Medium CEO BlockCypher Кэтрин Николсон объясняет, почему это произошло, какие уроки из этого можно извлечь, и что это в целом говорит об экосистеме эфириума.

Эфириум объявил о хардфорке Constantinople в середине декабря 2018 года — он должен был состояться 15 января 2019 года. Разработчики эфириума заявили, что «предстоящий форк станет наименее насыщенным событием в истории эфириума». Мы не согласились: хардфорк влиял на сотни исходников. Следуя инструкциям Ethereum Foundation мы активно начали готовится к этому событию. Подготовка также предполагала изменения в наших резервных копиях. Мы работали во время рождественских каникул и завершили работу на первой неделе января 2019 года.

Мы думали, что были готовы.

8 января: что-то пошло не так.

В ночь на 8 января мы поняли, что что-то не так с данными эфириума, но мы не знали, что именно. Мы получили ошибку, которая говорила, что пропал какой-то небольшой фрагмент данных. Состояние эфириума довольно загадочная вещь — все данные хэшируются в дереве — и мы не могли понять, что именно было не так.

Мы попытались провести несколько процедур восстановления — безуспешно. Мы продолжали получать ошибку отсутствующих данных (нода префиксного дерева, Trie).

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

Сразу отвечу на возможные вопросы:

  • Почему быстрая синхронизация не сработала? Потому что она включает в себя только небольшое подмножество данных всего блокчейна. Чтобы обеспечить надёжную работу с нашими API, нам нужны все данные.
  • Почему мы не сделали резервную копию состояния перед обновлением Constantinople? Мы сделали, но она было частично повреждена восстановлением. Кроме того, состояние эфириума не является базой данных, которая может быть просто скопирована и исправлена. Это не может быть сделано, когда нода эфириума онлайн, это не может быть сделано постепенно (а ещё это весит больше терабайта).

Урок №1: Состояние эфириума сильно отличается от состояния других блокчейнов. Его нельзя восстановить никаким традиционным методом резервного копирования.

Начался долгий, очень долгий путь к полной синхронизации

12 января мы начали «полную» синхронизацию состояния эфириума, которое весило более 2 терабайт. Зная размер, с которым нам придётся работать, мы обзавелись самыми ёмкими из доступных машин, чтобы ускорить синхронизацию. Это не очень помогло. Наши проблемы усугублялись тем, что в этом процессе нет прозрачности, — мы не знали о нашем статусе в обновлении и не имели никакой информации по обновлению наших клиентов.

Мы остались в беспомощном ожидании.

14 января — за день до предполагаемого харфорка Constantinople — всё отменилось. По-видимому, аудит безопасности обнаружил уязвимость, которая может позволить потенциальному злоумышленнику украсть криптовалюту из смарт-контракта. Отмена в последнюю минуту стала невероятно деморализующей для нас. Если бы мы ждали активации Constantinople ПОСЛЕ того, как он вступил в силу, мы бы сэкономили невероятное количество времени и средств… и наш API эфириума работал бы.

Урок №2: не планируйте заранее обновления эфириума. Подождите, пока они не произойдут.

А через две недели мы узнали, что «полная» синхронизация на самом деле не является восстановлением полного состояния.

Через две недели наше состояние эфириума было восстановлено, но это не было концом наших бед. Как оказалось, полная синхронизация по умолчанию НЕ включает полное состояние Trie. Если вы делаете полную синхронизацию, почему настройка по умолчанию НЕ включает всё? Это не поддается логике. Нашей следующей задачей было выяснить, как добавить состояние Trie в наше «полное» состояние.

Виталик, помоги!

Изучив все возможные способы добавления состояния Trie в наше состояние эфириума, мы попросили Виталика о помощи. Его первый комментарий к нам был: «О, вы одни из немногих, кто управляет одной из этих больших, страшных нод». Мы спросили его, знает ли он кого-нибудь, кто управляет «большой, страшной нодой», чтобы посмотреть, сможем ли мы синхронизироваться с ним. Он никого не знал, даже Ethereum Foundation не хранит полную архивную копию эфириума. Мы снова запустили полную синхронизацию, на этот раз с включенным состоянием Trie.

Урок №3: В случае реорганизации сети мы, возможно, единственные, кто знает всю историю транзакций эфириума.

Что мы делаем, чтобы это не повторилось?

Нам стало ясно, что состояние эфириума сильно отличается от любого другого блокчейна: нет возможности откатить блоки, нет простого восстановления состояния и нет простого способа резервного копирования состояния. Как только мы с этим разобрались, возник вопрос: как мы можем предотвратить это в будущем? Краткий ответ: с этого момента мы будем ждать до тех пор, пока не вступит в силу обновление эфириума, чтобы обновить резервные копии. Более длинный ответ заключается в том, что мы сделали непрерывное ступенчатое дублирование состояний, чтобы нам больше никогда (тук-тук по дереву) не пришлось выполнять полную синхронизацию.

Как мы уже видели много раз, блокчейны сталкиваются с трудностями роста. Некоторые из блокчейнов более проблемны, и мы получили очень болезненный урок с Constantinople. Когда хардфорк был наконец-то активирован 28 февраля, это было почти легко!

Источник

[ ОБСУДИТЬ НА ФОРУМЕ ]

Coinspot

Недавние сообщения

Как это устроено: блокчейн – принцип работы, сферы применения и перспективы

Блокчейн сегодня прочно занял место в цифровой экономике и стал неотъемлемой частью финансового и технологического…

3 недели тому назад

Мемкоины: от шуток в интернете до многомиллиардного рынка

Криптовалюты давно стали частью финансового мира, однако не все активы этого цифрового пространства имеют серьезное…

2 месяца тому назад

Как это устроено: MicroBT Whatsminer M60S+ 200 TH/s

В последние годы майнинг криптовалют становится все более сложной и высококонкурентной деятельностью. Постоянно появляются новые…

3 месяца тому назад

Обучение трейдингу криптовалют: назначение, возможности и советы экспертов

Криптовалюты стали неотъемлемой частью современного финансового рынка, привлекая внимание не только инвесторов, но и новичков,…

3 месяца тому назад

Знакомьтесь, Стейблкоин: стабильность в мире криптовалют

В эпоху цифровой экономики и стремительного развития криптовалют стейблкоины становятся важным элементом финансовой экосистемы. Эти…

3 месяца тому назад

Как это работает: изучение английского языка по аудиокнигам

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

3 месяца тому назад