Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXXXIV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 12 декабря 2019 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Паршакова А.М. ФОРМАЛЬНАЯ ВЕРИФИКАЦИЯ СМАРТ-КОНТРАКТОВ В БАНКОВСКОЙ СФЕРЕ // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXXXIV междунар. студ. науч.-практ. конф. № 12(83). URL: https://sibac.info/archive/technic/12(83).pdf (дата обращения: 20.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ФОРМАЛЬНАЯ ВЕРИФИКАЦИЯ СМАРТ-КОНТРАКТОВ В БАНКОВСКОЙ СФЕРЕ

Паршакова Александра Михайловна

студент 5 курса, кафедра КИБЭВС Томский государственный университет систем управления и радиоэлектроники,

РФ, г. Томск

Романов Александр Сергеевич

научный руководитель,

канд. техн. наук, доцент кафедры БИС, Томский государственный университет систем управления и радиоэлектроники,

РФ, г. Томск

В современное время смарт-контракты активно применяются в финансовом секторе, в том числе в банковской сфере. Применение смарт-контрактов является одной из перспективных областей автоматизации предоставления банковских услуг. Так британский банк Barclays использовал смарт-контракты для проведения сделок [1].

В то же время смарт-контракты привносят и дополнительные риски за счет основных свойств своей работы. Одним из таких свойств является неизменность, то есть после того, как смарт-контракт попал в блокчейн-сеть, его нельзя изменить [2]. Данное свойство является как и преимуществом смарт-контрактов, что позволяет сторонам точно знать, что параметры не будут изменены, так и недостатком. Например, разработчик может внести уязвимости в работу смарт-контракта или неправильно трактовать спецификации к разработке, что может привести к логическим ошибкам.

Так как смарт-контракты не применяются повсеместно в банковской сфере вопрос верификации смарт-контрактов является важным аспектом обеспечения информационной безопасности

Целью данной работы является составление модели смарт-контракта, для проведения формальной верификации, определение необходимости проведения формальной верификации смарт-контрактов в банковской сфере.

В ходе работы составлена модель, с помощью которой проводилась формальная верификация смарт-контракта, реализующего функцию кредитования, проведено тестирование с использованием инструментов, находящихся в открытом доступе [3].

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

Приведем реализацию функций данного смарт-контракта на языке программирования Solidity:

function getDebt() public view returns(uint, uint, uint)

{

        return (reqAmount, minAmount, paidAmount);

}

function paidDebt() onlyDebtor inState(State.Active) condition(paidAmount < (reqAmount - minAmount)) public payable

  {

paidAmount = paidAmount + minAmount;

debtor.transfer(minAmount);

}

function closeDebt() onlyDebtor inState(State.Active) condition(paidAmount > (reqAmount - minAmount) && paidAmount < reqAmount) payable publiс 

{

state = State.Close;

paidAmount = paidAmount + (reqAmount - paidAmount);

          debtor.transfer(reqAmount - paidAmount);

}

Состоянием смарт-контракта (кредита) охарактеризуем как Active (кредит открыт) и Close (кредит закрыт). 

На основании работы [4], из всех перечисленных данных составлена модель смарт-контракта, рисунок 1, в виде графа переходов состояний, где ребра являются функциями смарт-контракта, вершины являются состояниями смарт-контракта. Причем переход, при вызове функции, возможен при выполнении условий, описанных в спецификации. 

 

Рисунок 1. Модель смарт-контракта

 

В результате тестирования смарт-контракта (без ошибок) инструментами, находящимися в открытом доступе, выявлены уязвимости, представленные в таблице 1. Данные уязвимости могут быть исправлены во время разработки программистом. 

Таблица 1. 

Результаты тестирования смарт-контракта

Инструмент

Результат тестирования

Remix

Gas requirement of function closeDebt() high: infinite.

Gas requirement of function paidDebt() high: infinite.

Use assert(x) if you never ever want x to be false, not in any circumstance (apart from a bug in your code).

SmartCheck

Hardcoded address

Compiler version not fixed

Prefer external to public visibility level

Implicit visibility level

 

Далее рассмотрены логические ошибки, которые могли быть совершены в процессе разработки программистом, таблица 2, cмарт-контракты с данными ошибками не проходят формальную верификацию с помощью описанной модели.

Таблица 2. 

Логические ошибки

Место ошибки

Ошибка

Результат воздействия

Функция paidDebt

paidAmount = paidAmount - minAmount

При первой оплате paidAmount становится максимально большим, в дальнейшем функции становятся недоступные

Функция closeDebt

paidAmount < (reqAmount - minAmount)

Можно досрочно закрыть кредит не погашая долг

Функция paidDebt

paidAmount > (reqAmount - minAmount)

Все функции недоступны

 

В результате тестирования смарт-контрактов с ошибками, данными инструментами не было выявлено недоступности функций или ошибок выхода значения переменной из допустимых границ, таблица 3.

Таблица 3. 

Результаты тестирования смарт-контрактов с ошибками

Место ошибки

Ошибка

Результат воздействия

Функция paidDebt

paidAmount = paidAmount - minAmount

Не выявлено

Функция closeDebt

paidAmount < (reqAmount - minAmount)

Не выявлено

Функция paidDebt

paidAmount > (reqAmount - minAmount)

Не выявлено

 

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

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

 

Список литературы:

  1. Смарт-контракты: аналит. обзор, окт. 2018, Центральный банк РФ. — М.: [не указано], 2018. — 22 с.
  2. Андреева Ю. А., Сафарьян О. А. Создание и тестирование смарт-контракта // Молодой исследователь Дона. —   2019 —   № 3 (18). —  С. 84-88.
  3. Angelo, Monika Di and Gernot Salzer. A Survey of Tools for Analyzing Ethereum Smart Contracts. // IEEE International Conference on Decentralized Applications and Infrastructures (DAPPCON). —   2019. — P. 69-78.
  4. Шишкин Е.С. Проверка функциональных свойств смарт-контрактов методом символьной верификации модели // Труды Института системного программирования РАН. —  2018. — № 30(5). — С. 265-288.
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.