двойная транзакция что это

Чем опасна и как происходит двойная трата (double spending) в блокчейне Bitcoin?

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

Читайте в статье

Двойная трата, двойное расходование или double spending — это повторная (иногда множественная) продажа одних и тех же средств.

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

Что такое двойное расходование

Схематично двойную трату можно обозначить таким образом:

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

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

Таким образом: вы оплатили счет, поставщик услуг мгновенно подтвердил факт оплаты, вы получили бургер в замен 500 рублей.

Но криптовалюты — это цифровые деньги, а не физические. Следовательно, транзакции можно копировать или перенаправлять. Это открывает возможность тратить дважды одни и те же BTC.

Как осуществить двойную трату

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

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

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

И вот здесь уникальное изобретение биткоина.

Как предотвращается

Блокчейн биткоина и других криптовалют решают проблему двойных трат через:

Блокчейн ведет хронологически упорядоченную регистрацию транзакций с отметками времени с самого начала запуска (с 2009 года в случае BTC).

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

Как сеть Bitcoin предотвращает двойное расходование на примере:

Предположим, у вас есть 1 BTC, который вы пытаетесь потратить дважды.

Вы совершили 1 транзакцию BTC торговцу №1. Теперь вы снова подписываете и отправляете тот же 1 BTC на другой биткоин-адрес, чтобы попытаться обмануть торговца №2. Обе транзакции идут в неподтвержденный пул транзакций. Но только первая транзакция получила подтверждение и была проверена майнерами, заключена в блок. Вторая транзакция не может получить достаточного количества подтверждений, потому что майнеры считают ее недействительной. двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что этоЕсли обе транзакции будут одновременно приняты майнерами? Когда они забирают транзакции из мемпула одновременно, то та из транзакций, которая получает максимальное количество подтверждений от сети, будет включена в блокчейн, а другая не состоится.

Чтобы продавцу удостовериться в проведенной транзакции, нужно для своей безопасности ждать несколько подтверждений транзакции. Нельзя просто довольствоваться ссылкой на перевод. Пока деньги не поступили в кошелек — трудно поверить в честность отправителя.

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

Транзакция не обязательно должна подтвердиться первой по времени, она должна быть в самой длинной цепи.

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

Двойное расходование возможно при атаках:

Атака 51% — когда злоумышленник захватывает 51% хэш-мощности сети. Когда такой контроль есть, можно отменить любую транзакцию и делать главной выгодную цепочку. В BTC это очень дорого, но другие монеты (последний случай с Verge и BTG) подвержены ей. Это зависит от текущей сложности майнинга, цены на оборудование и стоимости электроэнергии.

Race attack (атака-гонка) — когда злоумышленник посылает одну и ту же монету очень быстро на два разных адреса. А продавец принимает факт оплаты без подтверждений от сети.

Brute force attack — когда транзакция майнится злоумышленником на форке сети.

Finney attack ( по имени комментатора на Bitcointalk) — при удачном стечении обстоятельств возможна. Предположим, что злоумышленник иногда генерирует блоки. В них он включает транзакции с адреса А на адрес Б, оба из которых контролирует. Если генерит блок, не передает его в сеть, а пытается обмануть продавца. Он делает платеж по адресу C (магазину) с адреса A и включает его в свой блок. Но это задача из разряда гипотетических.

Альтернативы

Предотвращением двойных расходов занимаются, в принципе, все сети. У биткоина и подобных ему монет это происходит посредством PoW. Также популярны:

Способ защитить себя — ждать подтверждений

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

Подтверждения — это количество блоков, добавленных в блокчейн, которые сеть приняла после выполнения конкретной транзакции.

Справедливо сказать: чем больше блоков добавлено, тем больше подтверждений есть, тем более безопасна транзакция.

Как работают подтверждения?

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

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

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

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

Первый блок с транзакцией представляет собой первое подтверждение. Рекомендуется подождать до тех пор, пока не будут добавлены пять следующих блоков. На данный момент вероятность недействительности такой транзакции составляет менее 0,1%.

Также количество необходимых подтверждений зависит от суммы перевода. Например, некоторые предлагают 60 подтверждений транзакции, эквивалентной более чем 1 000 000 долларов, в то время как три подтверждения могут считаться достаточными для транзакции ниже 1000 долларов (на том основании, что это просто не стоит времени хакера для такой небольшой суммы).

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

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

Источник

Биткойн решает проблему «двойной траты»

Так называемая проблема двойной траты (double spending) была основной причиной централизации платежных систем до появления Биткойна. Если у вас есть цифровой объект, используемый для удаленных платежей, что вам мешает «смухлевать» и использовать его дважды? Неизвестным создателем Биткойна было найдено нетривиальное, но в то же время элегантное решение — публичная и криптографически достоверная история транзакций, или блокчейн.

Эта проблема существует не только в мире цифровых денег. Говоря шире, «двойная трата» — это подделка покупательной способности — фальшивомонетничество. В 2009 году, например, в Великобритании находилось в обращение порядка 556 тыс. фальшивых банкнот, а в 2010, по оценкам ЕЦБ, одна из 36 монет достоинством в 1 евро была поддельной.

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

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

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

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

«Именно поэтому неподтвержденные сделки с цифровыми монетами не являются абсолютно безопасными», — говорит Питер Тодд.

Итак, насколько же серьезно рискуют пользователи, пожелавшие использовать криптовалюту в своих финансовых операциях?

Проблема

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

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

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

Именно поэтому ряд компаний, которые занимаются обработкой биткойн-платежей — такие как, например, Coinbase — предлагают сегодня «гарантированные транзакции без подтверждения» или так называемые оффчейн-транзакции. Они гарантируют, что финансовая операция пройдет успешно на их платформе, не дожидаясь подтверждения, и ведут собственную внутреннюю книгу учета.

Эрик Спрингер, основатель компании «BitUndo», которая занимается подтверждением незавершенных транзакций, считает, что такие идеи, как замена текущей транзакции другой более дорогостоящей операцией (replace-by-fee — замена за вознаграждение), возможно, смогут решить проблему повторного использования неподтвержденных сделок. Он надеется, что таким образом биткойн станет более надежной и безопасной валютой, чем он является сейчас.

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

Унифицированные правила?

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

Как считает Дэн Хелд, соучредитель компании «ZeroBlock», данная проблема требует напротив использования более привычных методов обработки транзакций, а не внедрения каких-либо революционных идей.

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

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

Подтверждения и узлы

Из-за стремления пользователей облегчить процесс проведения небольших биткойн-сделок, многим продавцам придется смириться с таким понятием, как нулевое подтверждение. Однако, как считает главный технический директор компании Circle Шон Невилль, данные сделки являются абсолютно реальными и действительными. Определенный риск, безусловно, существует, но в большинстве своем он себя оправдывает.

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

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

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

Перспективы

В жизни невозможно что-либо гарантировать на 100%, однако перспектива того, что использование неподтвержденных транзакций может привести к серьезному кризису в результате систематического повторного использования биткойнов, крайне сомнительна.

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

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

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

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

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

Источник

Двойное расходование. Руководство для начинающих

Содержание

Что такое двойное расходование?

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

Как можно предотвратить двойное расходование?

Централизованный подход

Централизованный тип системы значительно проще в реализации, в отличии от децентрализованных альтернатив. В основном, это предполагает наличие одного субъекта или организации, которая осуществляет управление системой и держит под контролем выпуск и распределение новых единиц. Хорошим примером для централизованного решения проблемы с двойным расходованием является eCash Дэвида Чаума

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

Затем он передает эти данные в банк, который вносит дебет на его счет в размере 100$, после чего подписывает сообщения, подтверждающие, что каждая из пяти частей информации подлежит обмену на 20$. Теперь Дэн может потратить средства, выданные банком. Он идет в ресторан к Эрин и покупает еду, которая стоит 40$.

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

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

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

Децентрализованный подход

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

Давайте вернемся к сценарию ресторана. Дэн возвращается в ресторан, и на этот раз он замечает наклейку о том, что в данном заведении принимают оплату услуг в биткоине. Ему понравился еда, которую он ел в прошлый раз, поэтому он заказал ее снова. Это будет стоит ему 0.005 BTC.

Как уже упоминалось, транзакция действительна только в том случае, если она включена в блок, который получил подтверждение. Принятие неподтвержденных транзакций во многом похоже на получение 40$ в виде eCash из предыдущего примера, без своевременного обналичивания чека в банке, что позволяет отправителю потратить одну и ту же сумму в другом месте. Поэтому рекомендуется, чтобы Эрин дождалась как минимум 6 подтверждений блока (примерно один час), прежде чем принять платеж Дэна.

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

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

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

Существует три популярных метода для реализации двойного расходования:

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

Заключение

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

Источник

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

двойная транзакция что это. Смотреть фото двойная транзакция что это. Смотреть картинку двойная транзакция что это. Картинка про двойная транзакция что это. Фото двойная транзакция что это

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

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

Проблема двойных расходов – это проблема, которой нет у наличных денег (Фиата). Если вы заплатите за кофе стоимостью в 10 долларов, отдав эти деньги изготовителю кофе, вы не сможете потратить эти же 10 долларов в другом месте.

Однако транзакция с использованием цифровой валюты, такой как Биткойн, происходит исключительно в цифровой форме.

Это означает, что можно скопировать детали транзакции и ретранслировать ее так, чтобы один и тот же BTC мог быть потрачен несколько раз одним владельцем.

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

Особенности двойных расходов

Понимание блокчейна

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

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

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

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

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

Таким образом, блокчейн Биткойна сохраняет записи транзакций с метками времени, начиная с основания криптовалюты с 2009 года.

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

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

Работа с двойными расходами

Представьте, что у вас есть 1 BTC, и вы пытаетесь потратить его дважды на две отдельные транзакции. Вы можете попытаться сделать это, отправив один и тот же BTC на два разных адреса кошелька биткойн.

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

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

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

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

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

В этой системе остаются другие уязвимости, которые могут допустить двойные атаки. Например, если злоумышленник каким-то образом может контролировать как минимум 51% мощности сети, в этом случае он или она сможет совершить двойные расходы.

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

Proof of Work и майнинг объяснение

Теперь давайте немного более технически взлянем на это. Пользователи могут обнаружить несанкционированный доступ, такой как попытка двойного расходования на практике, с помощью хэшей, длинных цепочек чисел, которые служат Proof of Work (PoW).

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

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

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

На практике это означает, что хеш начинается с длинной строки нулей:

Например, хеш для блока # 429818 равен 000000000000000004dd3426129227782239efd583b5412b1bd75e2b78ff2e4d.

Этот блок содержит 2 012 транзакций, включающих более 1000 Биткойнов, а также заголовок предыдущего блока. Если бы пользователь изменил одну сумму транзакции на 0,0001 биткойн, результирующий хэш был бы неузнаваем, и сеть отклонила бы мошенничество.

Поскольку данный набор данных может генерировать только один хеш, как майнеры могут убедиться, что они генерируют хеш ниже цели?

Они изменяют входные данные, добавляя целое число, называемое nonce («число, использованное один раз»). Как только найден действительный хеш, он транслируется в сеть, и блок добавляется в цепочку блоков.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *