Zilliqa: двухнедельный отчет #26 — Последнее тестирование перед запуском Mainnet

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

Это обновление проекта является особенным: это последнее обновление проекта перед запуском основной сети Zilliqa 31 января, оно отождествляет годовщину от момента генерации токенов (TGE), и  что наиболее важно для нас — представляет целый год работы  команды Zilliqa.

Предстоящие События

Мы рады сообщить, что в первой половине года мы будем участвовать в ряде мероприятий в Азии, Европе и США и будем расширять этот список по мере подтверждения информации.

January

Февраль

  • ETHDenver | 15–17 февраля | Денвер, Колорадо
  • Developer Week  | 20–22 февраля | Сан-Франциско, Калифорния

Во время этого мероприятия мы будем проводить двухчасовой семинар для разработчиков, надеемся увидеть там некоторых из вас!

Март

Апрель

Май

Проверка внешнего кода

Чтобы гарантировать надежность нашего кода, мы привлекли нескольких аудиторов для нескольких раундов аудита безопасности кода основного протокола Zilliqa и реализации криптографии с августа 2018 года. В число этих аудиторов входит Beijing Zhenyuan Cybersecurity Co. Ltd, Cure53, группа Kudelski и NCC Group, все из которых являются экспертами в области криптографии и цифровой безопасности. Мы искренне благодарим их за профессиональные услуги и орошую обратную связь, они очень помогли нам повысить безопасность и надежность нашей кодовой базы. Мы будем постепенно выпускать аудиторские отчеты в течение следующих нескольких недель.

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

Технические обновления

В течение последних двух недель мы работали над совершенствованием механизма вознаграждения, механизма обновления сети Zilliqa / Scilla, многочисленных улучшений безопасности и прокси майнинга. В течение следующих двух недель мы будем заниматься улучшением кода и доработкой параметров для основной сети.

Усовершенствование механизма вознаграждения

В оригинальной модели механизма стимулирования Zilliqa сеть вознаграждает только узлы, которые успешно проверяют транзакции и подписывают блоки с помощью платы за монету / газ. Однако, основываясь на отзывах, полученных майнинг сообществом, мы решили предоставить 25% от платы за монеты / газ в качестве базового вознаграждения всем узлам, которым удалось успешно представить квалифицированные результаты PoW. Оставшиеся 70% вознаграждений будут по-прежнему распределяться поровну на основе количества действительных подписей, представленных всеми проверяющими узлами. Последние 5% пойдут на начальные / поисковые узлы для предоставления услуг, таких как помощь новым узлам в сети, выполнение переадресации / назначения транзакций, обеспечение хранения исторических данных и обслуживание запросов JSON-RPC.

ПРИМЕЧАНИЕ. Уровень эмиссии за вознаграждение за майнинг установлен на уровне 4% в течение первого года, следовательно, текущий COINBASE_REWARD_PER_DS в настоящее время установлен на уровне 191780,82 ZIL. Обратите внимание, что COINBASE_REWARD_PER_DS будет подвергаться изменениям в зависимости от среднего времени эпохи DS в тестовой сети, собранного в течение следующей недели.

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

Обновление сети Zilliqa / Scilla

Для нашего предыдущего механизма обновления мы поддерживаем только однократное обновление стороны протокола Zilliqa, но не интерпретатора Scilla. Теперь мы обеспечиваем модернизацию сети с помощью протокола Zilliqa и интерпретатора Scilla, а также поддержку нескольких версий, что обеспечивает обратную совместимость интеллектуальных контрактов и состояний Scilla.

Обновления безопасности

Чтобы предотвратить атаку в стиле воспроизведения, например, в основной сети воспроизводится действительная транзакция в тестовой сети, мы используем первую половину идентификатора версии транзакции для CHAIN_ID, чтобы отличить основную сеть от других тестовых сетей. Это помогает нам определить, предназначена ли данная транзакция для тестовой сети или для основной сети.

Чтобы гарантировать, что в пределах сегмента будут только действительными транзакции, мы применяем схемы подписи ко всем транзакциям. Теперь все транзакции подписываются и проверяются перед отправкой и получением. Мы также применяем дополнительные проверки, чтобы проверить, действительно ли публичный ключ в сообщении соответствует IP / порту хоста отправителя. Далее мы рассмотрели наши реализации различных типов сообщений и применили проверку подписи для них, например, DSMicroBlockSubmission, LookupSetDirectoryBlocksFromSeed и DSPowPacketSubmission.

Чтобы предотвратить получение узлом огромного количества данных от вредоносных узлов и исчерпание его оперативной памяти, мы применяем водяной знак к байтам для чтения с другого узла и помещаем в черный список отправителя. На этапе согласования мы дополнительно проверяем, есть ли идентификатор / IP-адрес отправителя в списке членов комитета, и игнорируем дубликаты сообщений, чтобы защитить буфер согласованных сообщений и избежать принятия неограниченного количества сообщений.

Удаленный / двойной майнинг

Поскольку наше окно PoW составляет всего 1 минуту в течение 2-3 часов (для 1 эпохи DS), двойной майнинг является логичным выбором для всех майнеров, то есть 99% времени безотказной работы для майнинга ETH / GRIN и 1% безотказной работы на майнинг ZIL. Чтобы упростить этот процесс, мы помогли нашему разработчику сообщества, Галли, разработать Zilminer. Zilminer позволяет майнерам удаленно добывать Zilliqa как в Ubuntu, так и в ОС Windows по протоколу Getwork. Вы можете подключить Zilminer только к одному клиенту узла ЦП (работающему в Ubuntu), как показано ниже в варианте 1, или к кластеру клиентов узлов ЦП (работающему в Ubuntu) через открытый исходный сервер Zilliqa-Mining-Proxy, как показано в варианте 2.

Zilminer также обеспечивает удобство в майнинге ZIL, поскольку он автоматически раскручивает ваши графические процессоры, когда наступает время для окна PoW в Zilliqa, и приостанавливает их, когда узлы ЦП выполняют процесс согласования pBFT в Zilliqa. Поэтому, если вы хотите настроить процессы двойного майнинга, вы можете просто запустить одновременно программное обеспечение Zilminer и ethminer на своих графических процессорах. Тем не менее, обратите внимание, что если вы используете майнинг ZIL и ETH одновременно, ваши графические процессоры должны иметь vRAM 4 ГБ, чтобы соответствовать как размеру DAG ZIL (~ 1,02 ГБ), так и размеру DAG ETH (~ 2,84 ГБ).

Вариант 1. Настройка множества установок графического процессора на 1 узел

ЦП Узел Zilliqa будет работать на 1 ЦП и достигать консенсуса pBFT для получения вознаграждений. Установки GPU будут запускать Zilminer в отдельном кластере GPU, чтобы выполнять майнинг PoW и предоставлять решения PoW непосредственно узлу CPU.

Вариант 2. Настройка множества установок GPU для множества узлов

ЦП Узлы Zilliqa будут работать в кластере ЦП для обработки транзакций и достижения консенсуса pBFT для получения вознаграждений. Установки GPU будут запускать Zilminer на отдельном кластере GPU для майнинга PoW и предоставления решений PoW через прокси-сервер Mining для кластера CPU. Прокси-сервер Mining будет обрабатывать запрос на майнинг из кластера ЦП и обрабатывать регистр / отклик Mining из кластера GPU.

Интерпретатор Scilla

За последние две недели мы внесли небольшие изменения в язык и интерпретатор.

К ним относятся: Предоставление ​​неявной переменной (_this_address) для контрактов Scilla для доступа к собственным адресам. Изменено отслеживание газа в Scilla для использования Uint64, а не целых чисел. Удалены встроенные функции генерации и подписи ключей для Schnorr и ECDSA, чтобы запретить использование закрытых ключей в контракте.  Стоимость теперь будет основана только на фактической вычислительной работе, определенной для перехода. Удалена встроенная команда dist и добавлена более общая встроенная функция to_int: ByStrX -> Uint256 when X <= 32 Реализована dist как библиотечная функция в zil-game на основе новой встроенной функции.

Мы также добавили несколько новых проверок в scilla-checker:

типы сообщений, созданных для отправки и событий. Это позволяет средству проверки выдавать ошибки, когда сообщение, созданное для отправки, используется для события. Расширена проверка событий / сообщений, для проверки записи библиотеки.  предупреждение, когда контракты не используют доступ к Map.

Как было объявлено в последнем двухнедельном обновлении, первая версия объявлений пользовательских типов (ADT) в Scilla готова. Пользовательские ADT допускают объявления типов, подобные тем, которые разрешены в OCaml, хотя у нас пока нет поддержки индуктивных типов (типов, которые ссылаются на себя, например, деревьев) или полиморфных типов. Мы добавили пример использования пользовательских ADT в форме простой реализации игры сёги или японских шахмат (https://en.wikipedia.org/wiki/Shogi) в Scilla.

Средства разработки и библиотеки

Поскольку mainnet не за горами, мы начали готовиться к предстоящему обмену токенами. Как упоминалось ранее, чтобы лучше помогать биржам, которые будут поддерживать обмен токенов, мы уже добились значительного прогресса в следующих двух SDK за последние две недели с помощью нашего сообщества:

  • LaksaJ: Java-порт zilliqa-js
  • LaksaRuby: Ruby-порт zilliqa-js

Другие SDK для поддержки C и Python также находятся в разработке и будут запущены в ближайшее время. Двигаясь вперед, мы намерены продолжать вкладывать значительные средства в варианты интеграции для различных стеков и разработчиков. В связи с этим мы также уточнили наши планы относительно окна обмена токенами. После запуска основной сети Zilliqa мы настоятельно призываем всех держателей ERC20 ZIL обратить внимание на наши общедоступные каналы связи для получения инструкций о том, как и когда вы сможете поменять временные ZIL на нативные ZIL на Zilliqa.