Реализация диалога с блокчейн (Blockchain) с помощью запросов HTTP сервера
М.В. Смирнов
Основные положения связанные с технологией блокчейн (Blockchain), революционные ожидания и перспективы использования, широко представлены в Интернет, например [1-4]. Даже Сбербанк анонсировал блокчейн-лабораторию для исследования новых технологий на основе блокчейн. Вместе с тем, вопросы программной реализации на практическом уровне слабо затронуты [5,6]. Для реализации блокчейн можно использовать любой язык программирования с функциями криптографии - JavaScript, Perl, Python, C#, PHP. В блокчейн применяется достаточно простая криптография (md5, SHA1, SHA256) [7,8].
Наибольшую популярность блокчейн приобрел со стремительным ростом интереса к криптовалютам, и в частности к Bitcoin, который представляет собой лишь надстройку блокчейн-технологии.
Если говорить кратко, блокчейн представляет собой неизменяемую последовательность неразрывно связанных друг с другом записей - цепочку. Записи, в принцпе, могут быть любые в зависимости от прикладной задачи.
Записи имеют криптографическую защиту - хэши. Общей для всех видов реализаций блокчейна является цепочка хешей, составленная таким образом, что каждая последующая запись содержит хэш предыдущей записи.
На базе блокчейн может быть реализованы такие распределенные данные как складская логистика, имущественные права, системы голосования, тендеры и аукционы, интеллектуальная собственность, кадастровый учет итп. Транспортным протоколом блокчейн могут послужить правила файлового обмена в пиринговых сетях (P2P), которые обеспечивают непосредственное взаимодействие между компьютерами при передаче данных (файлов) без участия посредников. Примером могут послужить файлообменники, торренты, мессенджеры, FTP протокол. Вместе с тем, клиент-серверная архитектура HTTP вполне может использоваться для организации "диалога" с блокчейн. Выполнение диалога с блокчейн реализуем на примере списка операций по карте VISA SBERBANK-ONL@IN.
Во избежание конфликтных ситуаций ограничим перечень участников купли-продажи, и обозначим их как senders. Senders будут являться составляющими (атрибутами) консенсуса.
для перебора которого используется простой цикл [9].
В ряде случаев перебор данных в цикле не желателен. Более удобный вариант - ассоциативный массив
$Block[key] = value
,
устанавливающий соответствие между значением и ключом.
Его можно использовать как обычный массив, список (вектор), хэш-таблицу с ассоциативным доступом по ключу, словарь, очередь, реестр:
Каждая запись содержит текущий хэш, хэш предшествующей записи, порядковый индекс, денежную сумму, время создания, данные отправителя (sender).
Первая запись является жестко заданной «генезис-блоком» (genesis.Block).
Наличие предшествующей записи обеспечивает неизменность цепочки.
Если будет поврежден какой-либо блок, то абсолютно все последующие будут содержать неверные хэши. При этом, чтобы убедиться, что запись изменена, достаточно сравить хэш-суммы.
Рассматриваемая, весьма упрощенная, модель диалога с блокчейн реализована на основе обычного HTTP протокола и имеет три ступени:
Step 1. Создание блокчейн реестра операций
Step 2. Добавление записи блокчейн
Step 3. Проверка достоверности и сохранение блокчейн
И так приступим:
Источники:
[1] Что такое блокчейн, и как это работает - https://revolverlab.com/
how-its-works-
blockchain-6d0355c43bfc
[2] Перспективы применения блокчейн в музыкальной индустрии - https://vc.ru/19431-music
-blockchain
[3] Что такое блокчейн простыми словами - https://prostocoin.com/
blog/blockchain-guide
[4] Основы блокчейн. Интеллекция Александра Иванова, Waves Platform - https://www.youtube.com/
watch?v=zPiiTFvdx4E
[5] Блокчейн за 200 строк кода: пример простой реализации на JavaScript - https://tproger.ru/translations
/blockchain-explained/
[6] Изучаем блокчейн на практике - https://habrahabr.ru/company
/everydaytools/blog/339280/
[7] Криптография в блокчейнах: о хеш-функциях, ключах и цифровых подписях - https://habrahabr.ru/company/
bitfury/blog/327272/
[8] Source code for webtoolkit.sha256.js - http://www.webtoolkit.info
/javascript_sha256.html#.
WlxiJq5l-XI
[9] Как создать своими руками рабочий прототип блокчейн - https://cripto24.ru/blokchejn
-tehnologii/kak-sdelat-
blokchejn-svoimi-rukami