Двойное расходование (double-spending) – это потенциальный недостаток в схеме цифровых денежных средств, при котором один и тот же цифровой токен может быть потрачен более одного раза. Это возможно потому, что цифровой токен состоит из цифрового файла, который может быть дублирован или фальсифицирован.
Двойное расходование обесценивает валюту по отношению к другим денежным единицам и снижает доверие пользователей, а также циркуляцию и держание валюты. Основными криптографическими методами предотвращения двойного расходования средств при сохранении анонимности в транзакции являются слепые подписи, а в автономных системах – секретное разделение.
Децентрализованные валюты, которые основаны на технологии блокчейн, уязвимы для атаки 51%, в которой злоумышленник может переписать книгу (ledger), если контролирует 51% мощности майнинга. Теоретически можно потратить криптовалюту, а затем стереть транзакцию, чтобы казалось, что её никогда не было. В мае 2018 года этот метод двойного расходования был использован против криптовалюты Bitcoin Gold для обмана криптовалютных бирж на миллионы долларов. В ответ биржи неоднократно повышали порог, необходимый для подтверждения сделки, но преступник владел достаточной вычислительной мощностью, чтобы преодолеть эти пороги, и продолжал двойное расходование в течение трех дней.
Предотвращение двойного расходования имеет две формы: централизованную и децентрализованную.
Централизованная
Обычно это реализуется с помощью доверенных третьих лиц, которые могут проверить, был ли потрачен токен. Это обычно представляет единую точку отказа как с точки зрения доступности, так и с точки зрения доверия.
Децентрализованная
К 2007 году был предложен ряд распределенных систем для предотвращения двойного расходования.
Криптовалюта Bitcoin (BTC) реализовала решение этой проблемы в начале 2009 года. Bitcoin использует криптографический протокол, называемый алгоритмом «доказательства работы» (PoW), чтобы избежать необходимости в доверенной третьей стороне для проверки транзакций. Вместо этого транзакции записываются в публичную книгу под названием блокчейн. Транзакция считается действительной, когда она включена в блокчейн, который содержит наибольший объем вычислительной работы. Это делает двойное расходование более трудным по мере роста общей сети. Другие криптовалюты имеют аналогичные функции.