bestchange

Вы здесь

Что такое двойные расходы? Как блокчейн предотвращает их?

двойные расходы

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

Двойное расходование (англ. 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 крайне затрудняет изменение любого аспекта блокчейна, поскольку такое изменение потребует повторного майнинга всех последующих блоков. Это также затрудняет монополизацию вычислительной мощности сети пользователем или пулом пользователей, поскольку оборудование и мощность, необходимые для выполнения хэш-функций, дороги.

Оцените статью: 
Средняя: 3.9 (7 оценки)

Категория: 

Хотите самым первым получать уникальную и важную информацию?
Добавляйте нас в закладки!
Подписывайтесь на наши проекты!
Аватар пользователя Максим Анисимов
Автор: Максим Анисимов Блокчейн-инженер, разработчик Android приложений, финансист с 2012 года. Разрабатывает приложения для криптовалют, блокчейна и инвестиций. Изучает программы, их уязвимости
Добавьте комментарий