Возможно ли сделать так, чтобы любой желающий мог безопасно писать код прямо в кабинете электронного правительства?
Введение
Электронное правительство (англ. e-Government) — способ предоставления информации и оказания уже сформировавшегося набора государственных услуг гражданам, бизнесу, другим ветвям государственной власти и государственным чиновникам, при котором личное взаимодействие между государством и заявителем минимизировано, и максимально возможно используются информационные технологии.
Умный контракт (англ. Smart contracts) — электронный алгоритм, описывающий набор условий, выполнение которых влечет за собой некоторые события в реальном мире или цифровых системах. Для реализации умных контрактов требуется децентрализованная среда, полностью исключающая человеческий фактор, а для возможности использования в умном контракте передачи стоимости требуется криптовалюта.
Сторонники умных контрактов утверждают, что многие виды договорных отношений могут быть частично или полностью “самовыполняемыми” и самодостаточными. Умные контракты, основанные на криптографии, способны обеспечивать лучшую безопасность, чем традиционные контракты, основанные на праве, и снизить прочие трансакционные издержки, связанные с заключением договоров и возможными судебными издержками.
“Слишком высокие трансакционные издержки могут помешать осуществлению экономического действия. Социальные и государственные институты позволяют снизить эти издержки при помощи формальных правил и неформальных норм.”
Мы все движемся к тому, что с каждым годом эти самые трансакционные издержки становятся всё меньше и меньше за счет создания различных платформ вроде “Алибабы”, возможности коммуникации через мессенджеры, взаимодействие с правительством посредством веб-сайтов и т.д.
Учитывая, что смарт-контракты позволяют снизить издержки, логично предположить, что они тоже совсем скоро войдут в нашу жизнь также как в неё вошли смартфоны, соц сети, e-Government, дистанционное образование, удаленная работа. Всё, что снижает издержки рано или поздно становится мейнстримом.
Смарт-контракты
Со смарт-контрактами в Эфириуме и пр. есть проблема, которая сводит на нет все их преимущества. Если вы вписались в какой-то неправильный контракт, то вы “попали”. Так же, как “попали” участники The DAO. Но тогда к решению проблемы подключились разработчики Эфириума во главе с его основателем Виталиком Бутериным, по сути, взяв на себя функции верховной власти. Виталик предложил проголосовать: вернуть деньги пострадавшим или оставить всё как есть. Представьте, что какому-то бизнесмену говорят, что ему нужно заключить договор на $1 млрд, но если вдруг что-то пойдет не так и в договоре найдется опечатка, то 23-х летний гражданин Канады Виталик Бутерин во всем разберется и урегулирует ситуацию.
Решать такие вопросы должны не разработчики ПО, а законно избранные в вашей стране органы власти или независимая от государства судебная система (в разных странах по разному).
Но эта проблема не должна решаться “в лоб”.
Губернатор Аризоны подписал исторический закон о смарт-контрактах и технологии блокчейн.
Впереди идет кобыла в виде классической законодательной системы и тянет за собой смарт-контракты, условия использования которых прописываются в бумажных договорах.
Hyperledger, Corda(R3) — что это и для чего они нужны?
Если кратко, то для того, чтобы компании или банки, которые друг другу не доверяют, могли обмениваться какими-то данными. Заменить их обычным центральным сервером и логированием вполне можно. Если центральным сервером будет владеть какой-нибудь крупный банк, которому все доверяют, то это еще лучше, т.к. не нужно тратить деньги на поддержание инфраструктуры.
Самый главный недостаток Hyperledger, Corda в том, что они объединяют компании в разные не связанные между собой группы. Написать смарт-контракт, который будет работать с данными разных групп, уже будет невозможно (если только через костыли в виде ввода данных в контракт в ручном режиме или через специальный сервер, собирающий данные из внешних источников), т.е. при выходе за пределы виртуальной машины возникает такая же проблема как у Эфириума. Создание глобального объединения в Hyperledger и Corda не предусмотрено, так как платы за ресурсы в них нет, да и архитектура под это не заточена.
e-Government на блокчейне
В этой новости можно увидеть, казалось бы, что-то инновационное. Но представьте, что документы будут храниться не на сервере e-Government, а на серверах департаментов. Для поддержания этих серверов нужно нанимать специалистов, платить за канал, за электричество, обновлять вышедшее из строя оборудование и прочее. Это конечно хорошо, что подделать скан-копию документа никто не сможет, но ведь и на серверах e-govenrment вероятность такой подделки также не высока. При таком подходе ОАЭ может потратить к 2020 огромные суммы денег, а получить не сокращение издержек, а их увеличение.
Цифровая экономика в РФ
Мне довелось побывать на одном мероприятии в АСИ, посвященном цифровой экономике. Сложилось впечатление, что правительство понятия не имеет, что такое цифровая экономика и как её строить. После этой новости стало очевидно, что никакого плана по созданию цифровой экономики нет, и его должна придумать собранная рабочая группа.
Электронное правительство РФ:
Вот в такую архитектуру планируется встроить цифровую экономику. Состоит всё из огромного количества баз данных в разных ведомствах. По отзывам людей, достоверность данных ужасающая, чтобы показать хорошую статистику цифры постоянно исправляются. Всё это управляется законами, которые, как многим известно, противоречат друг другу и принимаются в огромных количествах в Думе. Чтобы оно всё хоть как-то работало, требуется колоссальное количество чиновников.
Оптимальная архитектура
Представьте, что есть возможность всё построить с нуля. Как должно выглядеть само ядро архитектуры, чтобы трансакционные издержки можно было снизить до минимально возможных значений, при этом обеспечив должный уровень безопасности самой системы.
В нашем варианте архитектуры мы видим 4 основные колонны:
1. Смарт-контракты
Смарт-контракты для решения такой задачи — очень полезный инструмент, который надо использовать. Но для того, чтобы использовать этот инструмент оптимальным образом, необходим еще один инструмент в виде государства — оно должно взять на себя ответственность по созданию институтов, которые будут разрешать возможные спорные ситуации.
Супер-права
Граждане наделяют государство такими правами во время выборов, если, конечно, форма правления не монархическая :)
Сами смарт-контракты, из которых будет строиться весь бэкенд электронного правительства, у нас выглядят так:
data/conditions/action — тут, думаю, всё примерно понятно, это есть и у Эфириума и прочих. По сути, просто программный код. А вот условия изменения можно разобрать подробнее.
На обычном
Оплата потребляемых ресурсов
Кто будет платить за работу смарт-контракта? Смарт-контракт может иметь циклы и запросы к БД с миллиардом строк.
У нас каждый контракт привязывается к какому-то кошельку. В случае с РФ это будет кошелек с рублями. У кошелька может быть много владельцев. Причем владельцы могут быть временными, например, чиновники. Поэтому, у таких кошельков в “условиях для списания средств” указывается смарт-контакт, который может проверить наличие человека в каком-то реестре и после этого списать средства. Благодаря этому, к смарт-контракту можно привязать кошелек какого-нибудь департамента/фонда и пр. Внутри самого контакта можно списать средства с того, кто его вызывает (если эту сумму списания одобрил вызывающий).
Пример смарт-контракта, который просто обновляет данные в реестре граждан:
Чтобы изменить такой контракт необходимо пройти проверку, которая происходит в MainConditions. При выполнении контракта, средства за ресурсы спишутся с кошелька 0875-3553-1112-8181-5545.
2. Реестры
Если вы пользуетесь классической СУБД, то при выключенном логировании можно смело менять данные через консольку и никто этого не заметит — главное договориться о доступе к серверу в e-Government. Чтобы снизить вероятность такого происшествия, требуется серьезная регламентация на физическом уровне, которая, говорят, часто не соблюдается.
У нас эта проблема решается на уровне ядра.
Точно также, как и со смарт-контрактами, устанавливаются права — права на изменение, просмотр, добавление новых строк, колонок. А ели нет прав, то и изменить/посмотреть ничего не получится. Исключение — супер-права. И любое действие записывается в блокчейн.
3. Интерфейсы
Для дополнительной безопасности интерфейсы надо тоже контролировать. Иначе, если кто-то получит доступ к серверу, где нет VCS, то сможет подменить формы ввода данных, а затем замести следы.
Необходимо учитывать, что эти страницы будут создавать не только государственные органы, но и компании, и простые граждане. Компания может захотеть создать каталог товаров. Кто-то создаст площадку, где граждане смогут продавать свои товары. Кто-то создаст аналог “Алибабы”, каталог собственников жилья и т.д. и т.п.
Оплата потребляемых ресурсов
Вот тут есть одна проблема. Каждый запрос к БД должен кем-то оплачиваться. Если за это будет платить гос-во, то что произойдет, если кто-то будет постоянно вытягивать из БД сотни миллионов строк, нагружая при этом сервера? Логично предположить, что платить должен создатель страницы или группа создателей (как за обычный облачный
4. Блокчейн
Читатели, которые хорошо знакомы с технологией блокчейн, наверняка задаются вопросом — а кто будет нодами?
Хранить государственные данные в открытом виде на данный момент неприемлемо. Даже если мы их зашифруем и снаружи оставим только ID, то по истории транзакций можно будет понять, кто есть кто. Лично я убежден, что будущее за открытым блокчейном, но в текущих реалиях допустим пока только закрытый тип.
Нода — это ЦОД, блоки подписываются по очереди раз в секунду. Кол-во ЦОД должно быть более трех. Если их будет 2, тогда в случае вилки невозможно будет понять, у кого верные данные, придется пересобирать базу данных с самого первого блока.
То есть, если кто-то захочет через консольку записать в БД x=1, там где x было 0, а потом обратиться к этому значению из кода смарт-контракта, то на всех остальных нодах транзакция просто не пройдет, а в тот момент, когда в коде контракта кто-то пропишет if x==0, то скомпрометированная нода не сможет принять такой блок, в то время как остальные примут, в итоге те, кто принял, будут работать в своей ветке блокчейна, а скомпрометированая нода в своей, что на маршрутизаторе отобразится в виде разных хэшей.
Интересный вопрос — кто будет собственником ЦОД — гос-во или частная компания?
Итог
Государство сможет настроить права доступа к реестрам, создать смарт-законы для работы с ними и наблюдать, как компании и граждане будут строить вокруг них свои проекты, создавать новые формы бизнеса, различные платформы, ERP и т.д.
Благодаря тому, что данные невозможно подправить, будут получаться достоверные отчеты, на основе которых можно будет делать прогнозы, проводить оптимизации и прочее, используя AI. Приватные ключи можно выдавать не только людям, но и девайсам, чтобы IoT не оставался в стороне и работал внутри единого информационного пространства.
Заключение
В данной статье я описал архитектуру, которая позволит внедрить смарт-контракты в e-Government, что может привести к значительному сокращению бюрократии и ускорению всех экономических процессов.
Я надеюсь, что этот материал и наши разработки (которые, кстати, open-source) будут в каком-то виде полезны и ими воспользуются люди из этого списка.
Если Вы считаете, что в нашей архитектуре чего-то не хватает, пожалуйста, пишите.
Автор: Олег Стреленко