Bitcoin Forum
December 13, 2024, 05:50:22 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Прошу помощи с реализацией кода для сбора   (Read 3437 times)
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 15, 2015, 07:06:22 AM
 #1

Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 15, 2015, 06:17:18 PM
 #2

Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.

1000 сатоши за 1 килобайт - это с тебя по-божески сняли.
Не такая уж пыль, если на 1 BTC набралось.

У меня решение этой задачи в принципе есть, но оно громоздкое и неудобное.
Программа, которая сканирует блокчейн (локальные blk-файлы, которые клиентом создаются)
Строим список всех неизрасходованных выходов.
Ну и формируем транзакцию, которая мои выходы куда-нибудь пересылает.
Иногда я склеиваю себе, иногда сразу на какую-то биржу пересылаю.

Но проблемы я вижу тут такие:
1) Я не собираюсь публиковать эту программу бесплатно, а цена этой программы будет значительно больше, чем ты сэкономишь с помощью нее на комиссиях
2) Сейчас в сети много транзакций и майнеры не то что за 1000 сатоши/килобайт не проводят. Некоторые майнеры и 20к сатоши/килобайт закрутили лимиты
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 16, 2015, 06:30:12 AM
 #3

Да, радует комиссия в биткоине. За пересылку заплатил 450р с минимальной комиссией, и то была большая вероятность, что транзакция не пройдет. Пересылал ту же самую сумму с такого же количества кошельков в Dogecoin - комиссия составила чуть больше 200 догов, что эквивалентно 2 рублям. Разве в той теме, которую я нашел, нет решения? Там приведен код на php, но я не до конца понял, как он работает. Надо читать документацию.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 16, 2015, 06:56:55 AM
 #4

Да, радует комиссия в биткоине. За пересылку заплатил 450р с минимальной комиссией, и то была большая вероятность, что транзакция не пройдет. Пересылал ту же самую сумму с такого же количества кошельков в Dogecoin - комиссия составила чуть больше 200 догов, что эквивалентно 2 рублям. Разве в той теме, которую я нашел, нет решения? Там приведен код на php, но я не до конца понял, как он работает. Надо читать документацию.

Да вроде решение. Я особо в php не силен, и через rpc с клиентом не работал.
Так что ничего не могу сказать. Даже пробовать это погонять не буду.

В двух словах: (повторю, я сам в этом не силен)
Вам понадобится
(1) сам php,
(2) библиотека работы с биткойном jsonRPCClient,
(3) установленный и синхронизированный Core Client

Код подключается к клиенту, выдергивает неизрасходованные выходы, формирует, подписывает и при необходимости отправляет транзакцию склеивания. Где при этом задавать адрес и комиссию и как это запускать - я тоже не знаю, не силен в пхп.
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 17, 2015, 07:04:05 AM
 #5

Спасибо, попробую что-нибудь с этим сделать. Я наоборот, силен в php, но не силен в устройстве биткоин-сети. Даже не до конца понимаю, как и для чего склеиваются неизрасходованные выходы.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 17, 2015, 06:46:58 PM
 #6

Спасибо, попробую что-нибудь с этим сделать. Я наоборот, силен в php, но не силен в устройстве биткоин-сети. Даже не до конца понимаю, как и для чего склеиваются неизрасходованные выходы.
неизрасходованные выходы - это все равно что мелочь в твоем кошельке.
никто с мелочью связываться в реальном мире не хочет.
в биткойне комиссия зависит не столько от суммы транзакции, сколько от её размера в байтах.
поэтому склеивать мелочь - это проблема в некотором смысле.
Ivanech
Hero Member
*****
Offline Offline

Activity: 808
Merit: 1014


View Profile
December 19, 2015, 04:49:40 PM
 #7

Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.

Приведённый по ссылке пример рабочий, но не оптимальный для склеивания мелочи по нескольким причинам. Как минимум потому, что он тупо склеивает 50 выходов в одну транзакцию, тогда как оптимальнее ориентироваться на размер выходной транзакции, а не количество выводов.

Плюс в этом примере никак нельзя ограничить комиссию.

Для автоматизации сбора мусора пример может и подойдёт, но для оптимизации расходов лучше составлять транзакции самому, минуя Bitcoin Core API.
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 20, 2015, 07:34:58 AM
 #8

А сможете привести пример алгоритма, по которому оптимальнее всего было бы создавать транзакции? Думаю, что смогу перенести его на php (если api Bitcoin Core для этого подойдет), и скрипт сам создаст все транзакции. Даже если пример того кода, который я нашел, не подходит, я смог бы написать новый. Если нужно будет создавать много транзакций, то вручную это трудно будет делать.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 20, 2015, 08:12:08 AM
 #9

А сможете привести пример алгоритма, по которому оптимальнее всего было бы создавать транзакции? Думаю, что смогу перенести его на php (если api Bitcoin Core для этого подойдет), и скрипт сам создаст все транзакции. Даже если пример того кода, который я нашел, не подходит, я смог бы написать новый. Если нужно будет создавать много транзакций, то вручную это трудно будет делать.

для того чтобы создать транзакцию - нужен список неизрасходованных выходов.
потом подписать (это удобнее детать через rpc к core, чтобы самостоятельно не заниматься хранением приватных ключей)
потом отправить (ну тоже через core)
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 24, 2015, 03:02:14 PM
 #10

А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один, либо если через скрипт склею выходы и перешлю на один?
svetoch
Hero Member
*****
Offline Offline

Activity: 826
Merit: 1004


View Profile
December 24, 2015, 05:04:45 PM
 #11

А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один...
комиссия же. а тут рассматривают вариант её уменьшения (если не совсем отказ от комиссии)
Xtc
Legendary
*
Offline Offline

Activity: 1973
Merit: 1028


;u


View Profile WWW
December 24, 2015, 05:14:53 PM
 #12

Всё это через api bitcoin core делается, в простейшем случае - "sendmany". Комиссия там же устанавливается "settxfee".
Но дешевле чем в первом посте ты точно не сделаешь.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 24, 2015, 07:20:54 PM
 #13

А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один, либо если через скрипт склею выходы и перешлю на один?
никакой существенной разницы.
там можно сэкономить буквально несколько процентов, за счет некоторых трюков с подписыванием транзакции.
кстати, сеть сейчас подтверждает транзакции (если вы готовы подождать сутки) на 2 сатоши за байт
blackhacker (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 0


View Profile
December 27, 2015, 11:07:34 AM
 #14

Это получается, 2000 сатоши за килобайт? Сегодня пробовал перекинуть 50000 сатоши с установленной комиссией 1000 сатоши\килобайт, комиссия составила около 12000 сатошей. Если такая комиссия (20%) будет распространяться на весь баланс, то сумма получится довольно внушительная. Но все равно пока не понял, в чем заключается трюк со склеиванием выходов и уменьшением размера транзакции.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 27, 2015, 03:15:03 PM
 #15

Это получается, 2000 сатоши за килобайт? Сегодня пробовал перекинуть 50000 сатоши с установленной комиссией 1000 сатоши\килобайт, комиссия составила около 12000 сатошей. Если такая комиссия (20%) будет распространяться на весь баланс, то сумма получится довольно внушительная. Но все равно пока не понял, в чем заключается трюк со склеиванием выходов и уменьшением размера транзакции.

Комиссия зависит не от баланса (запомните это крепко-крепко), а от размера транзакции.

Я сегодня поэкспериментировал немного.
Отправил сперва транзакцию которая платит ~2001 сатоши за килобайт
https://tradeblock.com/bitcoin/tx/deefbfb64b7aa2c62bd87454823bc017953a56fef7945b9126e39b0bee78d246
Её сеть подтвердила практически сразу (во-первых повезло, во-вторых сказывается спад активности в связи с рождеством)

Потом отправил транзакцию которая платит ~1999 сатоши за килобайт
https://tradeblock.com/bitcoin/tx/3b949fa0dfae63c324d343b8c2640f8469a0a21e61da757c723ef1f65f77b97e
Она до сих пор не подтверждена

Вывод: если не учитывать возраст выходов (хотя это нельзя не учитывать), то граница как раз на уровне 2000 сатоши за килобайт

Трюк с уменьшением размера транзакции объяснять долго. И вы всё равно не поймете.
Но в общем-то размер транзакции меняется в некотором диапазоне. И его можно сделать децл поменьше
in100
Legendary
*
Offline Offline

Activity: 1200
Merit: 1021



View Profile
December 27, 2015, 05:31:21 PM
 #16

Отправил сперва транзакцию которая платит ~2001 сатоши за килобайт
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт (кроме случаев, когда размер транзакции не превышает 1 кБ, тогда можно отправить с нулевой комассией).
По крайней мере, сколько я не пытался, ничего не получилось. То есть установить можно любую комиссию меньше 5000, но рассчитывается она всё равно исходя из 5000 сатоши/кБ.

P.S. Сборку raw-транзакций вручную не предлагаю, это не для обычных пользователей.

1BTCin1ooigFtHHD82qquqysdfxFZGdd8a  |  LTCin1oo9JhxcZu8ZK5HivqwvzAdQSaoua  |  4NVCin1ooAd2XKoEfEhBn6tYNUHhojf4QS
Блокчейн биткоина с его алгоритмом децентрализованного консенсуса на самом деле неэффективен, но неэффективность – это та цена, которую мы платим за свободу.© Andreas Antonopoulos
Xtc
Legendary
*
Offline Offline

Activity: 1973
Merit: 1028


;u


View Profile WWW
December 27, 2015, 06:25:31 PM
 #17

Quote
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт
Позволяет
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
December 27, 2015, 06:41:03 PM
 #18

Ну я практически не пользуюсь Bitcoin-Qt. Разве что для вытягивания цепочки блоков.
Ну и в консоли decoderawtransaction иногда делаю, чтобы не налажать.
Так что в каких-то вещах я ламер.
И не могу подсказать насчет комиссий как их менять в Bitcoin-Qt.
Ну то есть ссылки я вам дал - специально дал на сайт tradeblock.
tradeblock как раз тем и хорош, что для транзакции показывает сколько у неё комса в расчете на байт (как перевести байты в килобайты надеюсь объяснять не надо)
in100
Legendary
*
Offline Offline

Activity: 1200
Merit: 1021



View Profile
December 27, 2015, 07:03:35 PM
 #19

Quote
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт
Позволяет
А можно поподробнее, где и что нужно поставить, чтобы это получилось?

Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:



Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:


1BTCin1ooigFtHHD82qquqysdfxFZGdd8a  |  LTCin1oo9JhxcZu8ZK5HivqwvzAdQSaoua  |  4NVCin1ooAd2XKoEfEhBn6tYNUHhojf4QS
Блокчейн биткоина с его алгоритмом децентрализованного консенсуса на самом деле неэффективен, но неэффективность – это та цена, которую мы платим за свободу.© Andreas Antonopoulos
negeroy
Legendary
*
Offline Offline

Activity: 1148
Merit: 1051


View Profile
December 27, 2015, 09:12:18 PM
 #20

Отправил сперва транзакцию которая платит ~2001 сатоши за килобайт

(кроме случаев, когда размер транзакции не превышает 1 кБ, тогда можно отправить с нулевой комассией).
По крайней мере, сколько я не пытался, ничего не получилось.

по протоколу когда размер транзакции не превышает 1 кБ + все выходы больше 100к сатошь + все входы имеют больше № кол-ва подтверждений расчитываемые по формуле, для не скомпресенных ключей

№ = (57,600,000 * (181*(кол-во входов) + 34 *(кол-во выходов) + 10)) / кол-во входных сатошь
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!