Обновление проекта Zilliqa # 20 — Прогресс в основных технических характеристиках, функции безопасности Scilla

Оригинал статьи взят из https://blog.zilliqa.com/zilliqa-project-update-20-progress-in-core-tech-features-scilla-safety-features-36861dbde366
Переведено @hvoinui

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

В сфере деловых партнерств мы активно участвуем на мероприятиях во всем мире и тратим много времени на тесное сотрудничество с разработчиками. На прошлой неделе мы были в Токио, чтобы провести семинары по теме реализации умных контрактов на языке Scilla с разработчиками из DMM.com, LayerX и Infoteria.

В связи с большим количеством вопросов, возникающих у нашей аудитории мы решили провести Live AMA на нашем канале Telegram 15 ноября 15:00 SGT. Чтобы узнать больше о Zilliqa или обсудить технические аспекты проекта, не стесняйтесь связываться с нами через любой из наших официальных каналов ниже:

Telegram: https://t.me/zilliqachat
Slack: https://invite.zilliqa.com/
Twitter: https://twitter.com/zilliqa
Reddit: https://www.reddit.com/r/zilliqa/
Github: https://github.com/Zilliqa/zilliqa
Gitter: https://gitter.im/Zilliqa/ (Dev-related topics including the Ecosystem Grant)

Прошедшие события

Октябрь выдался для команды достаточно напряженным месяцем, что обусловлено большим количеством мероприятий и семинаров во многих странах. Мы провели последние несколько недель месяца в Барселоне, Токио, Франкфурте и Джакарте. Примечательно, что мы провели семинары по языку программирования на Scilla в Токио с разработчиками из DMM.com, LayerX и Infoteria.

Мы напрямую работали с разработчиками из LayerX и DMM.com, чтобы обсудить структуру и преимущества создания умных контрактов в Scilla.
Ong En Hui, глава BD, выступила в Токио.
Макс Кантелия выступил на Crypto Economy World 2018 в Барселоне.
Джузар Мотиулла, председатель Zilliqa, в качестве участника Tech in Asia Jakarta 2018.

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

Ноябрь будет для нас более размеренным периодом, поскольку мы сделаем усилия над технической разработкой сети.

Основные мероприятия в этом месяце:

7–9 ноября — Гонконг. Digital Media Asia 2018

9 ноября — Пекин, Китай. Zilliqa выступит на Tsinghua — Scaling Public Blockchain and Mass Adoption in Gaming

12–13 ноября — Сингапур. Семинар по блокчейну и кибербезопасности

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

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

  1. Выбор GPU для PoW Mining.

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

2. Вознаграждение

Еще одна особенность, необходимая для блокчейна, — это распределение вознаграждений между узлами. В версии, которую мы внедрили, сборы, генерируемые обработкой транзакций, накапливаются в общей сумме вознаграждений. Затем вознаграждения затем выдаются в течение последней эпохи транзакций, которую мы называем пустой эпохой, поскольку мы отказываемся обрабатывать транзакции в эту эпоху — как раз перед началом следующего раунда заявок в формате PoW. Для поддержки этой функции в транзакционный Micro Block добавлено новое поле, представляющее совокупную стоимость газа для шардов.
Затем комитет DS может суммировать комиссионные со всех микроблоков и выполнить распределение вознаграждений. По соображениям безопасности аналогичная область также была добавлена ​​в транзакционный заключительный блок. Таким образом, плата за газ за каждую эпоху становится частью консенсуса по заключительному блоку.

Верификация транзакций PoW

Решение DS Block, объявленное руководителем комитета DS, содержит предлагаемую структуру шардов для следующей эпохи DS. Если эта структура не будет тщательно проверена резервными DS-узлами, злоумышленный узел может претендовать на роль лидера и объявить недействительную структуру шардов. Поскольку все шарды DS должны распознавать все узлы шардов из своих подтвержденных представлений PoW, имеет смысл использовать эти представления в качестве основы для генерации и проверки структуры шардов. Генерация структуры теперь следует строгому порядку, основанному на хеше последнего блока транзакций и результата PoW каждого узла.

Резервный механизм

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

Переводчик Scilla

Анализ денежных потоков: Scilla был разработан с учетом безопасности, и с этой целью мы работаем над новой функцией безопасности, которая может обнаруживать неучтенные средства в контракте и, следовательно, потенциально обнаруживать утечку средств. Более конкретно, мы в настоящее время внедряем статический анализатор контрактов Scilla, который отслеживает поток денег по контракту. Мы называем это анализом денежных потоков. Основная идея анализа денежных потоков заключается в том, что некоторые контракты используют «поле» (изменяемую переменную состояния) для отслеживания того, для чего должны использоваться деньги контракта. Например, контракт на кикстартер может захотеть отслеживать, сколько денег вкладывает каждый вкладчик, чтобы деньги могли быть возвращены, если цель не была выполнена. Если деньги, отслеживаемые контрактом, не соответствуют балансу контракта, что-то может быть в формировании самого контракта,
и идея заключается в том, чтобы выдать предупреждение разработчику контракта, если такое несоответствие найдено. Не все контракты отслеживают деньги таким образом, поэтому, если окажется, что контракт нарушает анализ, это приведет лишь к предупреждению. Действительно, некоторые контракты могут хотеть отслеживать больше денег, чем текущий баланс. Например,
некоторые контракты с кошельком захотят отслеживать все транзакции, которые не были подписаны шардами, независимо от того, достаточно ли денег в контракте, чтобы их выплатить. Первый прототип анализа планируется завершить в ближайшие пару дней. Однако этот прототип не сможет обрабатывать библиотечные функции, и будет иметь ограниченную поддержку «ADT`s». Полный анализ будет поддерживаться позже, опираясь на этот прототип. Чтобы поддержать анализ денежных потоков, нам пришлось сначала внедрить базовую инфраструктуру, которая будет сообщать о предупреждениях.

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

Инструменты для разработчиков

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

  • отсрочка для подтверждения транзакций, чтобы предотвратить излишнее агрессивное использование сети в средах с ограниченной пропускной способностью.
  • (WIP) преобразование функций ручного кодирования / декодирования в их эквиваленты Protobuf, поскольку ядро ​​Zilliqa переходит в gRPC / Protobuf в качестве основного формата.
  • внедрение BIP-0032, BIP-0039 и BIP-0044, чтобы клиентские разработчики могли полагаться на `zilliqa-js` для всех функций, вместо того, чтобы программировать свои собственные. Обратите внимание, что `coin_type` все еще не определился и, следовательно, теперь используется значение placeholder.
  • исходная внутренняя спецификация для базовой фильтрации журналов смарт-контрактов возможна через дополнительный API RPC, «GetLogs».
  • по умолчанию кодирование / декодирование промежуточного программного обеспечения для «HTTPProvider».

О Zilliqa в СМИ

Технический анализ Zilliqa, наш подхода к шардингу, языку программирования Scilla, и сравнение с Ethereum: https://medium.com/on-the-origin-of-smart-contract-platforms/on-the-origin-of-zilliqa -1b1afc344aa7

Статья о верификации в смарт-контрактах, в которой упомянуты Zilliqa и Scilla: https://blockonomi.com/formal-verification-smart-contracts/

Различные независимые статьи о Zilliqa: