Как я могу эффективно разделить большие выходные данные на более мелкие?

У меня есть кошелек, который выплачивает множество небольших сумм в диапазоне от 0.x до 5 BTC. Я заполнил кошелек одной транзакцией на 50 BTC, поэтому там содержится только один большой ввод. Теперь, когда я перевожу 0,5 BTC куда угодно, транзакция имеет два выхода — 0,5 для получателя и 49,5 сдачи. Проблема в том, что пока эта транзакция не подтверждена, кошелек более или менее заблокирован, так как он содержит только 49,5 неподтвержденного баланса.

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

Изменить: обратите внимание, что я использую API rawtransactions, и при построении транзакции я хочу использовать только подтвержденные выходные данные (из команды «listunspent») в качестве входных данных для нового tx.

Каков наилучший способ разделить большой вывод в кошельке на что-то вроде, например, 10 * 5,0 BTC?

Я думал, что клиент Bitcoin-Qt позволит вам потратить сдачу, даже если у него нет подтверждений. Вы уверены, что не можете создать еще одну транзакцию расходов?
Извините, я не совсем ясно выразился в своем вопросе. Я использую API rawtransactins и при выборе минусов для транзакции (из команды «listunspent») я явно ищу минусы с >= 1 подтверждением. Но даже если первоначальный клиент позволит потратить неподтвержденную сдачу - не потребуется ли намного больше времени для подтверждения?
@TripleSpeeder: Почему подтверждение занимает больше времени? В большинстве случаев транзакции будут подтверждены, как только будет найден блок.
@TripleSpeeder: стандартный термин — «выход».
@Meni: у меня всегда было впечатление, что использование цепочек неподтвержденных транзакций довольно рискованно. Таким образом, если первая транзакция по какой-либо причине не получила подтверждения, все транзакции, использующие изменение первой транзакции в качестве входных данных, также никогда не будут подтверждены. Так что, вероятно, это не займет больше времени, чтобы получить подтверждение, но это связано с более высоким риском. Если это так, я удивлен, что оригинальный клиент позволяет это?
@TripleSpeeder: стандартный клиент позволяет тратить только собственные сдачи; он не позволяет проводить неподтвержденные транзакции извне (впрочем, это тоже разрешено протоколом). Я полагаю, что это ограничение связано с проблемами, подобными тем, которые вы описали. Хотя я не думаю, что эффект очень сильный. При обычном использовании неподтвержденные монеты тратятся редко, даже если это разрешено; так что в любом случае основная проблема риска двойной траты связана с последним отправителем.

Ответы (1)

Протокол и стандартный клиент позволяют провести собственную неподтвержденную сдачу. Multibit не позволял этого, но я считаю, что это недавно/скоро добавленная функция.

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

Если вы хотите разделить свои выходные данные, вы можете сделать это с помощью транзакции sendmany. Графический интерфейс Bitcoin-qt позволяет вам сделать это («Добавить получателя»), который может масштабироваться до нескольких выходов. Для большего количества выходов вы можете сгенерировать команду программно и ввести ее с помощью командной строки.

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