1C и защищенное хранение данных на блокчейне: модуль интеграции от Acryl Platform

21.01.20

Разработка - Математика и алгоритмы

Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.

Скачать файлы

Наименование Файл Версия Размер
Расширение "AcrylPlatform" (Модуль интеграции от Acryl Platform):
.cfe 279,53Kb
4
.cfe 1.0 279,53Kb 4 Скачать
Обработка "AcrylData" (Чтение/Запись данных на блокчейн платформе Acryl):
.epf 260,36Kb
3
.epf 1.0 260,36Kb 3 Скачать

Здравствуй %User_Name%, рад представить расширение конфигурации для интеграции 1С с блокчейн платформой «Acryl Platform». 


С помощью данного модуля Вы сможете:

  • Записать критические важные данные напрямую в блокчейн и эти данные никто не сможет удалить, их невозможно потерять;
  • Проверить, были ли данные записаны в блокчейн, и узнать дату и время записи, это защитит Вас от внесения информации задним числом, а также позволит узнать что именно было изменено.
  • Восстановить ранее записанные в блокчейн данные, если прежнее хранилище данных недоступно
Данный модуль представлен как пример, вы самостоятельно можете реализовать любые интеграции используя подсистемы “Crypt” и “Acryl Platform”.
Примерами критически важных данных могут быть данные: 
  • о товарах (серийные номера товаров и их движение в цепочке поставок, происхождение товаров, гарантийные талоны, отчеты о розничных продажах и тд);
  • о сотрудниках (табели учета, авансовые отчеты и тд);
  •  условия продаж для ваших клиентов (условия скидок, отсрочек и тд);
  • а также любые другие важные документы и данные, хранящиеся в ERP системах, которые вам бы не хотелось потерять или сомневаться в их подлинности. 


Для решения проблемы защищенного хранения данных бизнеса команда Acryl разработала модуль интеграции с 1С. Все Ваши данные пишутся на блокчейне Acryl - самом децентрализованном, а значит самом отказоустойчивом блокчейне в СНГ на 2020 год. 
Помимо децентрализации разработчики Acryl также делают ставку на постоянную и прогнозируемую цену записи данных. Благодаря этому рассчитать стоимость записи данных можно заранее с высокой точностью.
Решение полностью разработано на нативном языке 1С, без использования внешних компонентов. Для работы с расширением потребуется платформа не ниже 8.3.12, режим совместимости основной конфигурации не ниже 8.3.12, тестирование проводилось на версиях 8.3.12.1529, 8.3.13.1690 и 8.3.15.1700.

 

Подсистема "Crypt"
Для интеграции с блокчейн платформой была разработана подсистема "Crypt". Данная подсистема содержит в себе необходимы методы хеширования данных и эллиптической криптографии Diffie–Hellman. К сожалению, из-за некоторых особенностей платформы 1С (Отсутствует ПобитовыйСдвигСправоБеззнаковый, узкий диапазон для побитовых операций (от 0 до 2^32-1) и пр.) реализация данных методов уступает в производительности другим языкам программирования, однако реализация данных методов встроенными средствами дает огромный потенциал для интеграции.


Реализованные механизмы в подсистеме "Crypt":

  • Base58
  • Blake2b
  • Keccak
  • Curv25519 (the elliptic curve Diffie–Hellman)

Все выше перечисленные методы работоспособны как на сервере так и на клиенте, включая Веб-клиент.
Демо работы с подсистемой Crypt:

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


Запись данных в блокчейн из 1С, Really?

Одной из многих сфер применения блокчейна является децентрализованное хранение данных. Суть хранилища на блокчейне заключается в совместном использовании файлов с данными через пиринговую сеть. Запись данных может осуществляться публично или с использованием механизмов шифрования.

Преимущества блокчейн-хранилища:
•    неизменность данных
•    сохранность информации
•    безопасность хранения данных
•    прозрачность системы
•    временная метка

Основное отличие блокчейна ACRYL заключается в том, что его основатели сконцентрировались на создании сети именно для хранения данных бизнеса.
В блокчейне ACRYL стоимость монеты стабильная и постоянно поддерживается усилиями компании на уровне $13 с минимальными отклонениями. А это значит, что и цена за запись данных в такой блокчейн является стабильной и конкурентоспособной.

Уникальные преимущества ACRYL:
•    прогнозируемая стоимость записи данных
•    удобные в применении модули для бизнес-интеграций
•    энергоэффективные hardware решения

 

Начало работы

После подключения расширения к вашей базе, необходимо создать кошелек. Если у вас уже имеется кошелек в системе Acryl, вы также можете восстановить его с помощью секретной фразы.
Внимательно ознакомьтесь с содержанием информационной страницы, появляющейся при создании кошелька. Обязательно сохраните или запишите секретную фразу. Без нее вы не сможете восстановить доступ к своему аккаунту.
Для Разработчиков доступен специальный режим TestNet, включить работу с тестовой сетью вы можете в процессе создания/восстановления кошелька. TestNet идентичен по функциональности с сетью MainNet. 


Процесс создания кошелька:


В вашей системе может хранится неограниченное количество кошельков.


Кошелек создан, что дальше?

Далее вам необходимо пополнить вновь созданный кошелек. Вы можете пополнить свой баланс в Acryl используя Web клиент: https://client.acrylplatform.com/
После пополнения кошелька вы можете выполнить запись данных в блокчейн прямо из 1С, а также сделать перевод другому пользователю на его кошелек.


Просмотр транзакций кошелька.

Расширение имеет встроенный клиент, в котором вы можете видеть транзакции получения, перевода/получения средств и транзакции записи данных. 

 

Отправка средств:

В клиенте есть встроенный кошелек, где вы можете проводить транзакции, например, оплату записи данных в блокчейн или передачу Acryl другим пользователям. Также в кошельке представители сервисной компании, поддерживающие 1С других предприятий, могут передавать или продавать единицы данных этим предприятиям, или же материнская компания может передавать единицы записи данных своей дочерней компании.

 

 

Запись данных.


К публикации закреплена обработка «ArcylData». Эта обработка заполнения, предназначена для записи данных в блокчейн Acryl. 


Стоимость записи 1 КБ 0.13$.
Для записи документа «Реализация Товаров и Услуг», конфигурации Розница, со всеми реквизитами и табличными частями, потребовалось 0.02 ACRYL = 0.26$.

Ссылка на транзакцию в explorer: https://explorer.acrylplatform.com/tx/Bj1JLPNUF5cAQ4QwShkxhF9ZwnmsXbnB7WumxLSEb8nJ
Объект 1С записывается в блокчейн как ключ-значение. Где ключ - ссылка на документ с приставкой «ref-», а значение сериализованная строка.

 
  Сериализация объекта в поле value

 

Чтение данных.

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

 

 

блокчейн blockchain acryl интеграция запись чтение Base58 Blake2b Keccak Curv25519

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1754    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4416    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7458    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7855    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4444    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8835    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7801    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kiv1c 809 23.01.20 10:35 Сейчас в теме
Долго думал. Вот я заплатил 0.23$ (16 рублей) аж за 1 документ. Записал в блокчейн. И что мне это дает? А если документов достаточно много, траты уже ощутимые. А польза неясна.
2. ArtemSerov 22 23.01.20 12:47 Сейчас в теме
(1) Стоимость в первую очередь определяется объемом информации, в данном примере сериализован документ со всеми реквизитами и табличными частями. Вы можете записывать произвольную выборку данных, формировать отчеты и данные табличного документа записать в блокчейн, после записи ваши данные не будут утеряны или изменены.

Рассмотрим пример на задаче: имеется база УНФ, необходимо реализовать защиту от подделки продукции, для этого нам необходимо из документа "СборкаЗапасов" записать все серийные номера в блокчейн, а так же движения серийных номеров, дату и место продажи (если филиал производителя) или дату и ИНН партнера (если реализация через партнера), Допустим мы имеем выпуск продукции в 100 номеров, стоимость записи их составит ~0.54$, стоимость записи сводной продажи всех номеров (100 шт) по филиалам и партнерам ~0.67, то есть, для реализации прозрачной системы защиты от подделок, где любой желающий может отследить движение серийных номеров и проверить товар перед покупкой вам потребуется заложить в себестоимость 1.21$ на 100 единиц продукции.
3. Dach 372 23.01.20 16:00 Сейчас в теме
самом децентрализованном, а значит самом отказоустойчивом блокчейне в СНГ на 2020 год


пруфы в студию, плз

В блокчейне ACRYL стоимость монеты стабильная и постоянно поддерживается усилиями компании на уровне $13


Каким образом? Ссылку на ваш white paper, плз. Что у вас в основе - PoW или PoS? Ваша монета майнится или нет? Пулы и ноды?

И главные вопросы - чем вы лучше многих сотен соскамившихся проектов? И почему мы должны вдруг нести вам свои конфиденциальные данные?
5. ArtemSerov 22 24.01.20 10:14 Сейчас в теме
(3)
пруфы в студию, плз

Peers list, отражающий количество нод в сети в реальном времени доступен в explorer: https://explorer.acrylplatform.com/peers

Каким образом? Ссылку на ваш white paper, плз. Что у вас в основе - PoW или PoS? Ваша монета майнится или нет? Пулы и ноды?

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

И главные вопросы - чем вы лучше многих сотен соскамившихся проектов? И почему мы должны вдруг нести вам свои конфиденциальные данные?

В предыдущем ответе рассматривался пример с серийными номерами, данные о которых не являются конфиденциальными, однако Конфиденциальные данные останутся конфиденциальными если вы будете записывать информацию в зашифрованном виде, используя какой либо алгоритм шифрования (Например AES 256 CBC), в данном примере не рассматривается шифрование данных, это тема отдельной публикации.
4. Dach 372 23.01.20 16:13 Сейчас в теме
Выглядит все это как отчаянная попытка привлечь пользователей ну хоть откуда-нибудь, даже из этой 1С

https://www.coingecko.com/ru/Криптовалюты/acryl
https://coincost.net/currency/acryl

А койнмаркеткап вас даже вниманием не удостоил:

https://coinmarketcap.com/currencies/acryl/

13$ говорите? Ну-ну.... Расходимся, посоны. Скамеров подвезли
GreenDragon; +1 Ответить
6. ArtemSerov 22 24.01.20 12:11 Сейчас в теме
(4) В данной статье не рассматривается криптотрейдинг, в целом блокчейн платформа Acryl про запись данных, стоимость в 13$ так же закреплена в web клиенте, вы всегда сможете приобрести единицы записи по фиксированной стоимости.
7. GreenDragon 29.01.20 15:55 Сейчас в теме
(4) Однозначно.
"Mining with Acryl does not require large investments, power, and energy consumption, as it is carried out through a physical node of the network - ACRYL NODE" Какие парни решили загнать токены за usd13
8. GreenDragon 29.01.20 16:09 Сейчас в теме
Мне вот интересно - какой кейс у этого решения? Отправлять документ в децентрализованное хранилище мне кажется категорически странной идеей. Какую реальную бизнес задачу я могу решить с помощью этого решения?
9. palsergeich 29.01.20 19:43 Сейчас в теме
(8)Ты сделаешь разработчиков богаче
10. Pavel_Vladivostok 58 30.03.20 03:48 Сейчас в теме
Если я правильно понял, чтобы записать один документ в этот блокчейн, надо иметь 1 токен этого пенопласта, стоимость $13, каждая модификация объекта это новая транзакция со всеми издержками, получается что-то вроде платной истории объектов вашей базы в децентрализованном хранилище, где неизвестно кто и с какой целью эти объекты может получить и посмотреть, если их без шифрования туда помещать, зачем это нужно непонятно. История объектов вроде уже бесплатно сделана, на уровне платформы...
11. ArtemSerov 22 30.03.20 07:12 Сейчас в теме
(10) По сути все так, но данный модуль это инструмент, а не конечное решение, в качестве примера записываются документы и их изменения, вы можете использовав его, записывать любые данные в блокчейн, закладывать любую логику и решать любые ваши задачи с применением блокчейн
16. mrsmrv 125 11.05.20 06:16 Сейчас в теме
(11) допустим будет 100 000 фирм, будут писать в день по 100 документов, как будет расти объём базы в год? И у кого будет храниться это? у каждого узла? и это будет хеш или полная копия документа? а если к документу приложены файлы или комментарий длинный (ведь там бесконечная строка) Да и других реквизитов в документах типовой с бесконечной строкой хватает. Как это организовано, опишите пожалуйста.
12. mrsmrv 125 29.04.20 10:09 Сейчас в теме
Так можно запилить свою платформу и дистрибьютору например раздавать монеты за покупки партий товаров у него - типа бонусная система такая. Но конечно блокчейн применять только ради этого... Разве что дистрибьюторов много и они конкурируют. Короче в описанном виде за 13$ не взлетит конечно, нужна другая мотивация и куча плюшек на старте.
13. mrsmrv 125 10.05.20 20:10 Сейчас в теме
Походу я единственный, кто качнул это. Автор потрудился, но много сделано лишнего, т.к. возможности заявленной платформы позволяют реализовать например преобразования данных, работы с буфером двоичных данных, преобразование текста в различных кодировках. Да и получение типа значения через ТипЗнч("") тоже можно наверное реализовать как-то "привычнее" что-ли. Анализирую дальше. После анализа кодирования в base58 эта конфигурация содержит в себе ещё кучу "волшебства".
14. mrsmrv 125 10.05.20 22:02 Сейчас в теме
Итак в модуле Crypt_Sha3 в функции KeccakUpdate в строке code = КодСимвола(message, Сред(message, index, 1));
У вас ошибка. Туда мы попадаем если в функцию передаём строку. Ведь у вас там предусмотрено в начале функции работа со строкой. В итоге вываливаемся в ошибку. Вы у строки сообщения зачем-то получаете символ по индексу, и потом этот символ передаёте в код символа. Ну т.е. вызов Сред не нужен. Вы тестировали?
Поставил code = КодСимвола(message, index);
ArtemSerov; +1 Ответить
15. mrsmrv 125 10.05.20 22:36 Сейчас в теме
(14) Тестирую кечак, на пустой строке не работает. Он у вас не срабатывает на пустую строку. А ведь даже в википедии описаны значения хеш сумм для пустых строк. Ладно тестирую дальше на строке "The quick brown fox jumps over the lazy dog". вылетает ошибка в строке
Если code < 128 Тогда

blocks[пСдвигВПраво(i, 2)] = пИли(blocks[пСдвигВПраво(i, 2)],
пСдвигВЛево(code, пИ(this.SHIFT[i + 1], 3)));

i = i + 1;
Индекс находится за пределами... Ну ё-моё.
Попробую скормить массив байт
Входные условия в функции некорректно отрабатывают если передать массив. Но если передать структуру с именем массива вторым параметров, то срабатывает. На непустой строку отрабатывает корректно, но очень долго, последовательность символов "12345678901234567890123456789012345678901234567890123456789­01234" - массив в 64 байта обрабатывает более 6 секунд на i7-8700К. см. скриншот. Можно быстрее, см скриншот 2 на тех же входных данных.
В остальном бегло посмотрев другие модули - быстродействие можно увеличить и намного и потребление памяти сократить заодно. Такое впечатление что вы получали гонорар за количество строк кода и количество секунд его исполнения.
Прикрепленные файлы:
ArtemSerov; +1 Ответить
17. ArtemSerov 22 11.05.20 07:16 Сейчас в теме
(15) Да, ошибка известна, на самом деле алгоритм Keccak в данном модуле отрабатывает только если передавать в него структуру с массивом.

(16) Хранятся данные у держателей нод, все верно, у каждого узла. В зависимости от того что вы запишите, хотите полная копия, хотите, будет только хеш.
В данном примере никаких специальных обработок не предусмотрено
Объект обрабатывается следующим образом:
ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	
	НастройкиСериализации = Новый НастройкиСериализацииJSON;
	НастройкиСериализации.ВариантЗаписиДаты  = ВариантЗаписиДатыJSON.ЛокальнаяДата;
	НастройкиСериализации.ФорматСериализацииДаты  = ФорматДатыJSON.ISO;
	
	Объект = Значение.ПолучитьОбъект();
	
	СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Объект, НазначениеТипаXML.Явное);
	
	ДокументJson = ЗаписьJSON.Закрыть();		
	
	Хранилище = Новый ХранилищеЗначения(ДокументJson, Новый СжатиеДанных(9));
	СерилизованнаяСтрока = СериализаторXDTO.XMLСтрока(Хранилище);
	
	Результат = Новый Структура;
	
	Ключ = "ref-" + Строка(Значение.УникальныйИдентификатор());
	
	Ключ = СтрЗаменить(Ключ, "-", "_");
	
	Результат.Вставить(Ключ, СерилизованнаяСтрока);
	
	Возврат Результат;
Показать
18. пользователь 11.05.20 08:22
Сообщение было скрыто модератором.
...
19. dj_tol 103 05.10.20 02:22 Сейчас в теме
Как то все сложно для администрирования. Верификация то по проще будет, бесплатна и понятна. Новый документ без проблем подключить можно. Время хранения существует. Не понятно зачем.
Оставьте свое сообщение