Как мы проводим свободное время - 2. Хакатон по технологии BlockChain и интеграция в корпоративный мессенджер ZERO

25.06.18

Интеграция - Мессенджеры и боты

Продолжая развивать наш мессенджер и исследовать технологию BlockChain, которой были посвящены наши хакатоны, мы постепенно подбираемся к пониманию того, зачем это все нам надо (и , возможно, вам, уважаемые читатели, тоже). P.S.: Текст содержит интимные подробности, которые могут вызвать "течь крыши" из-за сопутствующей тематике сложности, так что будьте осторожны и храните себя.

Добрый день, уважаемые завсегдатаи и гости портала!

Мне всегда интересно рассказывать что-то, что я накопал в платформе 1С или около нее, и куда более интересно освещать те темы, которые находятся на границе технологического фронта. Технология BlockChain и мессенджеры как раз где-то тут и обитают.

Причиной данной публикации стал проведенный нами хакатон, посвященный мобильной платформе 1С и технологии BlockChain, которую мы изучали на базе продуктов HyperLedger. Обо всем этом и пойдет речь.

HYPERLEDGER

Итак, что же это такое. Я изначально ошибочно полагал, что вот это и есть некий блокчейн от IBM. Но, как оказалось, HyperLedger - это консорциум, в который помимо IBM входят многие другие ведущие IT-компании. Кстати, среди премьер-участников этого консорциума есть и SAP, а еще Xiaomi, Deloit, Oracle, Сбербанк, PwC ну и Intel (не говоря уже о прочих, не менее известных компаниях). А вот сам блокчейн от HyperLedger - это HyperLedger Fabric, который, кстати, является не единственной реализацией этого самого блокчейна. О его архитектуре и архитектуре нашего решения, использующего Fabric, мы и поговорим далее.

FABRIC

По-сути - это и есть хранилище цепочек связанных блоков. Процесс общения клиентского приложения с блокчейном можно отразить этой вот картинкой:

Итак, немножко погрузимся в детали. Эту картинку я честно скопипастил вот отсюда.

Деталь номер раз: информация в блокчейне делится на участников, транзакции и активы. Т.е. есть отдельные объекты, описывающие все это. Получается некий регистр накопления: участники - это измерение, актив - это ресурс, а транзакция - это проводка. Все как в 1С (или в 1С все, как у нормальных людей :), но Вы можете помещать в блокчейн любые так называемые assets - пары "ключ-значение", которые впоследствии можете использовать в качестве контекста смарт-контракта.

Деталь номер два: как и в любом блокчейне, в Fabric есть ноды. Но они делятся на ноды с различным функционалом. Во-первых, это ноды "orderer", которые сортируют входящие пакеты от "пиров" и формируют очередной блок транзакций. Также они будут вызывать все "пиры", если клиент сам их не обошел и не подтвердил консенсус. "Пиры" - это ноды, которые "коммитят" транзакции, выполняют смарт-контракты и хранят копию книги (под книгой тут понимается как раз цепочка связанных блоков - тот самый blockchain, в нашем случае это Ledger - главная книга или гроссбух). Кстати, помимо самой книги, "пиры" хранят в себе этакий "срез" активов - аналог таблицы остатков регистра. И есть еще MPS-ноды - "Membership Providers Service", выполняющий функции контроля доступа.

Деталь номер три: есть такая штука, как FABRIC CLIENT (мы используем вариант генерации REST-сервиса с помощью инструмента COMPOSER), через который происходит общение с блокчейном. Фактически клиент авторизуется на REST-сервисе и вызывает функцию смарт-контракта, а уже REST-сервис дергает все пиры, в настройках которых указано, что они участвуют в формировании консенсуса. По-сути, на каждом "пире" отрабатывает контракт, и при отсутствии расхождений в результатах данные передаются в "ordered" в виде собранной REST-сервисом транзакции.

Деталь номер четыре: HyperLedger Fabric изначально разрабатывался, как решение для корпоративного сегмента, которое не предполагает публичного использования (в отличие от блокчейна ETH и BC), поэтому владельцы пиров, ордеров и прочих сервисов инфраструктуры HyperLedger'а должны договориться друг с другом и обменяться сертификатами, т.е. невозможно просто так установить у себя ноду и подключиться к сетевой инфраструктуре конкретного блокчейна. Также, т.к. настройки сети хранятся в genesis-блоке, то для расширения ее новыми нодами необходимо произвести достаточно непростые манипуляции: получить genesis-блок, изменить его, получить разницу и задеплоить транзакцию, изменяющую genesis-блок, в книгу, после чего сгенерировать сертификаты и передать их новой ноде. Т.е. без приглашения сюда прийти невозможно.

СМАРТ-КОНТРАКТ

Когда я только погрузился в тему блокчейна, я совершенно не воспринимал идею смарт-контрактов. "Зачем?" - думал я. Но с ходом времени все устаканилось. Может быть помогло участие в проекте seti@home, который посвящен поиску сигналов от братьев по разуму и суть которого сводилась к распределенным вычислениям, т.е. к обработке пакета сигналов с aresibo и других обсерваторий и передаче результатов расчета в центральный узел исследовательского проекта. Суть смарт-контракта в том же самом: получить из блокчейна информацию, обработать ее в соответствии с переданными вызывающей стороной параметрами и сформировать транзакцию, изменяющую тот или иной актив (ресурс нашего регистра).

Смарт-контракт для Fabric можно создать на различных языках. В прошлом году я изучал возможности Etherium - блокчейна от Виталика Бутерина, и Solidity - языка смарт-контрактов для Etherium. Там контракт был просто набором некоторого машинного языка EVM - Etherium Virtual Machine, который выполнялся на нодах и результат выполнения которого создавал ту самую транзакцию, меняющую те самые "активы" (ячейки памяти 256-битного адресного пространства 256-битной карты памяти EVM, т.е. по каждому адресу у нас слово длинной в 256 бит). В Fabric практически все то же самое - контракт может оперировать своими переменными, активами (в "эфире" актив - это баланс кошелька контракта и sender'а, а в Fabric активов может быть произвольное количество - они определяются в конфигурационном файле связанных нод). Но, в отличие от Etherium, контекст экземпляра объекта смарт-контракта должен быть извлечен из блокчейна в коде самого контракта, для чего в нем есть методы объекта "shim" PutState, который сохраняет состояние в цепочке транзакций, и GetState, восстанавливающий состояние из цепочки транзакций.

Т.е. смарт-контракт в Etherium меняет состояние памяти VM и описывает изменения данных объекта контракта, а в HyperLedger Fabric контракт должен сохранить свое состояние самостоятельно, и при вызове функции сначала должен это состояние прочитать.

Т.к. смарт-контракт - это объект, содержащий список данных и методов работы с ними, являющийся по-сути экземпляром класса, то при его выполнении на всех "пирах" должен восстановиться экземпляр класса в том состоянии, которое сформировалось при коммите последней транзакции, им порожденной, т.е. перед обработкой данных необходимо вызвать этот самый GetState. И дальше уже этот восстановленный контекст участвует в вычислениях вызванного метода этого объекта. Если были изменения данных объекта, то они должны быть записаны с помощью SetState, а после достижения консенсуса FABRIC CLIENT'ом при помощи orderer'а эти данные сохраняются в блокчейне.

Да, все не просто, но без погружения в такие детали донести до читателя всю глубину функционала технологии просто невозможно.

ИНФРАСТРУКТУРА

Я решил, что не буду углубляться во всякие там блокчейновские POW и POS, которые используются для криптовалют, ибо в FABRIC нет ни того, ни другого - просто исполняется код смарт-контракта и при одинаковом результате данные сохраняются (если были изменения) и результат, возвращаемый методом контракта, является правильным. Это позволяет ускорить работу с блокчейном и достичь сотни транзакций в секунду для вполне солидной сети "пиров", содержащей сотни узлов.

Мы инфраструктуру подняли на нескольких виртуальных серверах UBUNTU SERVER, используя DOCKER в качестве контейнера для ноды. Там мы развернули несколько "пиров", orderer, MPS и создали REST-сервис с помощью COMPOSER'а. В качестве языка смарт-контракта использовался NODE.js.

МОБИЛЬНАЯ ПЛАТФОРМА, ZERO

Для клиентского приложения мы использовали мобильную платформу 1С, на которой реализовали корпоративный мессенджер ZERO -  о нем я писал ранее. В ходе последнего хакатона мы прикрутили к нашему мессенджеру голосовалку, результаты голосования которой мы и храним в HyperLedger Fabric.

ПОДРОБНОСТИ

Мессенджер Zero уже обладал функционалом, позволяющим проводить опросы в чатах и каналах. Поэтому основной задачей было разработать механизм, связывающий этот функционал с REST API блокчейн-платформы (FABRIC CLIENT).  Разработка этого механизма велась на серверной стороне мессенджера, а клиентская часть осталась практически без изменений.

Инициация голосования происходит через расширенное сообщение, форма которого открывается по нажатию кнопки «+» слева в строке сообщения. В открывшемся диалоге нужно нажать на «Опрос»:

В результате будет открыта форма ввода сообщения, содержащего опрос:

В поле "Сообщение" вводится текст опроса/голосования, а для прикрепления списка ответов нужно нажать "Добавить". Количество вариантов ответов при этом ограничено лишь Вашей фантазией.

Также у опроса есть "время жизни", в течение которого голосование доступно.

После того, как содержание опроса, пункты ответа и дата, до которой опрос актуален, заполнены, остается нажать кнопку ">".

Отправитель, кстати, тоже может проголосовать:

При этом попытка проголосовать повторно будет пресечена:

Получатели сообщения с опросом видят следующее:

Ну и, понятное дело, тоже могут проголосовать и тоже не могут сделать это дважды:

Результаты голосования сохраняются в серверной базе мессенджера ZERO и в блокчейне HyperLedger Fabric. Для просмотра транзакций книги HyperLedger мы сделали отдельную страницу, разместив ее на HTTP-сервере.

В принципе ниже три скрина с нашей системы отслеживания транзакций HyperLedger Fabric. На первом список транзакций, на втором содержание одной из транзакций, а на третьем - сам пакет данных с ответом REST-сервера.

блокчейн blockchain HTTP ZERO мессенджер HyperLedger Fabric

См. также

Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    8501    53    11    

29

SALE! 25%

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С - конструктор чат-ботов в Телеграм.

15000 11250 руб.

18.06.2021    64570    310    272    

364

Мессенджеры и боты Программист Пользователь Платформа 1С v8.3 Платные (руб)

Мощный модуль для интеграции 1С с чат-ботами: Telegram, Viber, WhatsApp, WhatsApp Business, Instagram, ICQ, Facebook, Vkontakte, Skype, Одноклассники, Яндекс.Алиса, Avito а так же виджеты чата для сайтов: Verbox, Jivochat. Это универсальное и эффективное решение с большими возможностями, простым интерфейсом, наличием визуального конструктора, базовыми сценариями поведения из коробки, позволяющий запустить чат-ботов в течении 1-го дня.

65000 руб.

08.10.2019    60583    35    1    

157

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    29785    36    49    

71

SALE! 25%

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    37215    99    161    

193

Мессенджеры и боты Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Данное расширение представляет собой интерфейс взаимодействия 1С с сервисом Wazzup. Данный сервис позволяет вести беседу с использованием номера телефона, привязанного к Whatsapp. Почитать о сервисе и его условиях использования можно по ссылке https://wazzup24.com/. На данный момент расширение поддерживает почти все доступные через API функции. Обновление от 19.05.2023, версия 2.1!

14400 руб.

30.11.2020    13275    8    13    

15

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1334    3    6    

6

Мессенджеры и боты Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Универсальная система сообщений для конфигураций 1С: Предприятие 8.3. Позволяет пользователям обмениваться текстовой информацией и ссылками на объекты (документы, справочники и др.). Система универсальна, подойдет для любой организации. Реализовано на управляемых формах (тонкий клиент) по технологии расширений 1С. Конфигурация останется на поддержке (для автоматического обновления).

4800 руб.

29.03.2021    16728    3    10    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kote 537 28.02.19 00:19 Сейчас в теме
.. идея в том, что голосование проходит анонимно, но общий результат после каждого учтенного голоса сохраняется в блок-чейн?
3. starik-2005 3081 28.02.19 11:44 Сейчас в теме
(1) не совсем. Блокчейн смарт-контрактом эмитирует токены-голоса, которые могут быть использованы для голосования получившим токен владельцем аккаунта (валлета) в сети. Это в эфире если. Статья больше о HYPER LEDGER, в котором голоса эмитируются, как единичные непогашенные ресурсы в разрезе пользователя и вопроса, после чего пользователь может погасить ресурс, а может и не гасить, а смарт-контракт при предъявлении ресурса к погашению смотрит условия опроса: время, кворум, погашенность... Т.е. там не все так просто.
2. TODD22 19 28.02.19 11:38 Сейчас в теме
Похоже БлокЧейн уже не модно....
5. JetBrain 79 17.05.22 16:43 Сейчас в теме
(2) сейчас качнем тему, поисковики просто что-то хреново работают)
4. JetBrain 79 17.05.22 16:40 Сейчас в теме
Сергей, привет. а почему выбор пал на Fabric , а не на Iroha?
6. starik-2005 3081 17.05.22 17:27 Сейчас в теме
(4) это писалось 4 года назад...
7. JetBrain 79 17.05.22 17:39 Сейчас в теме
(6) хотя наверное INDY более специфичен под данное решение, если его запускать в данный момент. по gRPС судя по схемке, можно в composer покапатся, это на тему про интеграцию реестра с 1С. Node.js все же более понятен, чем чистая Java.
Оставьте свое сообщение