Всем привет!
Решил поделиться с сообществом техникой выполнения двойной траты (double spend) при помощи Electrum, которой сам неоднократно пользовался, и которую считаю самой удобной и простой (из трёх мне известных). Когда-то увидел статью на
стимит, тут будет ее пересказ с небольшими моими изменениями. Надеюсь, кому-то это будет интересно ).
Нам потребуется замечательная программа биткоин-клиент Electrum и какой-нибудь редактор json-файлов типа JSONedit или
https://jsoneditoronline.org/ (я буду использовать второй, так как он работает на любых платформах).
Нужно сразу уточнить, что у меня всегда получалась двойная трата транзакций с RBF-флагом, сейчас во многих клиентах он стоит по умолчанию. Но если ваша транзакция без RBF-флага, то даблспенд работать скорее всего не будет (впрочем не уверен, возможно с большой комиссией и такая пройдет, надо проверять).
Если вы пользовались другим биткоин-клиентом, то просто импортируйте необходимые приватные ключи в Electrum.
Также обязательным условием является отключенное шифрование файла кошелька, если у вас этот файл зашифрован, то эту опцию необходимо отключить в меню "Кошелек - Пароль" (пароль оставить, снять галочку с "Зашифрованный файл кошелька").
Итак, приступим ).
Исходные данные - у нас в Electrum есть неподтвержденная транзакция, которую нам нужно изменить. Если бы нам нужно было просто увеличить комиссию для прохождения зависшей транзакции, мы бы просто нажали правую кнопку мыши на транзакции во вкладке истории и выбрали пункт "Увеличить комиссию". Здесь мы будем решать более сложную задачу - изменим получателя средств.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fb.radikal.ru%2Fb25%2F1904%2F41%2Fff65d57d2c25t.jpg&t=665&c=EcVj3PmsAo8b0Q)
1. Первое, что нам нужно сделать, это обмануть Electrum. Необходимо, чтобы он на время "забыл" о существовании неподтвержденной транзакции. Для этого из файла кошелька удаляем все упоминания о ней.
1.1 Делаем копию файла кошелька (на случай, если где-то ошибемся)
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fd.radikal.ru%2Fd12%2F1904%2F14%2F9431e6e58eb5t.jpg&t=665&c=XtGctEH2XXyRkw)
1.2 Открываем в браузере редактор
https://jsoneditoronline.org/ .
1.3 Отключаем связь клиента с интернетом. Это можно сделать разными способами - изменить настройки Electrum, средствами операционной системы или физическим отключением - не важно, главное, чтобы в правом нижнем углу загорелся красный кружок.
1.4 Двойной щелчок мыши в окне истории по транзакции открывает окно, из верхнего поля которого копипастим куда-нибудь в блокнот идентификатор транзакции и строчку из поля "Ввод". Также смотрим и запоминаем/записываем, с какой комиссией была отправлена транзакция.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fd.radikal.ru%2Fd39%2F1904%2Fd8%2F8c64831a0a94t.jpg&t=665&c=aT3BYiTgpX10JA)
1.5 Закрываем Electrum (!)
1.6 В json-редакторе открываем файл кошелька, в поле поиска вставляем идентификатор транзакции и удаляем все ветки, где он упоминается (обычно это 7 мест). Здесь важно не удалить ничего лишнего и в то же время ничего не оставить.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fc.radikal.ru%2Fc02%2F1904%2F6b%2F999f9a8e1e00t.jpg&t=665&c=cfayCfc0FqVPlw)
1.7 Сохраняем файл вместо старого. Обратите внимание, редакторы часто любят добавлять расширение, в данном случае json, Electrum расширение по умолчанию не использует, хотя и не запрещает. Просто если будет, например default_wallet и default_wallet.json, то это будет два разных кошелька.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fb.radikal.ru%2Fb31%2F1904%2Ff2%2F576f70ed976bt.jpg&t=665&c=atTrPLHLjnGkzg)
2. Открываем Electrum. Если все было сделано правильно, то кошелек откроется без ошибок, и мы обнаружим, что из истории транзакций та неподтвержденная транзакция исчезла.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fb.radikal.ru%2Fb40%2F1904%2F05%2Ffbacae2e4929t.jpg&t=665&c=ahGYg68le2dZdQ)
2.1 Готовим новую транзакцию обычным способом - вставляем адрес получателя, сумму перевода и комиссию (важно - уплачиваемая комиссия должна быть выше той, которую мы запоминали в п.1.4. Нажимаем кнопку "Предпросмотр". Здесь нужно все проверить и убедиться, что в поле "Ввод" присутствует та строчка, которую мы сохранили в п.1.4. Если ее там нет, то двойной траты не получится, поэтому нужно принять меры, чтобы она там появилась (вкратце - для этого из вкладки "Монеты" нужно потратить этот вход принудительно, подробнее потом добавлю, если кому-то это понадобится).
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fc.radikal.ru%2Fc05%2F1904%2F4a%2F406cbe7dc677t.jpg&t=665&c=Cg0_fz-HPOfcWg)
2.2. Нажимаем кнопку "Подписать" и вводим там пароль или жмем кнопку аппаратного кошелька, в общем, как обычно ). После нажимаем "Экспортировать" и сохраняем файл с подписанной транзакцией куда-нибудь. В принципе, можно и не сохранять, а просто нажать на "Копировать", но так надежнее.
2.3 Только теперь подключаем Electrum к интернету. Когда все засинхронизирутся, обнаруживаем, что старая транзакция восстановилась. Не пугаемся, так и должно быть. Нажимаем в меню "Инструменты - Загрузить транзакцию - Из файла (если просто копировали, то "из текста")" и выбираем сохраненный в предыдущем пункте файл (если копировали в буфер, то вставляем).
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fd.radikal.ru%2Fd27%2F1904%2Fca%2Fceb9ba27f0e5t.jpg&t=665&c=I1_n90EKI69iWA)
2.4 Нажимаем кнопку "Разослать" и всё, дело сделано ).
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fc.radikal.ru%2Fc01%2F1904%2F40%2F2077f9465a8bt.jpg&t=665&c=I0DbqNYtD4WcCw)
Может показаться, что это сложно, но на самом деле вся процедура занимает меньше 5 минут. Рекомендую сначала потренироваться
на кошках в тестнете.