Андрей Овсянкин | Профессиональный разработчик | ООО Серебряная Пуля

«1Script.Web - будущее интернет-приложений на 1Script»

Современный мир технологий неотделим от веб-инфраструктуры. 4 года назад на Инфостарт был анонсирован проект 1Script, который был призван снизить порог вхождения специалиста 1С в мир скриптов автоматизации: настройки серверов, развертывания баз, тестирования и прочего DevOps. Спустя 4 года можно заключить, что проект удался. Количество 1С-специалистов, осваивающих современные инженерные практики с помощью знакомого синтаксиса растет день ото дня. Веб-приложения это не только сайты и интернет-магазины. Запрос рынка таков, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы тогда не писать такие приложения на языке 1С? В своем докладе я хочу анонсировать новую платформу на базе 1Script - новый движок веб-приложений, который должен дать 1С-никам возможность создавать востребованные веб-приложения, не переключаясь в малознакомые языковые экосистемы. Мы обсудим возможности этой платформы, подумаем о перспективах этого направления и тому, какие возможности она может нам (как сообществу 1С-ников) предоставить. В качестве демонстрации покажу "боевое" приложение на новом движке - кросс-платформенную консоль администрирования парка кластеров 1С с веб-интерфейсом на борту. В кулуарах будут приветствоваться жаркие споры и священные войны.

Блокчейн в базе 1С

0. Техподдержка 18.12.17 01:50
Вокруг блокчейна в последнее время поднято много шума. Курс биткоина кого-то радует, кого-то злит, но впечатляет всех. За всем этим остается не увиденной и не оцененной по достоинству изящная простота самой технологии. Блокчейн можно без особых затрат добавить к любой базе данных, и база 1С не исключение. В моем рабочем примере менее 200 строк кода в обработке, которая создает цепочку блоков. Еще 30 строчек занимает процедура контроля. Ниже я покажу по шагам - как сделать блокчейн в любой базе 1С, и что это даст в итоге.

Перейти к публикации

Комментарии
Сортировка: Древо
1. TODD22 17 18.12.17 11:44 Сейчас в теме
Интересно. Надо будет по ближе посмотреть.

У вас этот "блокчейн" для какой то практической цели используется?

выб=запрос.Выполнить().Выбрать();
если выб.Следующий() тогда

Результат запроса на пустоту правильно определять
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
КонецЕсли;

Что бы не создавать объект Выборка из пустого результата запроса.
jif; rpgshnik; +2 Ответить
3. Техподдержка 18.12.17 11:59
(1) Спасибо за замечание!
gigabyte_artur; +1 Ответить
118. alexzhilichev 144 19.12.17 09:53 Сейчас в теме
(1) Если в любом случае используете выборку из результата запроса Выборка.Выбрать() , то не нужно проверять результат запроса на пустоту (https://its.1c.ru/db/v8std/content/-2145783209/hdoc).
119. TODD22 17 19.12.17 09:56 Сейчас в теме
(118)Так у автора вроде в том запросе про который я писал как раз и имеется проверка на пустоту. Значит запрос может быть пустым. Что не так?
121. alexzhilichev 144 19.12.17 10:30 Сейчас в теме
(119)
Что бы не создавать объект Выборка из пустого результата запроса.


Если в коде используете Выборка.Следующий() с последующей обработкой результатов выборки (как у автора), то перед этим Результат.Пустая() не обязательно делать. Вместо этого Выборка.Следующий() вернет Ложь, что и будет означать пустой результат.
122. TODD22 17 19.12.17 10:32 Сейчас в теме
(121)
Что бы не создавать объект Выборка из пустого результата запроса.
123. TODD22 17 19.12.17 10:34 Сейчас в теме
(121)
Там написано что проверять результат на пустоту надо с помощью "Пустой()". Что бы не создавать объект выборка из пустого запроса только для того что бы убедится что он пустой.

А если вы уверены что в результате вашего запроса всегда будет результат то тогда проверка "Пустой()" лишняя.

З.Ы. Хотя да... можно трактовать по разному. Если потом есть обработка то можно делать выборку. Но если результат может быть пустым то наверное всё же лучше через оператор Пустой.

З.Ы.Ы. Это я где то в каком то курсе по программированию видел(на спеца вроде). Там объяснялось что результат запроса надо проверять на пустоту, а не делать выборку из пустого результат, если результат может быть пустым. Если результат есть всегда то проверку на пустоту делать не нужно.

Хотя и в типовых очень часто проверку на пустоту делают Выборка.Следующий(). Или Выборка.Количество().
2. Техподдержка 18.12.17 11:58
Пока еще нигде не использовал. Просто решил продемонстрировать саму идею. Проверял на тестовой базе.
4. TODD22 17 18.12.17 11:59 Сейчас в теме
(2)Понятно. Да я вот то же почитал про технологию. Но вот практического применения пока не придумал :)
5. Техподдержка 18.12.17 12:01
Практическое применение в данной публикации. Вы делаете документы практически не изменяемыми.
6. TODD22 17 18.12.17 12:07 Сейчас в теме
(5)
практически не изменяемыми

"практически" или "не изменяемыми" ?

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

На одном из инфостарт эвентов вроде кто то делал доклад про блокчейн в 1С и видимо как то они его используют. Но давно было... наверное уже не найду.
7OH; spenser123; awk; sCHTASS; user648768_aahmetzyanov; gradi; +6 Ответить
8. Техподдержка 18.12.17 12:22
(6) "Счастье не в деньгах, а в их количестве".
Вы сделаете. И стоимость успешной атаки на вашу защиту - 1 час работы начинающего.
Стоимость атаки на мою защиту зависит от выбранной сложности и может быть сколь угодно большой.
SunShinne; +1 Ответить
9. TODD22 17 18.12.17 12:23 Сейчас в теме
(8)Если в контексте "атаки" то может так оно и есть. Надо над этим подумать.
Просто я у себя такие риски не рассматриваю. По этому возможно чего то не понимаю...
10. Техподдержка 18.12.17 12:27
(9) Это только кажется паранойей. Я лично наблюдал ситуации. Некто деревня-деревней. Но вот как-то находит способ поменять 10 шт. за 1 руб. на 1 шт. за 10 руб. Откуда только что берется!
11. TODD22 17 18.12.17 12:34 Сейчас в теме
(10)
Я не с критикой :) Я когда сам думал как можно применять вот ничего в голову не приходило. Всё что пришло в голову решалось без блокчейна точно так же или даже проще.
12. Техподдержка 18.12.17 12:37
(11) Так вроде бы это на поверхности. Если первым словом звучит "блокчейн", то вторым "неизменяемость" (ну или "биткоин", для жадных)
7. Техподдержка 18.12.17 12:13
Вот я и делаю программными средствами. И мой способ надежнее всех прочих. Как вы программными средствами исключите атаку со стороны человека с паролем админа?
13. Fragster 823 18.12.17 12:48 Сейчас в теме
Зачем тут поиск "красивого" хэша? В биткоине понятно - чтобы были "майнеры", а вот тут зачем? Чтобы электричество пожечь?
14. Техподдержка 18.12.17 12:50
(13) Чтобы получить защиту от изменения документов.
15. Fragster 823 18.12.17 12:57 Сейчас в теме
(14) механизм цепочек эцп хешей + предыдущих подписей вполне с этим справится и без этого
16. Техподдержка 18.12.17 13:00
(15) Здесь нет ЭЦП. Просто база 1С. Самая обычная. Документ проводится, затем попадает в цепочку. И все - с ним уже ничего сделать нельзя. Никаким способом. Даже с паролем админа. Даже если влезть в базу напрямую. Никак. Только за большие деньги.
17. Fragster 823 18.12.17 13:07 Сейчас в теме
(16) Советую все же почитать, что такое ЭЦП. В данном случае в качестве подписи используется конечный ключ.

>Даже если влезть в базу напрямую. Никак. Только за большие деньги.
в данном случае это заблуждение.
18. Техподдержка 18.12.17 13:11
(17) Смотрите. Вы удаляете что-то из середины цепочки, а потом быстро перестраиваете остаток цепочки. И все в порядке. Процедура контроля ничего не обнаружит. Красивый хеш нужен для того, чтобы исключить быстрое восстановление цепочки.
sulfur17; +1 Ответить
21. vadim1011985 45 18.12.17 13:19 Сейчас в теме
(18) а как тут красивый хэш поможет ?
23. Техподдержка 18.12.17 13:20
(21) Чтобы его найти, требуется время. Или дорогостоящее оборудование... и все равно время.
26. TODD22 17 18.12.17 13:35 Сейчас в теме
(23)
Чтобы его найти, требуется время. Или дорогостоящее оборудование... и все равно время.

В этом и проблема блокчейна. Палить килловаты энергии ради красивого хэша. Наверное должны быть другие менее ресурсозатратные инструменты.
27. Техподдержка 18.12.17 13:41
(26) "Что ничего не стоит, то ничего не стоит". Это - мудрая пословица.
Безопасность не может быть бесплатной. Мое решение хорошо тем, что уровень затрат на безопасность можно гибко подстраивать под конкретную ситуацию. Он может быть как скромным (но вполне достаточным, для того, чтобы у вас со склада не воровали, например, сахар), так и внушительным, таким, где стоимость атаки начинается от миллионов долларов.
29. TODD22 17 18.12.17 13:54 Сейчас в теме
(27)
Безопасность не может быть бесплатной.

Я не столько про "бесплатность" сколько про то что как бы не очень разумно тратить такие энергоресурсы. Хотелось бы более простой(дешёвый) способ генерации не изменяемых блоков.
32. Техподдержка 18.12.17 14:03
(29) Ну какие такие? Представьте - у вас 10 компов работают с 10 часов до 20 часов. Ну добавили вы к ним еще один, который работает круглосуточно. Какие ресурсы? Для большинства случаев - этого будет достаточно.
А если вы хотите действительно серьезной защиты - купите ASIC. Он будет половину времени работать на вашу безопасность, а половину времени майнить. В этом случае, как ни странно, затраты вообще выходят в ноль.
33. Техподдержка 18.12.17 14:06
(29) Я уж не говорю про тот случай, когда вы запустили процедуры в фоновом задании на сервере. И просто дозагрузили ваш сервер, который скорее всего загружен процентов на 10, а энергию потребляет.
127. Steelvan 19.12.17 12:07 Сейчас в теме
60. tailer2 18.12.17 15:23 Сейчас в теме
(26) никто не заставляет
нерентабельный майнер отвалился - требование к красоте уменьшилось

сгорят китайские фермы - люди будут майнить на нотбуках
39. Fragster 823 18.12.17 14:23 Сейчас в теме
(18) ну а так "медленно" перестраиваете остаток цепочки... для "невозможности" подмены вашего способа также недостаточно. Достаточно разделения ответственности механизма подписи (ну, или контроля целостности, блокчеина или как вам будет удобно) (со временем подписи и, возможно, порядковым номером одноразового пароля) и собственно информационной системы.
+ дополнительным плюсом можно сделать "онлайн" подпись, с абсолютной невозможностью изменений задним числом, не дожидаясь попадания данных в "блокчеин"
20. Техподдержка 18.12.17 13:12
(17) Вы не просто так говорите. Вы атаку предложите. За маленькие деньги.
45. Fragster 823 18.12.17 14:29 Сейчас в теме
(20) учитывая, что весь механизм находится в той же информационной системе - это пшик. Да и сам алгоритм... можно сделать ВК, которая будет считать мд5 хэши на видеокарте в тысячу раз быстрее, чем код в 1с. Стоимость разработки такой компоненты (по алгоритму из статьи) в пределах 5000 рублей.
OnicaIOn; +1 Ответить
47. Техподдержка 18.12.17 14:32
(45) Эту самую ВК вы и подключите в функцию ПолучитьКонечныйКлюч(), если захотите усилить свою защиту.
49. Fragster 823 18.12.17 14:36 Сейчас в теме
(47) я сейчас совсем про другое говорю... при физическом доступе к ИС мы хоть заранее можем все хэши посчитать, изменить сам алгоритм хэшэй, снизив сложность и пересчитав хэши, сделать так, чтобы отчет показывал всегда "ок" (или наобоброт).
Так что безопасность "дутая".
192. Kosstikk 85 20.12.17 09:22 Сейчас в теме
(16) Сделать можно ) просто цепочка документов после будет считаться не валидной. Т.е. я такой "атакер", захожу в базу и меняю самый первый доукмент.. просто.. дальше система становится сбойной, т.к. вся цепочка - нарушена.. вы восстанавливаете систему, кстати как? )

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

Итак, блокчейн - это инструмент для неподменности данных в первую очередь. Но! Для этого требуется децентрализация.
81. SerVer1C 146 18.12.17 17:02 Сейчас в теме
(14) Чтобы получить защиту от изменения документов, давно придумали цифровую подпись. (Только это не защита, а контроль целостности).
84. Техподдержка 18.12.17 17:09
(81) Подпись - это совсем другое. Здесь нет подписей людей. Они не нужны. Да они и не защищают. Люди сговорились и поставили подписи под старым документом. Моя система исключает изменение "задним числом" в принципе.
SunShinne; +1 Ответить
22. Техподдержка 18.12.17 13:20
Чтобы его найти, требуется время. Или дорогостоящее оборудование.
24. kolya_tlt 11 18.12.17 13:26 Сейчас в теме
решение кажется не законченным, так как простой человек не видит результата, от слова совсем.
25. Техподдержка 18.12.17 13:30
(24) Простой человек может скачать обработки и позапускать их в любой базе. Единственное предупреждение - если в базе много проведенных документов цепочка будет строится очень долго. Либо распроведите большинство документов, либо подправьте запрос в обработке генерации.
28. Dzenn 234 18.12.17 13:51 Сейчас в теме
Если я правильно понял, суть любого блокчейна в том, чтобы отвергать любые изменения блока в цепочке. То есть, для эффективной реализации при помещения документа в блокчейн нужно где-то сохранять копию его состояния. И если по какой-либо причине состояние документа изменилось (удалили, изменили, распровели), восстанавливать его из копии.
30. Техподдержка 18.12.17 13:57
(28) Я реализовал только контроль. Восстановление документов делается обычным способом.
Кто-то хитрый взял и поменял местами количество и цену в старом документе. Контроль это обнаружил и выдал ссылку на документ. Бухгалтерия достала первичку и восстановила документ. Из "бумажного" бэкапа, так сказать.
SunShinne; +1 Ответить
31. TODD22 17 18.12.17 13:58 Сейчас в теме
(30)
Кто-то хитрый взял и поменял местами количество и цену в старом документе.

Так вроде "установка даты запрета редактирования" и ЖР должен решить эту проблему.
34. Техподдержка 18.12.17 14:08
(31) Я зайду в базу напрямую. Мимо всех этих ваших дат и ЖР. Здесь работы даже не на час, а еще меньше.
72. borodatii 1 18.12.17 16:27 Сейчас в теме
(34) а как Ваше решение отследит изменение, произведенное напрямую в базе? Путём пересчета всех хешей?
Т.е. КлючКонечный <> Хеш(КлючНачальный + ХешДокумента + Соль) для каждого документа.
При этом ХешДокумента - строка из значений всех реквизитов документа.
И проверять нужно будет с самого начала.
И как быстро оно будет работать, при активном документообороте, скажем, через месяц? 6 месяцев? 2 года?

В итоге появится "Дата запрета редактирования данных".
А когда она появится - мы не узнаем об изменении в документах старого периода.

А кто поменял? Нужно хранить пользователя, который записал. И дату, когда поменял.

В случае прямой записи в базу (что это за база, в которую любой Вася может писать напрямую? Куда админы смотрят?) всё равно мы только сможем факт изменения (а если будем использовать Дату запрета редактирования, то и это можем не узнать), ничего более.

В итоге, получим упрощенное версионирование.

А идея, в принципе, интересная.
73. Техподдержка 18.12.17 16:34
(72) Зачем такие сложности? Если есть изменения в базе, тогда ХешДокумента(в блоке)<>ХешДокумента(рассчитаный для контроля). Хеш документа - строка длиной 64 символа. Можно хранить двоичные данные, тогда это будет 32.
Если же внесли изменения в базу и одновременно заменили ХешДокумента, тогда КлючНачальный+ХешДокумента+КлючКонечный не дадут "красивый" хеш. Посмотрите код, он совсем короткий.
110. borodatii 1 19.12.17 07:01 Сейчас в теме
(73) чтобы узнать, что ХешДокумента изменился, нужно проверить всю цепочку блоков, начиная с первого.
(110) Не обязательно. Можно проверять с любого места. Обрезали основную базу. Отправили часть в архив. То же самое делаете с цепочкой блоков.
126. borodatii 1 19.12.17 12:01 Сейчас в теме
(124)
Можно проверять с любого места.
А нужно - с начала цепочки, ибо изменения могли быть где угодно, мы же напрямую в базу лезем.

Обрезали основную базу
Каждые полгода обрезать?

То же самое делаете с цепочкой блоков
А если изменят те документы, цепочка которых в архиве?
Alex_YAM; +1 Ответить
35. Техподдержка 18.12.17 14:10
(31) Стоимость успешной атаки на вашу схему - около 2000 руб.
37. vadim1011985 45 18.12.17 14:20 Сейчас в теме
(35) Так и у вас решение не защищает, Измените цену - это покажите и ваше предупреждение и ЖР а что конкретно изменили -ни ЖР ни блокчейн не покажет .
41. Техподдержка 18.12.17 14:24
(37) Я изменил документ мимо ЖР. Мое решение это отследит. Ваше - нет.
SunShinne; +1 Ответить
42. vadim1011985 45 18.12.17 14:25 Сейчас в теме
(41) я удалил последний документ из блокчейна - теперь и ваше решение не отследит
46. Техподдержка 18.12.17 14:29
(42) Удалили последний документ и последний блок. Чудьненько. Пришла бухгалтерия спросила. Вы почему не работаете? Почему до сих пор документы за этот день не ввели?
200. Dementor 307 20.12.17 20:22 Сейчас в теме
(46)
Почему до сих пор документы за этот день не ввели?

Почему не ввел? Очень даже ввел, распечатал, отдал другу на склад, кладовщик сверился с данными в системе и разрешил отгрузку лишнего мешка сахара, после чего вор-манагер поменял количество на меньшее, перепечатал документы для доставки, и лишь затем ваша обработка добавила измененный документ в блокчейн. Красота!

Технологию блокчейна теоретически можно применить в нашей работе, но не в указанном вами случае! Зачем вообще нужно проверять всю историю документов в базе, если махинации на практике проводят в текущем оперативном диапазон (до недели), в рамках которого восстановить цепочку будет несложно?

Я не говорю, что мою систему нельзя атаковать. Я говорю, что вы, как пользователь, можете сами установить цену атаки и сделать ее бессмысленной.


В таком случае у меня, как у вашего потенциального взломщика (того самого, который умеет обходить дату запрета редактирования, RLS и все варианты версионирования), есть простой и надежный метод взлома вашей системы. Выборочно беру несколько звеньев и в СУБД напрямую изменяю связанные исходящий и входящий хеши - вам звоночек, что документы кто-то изменил - ищите его бумажную копию в архиве, сверяйте и понимайте что творится какая-то непонятная херня. Вы в панике пытаетесь восстановить какой-то из старых бэкапов для сравнения, но (у меня же по условиям ситуации есть доступ к СУБД), как только я решил ломать систему, я позаботился о том, что бы бэкапы стали "невосстанавливаемыми". И теперь у вас выбор: или плюнуть на весь этот блокчейн и забыть как страшный сон, или заплатить китайским майнерам за восстановление цепи и заметания следов моих преступлений.

Да и запись в блокчейн документа в течении 4-10 минут - это полный бред. Защита имеет смысл в компаниях с большим оборотом, когда каждую минуту вводят несколько документов - ваш централизованный блокчейн на базе Proof-of-Work просто уничтожит бизнес.
(200) Если некто может провести успешную атаку в последней неделе, значит у вас нет нормальной системы учета и контроля. При нормальной системе успешная атака возможна только в достаточно "древнем" периоде, который никто уже точно проверять не будет. Неделя должна быть проверена и перепроверена. Документ введеный в понедельник, должен быть проверен в понедельник и перепроверен в пятницу.
Поломать ключи и вывести из строя саму систему, не трогая при этом документы - интересная мысль. Но к чему такие сложности? Можно ведь просто выбросить сервер в окно. Успешная атака - это когда вы что-то сделали и никто ничего не узнал.
Какая разница - сколько времени пишется документ в блокчейн? Основной системе от этого ни холодно ни жарко.
219. Dementor 307 21.12.17 00:31 Сейчас в теме
(216) если есть нормальная система учета и контроля, то никакой блокчейн не нужен! Вполне достаточно или версионирования из БСП или платформенной истории изменения объектов, что бы узнать кто и что изменил. Сама же СУБД должна быть защищена и, если есть параноидальное подозрение, что админы могут сливать какому-то хакеру информацию о пароле доступа, то их можно периодически проверять на полиграфе.

Я скачал обработку вот прямо отсюда. Зашел в базу. Выбрал "файл/открыть". Открыл обработку и нажал кнопку "Запуск". Опишите атаку на эту последовательность действий со стороны "программера уровня Бог".


Каждый день наблюдаю за этой процедурой. В какой-то момент отвлекаю внимание и быстро устанавливаю в браузере расширение Tampermonkey или подобное; скрываю видимость иконки на панели; забрасываю на выполнение мой скриптик. Мой скрипт обнаружив, что просматривается сайт Инфостарт заменяет ссылку на обработку другой ссылкой, которая ведет на мой сервер, где лежит моя обработка, которая всегда будет возвращать успешность проверки.

И это я еще не хакер! Был бы хакером, то установил бы на компьютере резидентную программу, которая анализировала запросы к файловой системы. Если обращается процесс со словом designer, то отдавал бы оригинальную обработку - проверяйте сколько хотите, но если обращается на чтение процесс платформы в режиме предприятия, подсовывал бы свою модифицированную обработку.
(219) Никакая система визуального контроля не в состоянии контролировать всю базу постоянно. Для этого и нужен блокчейн. Резидентная программа - это интересно. Надо поизучать вопрос.
44. vadim1011985 45 18.12.17 14:27 Сейчас в теме
(41) я вообще никакого решения не предлагал. Просто присоединился к обсуждению так как тема интересна
36. vadim1011985 45 18.12.17 14:16 Сейчас в теме
(28) не копию -просто каждое изменение фиксируется в цепочке и его можно отследить. Суть блокчейна в том что
информация одновременно открыта для чтения - все могут видеть все НО + информация защищена от изменений из вне. изменять могут только те для кого эта информация предназначена
38. Техподдержка 18.12.17 14:21
(36) То, что попало в блок цепочек изменить не может никто. В случае с биткоином - совсем никто. В моем примере - практически никто. Неизменяемость - главное свойство блокчейна.
40. vadim1011985 45 18.12.17 14:24 Сейчас в теме
(38) что мешает пользователю с правами админа в конфигураторе грохнуть ваш документ ?
43. Техподдержка 18.12.17 14:27
(40) Ничего не мешает. Только всю цепочку, начиная со следующего документа придется перестраивать. Иначе контроль это обнаружит.
48. vadim1011985 45 18.12.17 14:35 Сейчас в теме
(43) мне никто не мешает изменить ваш код что бы получить нужный результат
51. Техподдержка 18.12.17 14:57
(48) Код контрольного модуля 30 строк. Его любой может проверить визуально. Также можно просто время от времени скачивать правильный код из публичного доступа.
104. Inkasor 25 18.12.17 21:37 Сейчас в теме
(51)Можно и через http api на другую, аудиторскую, машину вытащить.
50. ADirks 179 18.12.17 14:43 Сейчас в теме
Что-то мне подсказывает, что контроль наличия изменений, и гарантия неизменности данных - это не одно и то же.
artbear; the1; +2 Ответить
53. Техподдержка 18.12.17 15:02
(50) Мое решение поразумевает, что при обнаружении изменений есть всего три варианта дальнейших действий.

1. Провести расследование и восстановить документ в первоначальном виде.
2. Плюнуть на все и отказаться от дальнейшего использования системы безопасности.
3. Попросить знакомого китайского майнера задействовать его ферму для восстановления правильной цепочки.

Исходя из этого, я и утверждаю, что мой контроль дает гарантию неизменности.
sulfur17; +1 Ответить
52. karimov_m 18.12.17 15:02 Сейчас в теме
Пока не читал, но сразу напишу что опередил, тоже готовлю статью как реализовать принцип блокчейна средствами 1С ))
54. Техподдержка 18.12.17 15:03
(52) Две статьи лучше, чем одна. Welcome!
55. Йожкин Кот 1049 18.12.17 15:13 Сейчас в теме
Спасибо за пример! Комментирующие, видимо, не совсем понимают суть технологии блокчейна и предлагают использовать ЭЦП, переписать обработку или программно запретить изменение данных базы
SunShinne; support; +2 Ответить
58. Техподдержка 18.12.17 15:19
(55) Спасибо вам за отзыв! Но я также и всем комментаторам благодарен. Они помогают раскрыть суть технологии для всех.
59. acsent 1065 18.12.17 15:20 Сейчас в теме
(58) А можешь написать статью про Proof of Work. было бы интересно
61. Техподдержка 18.12.17 15:25
(59) Ну разве что придумаю, куда его прикрутить в 1С. Чисто теоретические статьи пока не писал.
64. TODD22 17 18.12.17 15:36 Сейчас в теме
(55)
Комментирующие, видимо, не совсем понимают суть технологии блокчейна

Так объясните?
и предлагают использовать ЭЦП, переписать обработку или программно запретить изменение данных базы

предлагают ту же задачу решать другими способами. Вопрос в чём преимущество именно этой технологии для решения конкретной задачи? А не любой другой технологии.
Вопрос в том когда блокчейн для решения задачи это хорошо. Что бы не было "блокчейна" ради "блокчейна".
67. Йожкин Кот 1049 18.12.17 15:50 Сейчас в теме
(64) Не хочу показаться грубым, но Вас в Яндексе/Гугле забанили?
Одно из преимущество в (56) описано
56. acsent 1065 18.12.17 15:14 Сейчас в теме
Смысл блокчейна не неизменности документов, а в возможности рапределенной сети без доверия.
Но так как тут сеть из 1 узла, то смысла в ней конечно нет.
А для контроля неизменности достаточно версионирования, что в 1с уже есть, и даже в платформе.

Ведь если есть полный доступ к базе, то можно удалить все ключи позднее документа и все пересчитать заново
rpgshnik; +1 Ответить
57. Техподдержка 18.12.17 15:17
(56) Неизменность тоже чего-то стоит. Нет?
Я ведь не биткоины майнить предлагаю, а сделать такую систему, чтобы сахар со склада не воровали.
65. TODD22 17 18.12.17 15:38 Сейчас в теме
(57)
чтобы сахар со склада не воровали.

Так блокчейн пока за руку не ловит. То что в программе не изменили, не означает что со склада не унесли.

Значит область сужается до того что система только отслеживает изменения в базе.
rpgshnik; +1 Ответить
66. Техподдержка 18.12.17 15:49
(65) Если унесли, не изменив в базе, это не проблема. Вычли из зарплаты и попросили больше так не делать.
Проблема, когда унесли, изменили в базе и никто не узнал.
63. Техподдержка 18.12.17 15:34
(56) Весь смысл этого решения в том, что "все пересчитать заново" нельзя. Не то чтобы совсем-совсем. За приемлемые деньги нельзя. Некто поменял в старом документе 10 пачек сахара по 1 рублю на 1 пачку по 10 рублей и пошел довольный домой с 9 пачками. На версионирование ему начхать. Он в базу напрямую влез. Это если без моей системы.
А с моей системой за эти несчастные 9 пачек придется потратить ресурсы, которых хватит на один биткоин. 9 пачек ведь не стоят один биткоин?
133. tunesoft 214 19.12.17 13:01 Сейчас в теме
(63)
если юзер с правами админа к примеру изменил документ, удалил версию документа, удалил все записи "вашей системы" то чем поможет "ваша система" ?
(133) Процедура генерации блоков начнет строить цепочку сначала. Не сможет это сделать за отведенное ей время и факт раскроется.
153. tunesoft 214 19.12.17 17:12 Сейчас в теме
(140)
Процедура генерации блоков начнет строить цепочку сначала. Не сможет это сделать за отведенное ей время и факт раскроется.


Раскроется факт что что-то изменили, но в каком объекте будет неизвестно.

"А с моей системой за эти несчастные 9 пачек придется потратить ресурсы"

Не придётся.
62. tailer2 18.12.17 15:32 Сейчас в теме
68. acsent 1065 18.12.17 16:04 Сейчас в теме
А сколько по времени подписывается 1 документ?
70. Техподдержка 18.12.17 16:17
(68) Это зависит от выставленного вами уровня сложности. Конкретно я для тестирования использовал 4-й уровень. На моем core i5 выходило около 10 сек. на документ. Сложность 5 давала около минуты. В данном примере я не использовал побитовые операции, поэтому у меня шаг настройки сложности достаточно большой (4 бита). По хорошему, надо бы сделать побитовые шаги.
74. the1 314 18.12.17 16:41 Сейчас в теме
(70) Мне кажется, или это неприемлемо много?
Прикрепленные файлы:
75. the1 314 18.12.17 16:43 Сейчас в теме
(74) шучу, конечно, минус не ставил, тема интересная, заставила под другим углом посмотреть на модную тенденцию
SunShinne; +1 Ответить
76. Техподдержка 18.12.17 16:48
(74) В данном случае нет смысла говорить много или мало. Чтобы система работала, время на подпись не должно быть ни большим, ни маленьким. В идеале оно должно быть таким, чтобы 24 часов впритык хватало на подпись вновь поступивших за эти 24 часа документов.
69. Synoecium 366 18.12.17 16:17 Сейчас в теме
Спасибо. Вы смогли простыми словами и примерами поведать о довольно сложных вещах (на самом деле не настолько сложных :)
71. Техподдержка 18.12.17 16:18
(69) Очень хорошо, что вы увидели простоту.
77. starik-2005 1386 18.12.17 16:50 Сейчас в теме
Блокчейн без распределенной базы - штука бессмысленная, ибо суть технологии в том, чтобы данные транзакций были доступны всем держателям распределенной базы, что позволяет без доверительного центра иметь возможность удостовериться в истинности операции.

Но в общем и целом, если сократить круг держателей базы транзакций до участников некоторой хозяйственной деятельности, то интерес к этой технологии может быть оправдан и необходимости в дополнительной математике уже не будет, т.к. любой узел просто не даст поступить изменению, а записи в узле с изменениями при первом входящем пакете с контрольной суммой будут скомпрометированы и признаны недействительными и система перейдет в режим синхронизации разрушенных ("подмененных") блоков.
SunShinne; Di-dog; +2 Ответить
78. Техподдержка 18.12.17 16:53
(77) Эта статья - заявка на то, что блокчейн и в обычной базе ничего себе блокчейн. Я делаю базу с неизменяемыми транзакциями. И это имеет свой смысл.
SunShinne; +1 Ответить
79. starik-2005 1386 18.12.17 17:00 Сейчас в теме
(78)
И это имеет свой смысл.
Можно написать триггер для SQL-базы, который будет в запись подставлять некий хеш при INS ERT и просто ничего не делать при UPDATE и DELETE - и этого уже будет достаточно, чтобы сделать таблицу неизменяемой. Дальше при SELE CT триггер на валидацию и флаг того, что строка таблицы не удовлетворяет условию связанности. Т.е. 1С тут как таковая и не нужна.
82. Техподдержка 18.12.17 17:04
(79) Стоимость успешной атаки на вашу систему в пределах 2000 руб. Стоимость успешной атаки на мою систему зависит от выставленного уровня сложности. Это может быть и 20 тыс. долларов (условно 1 биткоин) и миллион долларов. Сравните.
Оставьте свое сообщение
Все разделы

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 150 000 руб.
Полный день