Одна из основных причин, по которой небезопасно принимать биткойны с 0 подтверждениями, связана с возможностью двойного расходования (когда г-н Мошенник сначала отправляет 1 BTC Алисе, а затем создает идентичную транзакцию, в которой он отправляет тот же 1 BTC Бобу). или на другой адрес, контролируемый им самим.Если сеть в конечном итоге включит вторую транзакцию в блокчейн, только Боб (или сам мистер Мошенник) будет рассматриваться как законный владелец монет, а Алиса останется ни с чем).
Однако, поскольку невозможно скрыть двойную трату навсегда, и каждый в сети в конечном итоге обнаружит, что г-н Мошенник дважды потратил свои монеты, почему невозможно наказать двойную трату, чтобы уменьшить экономические стимулы для совершения транзакций? так во первых? Например, мы могли бы создать специальный тип транзакции, в которой г-н Мошенник должен заблокировать эквивалентную сумму BTC в течение определенного периода времени. Если сеть действительно приходит к выводу, что произошла двойная трата, мы «сжигаем» (или уничтожаем) заблокированные BTC.
Разве это не значительно снизит вероятность двойных расходов?
Имея две транзакции, которые тратят одни и те же входные данные, невозможно узнать, какая из них «пришла первой» или является «законной» транзакцией. Из-за этого очень сложно обеспечить соблюдение политики «без двойных расходов». Как вы можете гарантировать правильность заказа транзакций? Что произойдет, если некоторые узлы в сети увидят, что транзакции поступают в другом порядке? Или что, если мошенник отправляет платеж, но затем утверждает, что транзакция, которая возвращает те же самые монеты себе, на самом деле является «первой» транзакцией? И т. д.
Вот почему блокчейн существует в первую очередь: чтобы отдавать явный порядок транзакциям, которые происходят в сети. Попытки сделать «транзакции с нулевым подтверждением» такими же надежными, как подтвержденные транзакции, никогда не увенчаются успехом, а если бы они могли, то мы могли бы просто покончить со всей цепочкой блоков! Возможно, есть способы сделать попытки двойных расходов менее успешными, но в конечном итоге, если вы принимаете транзакции с нулевым подтверждением, вы подвергаетесь риску двойных расходов.
Например, мы могли бы создать специальный тип транзакции, в которой г-н Мошенник должен заблокировать эквивалентную сумму BTC в течение определенного периода времени. Если сеть действительно приходит к выводу, что произошла двойная трата, мы «сжигаем» (или уничтожаем) заблокированные BTC.
Вы более или менее описали систему условного депонирования, в которой третья сторона используется для обеспечения того, чтобы рассматриваемая транзакция прошла гладко. Сегодня это возможно, и действительно, некоторые рынки предоставляют доступ к такого рода протоколам.
Имейте в виду: если вы требуете, чтобы пользователь заблокировал некоторые монеты в цепочке в качестве залога... для создания этого «заблокированного UTXO» потребуется транзакция биткойнов. Чтобы создать этот UTXO, вам придется дождаться подтверждения транзакции в сети... и в этот момент вы можете просто дождаться подтверждения платежа в первую очередь! Если вы не дождетесь подтверждения, то вы просто вернетесь к исходной точке в отношении риска двойной траты.
Попытка автоматизировать это не кажется жизнеспособной по причинам, аналогичным тем, которые я упомянул в первом абзаце выше.
Это было бы неэффективно.
Скажем, я хочу перевести стоимость в размере 100 долларов США. Насколько разумно просить меня запереться и на какой срок? Может быть, мы могли бы вытерпеть, заставив меня запереть 200 долларов на час.
Но я не просто должен делать двойную трату. Я могу потратить в пять раз больше. Я могу получить 500 долларов стоимости за свой платеж в 100 долларов, а затем, даже если я потеряю дополнительные 200 долларов, я все еще далеко впереди. И теперь вы сделали платежи гораздо более болезненными для всех, поскольку им нужно иметь в три раза больше, чем сумма, которую они хотят заплатить, просто сидя без дела.
абеленький