На изображении — логотип цифровой Найры, валюты Нигерии. Это первая работающая CBDC в мире (после маленьких Багамских островов с их Send Dollar). Запущена в октябре 2021 года.

На Хабре были попытки обсуждения темы цифровых наличных (Digital Currency) и в частности фиатных цифровых наличных (Central Bank Digital Currency, CBDC). Однако, с моей точки зрения, не было ни одного удовлетворительного ни технического, ни социального описания "на пальцах" что это такое и зачем (а главное КОМУ) это нужно.

Если зайти на сайт https://cbdctracker.org/ то можно увидеть, что тема более чем хайповая с точки зрения многих государств... Так как инфобез понятие комплексное, думаю тема цифровых наличных обязательна к изучению для грамотных спецов хотя бы "на пальцах".

В данном посте разберём что такое цифровые наличные, чем они отличаются от криптовалют (спойлер: почти всем) и приведём пример алгоритма цифровых наличных.

Кто не любит "социально-экономическое бла-бла-бла" (а зря!) — идите к главе "Пример протокола", там описание алгоритма цифровых наличных "на пальцах".

Занудство. О нюансах перевода: "цифровые наличные", "цифровые деньги" или "цифровая валюта"?

При переводе любых терминов нужно переводить не "в лоб", а стараться учесть техническую культуру обоих языков.

Currency можно перевести как "деньги" или "валюта". В русском языке — это не одно и то же. Валюта это инструмент выражающий обменную ценность ("меняем валюту: рубли на доллары"), а деньги — это универсальный меновой товар имеющий фиксированную измеримую стоимость: купюра в 100 рублей, монета в 10 рублей и т.д.

Так как в Digital Currency мы имеем не счёт, а набор цифровых купюр, то корректнее переводить этот термин как "Цифровые деньги".

Но я пойду дальше и в рамках данного поста буду переводить "цифровые наличные", так как DC это именно наличные деньги (хоть и в цифровом виде), в которых каждая купюра имеет свой собственный блокчейн.

Central Bank обозначает эмитента денег. То есть они не частные, а "центробанковские". "Центробанковские" криво звучить по русски, "цифровые наличные центрального банка" слишком длинно; поэтому я перевожу CBDC на русский язык как фиатные цифровые наличные.

Наличные, "безналичные деньги", криптовалюты, цифровые наличные

Разберёмся в понятиях.

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

Функции денег:

  1. Мера стоимости. Деньги позволяют оценивать стоимость товаров путем установления цен.

  2. Средство обращения. Деньги играют роль посредника в процессе обмена

  3. Средство платежа. В том числе функция денег, позволяющая времени платежа не совпадать со временем оплаты, то есть когда товары продают в кредит

  4. Средство накопления и\или сбережения. Способность денег участвовать в процессе формирования, распределения, перераспределения национального дохода, образования сбережений населения

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

Немого в сторону о функциях денег

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

Так же деньги уже НЕ выступают мерой стоимости, так как наш мир суперпотребительства обесценивает товары. Почти всё (кроме еды) можно купить за очень дорого, а можно найти "не модны" качественный аналог (первая функция).

Получается остаются только две функции: средство обращения и средство платежа.

Свойства денег:

  1. Однородность — отдельные экземпляры товара, монеты\купюры не
    обладают дополнительными свойствами, если они используются как деньги. То есть монета в 10 рублей как деньги равносильна другой монете в 10 рублей.

  2. Делимость — деньги можно оценить одним числом. Например, две кучки денег стоимостью a и b можно представить в виде одной кучки a+b.

  3. Портативность — деньги можно как-то переносить с места на место достаточно удобным способом. Поэтому камни раи это не совсем деньги...

  4. Безопасность:

    1. Неподдельность — деньги невозможно или очень сложно подделать. Фальшивомонетчество уголовное преступление и эмитент денег (почти всегда это государство) борется с этим явлением

    2. Атомарность передачи — передавая деньги другому лицу на сумму a, передающее лицо теряет деньги на ту же сумму a. Деньги не исчезают в никуда и не берутся из ниоткуда. За исключением естественного износа и эмиссии.

    3. Износостойкость — деньги не выходят из строя быстро при правильном хранении и перемещении.

  5. Приживаемость:

    1. Узнаваемость – деньги узнаваемы неким сообществом (обычно это страна или союз стран) как деньги

    2. Универсальность – деньги распространены на определённой
      территории

    3. Согласованность – общество определённой территории согласно
      воспринимать (добровольно или законом) данный товар или
      монету\купюру как деньги

[Физические] наличные — это деньги в каком-либо физическом представлении. Обычно в виде банкнот или монет. Хотя необязательно. Можно использовать шкуры новгородских белок, раковины каури или даже чёрный перец (В V веке король вестготов Аларих I потребовал дань от Рима... перцем). Тут всё понятно, идём дальше.

"Безналичные деньги" — это обязательство банка выплатить вам деньги по требованию. Самое важное что нужно понимать, это то, что "безналичные деньги" — не деньги! При легализации банковского мультипликатора и массовых вкладах почти каждого человека у вас нет атомарности передачи! (sic!) Страдает важнейшее свойство безопасности денег. Именно данный фокус и породил кризис 2008 года. Если ещё не смотрели артхаусный фильм от Paul Grignon по этому вопросу Money as Debt (2006), то обязательно посмотрите! Этот фильм уже классика.

Криптовалюта — совокупность расчётных единиц, учёт которых обеспечивается децентрализованной системой, работающей полностью в автоматизированном режиме по заданным криптографически стойким алгоритмам. Криптовалюты "не отключаемы" даже при наличии такого желания у создателей криптовалюты. Когда-то некоторые люди верили, что криптовалюты могут стать деньгами, но... не вышло. Отсутствует свойство приживаемости. Основная причина, с моей точки зрения: социальная. Так как обещания длятся достататочно долго, а в реальности криптовалюты по-прежнему just4fun, то де факто криптовалюты — это просто завуалированная финансовая пирамида, как МММ.

Цифровые наличные (Digital Currency) — это наличные деньги в цифровом представлении, передача которых осуществляется криптографически стойкими алгоритмами.

Самое сложное свойство этих алгоритмов — это атомарность. Если я перевёл 100 цифровых рублей, то повторно эти же 100 цифровых рублей перевести уже не могу. Атомарность можно обеспечить на доверенном чипе, например SIM-карте; или на удалённом сервере. Это card-based и network-based цифровые наличные соотвественно.

По анонимности цифровые наличные бывают полностью анонимные (никто ничего не знает), анонимно-персонифицированные (банк знает всех, а пользователи нет) и открыто-персонифицированные (все про всех знают)

Первая ласточка: анонимные цифровые деньги Чаума (eCash компании DigiCash)

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

Это неверно. Деньги eCash были анонимными, но эмиссия (первоначальная инициализация) осуществлялась непосредственно DigiCash, организацией Чаума. Таким образом это цифровые наличные, а не криптовалюты. Сама DigiCash брала обязательство менять обратно свои деньги на доллары, как Яндекс.Деньги в 2000-е.

Проект по итогу умер... Когда я учился в Бауманке, многие криптографы-педагоги говорили что "помогли умереть" люди в чёрном (нет, не наши). Однако никакой "не жёлтой" информации на этот счёт мне не попадалось. Если кому-то что-либо известно — пишите в комментариях.

Мне кажется технология просто опередила своё время. Рано было. Вот и весь сказ.

Подробнее можно почитать например в интервью Чаума 1997 года DAVID CHAUM ON ELECTRONIC COMMERCE How Much Do You Trust Big Brother?

Зачем это нужно?

Offline операции

Простые люди после внедрения фиатных цифровых денег заметят только одну разницу: можно будет расплачиваться друг с другом offline, без доступа к сети. Для России, стране с одним из лучших доступов в Интернет, эта проблема стоит не так остро, однако для многих стран это существенный вопрос. Но и нам хуже не будет: мелочь, а приятно.


Теперь перейдём к государству.

Если цифровые деньги не анонимны — это меченые деньги. Каждая купюра имеет свой блокчейн и при отправке его online можно много что государству сделать.

Негативные стороны вопроса в стиле "Большого брата" перенесём на конец поста (Действительно, есть серьёзный риск для общества!) А пока перечислим позитивные моменты

Ликвидация коррупции (ну почти)

В легализме можно быть коррупционером, но "законным" коррупционером. Вы не можете расстрелять человека только потому что он враг народа (кстати, кто не в курсе, это придумали в Древнем Риме, а не при Сталине и не при якобинцах). Люди, которые берут взятки — не идиоты. Ранее взятки брали борзыми щенками, сейчас существуют более интересные схемы.

Представьте что будет, если вы законом ЗАСТАВИТЕ всех государственных и "окологосударственных" подрядчиков и субподрядчиков (вплоть до выдачи зарплаты сотрудникам) работать только с цифровыми наличными?... Далее на физлицах не важно. Все компании-"прокладки" будут видны как на ладони! Любые схемы будут палиться на раз! У вас будет жжёсткая доказательная база. Звёздочки ФСБ-шникам будут сыпаться пачками. Главное подумать, что делать с армией ФСБ-шников после ликвидации (ну почти) коррупции... Ой, чё то заговорился. Ладно, дальше.

Контроль вывоза\ввоза денежной массы из экономики

Экономика "адаптируется" к денежной массе дефицитом и\или инфляцией. Если резко вбросить денежную массу (или наоборот изъять) это может сильно повредить экономике.

По этой причине почти во всех странах есть лимиты на ввоз и вывоз наличности. Если хотите больше -- декларируйте.

При цифровых наличных нет такой проблемы.

Революция в науке экономике

Можно накрутить Data Science на объем всех транзакций и проводить экономические прогнозы. По сути цифровые деньги создадут новую экономику как науку!

Человечество больше не будет тыкаться палочкой, надеясь попасть куда нужно.

Это же прекрасно!

Плановая экономика 2.0

В плановой экономике есть три проблемы:

  1. Разрастание позиций производства — чем сложнее общество, тем больше позиций. Чем больше позиций тем сложнее сделать план.

  2. Контроль производства — проблема "приписок"

  3. Сбрасывание издержек профицита\дефицита — мир не идеальный. Когда виден дефицит или профицит, нужно сбрасывать издержки на другие экономические системы.

Первые две проблемы цифровые деньги не решают. А вот третью могут!

А как решить проблему 1 и 2 ?

Первая проблема решается просто автоматизацией. Большая компьютерная экспертная система, выводящая более-менее адекватный план на входных данных. И тогда не важно сколько наименований продукции. В СССР был проект ОГАС, гениальная идея В.М.Глушкова и А.И.Китова. Однако уже подгнившая номенклатура как господствующий квазикласс-квазисословие увидела угрозу своего господства и зарубило проект.

Проблема с приписками решается токенизацией продукции. Если есть продукция, она рано или поздно будет куплена (или утилизирована). Таким образом "подвисшие токены" в системе покажут приписки.

Третья проблема решалась в СССР взаимодействием с частным бизнесом (артелями), пока Хрущёв не запретил предпринимательство (1956-1960). Как только было понятно что "накосячили с планом" этой информацией делились с бизнесом. Утрировано: перепроизводство тканей; следовательно, частному бизнесу (артелям) нужно нарастить мощности и пошить больше одежды\штор и т.д.

Но как прогнозировать дефициты и профициты до того как они возникнут? И желательно как можно раньше. Чем быстрее среагируем, тем меньше будет проблем.

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

Эту систему, кстати, можно замкнуть как обратную связь на построение следующего плана. То есть плановая экономика будет на 99.9% сама себя регулировать. Действовать почти автономно.

Контроль инфляции

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

Имея систему цифровых наличных, есть время сразу принять антиинфляционные меры по тому или иному товару\услуге, а не исправлять ситуацию после того как инфляция уже случилась.

Упрощение бюрократии

... или её полная автоматизация. Если видно куда ушла каждая купюра и если можно запросить статус получателя, то в чём проблема?

Вот ИП-шник. Покупает куриц, продаёт шаурму. Вот его цифровой счёт. Видно кто именно платил и кому платил он. Автоматически нельзя понять?


Пример протокола

Давайте приведём пример алгоритмических функций для цифровых наличных. Максимально простой и рабочий, "на пальцах".

Всего у нас будет три стороны:

  1. банк эмитент;

  2. кошелёк А;

  3. кошелёк Б.

Для того чтобы цифровые наличные работали, нужно прописать три алгоритма:

  1. инициация нового кошелька;

  2. эмиссия новой цифровой банкноты;

  3. перенос банкноты с сервера банка на кошелёк;

  4. перенос банкноты с кошелька на другой кошелёк.

Последний пункт у нас будет offline, так интересно! С network-based все могут.

Секреты на стороне эмитента

В системе будет использоваться какой-нибудь алгоритм асиметрического шифрования, например RSA или отечественный ГОСТ 34.10-2018.

Наш эмитент будет иметь два ключа:

  1. bpk — bank private key, закрытый ключ шифрования

  2. bok — bank open key, открытый ключ расшифрования

На этом всё. Для примера "на пальцах" этого достаточно.

Инициация нового кошелька. Секреты на стороне доверенного носителя кошелька.

Мы будем хранить ключи на доверенном носителе. Для нашей card-based системы это будет SIM карта. А сам кошелёк будет представлять собой приложение для телефона.

Можно ключи хранить на USB-токене или на другом доверенном носителе.

Введём обозначение:

(message)[private\_key]

Это значит что сообщение message было зашифровано приватным ключом private_key. Имея публичный открытый ключ можно расшифровать сообщение и получить искомый message.

Банк гененирует два ключа и одну подпись:

  1. spk — sim private key, закрытый ключ шифрования асиметрического алгоритма, хранящийся на доверенном носителе

  2. sok — sim open key, открытый ключ шифрования асиметрического алгоритма, хранящийся на доверенном носителе

  3. (sok)[bpk] — подпись хеша от sok приватным ключом bpk. Эмиссия новой банкноты

По (sok)[bpk] нужно важное пояснение. Чтобы расшифровать, нужен ключ bok, который публично доступен. Таким образом владелец пары (spk, sok) может доказать что пара ключей создана не им, а эмитентом.

Мы генерируем для стороны А свою пару ключей и подпись, для стороны B свою пару ключей и подпись. То есть это разные пары. Обозначим их для кошелька А как spkA, sokA, (sokA)[bpk], а для кошелька B как spkB, sokB, (sokB)[bpk].

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

Введём понятие bnid (banknote id) — как идентификатор банкноты. Ведём глобальную переменную сounter в доверенном носителе, которая никогда не уменьшается. Изначально установим его в 1.

Создадим словарь(map) wallet вида: counter -> bnid

Введём функцию get_counter(bnid), которая делает следующее:

  1. если bnid есть в значениях wallet, вернуть ошибку

  2. взять глобальную переменную counter

  3. Определяем wallet[counter] := bnid

  4. увеличиваем counter на 1

  5. вернуть на выходе counter.

Данная функция реализована в интерфейсе доверенно носителя. Обратите внимание что для какого-либо counter-а определён только один bnid

Эмиссия новой цифровой банкноты

Введём обозначение:

message_1 | message_2

Как побайтовую конкатенацию сообщений.

Введём обозначение:

hash(message)

как хеш от сообщения message. Какой именно хеш — решите сами. Например sha256 или Стрибог.

Первый блок цифровой банкноты — это структура данных, имеющая поля:

  1. bnid — banknote id, идентификатор банкноты

  2. amount — величина банкноты. Например "100 рублей"

  3. ... — какие-либо другие данные. Например время эмиссии банкноты, может быть код валюты, идентификатор банка (если у нас несколько эмитентов) и так далее

  4. h = hash (bnid | amount | ...) — хеш всех вышеперечисленных величин. Величины конкатенируются.

  5. (h)[bpk] — подпись хеша

Таким образом имея bok ключ можно убедится что цифровая банкнота настоящая. Для стороны А или Б нужно вычислить хеш от конкатенации всех величин, после расшифровать (h)[bpk] и убедится что хеши совпали.

Перенос банкноты с эмитента на кошелёк А

Здесь и далее вся коммуникация происходит в защищённом канале связи.

Итак мы хотим передать цифровую банкноту от банка эмитента кошельку A.

Физически это может происходить так: человек с телефоном по NFC общается с банкоматом (часть эмитента). В купюроприёмник он вставляет 100 бумажных рублей. Купюроприёмник "проглатывает" купюру. Теперь нужно по NFC передать 100 цифровых рублей.

Благодаря полю (sokА)[bpkА] кошелёк А может доказать что он реальный кошелёк, созданный эмитентом.

На первом шаге сервер передаёт кошельку инициированную банкноту (первый блок)

Передача Блока 1 от эмитенту кошельку А.
Передача Блока 1 от эмитенту кошельку А.

Первым делом кошелёк А проверяет корректность блока 1. Для этого вычисляется хеш h_check=hash(bnid|amount|...), с помощью открытого bok расшифровывает (h)(bpk) и проверяет равенство хешей h==h_check.

Далее кошелёк А создаёт новый блок 2:

  1. bnid (banknote id), равный bnid первого блока

  2. parent_h = h — это значение h предыдущего блока.

  3. (sokA)[bpk] — подпись sokA банка-эмитента

  4. counter = get_counter(bnid) — вызов функции get_counter в доверенном носителе кошелька А. Записываем значение counter.

  5. ... — какие-либо другие поля. Например время и место транзакции, идентификатор банкомата, который забрал физическую денюшку и т.д.

  6. h0 = hash (bnid | parent_h | counter | ... ) — хеш всех вышеперечисленных значений

  7. (h0)[spkA] — подпись, доказывающая, что блок создан кошельком А.

  8. пустое поле

  9. пустое поле

Важное замечание: процедура 4 и 7 являются атомарными. То есть доверенный носитель создаст counter и подпишет весь блок в рамках одного вызова! Процедура подписи, отдельная от counter-а отсутствует. Это важно с точки зрения информационной безопасности. Почему? Напишем позднее.

Далее кошелёк А передаёт блок 2 эмитенту

Структура данных на шаге передачи блока 2 от кошелька к банку-эмитенту. 
Одинаковые поля выделены одним цветом.
Структура данных на шаге передачи блока 2 от кошелька к банку-эмитенту. Одинаковые поля выделены одним цветом.

Эмитент подписывает блок 2:

  1. bnid

  2. parent_h

  3. (sokA)[bpk]

  4. counter

  5. ...

  6. h0

  7. (h0)[spkA]

  8. h = hash (bnid | parent_h | counter | ... | h0 | (h0)[spkA] )

  9. (h)[bpk]

После блок 2 передаётся кошельку А.

Итоговый блок 2 передаётся Кошельку А
Итоговый блок 2 передаётся Кошельку А

С этого момента банкнота bnid принадлежит кошельку А.

Важное замечание: мы считаем банк-эмитент порядочной стороной. То есть после передачи банкноты с номером bnid, данная банкнота более не будет передаваться никакой стороной. Это в интересах эмитента не порождать поддельные деньги, так как за каждый цифровой рубль\юань\найру эмитент обязуется предоставить физические наличные.

Перенос банкноты с кошелька А на кошелёк Б

Перенос между кошельками существенно отличается от переноса между банком-эмитентом и кошельком. Ведь одна из сторон может быть непорядочной и дважды передать одну и ту же банкноту между разными получателями. Таким образом мы получим "фальшивые" цифровые наличные.

Доверять мы можем только доверенной среде в кошельке А или Б. Но не самому приложению или сети передачи данных.

Итак, у нас есть некий Блок i (это не обязательно Блок 2) parrent_h указывает на Блок i-1, его parrent_h на предыдущий блок и так далее, пока не сошлёмся на Блок 1.

Кошелёк А передает все блоки кошельку Б

Кошелёк Б проверяет их корректность, последовательно проверяя все подписи. Далее, аналогично предыдущему алгоритму, создаёт новый Блок (i+1) c двумя пустыми полями:

  1. bnid (banknote id), равыный bnid первого блока

  2. parent_h = h — это значение h предыдущего блока.

  3. (sokB)[bpk] — подпись sokA банка-эмитента

  4. counter = get_counter(bnid) — вызов функции get_counter в доверенном носителе кошелька Б. Записываем значение counter.

  5. ... — какие-либо другие поля. Например время и место транзакции, идентификатор банкомата, который забрал физическую денюшку и т.д.

  6. h0 = hash (bnid | parent_h | counter | ... ) — хеш всех вышеперечисленных значений

  7. (h0)[spkB] — подпись, доказывающая, что блок создан кошельком Б.

  8. пустое поле

  9. пустое поле

Аналогично предыдущему алгоритму передаем Блок (i+1) кошельку А.

А дальше вот такой фокус (для удобства см. ещё и картинку).

  1. Определим counterA как counter предыдущего Блока (i)

  2. Обращаемся к кошельку А. Проверяем что bnid == wallet[counterA]. Если это не так (в частности в словаре нет ключа), то ошибка и конец алгоритма

  3. Удаляем ключ counterA из wallet словаря кошелька А.

  4. Берём хеш и подписываем Блок (i+1)

Важные нюансы:

  • Пункты 2, 3, 4 делаем в доверенной среде!

  • Пункты 2, 3, 4 атомарны. То есть это одна функция.

Пример подписи Блока i+1 кошельком А. В словаре wallet есть четыре записи. Третья содержит counterA предыдущего блока, следовательно купюру bnid ещё НЕ передавали и можно подписать Блок i+1
Пример подписи Блока i+1 кошельком А. В словаре wallet есть четыре записи. Третья содержит counterA предыдущего блока, следовательно купюру bnid ещё НЕ передавали и можно подписать Блок i+1

Далее передаём по сети Блок (i+1)

Итоговое состояние блокчейна для купюры bnid. В wallet B появились (ключ, значение) в виде (counterB, bnid)
Итоговое состояние блокчейна для купюры bnid. В wallet B появились (ключ, значение) в виде (counterB, bnid)

C этого момента кошелёк Б владелец купюры с номером bnid. Обращаем внимание, что counterA уже отсутствует в кошельке А, следовательно данную купюру А повторно переслать не может. У кошелька Б есть counterB, следовательно он имеет возможность передачи купюры.

А если у нас online взаимодействие, а не offline ?

В этом случае не нужно городить никаких огородов с counter-ами и даже с доверенной средой.

Вся безопасность обеспечивается на сервере. Данная задача давно решена в прикладной криптографии.


Проблема больших хвостов

Есть проблема накопления блоков для каждой купюры... На определённом этапе к каждой купюре будет такой хвост блокчейнов, что хранить их будет крайне затруднительно...

Передавая банкноту из одного кошелька в другой мы увеличиваем блокчейн для КАЖДОЙ цифровой купюры. Это неудобно, необходим механизм обмена на купюры с более малым хвостом, либо "схлопывания" блокчейна
Передавая банкноту из одного кошелька в другой мы увеличиваем блокчейн для КАЖДОЙ цифровой купюры. Это неудобно, необходим механизм обмена на купюры с более малым хвостом, либо "схлопывания" блокчейна

Для этого, как только устройство будет доступно online, можно установить связь с сервером эмитента и поменяться банкнотами: отдать все банкноты с длинным хвостом на новые банкноты (у которых только блок 1).

Можно так же в каждый блок блокчейна добавлять пустое поле на случай подписи эмитента. Эмитент подписывает эти блоки как только их кто-то первый пришлёт. В этом случае можно хранить только первый блок и последний блок с подписью эмитента. А остальные блоки удалить из памяти.

Таким образом в цифровых наличных время от времени нужно быть online. Для удобства пользования.

Почему это безопасно?

Безопасность обеспечивается доверенной средой внутри каждого из кошельков. Без доверенной среды решить задачу offline передачи денег невозможно.

Для зануд Для любителей математики можно доказать формально. Кому интересно — см. под спойлером.

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

Докажем от противного.

Предположим что можно решить задачу однократной передачи цифровой банкноты БЕЗ доверенной среды и offline (без доступа в глобальную сеть).

Любой алгоритм, работающий где угодно, можно абстрактно предствить в виде конечного автомата:

A=(S, X, Y, \delta, \lambda)

где S — множество состояний, X, Y — множество входа\выхода, δ — функция переходов,  λ — функция выходов.

Предположим что мы владеем купюрой в "100 рублей" и это соотвествует некоему состоянию a∈S. Предположим что мы передали купюру кому-либо и это соотвествует состоянию b∈S.

Так как среда не доверенная, то мы внутри неё можем произвольно менять память. Таким образом на формальном языке конечных автоматов имеем утверждение:

\forall s_0, s_1 \in S , \exists x \in X: \delta(s_0, x) = s_1

нетрудно догадаться что волшебный x для функции переходов δ это, например, команда dd для Linux оболочки с правами root. :)

Следовательно находясь в состоянии b, можно перейти в состояние a.

Но в состоянии a мы владеем 100 рублями, которые ранее передали. Следовательно мы можем повторно те же 100 рублей передать другому лицу.

Получили противоречие.

ч.т.д.

Что мы имеем в доверенной среде?

Проверка наличия counter и подпись происходит атомарно. Так же counter-ы никогда не повторяются, так как get_counter увеличивает counter на единицу при каждом вызове.

Следовательно подписывая новый блок мы можем быть убеждены что более никогда не подпишем никакой другой блок.

Таким образом counter — это что-то типа одноразового билетика.

А что если доверенную среду поломают?

Если это токен или SIM-ка, то задача нетривиальная. В конце концов мы же пользуемся банковскими картами? Пропусками? Ведём online-бухгалтерию?..

Но может показаться что риск с цифровыми наличными более существенен. Однако это не так. Даже если кто-то поломает SIM карту (или токен), он НЕ ПОЛУЧИТ доступ ко всем деньгам системы. Хакер просто сможет бесконтролько умножать только те bnid, которые у него находятся.

Во-первых эти bnid нужно как-то получить. Во-вторых, что более существенно, хакер должен эти bnid-ы как-то слить.

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

А рано или поздно это произойдёт (скорее рано). Мы очень быстро узнаем что система поломана.

Социальная проблема: Большой Брат

"Никому нельзя будет ни покупать, ни продавать, кроме того, кто имеет это начертание, или имя зверя, или число имени его." (Откр, 13:17)

Давайте серьезно. Да, есть странные люди, которые против ИНН-нов... Но в современном цифровом мире есть реальные угрозы нашей свободе и безопасности.

Как быть с цифровыми наличными с точки зрения проблемы Большого Брата? Возможны три варианта:

  1. Просто забить и плыть по течению. Принять как неизбежность.

  2. Не внедрять технологию, не смотря на социальные преимущества.

  3. Осознать проблему и создать систему обратной связи для её контроля

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

Согласившись на п.2, мы отстанем в технолоическом развитии в XXI веке. Поэтому я против этого.

Остаётся п.3, если я ничего не напутал и нет других вариантов.

Любой анализ информации цифровых наличных должен рассматриваться либо в обобщённом виде (152 ФЗ, привет!), либо крайне деликатно по жжёстким законам и правилам.

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

Статистика подобной слежки ежегодно (без имён) должна публиковатся в открытом доступе.

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

Я думаю даже, что сама система цифровых наличных (как протокол передачи) должна быть Open Source. Много вопросов и страхов тогда сами собой отпадут. И внутри системы нужно предусмотреть физическую невозможность блокировки offline кошельков. Есть негодяй? Ловите его очно. Суд и только суд. Не должно быть физической возможности заблокировать кошелёк человека по нажатию кнопки.

Если увидите орфографическую ошибку — не поленитесь и напишите мне в личку.
Р.S.> Добавил тег "криптовалюты", так как тега "цифровые наличные" нет

Комментарии (51)


  1. ws233
    06.10.2022 16:13
    +3

    А еще вы забыли упомянуть про безопасность. Украденную цифровую денежку легко отследить и вернуть владельцу. И наказать мошенника. Особенно, если регистрироваться цифровые кошельки будут строго по паспорту (для физ.лица) или по ИГРН (для юр.лиц).


    1. PavelMSTU Автор
      06.10.2022 16:30
      +1

      По факту да. Просто это настолько очевидно, что забыл написать :)))


  1. Firz
    06.10.2022 16:38

    Итого, просто решили «ладно, давайте просто будем дружно верить что костыль с оффлайн передачей между кошельками не сломается/не будет взломан(так как „правильно“, алгоритмически это не решить), ну или хотя бы не так часто это будет происходить, чтобы доставлять глобальные неудобства».


    1. PavelMSTU Автор
      06.10.2022 17:46
      +1

      Где костыль?


      1. RTFM13
        06.10.2022 19:03
        +1

        Вот именно, что даже костыля нет. Есть какой-то поток бессмысленных деталей.

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


        1. allter
          06.10.2022 19:55

          В принципе, для цифроденег ЦБ, где все кошельки известны ЦБ и где кошельки потом будут сверяться в онлайне с базой ЦБ, проблема двойной траты не так важна. Сгрузили несколько дублирующих банкнот - кошелек дубликатор идентифицируется и платит/отдыхает.

          То же самое и с атакой на блокировку денег плательщика - кошелек, злоупотребляющий офертами (которые могут быть обеспечены депозитами в ЦБ) опустошается и средства отправляются несостоявшемуся плательщику.


          1. RTFM13
            06.10.2022 20:51
            +1

            потом будут сверяться в онлайне с базой ЦБ

            Ключевое слово "потом". Мошенник к тому времени выгоду так или иначе получит. То, что сам ЦБ ничего не потеряет это и так понятно.


            1. allter
              06.10.2022 21:32
              +1

              Ну получит, и получит. Если пострадавший получит компенсацию (возможно, в каких-то ограниченных объёмах), то какая тут разница?

              В принципе, это ничем не отличается от приёма наличных. Вручают пятитысячную бумажку - подумай 10 раз, стоит ли её принимать, т.к. не факт, что она подлинная.

              Хочешь безопасного приёма средств - проведи онлайн. А если за какой-нибудь проезд принимаешь - ну так компенсируют.


      1. Firz
        06.10.2022 19:26

        Реализация оффлайн транзакций — костыль. Понятно что реализовать «правильный»(никто не доверяет никому) вариант невозможно(ну или как минимум кажется что невозможно), приходится добавлять в систему элемент «давайте доверять вот этому элементу системы», чтобы хоть как-то работало, вот это и есть костыль.


        1. PavelMSTU Автор
          06.10.2022 19:37

          Почему оффлайн транзакции  — костыль?


          1. Firz
            06.10.2022 19:40

            Потому что вся система оффлайн транзакций строится на вере в то что ПО и/или аппаратная часть у отправителя такая как мы ожидаем и делает то, что мы ожидаем. То есть по сути мы просто верим что отправитель не будет мухлевать.


            1. PavelMSTU Автор
              06.10.2022 21:48

              Перефразируя вас "Снятие наличных стоиться на вере в то что смарт-карта делает то, что мы ожидаем. То есть по сути мы просто верим что отправитель не будет мухлевать. "

              Дело в том, что это не верное утверждение. Как и ваше.

              Отправитель НЕ будет мухлевать до тех пор, пока банковские карты надёжны. В чём проблема доверенную среду запихнуть в SIM-карту? По сути та же смарт-карта, только меньше и ещё даёт возможность звонить.

              Не убедили.


              1. inkelyad
                06.10.2022 22:16

                 В чём проблема доверенную среду запихнуть в SIM-карту?

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


              1. Firz
                06.10.2022 23:09

                Снятие наличных смарт-картой строится на том, что смарт-карта аутентифицирует себя в онлайн системе, «доказывая» что это именно та смарт-карта, которую выдала пользователю эта онлайн система, потом онлайн система смотрит в своей базе, правда ли есть деньги на счету, привязанному к этой карте и выдает их. Вы же предлагаете выдавать деньги потому что смарт-карта(или что-то другое, выглядящее как смарт-карта) сказала «у меня есть деньги, вот „расписка“ из банка что это правда, как только ты выдашь мне денег, я честно-честно удалю эту расписку и не буду её нигде повторно использовать», чувствуете разницу? Даже если смарт-карта взламывается, денег из неоткуда все равно не появляется в онлайн системе с аутентификацией по смарт-карте.

                Если так легко сделать полностью доверенные устройства, которые никто никогда не сломает или не модифицирует, или не сделает свое, которое будет прикидываться доверенным, зачем вообще все эти сложности со слоями алгоритмов, блокчейном? Подошли с устройством к банку, он у себя в базе убавил с вашего счета 100 рублей, доверенное устройство у себя в базе прибавило 100 рублей, подошли к другому доверенному устройству, ваше списало у себя в базе 100 рублей, другое добавило себе в базу 100 рублей.


  1. svr_91
    06.10.2022 16:47

    Контроль инфляции

    Да здравствует плановая экономика? Не думаете, что если бизнесмену будет по каким-то причинам не выгодно продавать товар с наценкой, он его просто не будет продавать?

    Ликвидация коррупции

    Вот только в первую очередь пострадают обычные люди, которые например являются мелкими предпринимателями

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

    Следить за кем-то вообще подсудное дело. За чиновниками уж тем более.

    Все остальные свойства тоже притянуты за уши.

    Мне кажется, главные свойства, которые здесь не упомянуты, это:

    Однородность

    Мне кажется, одно из самых интересных свойств цифровых денег, это то, что их можно сделать неоднородными. Если раньше, имея 100 рублей, я мог или оплатить ими коммуналку, или купить гамбургер, то сейчас работодатель может выдать мне 50 рублей на коммуналку и 50 на гамбургеры. Не успел что-то потратить? Ну чтож, деньги сгорают.

    Уменьшение количества посредников в передаче денег (банки, и т.п.)

    Тут все понятно, меньше посредников, больше экономии

    Перекладывание ответственности за хранение денег на частных лиц

    Не знаю конкретно, чем это поможет, но перекладывание ответственности в любом деле считается за благо (вспомните ту же "это по предоставляется как есть, ..."), тут получается так, что ты эти деньги потерял, ты и виноват.

    Введение новых посредников в схеме хранения и передачи денег

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


    1. inkelyad
      06.10.2022 16:51
      +1

      Чем это отличается от банка, которые вроде бы предлагается убрать?

      Тем что банк может что-то делать с теми деньгами (выдать их в кредит), которые ему доверили. А посредник по хранению цифровых денег может даже не знать, что он деньги хранит. Увидит только какой-то шифрованный файл/образ c бакапом неизвестно чего.


  1. vtools
    06.10.2022 17:02

    Даже если кто-то поломает SIM карту (или токен), он НЕ ПОЛУЧИТ доступ ко всем деньгам системы.


    Оффлайн - это самое слабое звено в вашем рассуждении. Если взломать сим-карту и вытащить оттуда приватник - spk (sim private key), то можно его загрузить в собственное программное устройство, которое не удаляет информацию от переданных банкнотах и таким образом бесконечно тратить деньги.

    Т.е. поступать так:
    1. Украсть сим карту (чтобы совершать зловредные действия не от своего имени)
    2. Достать приватник и перенести на собственное устройство
    3. Подойти к банкомату и выпустить банкноту на 1 млн
    4. Записать состояние кошелька в бэкап
    5. Найти жертву и купить на 1 млн в оффлайне (на кошельке 0 денег)
    6. Восстановить из бэкапа (у нас на кошельке опять 1 млн)
    7. Повторить шаг 5

    Безопасность обеспечивается доверенной средой внутри каждого из кошельков. Без доверенной среды решить задачу offline передачи денег невозможно.

    Именно поэтому весь ваш протокол небезопасен. Чтобы доказать безопасность - докажите что возможно создание не взламываемых чипов сим-карт (доверенной среды в вашей терминологии).

    Кстати, это ваш протокол или это центральные банки так фантазируют?


    1. inkelyad
      06.10.2022 17:07

       таким образом бесконечно тратить деньги

      В конце концов(а если сделать правильно - то очень быстро) какая-нибудь система заметит, что ей предъявили одни и те же 'монетки'. И потом соответствующие службы пойдут задавать неудобные вопросы всем причастным. В общем, процедура та же, как с обычным физическими фальшивыми купюрами.


    1. PavelMSTU Автор
      06.10.2022 17:48

      Подойти к банкомату и выпустить банкноту на 1 млн

      Хм... добавить онлайн проверку ?

      Оффлайн нужен при обмене между устройствами А и Б, но не между банкоматом и устройстовм.


      1. lifespirit
        06.10.2022 18:08

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


        1. inkelyad
          06.10.2022 18:13

          Я так понял, именно так. И именно поэтому тут все эти опции для 'Большого Брата'. Чтобы потом можно было найти того, кто именно повторные оплаты делал


        1. PavelMSTU Автор
          06.10.2022 18:13

          Ну да, на свой страх и риск. Но каковы риски? Думаю минимальны. В отличие от физических наличных на которых возможно не осталось физических отпечатков, в цифровых наличных докажите кто и когда вас обманул.

          Взломать чип -- серьезное дело. И данный риск не помешал нам всем ходить с банковскими картами. Не думаю что если их и взломают, то будут красть арбузы.

          И повторю ещё раз: при online у нас всё вообще в шоколаде. Там не нужны никакие counter-ы. Offline -- это доп.опция.

          По сути, на практике, думаю все CBDC клиенты будут иметь по ДВА кошелька: offline и online.


          1. lifespirit
            06.10.2022 19:32

            И данный риск не помешал нам всем ходить с банковскими картами.

            И это и происходит, с той лишь разницей что в интернете почти везде есть 3D Secure а снимать деньги с банкомата очень дорого по процентам, так как снимающий сядет почти наверняка. А в случае полного провала всё застраховано. Форумы по такой тематике процветают по сей день.

            Впрочем во мне конечно больше говорят неоправданные ожидания. Но я бы рассмотрел возможность синхронизации транзакций не только через интернет а хотя бы звонком (что расширит диапазон покрытия сети до GSM фактически) и может быть даже старым добрым пищанием в трубку, что расширит диапазон до любого места где есть хоть какой то телефон.

            В этом случае условные предприниматели "переведи через 900 по номеру" хотя бы в теории всерьёз рассмотрят использование этой системы, отходя синхронизировать транзакции раз в сколько то или просто синхронизируя транзакцию звонком/sms сообщением. Иначе думаю дальше городов милионников никуда это всё не пойдёт.


            1. PavelMSTU Автор
              06.10.2022 19:40

              И это и происходит

              Что происходит? Взлом чип-карты? Можно proof хотя бы один?
              И снять деньги с банкомата при отсутствии пластика не получиться.

              Или компрометация карты + социальня инженерия. Если так, мы не об этом.

              Но я бы рассмотрел возможность синхронизации транзакций не только через интернет а хотя бы звонком 

              Да ради Бога! Это вообще не проблема. Online платежи в CBDC банальная тема, которая не требует обсуждений. Там всё очевидно.


              1. lifespirit
                06.10.2022 19:54

                Что происходит? Взлом чип-карты? Можно proof хотя бы один?
                И снять деньги с банкомата при отсутствии пластика не получиться.

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

                Классическим способом (а именно по быстрому без тыканья в чип всяким) можно только скопировать магнитную полосу и подсмотреть пин код.

                В этой же системе "цифровых денег" владелец вполне может быть недоверенным лицом сам по себе. Почему он не может произвести манипуляции со своей же сим картой в целях взлома? Или с приложением?


                1. PavelMSTU Автор
                  06.10.2022 21:51

                  Но если нужно просто изготовить дубль с разрешения владельца то никаких проблем.

                  Нет есть проблемы. Вы НЕ изготовите дубль. Разумеется доверенная часть должна прошиваться эмитентом и быть не доступной к копированию.

                   Почему он не может произвести манипуляции со своей же сим картой в целях взлома?

                  Какие манипуляции? Есть наружу две функции: подписать новый блок на приём и подписать новый блок на отправку. Ровно так как описал в статье. wallet c counter-ами недоступен для копирования, удаления, правки.


              1. lifespirit
                06.10.2022 19:59
                +1

                1. PavelMSTU Автор
                  06.10.2022 22:03

                  Вы хоть сами это читали?

                  Перечитайте вот это

                  Как работают банковские карты с чипом

                  Чип на карте — это не просто микросхема флеш-памяти. На самом деле это небольшой компьютер, позволяющий запускать приложения. Когда вы вставляете карту с чипом в терминал, происходит вот что: Первым делом начинается инициализация. На этом этапе терминал получает основные сведения о карте, такие как имя владельца, срок действия и так далее, а также список приложений, которые есть на карте.

                  Дальше идет опциональный этап аутентификации данных. На этом этапе при помощи криптографических алгоритмов терминал удостоверяется, что карта настоящая. Однако согласно стандарту этот этап не является обязательным — то есть его можно пропустить.

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

                  Наконец, следующий этап — это собственно транзакция, то есть перевод денег.

                  Еще раз обращаем ваше внимание: обязательными являются только первый и четвертый этапы, а второй и третий — опциональные. Этим-то и воспользовались бразильские мошенники.

                  Карточка на все согласна

                  Итак, условия задачи: карточка умеет запускать приложения и при общении с терминалом первым делом сообщает ему информацию о себе и список доступных приложений. Количество этапов при осуществлении платежа определяется терминалом и картой.

                  Решение: бразильцы написали для карты Java-приложение, которое делает, по сути, две вещи. Во-первых, оно сообщает платежному терминалу, что проводить аутентификацию данных, то есть второй этап, не нужно. То есть никакой криптографии дальше не используется, что существенно упрощает задачу. Остается этап верификации владельца при помощи PIN-кода.

                  Но стандартом предусмотрены разные варианты подтверждения пина, и в том числе такой, когда правильность его ввода подтверждает… собственно, сама карта. А точнее, установленное на ней приложение. Преступники написали такое приложение, которое на вопрос о том, правильно ли введен PIN, всегда отвечает терминалу «да-да, все отлично».

                  То есть злоумышленник с клонированной картой может ввести на терминале четыре абсолютно случайные цифры — и эти цифры будут приняты как правильный PIN.

                  И где здесь взлом самой смарт-карты? Его нет.

                  Есть "бразильские оптимизации". Вангую придумал какой-нибудь гениальный манагер. По сути это то же самое, когда входная дверь в квартиру открывается ключом, но это "опционально", и можно войти к вам в квартиру и БЕЗ ключа :)

                  Давайте другой пруф.

                  И ещё раз: в ИБ нет ничего абсолютного. Есть управление рисками. Использовать смарт-карты для цифровых денег так же безопасно как использовать те же смарт-карты для безналичных платежей. При условии отсутсвии "бразильских оптимизаций". О чём тут спорим?


                  1. lifespirit
                    06.10.2022 22:22

                    Я действительно плохо разбираюсь в теме. Поэтому и начал этот диалог. Что бы разобраться.

                    Просто для меня система где ни у кого на самом деле нет самих денег и есть арбитр в виде банка кажется более надёжной. На обычном пластике же нет по сути наличных. Есть только цифровая подпись, а сами деньги застрахованы.

                    С оффлаин транзакциями всё совершенно иначе. В симку влезает где то 250 номеров. Это примерно 1375 байт. Допустим туда с трудом влезет 2 подписи. Плюс надо же как то засунуть в это пространство приложение для генерации подписывающего ключа (что бы не выдавать подпись прямо в систему). Плюс непонятно как авторизовывать само приложение? Если сами записи будут хранится в памяти телефона, то манипулирование с ними уже не кажется таким проблематичным при условии рута на телефоне. Условно я просто могу поменять приложение или запустить стороннее и переподписать/удалить некоторые транзакции блокчеина, потом запустить основное и совершить двойную трату. И я не совсем понимаю как это предполагается обойти.


                    1. PavelMSTU Автор
                      06.10.2022 22:33

                      В SIM-картах есть не только память для номеров.
                      Технически можно разработать SIM с памятью... ну скажем 1 Гб. Другое дело, что вот прям сейчас таких SIM-ок в продаже нет.  Там обычно в районе 128/256 КБ... Но это пока. CBDC гос.движуха откроет рынок "жирных симок", специально для этих задач.

                      Само приложение авторизовывать в рамках "на пальцах" не нужно. В этом нет необходимости для защиты от фальшивомонетчиков. Хотя, конечно не помешает. Плюс работа с SIM тот ещё гемор. Знаю как это делать root-ом, но как без него -- пока не знаю.


                  1. lifespirit
                    06.10.2022 22:30

                    А самое главное что делать когда счётчик чтения на карте закончится. Вот есть условная симка, у неё умерла мобильная часть. Будет передаваться этот же ключ для транзакций на другую? Если да то что мешает его считать до смерти симки. Если нет то что будет с деньгами?


  1. Sklott
    06.10.2022 17:17
    +4

    Я вот только одного не понял. Если у вас уже есть доверенная среда выполнения. То зачем все эти извраты??? Проблема передачи информации для двух доверенных агентов, через недоверенную среду уже давно решена. А при обмене между двумя доверенными агентами достаточно передать обычное сообщение.

    Ну т.е. если говорить проще. Если вы доверяете тому, что счетчик всегда будет только увеличиваться, то что вам мешает просто убавить хранимую сумму на N в одном кошельке и увеличить в другом?

    Все эти banknot id нужны только "большому брату" и больше никому.

    ЗЫ: Кстати, если кто не в курсе, такой вариант уже давно был реализован "Золотой Короной" где-то в 90-х начале 2000-х, пока их не вытеснили Visa с Mastercard-ом. И все работало. И не было никаких проблем, кроме отсутсвия возможности меняться между физ. лицами, но это чисто из-за технических проблем тех времен. Сейчас можно было бы решить элементарно.


    1. PavelMSTU Автор
      06.10.2022 17:49

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

      Проблема передачи информации решена, и что? Предложите алгоритм цифровых денег. Step-by-step.

      Передача информации и передача информации с гарантированной невозможностью еще раз подписать, но уже третьему лицу -- это две большие разницы


      1. Sklott
        06.10.2022 17:57

        Ну написал же уже наверху. Все просто.

        Нам надо передать 100р. из кошелька "А" в кошелек "Б". Посылаем из кошелька "А" сообщение в кошелек "Б", типа "мы тебе передаем 100р". При подтверждении успешеной передачи сообщения в кошельке "А" делаем total -= 100р. В кошельке "Б" total += 100р.

        Зачем сложные алгоритмы? Я в том смысле, что если алгоритмам кошельков мы доверяем. То какой смысл в усложнениях?


        1. PavelMSTU Автор
          06.10.2022 18:15

          Окей. Потом кошелёк А откатывает систему к прежнему состоянию. Находит кошелёк В и повторно переводит 100 рублей. Доступа к сети нет, кошелёк В не имеет никакой физической возможности получить информацию от кошелька Б.


          1. inkelyad
            06.10.2022 18:19

            Потом кошелёк А откатывает систему к прежнему состоянию.

            Не откатывает. Аргумент был в том, что он на доверенной системе стоит, которая этого не позволит.

            На самом деле я думаю дело именно в том, что доверенной системы на самом деле не нужно(хотя с ней приятнее). Нужно просто быстро ловить и наказывать тех, кто двойные траты делает.


            1. PavelMSTU Автор
              06.10.2022 18:24

              Доверенная среда не нужна при online, при offline как без неё?
              Добавил https://habr.com/ru/post/688384/#online_offline

              Как вы будите "быстро ловить" ? В offline-е?


              1. inkelyad
                06.10.2022 18:27

                Буду ограничивать длину цепочки offfline транзакций. Это приведет к тому, что 'монетки' будут быстро возвращаться из кошельков в банки, которые уже двойные траты и сравнят.


                1. AlchemistDark
                  06.10.2022 22:57

                  Это сделает деньги одного номинала неравноценными. Допустим, на деньги, которые мне заплатили оффлайн за арбуз в месте, где сети нет и не будет, я хочу тут же на месте за эти деньги (других у меня нет) дыню купить так же оффлайн. Значит мне нужны такие деньги, у которых транзакция за арбуз будет не последняя. И даже не предпоследняя (вдруг продавец дыни тут же хочет купить абрикосов).


                  1. inkelyad
                    06.10.2022 23:08

                    Да. Сделает. Не вижу проблемы. Я вообще не считаю, что оно в оффлайне работать должно. Числовая наличность нужна в онлайне, как средство, позволяющее заплатить какие-нибудь 0.0002копейки за просмотр статьи, не занимаясь на каждом таком платеже общением с банком, делая такой платеж невозможным из за транзакционных издержках. А позволит сначала накопить некую достаточно крупную сумму такой наличностью, а уже потом с ней в банк идти. Смотри GNU Taller.


          1. Sklott
            07.10.2022 11:20

            Потом кошелёк А откатывает систему к прежнему состоянию.

            Не понял. Почему в вашей системе counter нельзя откатить, а в такой-же системе но без counter можно откатить? Вы уж "или крестик снимити или трусы оденьте" (с).


            1. PavelMSTU Автор
              07.10.2022 12:20

              Что входит в доверенную среду? ВСЁ? Тогда не хватит пространства на смарт-карте. Либо сами карты нужно делать более жирными.

              Если не всё - нужно думать.


  1. taslismanfr
    06.10.2022 17:49
    +2

    Спасибо за статью, было позновательно! Был бы рад некоторым уточнениям:
    1. Если у кошелька А 100 у.е, но есть намерение передать только 50 у.е., единственный вариант запросить у эмитента размен? Оффлан такую операцию не совершить, если у кошелька В нет сдачи?
    2. Конвертация валюты потребует дополнительных блоков с указанием информации о самой сделке? Получается у нас атамарным должны быть минимум 2 операции перевода купюр, а значит хорошы это все хранить в едином блоке. Таже проблема в пункте выше когда надо получить сдачу.
    3. Возможность "отмены" транзакции не предусмотрено, значит должен быть механизм принудительного возврата в случае мошеничества? Как вариант эмитент поменчает переданую купюру "невалидной", а жертве выпускает новую.


    1. PavelMSTU Автор
      06.10.2022 22:09

      1. Да, это проблема. Нужно делать эксчендж (размен) с эмитентом. Либо придумать "сдачу" от кошелька Б. У покупателя 100 у.е., у продавца две купюры по 10 у.е.. Товар стоит 80 у.е. Значит вы ему 100, он вам два раза по 10. Но проще сделать так, чтобы ситуации с разменом возникали как можно реже. Нужно набрать статистику и эмпирически как-то решить.

      2. Конвертация валюты это в рамках цифровых денег что? Если у нас есть разные купюры но разных валют? Я думаю это за рамками.

      3. Да, верно, отмена в рамках алгоритма не предусмотрена. "Как вариант эмитент поменчает переданую купюру "невалидной", а жертве выпускает новую."


  1. anonym0use
    06.10.2022 19:27
    +4

    > мы отстанем в технолоическом развитии в XXI веке. Поэтому я против этого.

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

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

    Читая подобное бывает трудно сдерживаться, толи это жирный троллинг тупостью, толи вы с альфа-центавры и не знаете ничего что произошло за последние 10 лет в России, особенно за последние полгода.

    Если в самом деле непонятно где в вашей логике пробелы, вот пример: объявляете неугодное лицо террористом(иностранным агентом, госизменником) и можно следить/блочить, делать что угодно, неважно что к реальности это не имеет отношения.

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

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

    Несколько ссылок по теме на английском:

    CBDC's threat to your privacy an freedom — «A Government agency would be able to see every single transaction an individual makes, and the state's control over the individual, as it would give these agencies the power to simply turn off an individual’s access to their money.»

    Edward Snowden: CBDCs Are 'Cryptofascist Currencies' That Could 'Casually Annihilate' Savings — Decrypt

    The New Nightmare of CBDCs

    Total Control: Why Central Bank Digital Currencies are a Catastrophic Idea


  1. Krasnoarmeec
    06.10.2022 21:36
    +1

    П-ф-ф-ф-ф....
    А разве на деньгах уже не имеется уникального цифрового кода?
    Чем тогда Ваши цифровые деньги отличаются от уже имеющихся бумажных?
    То, что эти номера никак не используются, так это уже вопрос не к нам.

    Кстати, тут в пору цитата из классика (Дэвид Джоунс, "Изобретения Дедала", из-во "Мир", с. 136):

    Наконец, Дедал хотел бы отметить еще одно любопытное следствие. В настоящее время все купюры одного достоинства полностью тождественны между собой, подобно элементарным частицам, подчиняющимся статистике Бозе — Эйнштейна. Если же мы начнем различать их по номерам, то они должны вести себя в соответствии с распределением Ферми — Дирака и проявлять гораздо меньшую склонность к «скучиванию». Это создаст предпосылки к более справедливому распределению богатства в обществе.


  1. AlexTheCleaner
    07.10.2022 08:52

    Вы исходите из ложной предпосылки, что государству можно доверять... Всё остальное написанное уже в общем то и не важно. Хотя забавно - а нахрена там блокчейн при полностью централизованной системе? Это как с ДЭГ - все сто процентов нод контролируются хрен пойми кем, соответственно записывать и перезаписывать блоки можно бесконечное число раз для достижения нужного результата. Поэтому доверия этому инструменту... ну как государству - никакого.


  1. WizardryIB
    07.10.2022 09:05

    Весь мелкий бизнес сразу умрет! Они и живут-то только за счет утаивания доходов от государства.


    1. PavelMSTU Автор
      07.10.2022 22:27
      +1

      При чём тут мелкий бизнес. Если это будут внедрять, то по причине госконтрактов.

      Мелкий бизнес не умрёт. Так как при внедрении цифровых наличных, физические наличные и безналичные банковские счета остануться.

      Крупные суммы воруются на госконтрактах.


  1. kpmy
    08.10.2022 00:16

    Мне кажется, есть что-то из идей НМТ в статье.

    Хотя, мне ближе концепт Геззеля, можно даже без криптографии, просто электронные монеты со сроком годности. А то от сегодняшней управляемой инфляции имени Кейнса как-то не по себе, жизнь на эскалаторе для всех, кроме управляющих эскалатором прям такое себе.


    1. vassabi
      09.10.2022 13:09

      извините, я не экономист, и не в курсе, поэтому задам дурацкий вопрос, на который у меня нет ответа (но возможно ответ на него есть у Геззеля, просто я его не знаю):

      А что при будет брать на себя накопительную роль, при таком концепте?

      Или проще - что будет "лежать под матрасом" и не иметь заранее заданного срока годности? Золото?