Эта статья является кандидатом в добротные статьи

Двойное расходование

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Double-spending»)
Перейти к: навигация, поиск

Двойное расходование (англ. Double-spending) — повторная продажа (отчуждение) одних и тех же активов. Обычно речь идёт о системах электронных платежей, которым органично присуща возможность копирования состояния, что позволяет сделать несколько платежей из одного и того же стартового состояния.

Описание[править | править код]

Для большинства мелких покупок процесс купли-продаже сводится к прямому обмену товара на деньги. Сразу после передачи товара покупатель становится новым собственником. Но бывают ситуации, когда между заключением сделки и оформлением передачи права собственности проходит значительный промежуток времени. Достаточно часто такие ситуации возникают при операциях с недвижимостью. Это позволяет продавцу один и того же товар продать несколько раз разным покупателям и получить с них несколько раз оплату. К такому итогу приводила практика многократного одалживания денег у разных людей под залог одного и того же имущества[1][2]. Сейчас иногда такое происходит по невнимательности продавца[3], но чаще всего является вариантом мошенничества[3]. Например, после уплаты денег за квартиру в новостройке, через время (иногда несколько лет) собственник может узнать, что его новая квартира принадлежит не только ему. Бывают аналогичные казусы и при покупке квартир на вторичном рынке[4], когда покупатель может убедиться, что имущество действительно ранее принадлежало продавцу, но нет гарантии, что оно не было продано незадолго перед сделкой или не будет продано ещё раз вскоре после неё. Изменения в законодательстве и применение единой регистрации данных о подобных сделках призваны устранить возможность обмана покупателя[3].

Принципиально иная ситуация при операциях с цифровыми товарами — всегда есть возможность продажи идентичной копии. При этом каждый покупатель получает полную копию товара и это не считается мошенничеством. Но легкость копирования и идентичность копий становится серьёзной проблемой для схем цифровых денег, аналогичных наличным. Цифровая «монета» для свободной передачи должна иметь форму файла. Но цифровой файл легко копируется. Обладатель «монеты» может передавать её копии большому количеству продавцов в уплату за товары. Каждый получатель легко убедится, что полученный файл полностью соответствует стандарту, но не будет уверен, что такой же копией не расплатились с другим продавцом[5].

Предотвращение[править | править код]

Все платёжные системы, кроме криптовалют, являются централизованными — имеют центральное (административное) звено, где обеспечивается контроль допустимости той или иной операции[5]. При этом основой для принятия решений служит информация самого администратора, а не информация, предоставляемая плательщиком. Поэтому копирование плательщиком состояния пратёжной системы позволяет лишь сформировать двойные траты (например, при наличии на счету 1000 рублей сформировать два платёжных поручения в банк-клиенте по 1000 рублей каждое), но действительное исполнение будет происходить в порядке поступления распоряжений в банк и часть из них окажется отклонённой из-за недостатка средств.

На основе блокчейна[править | править код]

В децентрализованных платёжных системах (криптовалютах) нет контролирующего органа. Для предотвращения двойного расходования было предложено объединять транзакции в блоки, из которых выстраивать непрерывные цепочки — формировать блокчейн. Для получения права на добавление блока надо доказать выполнение работы («Proof of work»)[6]. Позднее были предложены схемы, где вместо доказательства работы применяется доказательство доли владения. Главная цель построения блокчейна — предоставить критерий для достижение консенсуса о том, какую версию транзакций считать верной.

Информация в блокчейне открыта для всех. Но контрагенты могут проверить лишь наличие у отправителя активов на некоторый момент времени в прошлом. Если несколько платежей, передающих один и тот же актив, сделать достаточно быстро, то информация о них ещё не получит подтверждения (не попадёт в очередной блок или не будет иным образом лигитимизирована) и каждый из получателей будет уверен в правомерности транзакций. Лишь после того, как одна из транзакций (не обязательно выполненная первой по времени) будет подтверждена, остальные транзакции с этим же активом уже не будут действительными. Но есть вероятность, что из-за временного разветвления цепочки блоков в параллельных ветках могут находиться транзакции, которые по-разному распоряжаются одним и тем же активом. Каждая из веток равноправна, не является ошибочной. В процессе формирования новых блоков (майнинга или форжинга) какая-то из веток станет длиннее. Она получит преимущество, а короткая ветка отомрёт и все транзакции, находящиеся в её блоках, нужно будет вновь размещать в блоках[7]. Так как одна из версий спорной транзакции останется в ранее сформированном блоке, то версия транзакции из «умершей» ветки при попыте добавить её в новый блок будет отвергнута. Вероятность существования параллельных цепочек крайне мала и экспоненциально уменьшается с ростом длины цепочки[7]. Таким образом, чем больше подтверждений имеет транзакция, тем менее вероятна отмена транзакции из-за отмирания содержащей её цепочки. По этому сделки с нулевым подтверждением потенциально рискованные и многие продавцы устанавливают требование на минимальное количество подтверждений. Как правило, шесть подтверждений представляют собой хороший баланс между временем ожидания всех подтверждений, и уверенностью в том, что транзакция не будет фальсифицирована.[8]

Как при майнинге, так и при форжинге при наличии у злоумышленника контроля над достаточно большой долей эмиссии (суммарной мощности майнинга или суммарного количества ресурсов при форжинге) имеется существенная (не ничтожно малая, как в обычном случае) вероятность «тайного» выстраивания длинных параллельных цепочек блоков. После их публикации в сети главной будет признана более длинная цепочка. Отмена цепочки блоков может приводить к признанию недействительными транзакций даже подтвержденных несколькими блоками и к последующей «повторной» передаче актива уже другому получателю[9].

При концентрации в одних руках свыше 50 % суммарной мощности майнинга возможно выстраивание параллельной цепочки произвольной длины, что позволяет гарантированно изменить получателя в транзакциях владельца сконцентрированной мощности (атака «Double Spending» или «атака 51 %»)[10]. Если подконтрольная мощность меньше 50 %, то вероятность успеха экспоненциально снижается с каждым подтверждением. Для форжинга концентрация более 50 % ресурсов не гарантирует успешного построения длинной параллельной цепочки, хотя и существенно повышает вероятность этого.

Даже если атака двойного расходования будет успешной, это не приведёт к:

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

На начало 2013 года мощность сети «Биткойн» составляла менее 25 THash/s, но за последующие 3 месяца выросла до 55 за счёт массового распространения специализированных процессоров (ASIC), разработанных специально для майнинга в сети «Биткойн».[11]В июне 2013 года мощность сети превысила 120 THash/s[12].К сентябрю мощность превысила 1000 THash/s, в октябре мощность удвоилась[13], а на 1 декабря 2013 года превысила 6000 THash/s[14]. При этом пользователь с наибольшей производительностью имеет менее 100 THash/s.[15]Сконцентрировать необходимую суммарную можность в одних руках становится всё сложнее и затратнее. Но майнинг уже давно сконцентрирован в пулах, крупнейшие из которых контролируют значительную его долю.

Двойное расходование биткойнов на практике не было зафиксировано. На май 2015 года параллельные цепочки никогда не превышали 5 блоков[16].

Фактор доверия Blockcypher[править | править код]

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

Проект Blockcypher направлен на помощь в таких ситуациях. Для любой транзакции с нулевым подтверждением по специальному алгоритму добавляется атрибут доверия. Если этот показатель составляет 99,9 %, то вероятность попытки двойного расходования равна только 0,01 %. Расчёт основан на анализе двух аспектов транзакции: «формат» и «поведение». «Формат» анализирует структуру транзакции: каковы входные и выходные данные, их история, тип подписи. «Поведение» рассматривает то, как транзакция распространяется по сети, отслеживает изменение её параметров со временем.

Консенсусный подход в Ripple[править | править код]

Система Ripple решает проблему двойного расходования консенсусом. На первом этапе все сервера принимают все действительные транзакции, в том числе и новые. Дальше каждый сервер голосует за правдивость принятых транзакций. Транзакции, которые получают большее количество голосов переходят на новый этап, где также происходит голосование, остальные транзакции, которые набрали недостаточное количество голосов, отбрасываются. Транзакция перестаёт участвовать в голосовании, когда консенсус относительно неё достигает 80 %[17].

Принято считать, что невозможно решить «Задачу о византийских генералах» в случае, если больше чем 33% системы подвержены мошенничеству. [18] В протоколе Ripple корректность консенсуса выполняется, пока система не подвержена мошенничеству больше, чем на 20%. [19]

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

Сервера Ripple управляются отдельными лицами, организациями и известными компаниями. Уровень защиты растёт пропорционально росту сети Ripple.

Примечания[править | править код]

  1. Н.Ю. Круглова. Хозяйственное право. — М.: Юрайт, 2011. — 885 с.
    Если одно и то же имущество передается в залог неоднократно и каждый последующий кредитор-залогодержатель не знает о том, что его обязательство обеспечивается залогом ранее уже заложенного имущества, то это отрицательно сказывается на погашении долга последующим залогодержателям.
  2. под редакцией Фрэнка Фабоцци. Финансовые инструменты. — М.: Эксмо, 2011. — 864 с.
    Одно время имущество можно было закладывать дважды, то есть заем выдавался под залог уже заложенного имущества. В отдельных случаях допускался и третий заем.
  3. 1 2 3 Опасайтесь «двойной продажи»! - Федеральное агентство недвижимости, г. Кемерово (рус.). kem.federalnoe.com. Проверено 8 декабря 2017.
  4. Продать квартиру дважды? // Петропавловск kz — ИА REX-Казахстан 18.08.2013
  5. 1 2 Bitcoin: A Peer-to-Peer Electronic Cash System, 2008, раздел № 2 «Transactions».
  6. Ghassan O. Karame, Elli Androulaki, Srdjan Capkun Two Bitcoins at the Price of One? Double-Spending Attacks on Fast Payments in Bitcoin (англ.).
  7. 1 2 Bitcoin: A Peer-to-Peer Electronic Cash System, 2008, раздел № 4 «Proof-of-Work».
  8. Arthur Gervais, Hubert Ritzdorf, Ghassan O. Karame, Srdjan Capkun [https://eprint.iacr.org/2015/578.pdf Tampering with the Delivery of Blocks and Transactions in Bitcoin] (англ.).
  9. Bitcoin: A Peer-to-Peer Electronic Cash System, 2008, раздел № 11 «Calculations».
  10. Статья о вероятности Double Spending атаки. Архивировано 21 мая 2013 года.)
  11. ASIC Mining Profits Will Be Gone By Summer (англ.). Ƀitcoin Insight (MARCH 24, 2013). — «January of this year the total hashrate of the Bitcoin network was less than 25 THash/s. In less than 3 months that figure has ballooned to more than 55 THash/s. The sharp increase is the result of newly available ASIC Bitcoin mining hardware». Проверено 30 ноября 2013.
  12. The Economics of Bitcoin Mining, or Bitcoin in the Presence of Adversaries «the network hash rate was estimated to be approximately 119 trillion hashes per second»
  13. Bitcoin network reaches 2 Petahash/s - 2000 Thash/s (англ.). Cloudbitcoinminer (October 15, 2013). Проверено 30 ноября 2013.
  14. Bitcoin Charts
  15. アーカイブされたコピー. Проверено 3 мая 2015. Архивировано 13 мая 2015 года. Fastest Users (Last Hour) 269032 99,730.90 GH/s
  16. Number Of Orphaned Blocks. Blockchain.info. Проверено 5 декабря 2017.
  17. David Schwartz, Noah Youngs, Arthur Britto The Ripple Protocol Consensus Algorithm (англ.) // Ripple Labs Inc, 2014.
  18. LESLIE LAMPORT, ROBERT SHOSTAK, and MARSHALL PEASE The Byzantine Generals Problem (англ.) // SRI International.
  19. 1 2 David Schwartz, Noah Youngs, Arthur Britto The Ripple Protocol Consensus Algorithm (англ.).
  20. Documentation: EOS.IO Documents. — 2017-12-13.

Литература[править | править код]