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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Да и запись в блокчейн документа в течении 4-10 минут - это полный бред. Защита имеет смысл в компаниях с большим оборотом, когда каждую минуту вводят несколько документов - ваш централизованный блокчейн на базе Proof-of-Work просто уничтожит бизнес.
(200) Если некто может провести успешную атаку в последней неделе, значит у вас нет нормальной системы учета и контроля. При нормальной системе успешная атака возможна только в достаточно "древнем" периоде, который никто уже точно проверять не будет. Неделя должна быть проверена и перепроверена. Документ введеный в понедельник, должен быть проверен в понедельник и перепроверен в пятницу.
Поломать ключи и вывести из строя саму систему, не трогая при этом документы - интересная мысль. Но к чему такие сложности? Можно ведь просто выбросить сервер в окно. Успешная атака - это когда вы что-то сделали и никто ничего не узнал.
Какая разница - сколько времени пишется документ в блокчейн? Основной системе от этого ни холодно ни жарко.
219. Дмитрий Кинаш (Dementor) 207 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) не копию -просто каждое изменение фиксируется в цепочке и его можно отследить. Суть блокчейна в том что
информация одновременно открыта для чтения - все могут видеть все НО + информация защищена от изменений из вне. изменять могут только те для кого эта информация предназначена
(36) То, что попало в блок цепочек изменить не может никто. В случае с биткоином - совсем никто. В моем примере - практически никто. Неизменяемость - главное свойство блокчейна.
40. Вадим Мориков (vadim1011985) 45 18.12.17 14:24 Сейчас в теме
(38) что мешает пользователю с правами админа в конфигураторе грохнуть ваш документ ?
(40) Ничего не мешает. Только всю цепочку, начиная со следующего документа придется перестраивать. Иначе контроль это обнаружит.
48. Вадим Мориков (vadim1011985) 45 18.12.17 14:35 Сейчас в теме
(43) мне никто не мешает изменить ваш код что бы получить нужный результат
(48) Код контрольного модуля 30 строк. Его любой может проверить визуально. Также можно просто время от времени скачивать правильный код из публичного доступа.
104. Петр Цап (Inkasor) 25 18.12.17 21:37 Сейчас в теме
(51)Можно и через http api на другую, аудиторскую, машину вытащить.
50. Алексей (ADirks) 179 18.12.17 14:43 Сейчас в теме
Что-то мне подсказывает, что контроль наличия изменений, и гарантия неизменности данных - это не одно и то же.
artbear; the1; +2 Ответить
(50) Мое решение поразумевает, что при обнаружении изменений есть всего три варианта дальнейших действий.

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

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

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

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

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

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

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


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

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

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

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