2. Высшая школа экономики, Москва, 2015
Объект, предмет, цель и задачи исследования
• Объект исследования - умный контракт, используемый в
компании CoinOffering для децентрализованного
управления акциями юридического лица.
• Предмет исследования – демонстрация применимости
методов формальной верификации
• Цель работы – продемонстрировать применимость
методов формальной верификации к разработке умных
контрактов.
Задачи
• Анализ инструментов формальной верификации
• Провести первичный анализ кода контракта
• Построить математическую модель контракта
• Описать модель на языке WhyML
• Провести формальную верификацию свойств модели
3. Высшая школа экономики, Москва, 2015
Математическая модель умных контрактов и цепочки блоков
• Идеи умных контрактов были представлены еще в 1994 году Ником Сабо
(Nick Szabo).
• Реальная возможность для имплементации умных контрактов появилась с
изобретением технологии цепочки блоков в статье Сатоши Накамото (2009)
• Цепочка блоков – распределенно хранимое дерево изменения
состояния (state transition) системы с экономической мотивацией
применения только корректных транзакций
• APPLY(S, TX) −> S′ or ERROR
• APPLY({ Alice: $50, Bob: $50 }, "send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }
• APPLY({ Alice: $50, Bob: $50 }, "send $70 from Alice to Bob") = ERROR
4. Высшая школа экономики, Москва, 2015
Методы формальной верификации
• Одна из первых работ из
области – Robinson:
Resolution Theorem
Proving (1965)
• Толчок в развитии ФВ –
Clarke & Emerson: Model
Checking (1981)
• 1990-2000 гг-
коммерческая адаптация
технологии: IBM, Intel
создают внутренние
разработки
• Практический подход –
код рассматривается как
математическая модель.
• Имея только код сказать
можно не много, поэтому
необходимы
дополнительные
условия.
• Код рассматривается как
система переходов,
состоящая из конечных и
бесконечных переходов.
Бесконечные переходы
нужно аннотировать
инвариантами
5. Высшая школа экономики, Москва, 2015
Запись математической модели
• Основная работа по верификации – составление модели и ее запись в
машиночитаемом формате для доказательства.
• Множество инструментов: Isabelle, Z3, Yices, Rodin, Why3
• Для моделирования выбран Why3 c языком записи модели WhyML:
• Использование всех типов ML и переменных
• Использование логики предикатов
• Возможности объявления изменяемых
(mutable) полей в структурах
• Объявление алгебраических инвариантов
• Использование программных конструкций
• Редактирование изменяемых полей
• Условные переходы
• Циклы
• Исключения
• Анонимные функции
• Аннотации: пред- и постусловия, операторы
контроля (assertions), инварианты циклов.
7. Высшая школа экономики, Москва, 2015
Формальная верификация и умные контракты
• Предметно ориентированный язык контрактов (DSL)
• Транзакции – чистые функции
• Строгая типизация
• Высокие требования к безопасности (DAO Problem)
• Невозможность редактирования кода после инициализации контракта
• Простота кода (сложность выполнения повышает стоимость)
8. Высшая школа экономики, Москва, 2015
Построение математической модели контракта
• Контракт предназначен для децентрализованного управления акциями и
голосования:
• Структуры данных:
• Общее количество акций.
• Словарь балансов пользователей
• Словарь проголосовавших держателей
• Функции:
• Перевод средств со счета на счет
• Проголосовать за предложение
• Подсчет результатов голосования
• Инварианты:
• Сохранение общего количества акций при передаче
• Контроль количества проголосовавших акций
9. Высшая школа экономики, Москва, 2015
Запись модели контракта (Token Contract)
Состояние:
constant total : int
type state = {
mutable _balance: array uint256
}
Функция передачи:
let transfer (_from : Address.address) (_to : Address.address) (_val : uint256) (this : account) :
account
Предусловия:
assert { 0 <= Address.to_int _to };
assert { Address.to_int _to <= Address.max_address };
Инвариант:
invariant {self.storage._balance.length = Address.max_address + 1 / BalanceSum.sum
self.storage.balance 0 (Address.max_address + 1) = total }
13. Высшая школа экономики, Москва, 2015
Заключение
• Основные результаты работы:
• Реализация алгоритма контроля акций и голосования в виде умного
контракта
• Построение математической модели цепочки блоков и умных
контрактов
• Формальная верификация некоторых свойств математической модели
• Потенциальные пути для дальнейшей деятельности
• Расширение использования средств языка WhyML в верификации
более сложных структур данных
• Формализация правил трансляции с языка Solidity на язык WhyML
• Расширение функциональности существующего транслятора.
14. 101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru