Я создал транзакцию (используя полный баланс вывода) с кошельком Bitcoin Core (работающим как полный узел). Транзакция попала в мемпул основных узлов, как и ожидалось. Я установил комиссию, которую клиент рекомендовал для медленной транзакции (чуть больше 9 сат/Б), но в наши дни она оказывается очень низкой. Учитывая текущее состояние мемпула в hoenicke , это может быть подтверждено через несколько недель, если вообще будет получено.
Сначала я намеренно установил транзакцию на «Запрос замены на комиссию», и теперь я хочу увеличить комиссию . Я ожидал взять некоторую часть «целевой суммы» и использовать ее в качестве комиссии, оставив общую сумму транзакции прежней (все еще тратя весь вывод в целом)
Однако это не представляется возможным по замыслу. Я получаю сообщение «Ошибка увеличения комиссии», говорящее: «Не удалось увеличить комиссию за транзакцию (транзакция не имеет вывода сдачи)».
Почему я не могу изменить баланс целевого/комиссионного вознаграждения за транзакцию и как я могу увеличить комиссию в этот момент?
Summary
Size 1xx (bytes)
Weight 7xx
Lock Time Block: 49xxxx
Inputs and Outputs
Total Input 0.01xxxxxx BTC
Total Output 0.01xxxxxx BTC
Fees 0.00001xxx BTC
Fee per byte 9.xxx sat/B
Fee per weight unit 2.xxx sat/WU
Estimated BTC Transacted 0.019xxxxx BTC
И входные, и выходные адреса начинаются с «1».
Транзакции BIP125 RBF (Replace-by-fee) в биткойн-ядре 0.15.0.1, по-видимому, требуют изменения адреса с балансом, чтобы облегчить будущее увеличение комиссии на основе RBF.
В качестве примера рассмотрим следующую транзакцию:
Input - 1.00000 BTC
Output - 0.99998 BTC
Fee - 0.00001 BTC
Change - 0.00001 BTC
Допустим, плата слишком низкая. Теперь мы хотим увеличить комиссию за транзакцию, поэтому RBF заменяет предыдущую транзакцию такой:
Input - 1.00000 BTC
Output - 0.99998 BTC
Fee - 0.00002 BTC
Change - 0.00000 BTC
Теперь комиссии достаточно, чтобы транзакция была подтверждена.
Без «сдачи», присутствующей в первой транзакции, нет источника увеличения комиссии. RBF может быть реализован таким образом, чтобы объем выпускаемой продукции был снижен, чтобы обеспечить более высокую плату; Я не уверен, почему это не поддерживается. Строка 2928 исходного кода wallet.cpp в репозитории bitcoin-core github гласит:
break; // Done, able to increase fee from change
Чтобы обойти эту проблему для транзакции с включенным RBF, но без адреса изменения, нужно следовать указаниям, содержащимся в одном из ответов на канонический вопрос «транзакция не подтверждена» . Я столкнулся с точно такой же проблемой на прошлой неделе и смог успешно восстановить ее, используя опцию -zapwallettxes
в интерфейсе командной строки кошелька биткойн-ядро.
Монструм