Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.
Долго думал. Вот я заплатил 0.23$ (16 рублей) аж за 1 документ. Записал в блокчейн. И что мне это дает? А если документов достаточно много, траты уже ощутимые. А польза неясна.
(1) Стоимость в первую очередь определяется объемом информации, в данном примере сериализован документ со всеми реквизитами и табличными частями. Вы можете записывать произвольную выборку данных, формировать отчеты и данные табличного документа записать в блокчейн, после записи ваши данные не будут утеряны или изменены.
Рассмотрим пример на задаче: имеется база УНФ, необходимо реализовать защиту от подделки продукции, для этого нам необходимо из документа "СборкаЗапасов" записать все серийные номера в блокчейн, а так же движения серийных номеров, дату и место продажи (если филиал производителя) или дату и ИНН партнера (если реализация через партнера), Допустим мы имеем выпуск продукции в 100 номеров, стоимость записи их составит ~0.54$, стоимость записи сводной продажи всех номеров (100 шт) по филиалам и партнерам ~0.67, то есть, для реализации прозрачной системы защиты от подделок, где любой желающий может отследить движение серийных номеров и проверить товар перед покупкой вам потребуется заложить в себестоимость 1.21$ на 100 единиц продукции.
Каким образом? Ссылку на ваш white paper, плз. Что у вас в основе - PoW или PoS? Ваша монета майнится или нет? Пулы и ноды?
В основе лежит LPoS, но в данной статье не рассматривается майнинг вообще, никто не кого не призывает майнить. Всю информацию о сети, нодах вы можете найти на официальных ресурсах Acryl
И главные вопросы - чем вы лучше многих сотен соскамившихся проектов? И почему мы должны вдруг нести вам свои конфиденциальные данные?
В предыдущем ответе рассматривался пример с серийными номерами, данные о которых не являются конфиденциальными, однако Конфиденциальные данные останутся конфиденциальными если вы будете записывать информацию в зашифрованном виде, используя какой либо алгоритм шифрования (Например AES 256 CBC), в данном примере не рассматривается шифрование данных, это тема отдельной публикации.
(4) В данной статье не рассматривается криптотрейдинг, в целом блокчейн платформа Acryl про запись данных, стоимость в 13$ так же закреплена в web клиенте, вы всегда сможете приобрести единицы записи по фиксированной стоимости.
(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
Мне вот интересно - какой кейс у этого решения? Отправлять документ в децентрализованное хранилище мне кажется категорически странной идеей. Какую реальную бизнес задачу я могу решить с помощью этого решения?
Если я правильно понял, чтобы записать один документ в этот блокчейн, надо иметь 1 токен этого пенопласта, стоимость $13, каждая модификация объекта это новая транзакция со всеми издержками, получается что-то вроде платной истории объектов вашей базы в децентрализованном хранилище, где неизвестно кто и с какой целью эти объекты может получить и посмотреть, если их без шифрования туда помещать, зачем это нужно непонятно. История объектов вроде уже бесплатно сделана, на уровне платформы...
(10) По сути все так, но данный модуль это инструмент, а не конечное решение, в качестве примера записываются документы и их изменения, вы можете использовав его, записывать любые данные в блокчейн, закладывать любую логику и решать любые ваши задачи с применением блокчейн
(11) допустим будет 100 000 фирм, будут писать в день по 100 документов, как будет расти объём базы в год? И у кого будет храниться это? у каждого узла? и это будет хеш или полная копия документа? а если к документу приложены файлы или комментарий длинный (ведь там бесконечная строка) Да и других реквизитов в документах типовой с бесконечной строкой хватает. Как это организовано, опишите пожалуйста.
Так можно запилить свою платформу и дистрибьютору например раздавать монеты за покупки партий товаров у него - типа бонусная система такая. Но конечно блокчейн применять только ради этого... Разве что дистрибьюторов много и они конкурируют. Короче в описанном виде за 13$ не взлетит конечно, нужна другая мотивация и куча плюшек на старте.
Походу я единственный, кто качнул это. Автор потрудился, но много сделано лишнего, т.к. возможности заявленной платформы позволяют реализовать например преобразования данных, работы с буфером двоичных данных, преобразование текста в различных кодировках. Да и получение типа значения через ТипЗнч("") тоже можно наверное реализовать как-то "привычнее" что-ли. Анализирую дальше. После анализа кодирования в base58 эта конфигурация содержит в себе ещё кучу "волшебства".
Итак в модуле Crypt_Sha3 в функции KeccakUpdate в строке code = КодСимвола(message, Сред(message, index, 1)); У вас ошибка. Туда мы попадаем если в функцию передаём строку. Ведь у вас там предусмотрено в начале функции работа со строкой. В итоге вываливаемся в ошибку. Вы у строки сообщения зачем-то получаете символ по индексу, и потом этот символ передаёте в код символа. Ну т.е. вызов Сред не нужен. Вы тестировали?
Поставил code = КодСимвола(message, index);
(14) Тестирую кечак, на пустой строке не работает. Он у вас не срабатывает на пустую строку. А ведь даже в википедии описаны значения хеш сумм для пустых строк. Ладно тестирую дальше на строке "The quick brown fox jumps over the lazy dog". вылетает ошибка в строке
Если code < 128 Тогда
i = i + 1;
Индекс находится за пределами... Ну ё-моё.
Попробую скормить массив байт
Входные условия в функции некорректно отрабатывают если передать массив. Но если передать структуру с именем массива вторым параметров, то срабатывает. На непустой строку отрабатывает корректно, но очень долго, последовательность символов "1234567890123456789012345678901234567890123456789012345678901234" - массив в 64 байта обрабатывает более 6 секунд на i7-8700К. см. скриншот. Можно быстрее, см скриншот 2 на тех же входных данных.
В остальном бегло посмотрев другие модули - быстродействие можно увеличить и намного и потребление памяти сократить заодно. Такое впечатление что вы получали гонорар за количество строк кода и количество секунд его исполнения.
(15) Да, ошибка известна, на самом деле алгоритм Keccak в данном модуле отрабатывает только если передавать в него структуру с массивом.
(16) Хранятся данные у держателей нод, все верно, у каждого узла. В зависимости от того что вы запишите, хотите полная копия, хотите, будет только хеш.
В данном примере никаких специальных обработок не предусмотрено
Объект обрабатывается следующим образом:
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
Объект = Значение.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Объект, НазначениеТипаXML.Явное);
ДокументJson = ЗаписьJSON.Закрыть();
Хранилище = Новый ХранилищеЗначения(ДокументJson, Новый СжатиеДанных(9));
СерилизованнаяСтрока = СериализаторXDTO.XMLСтрока(Хранилище);
Результат = Новый Структура;
Ключ = "ref-" + Строка(Значение.УникальныйИдентификатор());
Ключ = СтрЗаменить(Ключ, "-", "_");
Результат.Вставить(Ключ, СерилизованнаяСтрока);
Возврат Результат;
Как то все сложно для администрирования. Верификация то по проще будет, бесплатна и понятна. Новый документ без проблем подключить можно. Время хранения существует. Не понятно зачем.