Вы пропускаете часть с двойными расходами.
То, что вы описали удалит сделку от Bitcoin. Это удаляет "уже потратили" статус отдельного неизрасходованного txouts (индивидуальные Bitcoin платежей вы получили от кого-то другого и
изменение входы от предыдущих операций, называемых "входные" когда вы смотрите на блок проводниковых сайтах) и возвращаете их к вашему балансу. Тем не менее, это само по себе ни препятствует транзакции позже включаются в blockchain или гарантирует, что предыдущая сделка будет признана недействительной с новым потратить с вашего кошелька.
Представьте этот сценарий:
-Мой кошелек имеет 1BTC и оплату 2BTC я получил и никаких других операций.
-Я посылаю продавец 1BTC без платы (эта сделка использует неизрасходованный 1btc txout в Кошелек)
-который не подтверждает своевременно.
Затем:
-Я следую за эту процедуру, чтобы удалить сделку от моего клиента Bitcoin и вернуть баланс Bitcoins я могу потратить.
Теперь:
-Я повторно 1BTC к торговцу с 0,01 добровольного взноса
-Бумажник выбирает наиболее разумным txouts построить сделку 1.01BTC, которая заключается в использовании
2BTC платеж вместо. 1.01BTC посылается отправителю и кошелек получает 0.99BTC возврата.
Результат:
-Торговец быстро получает новый платеж 1BTC
-Оригинальная сделка не признана недействительной по какой-либо из его txouts будучи дважды излете
-Но ... сюрприз, некоторый шахтер включает оригинальную транзакцию в блоке, теперь вы заплатили дважды.
Вы должны документировать фактический txouts затраченного на оплату перед его удалением, и используйте тип монеты управления бумажником, чтобы повторно провести некоторые из того же txouts с соответствующей оплатой; только тогда, когда некоторые из тех же txouts подтверждены в blockchain может первоначальный платеж будет считаться недействительным.
Была предыдущая дискуссия о добавлении функции типа повторной отправки в два раз провести с более платой, с кодом для шахтеров признать новую сделку законной, поскольку она не изменяет первоначальный взнос:
Я думал, что я видел где-то Gavin говорить о добавлении платы к уже существующим сделкам ... я ошибаюсь?
Я работаю на патч, который позволит создать базовую инфраструктуру, чтобы добавить сборы на сделки, которые были отправлены, но еще не включены в блок. Это позволит только добавить дополнительные входы и выходы, но никогда не делает любой выход имеет меньшее значение, чем это было раньше. Он также не позволит вам изменить транзакцию, которая уже потрачена.
Я рассматривал какие критерии узлы должны позволить отбрасывая ожидающий в памяти транзакции и заменить его сделку с увеличенной платой. Ваш вывод логично.
Так как на выходе операции, которая изменения не могут быть идентифицированы шахтерами или узлами, для подтверждения того, что является законной сделкой, не дважды тратить деньги, оказывается, что повторно переданным сделки
не должен изменять какие-либо входы или выходы в исходной транзакции. Если один из выходов были разрешено быть уменьшено, чтобы увеличить плату, это может означать, что платеж 0 подтверждения кому-то может быть изменено с ожидаемым значения, которое является определением злонамеренных двойных расходов. Если какой-либо выход может быть изменен в оригинале, это означает, что 0 подтверждают платежи не могут быть доверительными, поскольку выходные значения могут быть перемещены из одного получателя к другому или уменьшить.
Вместо этого, плата только должна быть добавлена
добавление нового ввода, и отдельный платеж изменения должны быть отправлены. В приведенном ниже примере я покажу, где мы добавим еще один полный ввод и изменение (где плата = вход - изменение).
OutputX, другой платеж другому получателю (или платеж третье изменение в целях повышения анонимности даже больше), может быть факультативным и не должно быть "блокатор" если она существует. Изменение от добавления платы требует некоторых новых результатов. Однако, будучи в состоянии добавить такие "мини-транзакций" глыбы с новыми входами и выходами и ретранслировать их, могут означать, что сервис, который выдает множество регулярных платежей может просто продолжать добавлять к существующей транзакции 0 подтверждения и ретрансляции, вместо того, чтобы создать новую транзакцию. Я не знаю, если это будет новшеством или нежелательно.
Другая странная ситуация, если первоначальный ТХ потратил все доступные входы, пользователь не может увеличить плату. Объясняя, почему бумажник не может добавить больше гонорара, даже если он показывает баланс будет один для дизайнеров пользовательского интерфейса.