Что такое двойные расходы в криптовалюте? Как блокчейн предотвращает их?
Что такое двойные расходы в криптовалюте: Быстрый ответ
Двойные расходы в криптовалюте — это проблема, которая возникает при транзакциях с цифровой валютой, когда один и тот же актив тратится несколько раз.
Несколько транзакций, использующих один и тот же вход, транслируемый в сеть, могут быть проблематичными и являются недостатком, присущим только цифровым валютам.
Основная причина двойных расходов заключается в том, что цифровую валюту очень легко воспроизвести.
- Двойная трата - это проблема, возникающая при совершении операций с цифровой валютой, когда одни и те же средства тратятся несколько раз.
- Основная причина двойной траты заключается в том, что цифровая валюта может быть очень легко воспроизведена.
- Существует два основных способа борьбы с двойной тратой - центральный контрагент и блокчейн.
Введение
Одной из основных задач любого разработчика криптовалюты является проблема двойных расходов.
Это относится к случаям, когда человек специально тратит баланс этой криптовалюты более одного раза, удачно создавая несоответствие между записью расходов и количеством доступной криптовалюты, а также способом ее распределения.
Двойное расходование (англ. Double-spending) означает, что одни и те же единицы криптовалюты потенциально могут быть потрачены дважды, поэтому крайне важно технологически исключить эту возможность. Возможность двойных расходов резко снижается с каждым подтверждением сети Биткойн. Обычно платеж с шестью подтверждениями можно считать полностью защищенным от риска двойной траты.
Проблема двойных расходов – это проблема, которой нет у наличных денег (Фиата). Если вы заплатите за кофе стоимостью в 10 долларов, отдав эти деньги изготовителю кофе, вы не сможете потратить эти же 10 долларов в другом месте.
Однако транзакция с использованием цифровой валюты, такой как Биткойн, происходит исключительно в цифровой форме.
Это означает, что можно скопировать детали транзакции и ретранслировать ее так, чтобы один и тот же BTC мог быть потрачен несколько раз одним владельцем.
Ниже мы рассмотрим, как разработчики криптовалюты застраховали свою монету так, чтобы двойные расходы были невозможны.
Особенности двойных расходов
- Техническая проблема, которая возникает в связи с понятием цифровой валюты, заключается в возможности кого-либо дублировать цифровые деньги и тратить их одновременно в двух или более местах.
- Эта проблема «двойного расходования» предотвращается в криптовалютах, основанных на блокчейне, таких как Биткойн, с помощью механизма консенсуса, известного как Proof-of-Work (PoW).
- PoW осуществляется децентрализованной сетью «майнеров», которые не только обеспечивают точность прошлых транзакций в реестре blockchain, но также обнаруживают и предотвращают двойные расходы.
Понимание блокчейна
Мы уже делали обзоры о том, что такое блокчейн и когда эта технология будет действительно полезна.
Блокчейн, поддерживающий цифровую валюту, такую как Биткойн, не может предотвратить двойные расходы самостоятельно.
Скорее, все различные транзакции, включающие соответствующую криптовалюту, публикуются в блокчейне, где они отдельно проверяются и защищаются процессом подтверждения.
В случае Биткоина и многих других криптовалют транзакции, которые были подтверждены таким способом, становятся необратимыми, они публикуются публично и поддерживаются на постоянной основе.
Биткойн был первой крупной цифровой валютой, решившей проблему двойных расходов. Он сделал это, внедрив этот механизм подтверждения и поддерживая единую универсальную систему бухгалтерских книг.
Таким образом, блокчейн Биткойна сохраняет записи транзакций с метками времени, начиная с основания криптовалюты с 2009 года.
В терминах Биткойн, «блок» - это файл постоянно записанных данных. Все недавние транзакции записываются в блоки, очень похожие на книгу операций на бирже.
Информация из блоков добавляется в книгу каждые несколько минут, все узлы в сети хранят копию книги блокчейна. Пользователи могут перемещаться по блокчейну Биткойна и просматривать транзакции только с точки зрения количества.
Сведения о личности покупателя и продавца в любой транзакции защищены высокоуровневым шифрованием, которое также защищает бухгалтерскую книгу от подделки из внешних источников. Когда книга блокчейна обновляется, то же происходит и со всеми Биткойн-кошельками.
Работа с двойными расходами
Представьте, что у вас есть 1 BTC, и вы пытаетесь потратить его дважды на две отдельные транзакции. Вы можете попытаться сделать это, отправив один и тот же BTC на два разных адреса кошелька биткойн.
Обе эти транзакции затем перейдут в пул неподтвержденных транзакций. Первая транзакция будет подтверждена с помощью механизма подтверждения, а затем проверена в последующем блоке.
Однако вторая транзакция будет признана недействительной процессом подтверждения и не будет проверена. Если обе транзакции извлекаются из пула для подтверждения одновременно, транзакция с наибольшим количеством подтверждений будет включена в цепочку блоков, а другая будет отброшена.
Не смотря на то, что это эффективно решает проблему двойных расходов, здесь также не обходится без проблем.
Например, предполагаемый получатель второй (неудачной) транзакции не будет участвовать в самой неудачной транзакции, и все же этот человек не получит Биткойн, который он или она ожидали.
Многие продавцы ожидают как минимум 6 подтверждений транзакции (это означает, что 6 последующих блоков транзакций были добавлены в цепочку блоков после рассматриваемой транзакции). В этот момент продавец может смело предположить, что транзакция действительна.
В этой системе остаются другие уязвимости, которые могут допустить двойные атаки. Например, если злоумышленник каким-то образом может контролировать как минимум 51% мощности сети, в этом случае он или она сможет совершить двойные расходы.
Если злоумышленник каким-то образом сможет получить контроль над этой вычислительной мощью, он или она сможет отменить транзакции и создать отдельный закрытый блокчейн. Тем не менее, быстрый рост, популярность, интерес к Биткоину практически гарантировал, что этот тип атаки невозможен.
Proof of Work и майнинг объяснение
Теперь давайте немного более технически взлянем на это. Пользователи могут обнаружить несанкционированный доступ, такой как попытка двойного расходования на практике, с помощью хэшей, длинных цепочек чисел, которые служат Proof of Work (PoW).
Поместите данный набор данных через хеш-функцию (биткойн использует SHA-256), и он будет генерировать только один хеш. Однако из-за «лавинообразного эффекта» даже незначительное изменение любой части исходных данных приведет к совершенно неузнаваемому хэшу.
Каким бы ни был размер исходного набора данных, хэш, сгенерированный данной функцией, будет одинаковой длины. Хеш является односторонней функцией: ее нельзя использовать для получения исходных данных, только для проверки соответствия данных, сгенерировавших хеш, исходным данным.
Генерирование любого хэша для набора транзакций Биткойна было бы тривиально для современного компьютера, поэтому, чтобы превратить процесс в «работу», сеть Биткойна устанавливает определенный уровень «сложности».
Этот параметр настраивается таким образом, чтобы новый блок «добывался» - добавлялся в цепочку блоков путем создания действительного хэша - примерно каждые 10 минут. Установка сложности достигается путем установления «цели» для хэша: чем ниже цель, тем меньше набор действительных хэшей и тем сложнее их сгенерировать.
На практике это означает, что хеш начинается с длинной строки нулей:
Например, хеш для блока # 429818 равен 000000000000000004dd3426129227782239efd583b5412b1bd75e2b78ff2e4d.
Этот блок содержит 2 012 транзакций, включающих более 1000 Биткойнов, а также заголовок предыдущего блока. Если бы пользователь изменил одну сумму транзакции на 0,0001 биткойн, результирующий хэш был бы неузнаваем, и сеть отклонила бы мошенничество.
Поскольку данный набор данных может генерировать только один хеш, как майнеры могут убедиться, что они генерируют хеш ниже цели?
Они изменяют входные данные, добавляя целое число, называемое nonce («число, использованное один раз»). Как только найден действительный хеш, он транслируется в сеть, и блок добавляется в цепочку блоков.
Майнинг - это соревновательный процесс, но это скорее игра случайностей, чем гонка. Майнеры объединяются, чтобы увеличить свои шансы для добычи-блока, что генерирует комиссию за транзакции и, в течение ограниченного времени, вознаграждение за вновь созданные Биткойны.
PoW крайне затрудняет изменение любого аспекта блокчейна, поскольку такое изменение потребует повторного майнинга всех последующих блоков. Это также затрудняет монополизацию вычислительной мощности сети пользователем или пулом пользователей, поскольку оборудование и мощность, необходимые для выполнения хэш-функций, дороги.
Как работает атака двойных расходов?
Злоумышленники инициируют атаку двойного расходования, отправляя транзакцию получателю и одновременно создавая другую транзакцию, тратя те же монеты, но направляя их на другой адрес, который они контролируют.
Затем они спешат распространить свою мошенническую транзакцию быстрее, чем законную, надеясь, что сеть подтвердит их обманный перевод.
Типы атак двойного расходования
- Атака Финни (Finney Attack): злоумышленник добывает блок с помощью мошеннической транзакции, а затем освобождает его после получения продукта/услуги.
- Гоночная атака (Race Attack): злоумышленник быстро отправляет конфликтующие транзакции, чтобы воспользоваться задержкой сети.
- Атака Vector76: злоумышленник нацелен на конкретную уязвимость протокола.
- Атака 51%: злоумышленник выполняет атаку 51%, в ходе которой он получает контроль над большей частью сети, что позволяет ему изменять историю транзакций и дважды тратить монеты.