Важным аспектом современных технологий является защита информации. Борьба с мошенничеством, кражей и фальсификацией данных всегда будет актуальной, так как ежесекундно по всему миру происходит неисчислимое количество обмена данными: от обычных сообщений в мессенджерах и прослушивания музыки до банковских транзакций.
До настоящего времени информацию защищали благодаря соединению HTTPS, различными методами шифрования (RSA, SHA-256 и другие) и хэширования (MD5, CRC32). Но не так давно была разработана новая концепция – blockchain, которая позволяет защитить данные на основе вычислительных мощностей.
Блокче́йн (англ. blockchain) – выстроенная по определённым правилам непрерывная последовательная цепочка блоков, содержащих информацию [1]. Данная технология впервые была реализована в криптовалютах. Ее смысл заключается в следующем: каждый блок в цепочке – специальная структура, хранящая данные о текущей транзакции, хэш предыдущего блока и текущего. Таким образом формируется непрерывная цепь блоков, где каждый последующий блок имеет данные обо всех ранее совершенных операциях, а присутствие хэшей позволяет проверить целостность данных при их добавлении или просмотре [2]. И, по сути, данная технология является паттерном для реализации распределенной базы данных – каждый такой блок хранится у отдельного клиента, создавшего этот блок.
Данную технологию уже внедряют в свои сервисы фирмы-гиганты, государственные органы и другие учреждения, такие как: Microsoft, IBM, Nestle, а также банки по всему миру, в том числе и в России [3].
Для реализации надежной платформы для создания блоков необходимо выбрать мощный инструментарий. Первое, что важно – это выбор языка программирования. При выборе языка следует обратить внимание на несколько факторов:
Скорость обработки запросов.
Скорость «общения» с памятью (как с оперативной, так и с накопителем).
Наличие средств работы с большими вычислениями.
Простота работы с данными в программном смысле (сама реализация работы с большими вычислениями, приведение типов, динамические структуры, строгая типизация данных и т.д.)
Основными конкурирующими языками в решении данной задачи будут являтьсяCSharp, Java, Python, C++. Каждый из них имеет свои плюсы и минусы, но та или иная реализация зависит лишь от знаний и навыков программиста при работе с конкретным языком. Стоит лишь отметить общие их различия.
C++ более быстр по сравнению с остальными, так как более приближен к "железу". Также он поддерживает ассемблерные вставки – блоки кода, напрямую выполняющиеся процессором.
Java – язык, заточенный под кроссплатформенную разработку. Программы, написанные на нем, работают на виртуальных машинах, что значительно влияет на скорость работы.
Python имеет огромный математический инструментарий, а CSharp – язык, позволяющий с легкостью писать мощные приложения под ПК (а с недавних пор и для мобильных телефонов).
Сама задача упрощается тем, что существуют сервисы по управлению блоками подобных систем от известных фирм (например, IBM), которые упрощают разработку в разы путем предоставления данного функционала [4]. Задачей разработчика остается лишь создание удобной для пользователя оболочки.
В России blockсhain получил применение в роли распределенного хранилища транзакций в нескольких областях страны в земельном кадастре и других государственных органах [5]. Хоть технология появилась не так давно, она считается актуальной, так как предоставляет большую защищенность данных, нежели обычные шифровальные алгоритмы.
Список литературы:
1. Хабр (habr): https://habr.com/company/lanit/blog/352464/
2. Майнинг биткойнов (mining-bitcoin): https://mining-itcoin.ru/interesting/ tehnologiya-blokchejn-chto-eto
3. Новости о биткойнах (bitnovosti): https://bitnovosti.com/2017/03/02/chto-takoe-tehnologija-blokchein-posagovoe-rukovodstvo-dlja-novichkov-1/
4. Финансовые технологии (fintech): http://fintech-ru.com/15-вариантов-применение-технологии-бло
5. Новости криптовалют (ecrypto): https://ecrypto.ru/blokchejn/gde-v-rossii-primenyayut-blokchejn-spisok-kompanij-i-organizatsij.html