1500% комиссии за транзакцию и 3,5 месяца на подтверждение?

Таким образом, мой сервис снимает крошечную комиссию в размере 0,001% (1/1000) с каждого платежа, проходящего через него. Большинство транзакций на самом деле являются микроплатежами, поэтому в кошельке сервиса накапливаются тысячи крошечных неизрасходованных средств. Теперь я беспокоюсь, что я не смогу потратить эти выводы, не заплатив кучу комиссий за транзакции и не ожидая целую вечность, пока этот платеж не будет очищен.

Средняя стоимость моих неизрасходованных средств, полученных за счет комиссий, составляет 100 сатоши (0,000001 биткойн). Это означает, что если я хочу обналичить 100 биткойнов, мне нужно потратить в среднем 100 000 000 этих выходов.

В соответствии с: Как рассчитать размер транзакции перед отправкой Размер транзакции: вход * 148 + исход * 34 + 10 плюс или минус «вход», что делает мой вывод равным: 100 000 000 * 148 + 2 * 34 + 10 + 100 000 000 = 14 900 000 078 байт = 14,9 ГБ?! (Я что-то пропустил здесь?)

Максимальный размер блока составляет 1 МБ, поэтому мне нужно будет разделить эту транзакцию на более чем 14 900 транзакций по 1000 КБ каждая?!

Требуется комиссия за транзакцию в размере 0,0001 биткойн за килобайт, поэтому мне нужно будет потратить 0,0001 * 1000 = 0,1 биткойна на каждую из этих 14 900 транзакций, что означает, что мне понадобится не менее 1490 биткойнов (чтобы отправить 100 биткойнов), что примерно в 15 раз больше суммы, которую я пытаюсь отправить!

Все эти 14 900 транзакций нужно будет включать в разные блоки (поскольку в противном случае они превышали бы максимальный размер блока), а так как в среднем один блок находится каждые 10 минут, мне нужно будет ждать 14 900 * 10 минут = 149 000 минут = 2483 часа. = 103 дня = 3 с половиной месяца?!

Пожалуйста, скажи мне, что я все неправильно понял. Я действительно сошел с ума.

Edit1: Спасибо Нейту Элдриджу за указание на ошибку в расчетах.

Если вы занимаетесь майнингом самостоятельно, вам не нужно включать комиссию. Однако вам нужно добыть 14 900 блоков, что не так просто ( огромное преуменьшение).
Когда вы импортируете бумажный кошелек в Coinbase, они вычитают комиссию за транзакцию? Если нет, вы можете импортировать приватный(е) ключ(и) в Coinbase, и тогда проверка станет их проблемой... вы, по сути, обворуете их, воспользовавшись лазейкой в ​​их правилах. (Предупреждение: если это сработает, на самом деле не делайте этого без письменного разрешения Coinbase. Вы будете придурком, можете подорвать Coinbase и нанести вред Биткойну, и/или получить иск.)
Посмотрите, что с этим сделает программное обеспечение Coinbase :)

Ответы (3)

Вы делаете это неправильно, если ваш сервис генерирует тысячи результатов размером с пыль. Вы должны консолидировать свои результаты по мере продвижения.

Я предполагаю, что транзакция в вашей текущей модели выглядит следующим образом:

Input (x1): 
Payer Address (X BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (100 satoshis)
Payer Change Address (X - Y - 0.00000001 BTC)

Что вам нужно сделать, так это сохранить адрес сервисного кошелька, накапливая 100 сатоши, когда вы идете:

Inputs (x2):
Payer Address (X BTC)
Service Wallet Address (Z BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (Z + 0.000001 BTC)
Payer Change Address (X - Y - 0.000001 BTC)
Комиссия сервиса всегда отправляется на один и тот же адрес, но какое это имеет значение, каждая транзакция вносит еще один неизрасходованный выход, который теперь принадлежит этому адресу, но все еще является отдельными выходами, или я что-то здесь упустил?
@Doug: он добавляет один новый вывод, но использует тот, который существовал ранее. Общее количество необходимых входных данных такое же, но таким образом вы получаете транзакцию, которая уже выполняется, и вам не нужно платить дополнительную комиссию.
@NateEldredge, не могли бы вы проанализировать это для меня на более техническом уровне? Кажется, я не понимаю. На самом деле вы говорите, что если я отправлю несколько сатоши из разных транзакций на один и тот же локальный адрес, они будут накапливаться как один неизрасходованный вывод?
@Doug, чтобы избежать тысяч выходов пыли, вы должны использовать свой предыдущий вывод, включив его во входы TX. Таким образом, каждый TX потребляет вывод на ваш сервисный адрес и создает новый вывод на тот же адрес с немного более высоким балансом учетной записи.
@uminatsu Думаю, я понял! Итак, в основном, что я делаю, так это использую свои исходящие транзакции, чтобы смешать мои выходные данные пыли в один неизрасходованный выход, верно? Очень умно, спасибо, что разъяснили мне, также спасибо Нейту.

С внесенными поправками ваши расчеты кажутся мне в основном правильными.

(Общее время на самом деле будет хуже, поскольку вы конкурируете со всеми другими пользователями сети за пространство в цепочке блоков. И некоторые майнеры устанавливают меньший предел размера блока — в клиенте по умолчанию, я думаю, он составляет 350 КБ.)

Поэтому я предлагаю вам не делать этого :-) Насколько я знаю, Биткойн никогда не предназначался для использования в таких микроплатежах, и на самом деле многие из этих функций существуют специально для того, чтобы препятствовать им. Вам может понадобиться другая бизнес-модель.

Вам нужно будет начать политику объединения этих транзакций вместе, небольшая группа за небольшой группой. Вам придется исследовать оптимальную стратегию для этого.

Затем, вероятно, в течение нескольких лет вам придется выполнять эти операции по вытиранию пыли, заполняя свободные закоулки и закоулки каждого блока. Вы закончите за O(nlogn) транзакций.

Этот результат несколько преднамеренный, наличие всех этих мини-выходов — огромная административная боль. С этого момента вы можете либо объединять транзакции (чтобы было меньше пыли), либо постоянно вытирать пыль вместе. Жаль, но сверхмалые транзакции — отличная функция!