Author

Topic: Прошу помощи с реализацией кода для сбора  (Read 3441 times)

newbie
Activity: 9
Merit: 0
Возникла еще одна проблема - никак не отсылается транзакция, уже несколько раз пробовал. Пробовал даже ставить повышенную комиссию, все равно не помогает. В описании транзакции пишет "Нет активных соединений с сетью", и "Статус: 0/отключен, ещё не было успешно разослано". Что можно в таком случае сделать? Транзакцию посылаю с одного адреса, комиссию предлагает около 2000, после уже вручную поставил 20000.


/upd
Спустя пару часов транзакция все-таки отправилась, но как-то вяло. Подтверждений нет. Странно очень, транзакции с комиссией 1000 сатоши и то быстрее подтверждались.
legendary
Activity: 1260
Merit: 1019
minrelaytxfee
Другие узлы не будут пересылать такие транзакции, если только к старым подключаться.
Да, я это и имел в виду.
Но "старых" узлов в сети очень много. И есть такая штука, как Relay Network
https://bitcointalk.org/index.php?topic=766190.0;topicseen
Так что распространить транзакцию по сети несложно.
Вопрос лишь в том - какой клиент с какими настройками стоит у крупных пулов.
Сейчас ситуация такая, что "мелких пулов" по сути дела и не осталось.

Я себе даже написал отдельную программку, которая посылает транзакцию сразу на пару тысяч нод из моего списка.
Xtc
legendary
Activity: 1973
Merit: 1028
;u
Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:
Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:
Ты оказался прав, 15 октября в версии 11.1 это временно изменили, после спама танзакциями. В 12.0 обещают новую схему.
Ну так это же настройки клиента! Значит это должно быть как-то на клиенте настраиваемо.
Какой-нибудь параметр при запуске указать.
Или старый клиент поставить.
(У меня вообще стоит 0.8.5 уже больше двух лет и пока апгрейдиться не собираюсь)
minrelaytxfee
Другие узлы не будут пересылать такие транзакции, если только к старым подключаться.
legendary
Activity: 1260
Merit: 1019
Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:
Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:
Ты оказался прав, 15 октября в версии 11.1 это временно изменили, после спама танзакциями. В 12.0 обещают новую схему.
Ну так это же настройки клиента! Значит это должно быть как-то на клиенте настраиваемо.
Какой-нибудь параметр при запуске указать.
Или старый клиент поставить.
(У меня вообще стоит 0.8.5 уже больше двух лет и пока апгрейдиться не собираюсь)
Xtc
legendary
Activity: 1973
Merit: 1028
;u
Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:
Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:
Ты оказался прав, 15 октября в версии 11.1 это временно изменили, после спама танзакциями. В 12.0 обещают новую схему.

Quote
The default for the -minrelaytxfee setting has been increased from 0.00001 to 0.00005.
This is a temporary measure, bridging the time until a dynamic method for determining this fee is merged (which will be in 0.12).
https://bitcoin.org/en/release/v0.11.1
legendary
Activity: 1260
Merit: 1019
можно, но написал же, что "для не скомпресенных ключей", для скомпрессеных 148,  размер транзы уменьшается тогда на 33 байта на каждом входе
Нет, я не об этом
Можно сделать транзакцию для обычных ключей где формула будет не 181х, а 172х
И для компрессированных не 148х, а 139х
(я точно не помню насколько могу уменьшить размер транзакции, вроде на 7-9 байт на каждый ейный вход) по сравнению с "формулами" из интернета.
Теоретически это не предел и уменьшить можно еще сильнее.
legendary
Activity: 1200
Merit: 1021
Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:
Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:

Это какой-то глюк отображения, после нажатия кнопки "отправить" в диалоговом окне по идее должно правильно отобразиться.

Но если просто неправильно отображается комиссия, то должно быть возможно вручную увеличить сумму к отправке, а это невозможно, вылазит "Недостаточно средств!" и отрицательная сдача, а при нажатии "Отправить", получаем:



Если указать сумму из поля "После комиссии", то в окне отправки получим именно её, и именно 6370 сатоши комиссии:

Xtc
legendary
Activity: 1973
Merit: 1028
;u
Вот транзакция размером больше 1 кБ, комиссию ставим выборочно, за килобайт, 5000, получаем всего 6370 сатоши:
Меняем комиссию за кБ на 2000, получаем всё ту же общую комиссию 6370 сатоши:

Это какой-то глюк отображения, после нажатия кнопки "отправить" в диалоговом окне по идее должно правильно отобразиться.
Для транзакции меньше килобайта у меня тоже отображается, как будто установлено 0.00005, даже если ставлю комиссию меньше.
legendary
Activity: 1148
Merit: 1051
по протоколу когда размер транзакции не превышает 1 кБ + все выходы больше 100к сатошь + все входы имеют больше № кол-ва подтверждений расчитываемые по формуле, для не скомпресенных ключей
№ = (57,600,000 * (181*(кол-во входов) + 34 *(кол-во выходов) + 10)) / кол-во входных сатошь

Это неточная формула. Приблизительно правильно. Но цифру 181 можно уменьшить.

можно, но написал же, что "для не скомпресенных ключей", для скомпрессеных 148,  размер транзы уменьшается тогда на 33 байта на каждом входе
legendary
Activity: 1260
Merit: 1019
по протоколу когда размер транзакции не превышает 1 кБ + все выходы больше 100к сатошь + все входы имеют больше № кол-ва подтверждений расчитываемые по формуле, для не скомпресенных ключей
№ = (57,600,000 * (181*(кол-во входов) + 34 *(кол-во выходов) + 10)) / кол-во входных сатошь

Это неточная формула. Приблизительно правильно. Но цифру 181 можно уменьшить.
legendary
Activity: 1148
Merit: 1051
Отправил сперва транзакцию которая платит ~2001 сатоши за килобайт

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

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

№ = (57,600,000 * (181*(кол-во входов) + 34 *(кол-во выходов) + 10)) / кол-во входных сатошь
legendary
Activity: 1200
Merit: 1021
Quote
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт
Позволяет
А можно поподробнее, где и что нужно поставить, чтобы это получилось?

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



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

legendary
Activity: 1260
Merit: 1019
Ну я практически не пользуюсь Bitcoin-Qt. Разве что для вытягивания цепочки блоков.
Ну и в консоли decoderawtransaction иногда делаю, чтобы не налажать.
Так что в каких-то вещах я ламер.
И не могу подсказать насчет комиссий как их менять в Bitcoin-Qt.
Ну то есть ссылки я вам дал - специально дал на сайт tradeblock.
tradeblock как раз тем и хорош, что для транзакции показывает сколько у неё комса в расчете на байт (как перевести байты в килобайты надеюсь объяснять не надо)
Xtc
legendary
Activity: 1973
Merit: 1028
;u
Quote
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт
Позволяет
legendary
Activity: 1200
Merit: 1021
Отправил сперва транзакцию которая платит ~2001 сатоши за килобайт
К сожалению, Bitcoin-Qt не позволяет установить комиссию меньше 5000 сатоши за килобайт (кроме случаев, когда размер транзакции не превышает 1 кБ, тогда можно отправить с нулевой комассией).
По крайней мере, сколько я не пытался, ничего не получилось. То есть установить можно любую комиссию меньше 5000, но рассчитывается она всё равно исходя из 5000 сатоши/кБ.

P.S. Сборку raw-транзакций вручную не предлагаю, это не для обычных пользователей.
legendary
Activity: 1260
Merit: 1019
Это получается, 2000 сатоши за килобайт? Сегодня пробовал перекинуть 50000 сатоши с установленной комиссией 1000 сатоши\килобайт, комиссия составила около 12000 сатошей. Если такая комиссия (20%) будет распространяться на весь баланс, то сумма получится довольно внушительная. Но все равно пока не понял, в чем заключается трюк со склеиванием выходов и уменьшением размера транзакции.

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

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

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

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

Трюк с уменьшением размера транзакции объяснять долго. И вы всё равно не поймете.
Но в общем-то размер транзакции меняется в некотором диапазоне. И его можно сделать децл поменьше
newbie
Activity: 9
Merit: 0
Это получается, 2000 сатоши за килобайт? Сегодня пробовал перекинуть 50000 сатоши с установленной комиссией 1000 сатоши\килобайт, комиссия составила около 12000 сатошей. Если такая комиссия (20%) будет распространяться на весь баланс, то сумма получится довольно внушительная. Но все равно пока не понял, в чем заключается трюк со склеиванием выходов и уменьшением размера транзакции.
legendary
Activity: 1260
Merit: 1019
А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один, либо если через скрипт склею выходы и перешлю на один?
никакой существенной разницы.
там можно сэкономить буквально несколько процентов, за счет некоторых трюков с подписыванием транзакции.
кстати, сеть сейчас подтверждает транзакции (если вы готовы подождать сутки) на 2 сатоши за байт
Xtc
legendary
Activity: 1973
Merit: 1028
;u
Всё это через api bitcoin core делается, в простейшем случае - "sendmany". Комиссия там же устанавливается "settxfee".
Но дешевле чем в первом посте ты точно не сделаешь.
hero member
Activity: 826
Merit: 1004
А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один...
комиссия же. а тут рассматривают вариант её уменьшения (если не совсем отказ от комиссии)
newbie
Activity: 9
Merit: 0
А в чем получается разница, если я через Bitcoin Core перешлю со всех адресов на один, либо если через скрипт склею выходы и перешлю на один?
legendary
Activity: 1260
Merit: 1019
А сможете привести пример алгоритма, по которому оптимальнее всего было бы создавать транзакции? Думаю, что смогу перенести его на php (если api Bitcoin Core для этого подойдет), и скрипт сам создаст все транзакции. Даже если пример того кода, который я нашел, не подходит, я смог бы написать новый. Если нужно будет создавать много транзакций, то вручную это трудно будет делать.

для того чтобы создать транзакцию - нужен список неизрасходованных выходов.
потом подписать (это удобнее детать через rpc к core, чтобы самостоятельно не заниматься хранением приватных ключей)
потом отправить (ну тоже через core)
newbie
Activity: 9
Merit: 0
А сможете привести пример алгоритма, по которому оптимальнее всего было бы создавать транзакции? Думаю, что смогу перенести его на php (если api Bitcoin Core для этого подойдет), и скрипт сам создаст все транзакции. Даже если пример того кода, который я нашел, не подходит, я смог бы написать новый. Если нужно будет создавать много транзакций, то вручную это трудно будет делать.
hero member
Activity: 808
Merit: 1014
Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.

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

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

Для автоматизации сбора мусора пример может и подойдёт, но для оптимизации расходов лучше составлять транзакции самому, минуя Bitcoin Core API.
legendary
Activity: 1260
Merit: 1019
Спасибо, попробую что-нибудь с этим сделать. Я наоборот, силен в php, но не силен в устройстве биткоин-сети. Даже не до конца понимаю, как и для чего склеиваются неизрасходованные выходы.
неизрасходованные выходы - это все равно что мелочь в твоем кошельке.
никто с мелочью связываться в реальном мире не хочет.
в биткойне комиссия зависит не столько от суммы транзакции, сколько от её размера в байтах.
поэтому склеивать мелочь - это проблема в некотором смысле.
newbie
Activity: 9
Merit: 0
Спасибо, попробую что-нибудь с этим сделать. Я наоборот, силен в php, но не силен в устройстве биткоин-сети. Даже не до конца понимаю, как и для чего склеиваются неизрасходованные выходы.
legendary
Activity: 1260
Merit: 1019
Да, радует комиссия в биткоине. За пересылку заплатил 450р с минимальной комиссией, и то была большая вероятность, что транзакция не пройдет. Пересылал ту же самую сумму с такого же количества кошельков в Dogecoin - комиссия составила чуть больше 200 догов, что эквивалентно 2 рублям. Разве в той теме, которую я нашел, нет решения? Там приведен код на php, но я не до конца понял, как он работает. Надо читать документацию.

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

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

Код подключается к клиенту, выдергивает неизрасходованные выходы, формирует, подписывает и при необходимости отправляет транзакцию склеивания. Где при этом задавать адрес и комиссию и как это запускать - я тоже не знаю, не силен в пхп.
newbie
Activity: 9
Merit: 0
Да, радует комиссия в биткоине. За пересылку заплатил 450р с минимальной комиссией, и то была большая вероятность, что транзакция не пройдет. Пересылал ту же самую сумму с такого же количества кошельков в Dogecoin - комиссия составила чуть больше 200 догов, что эквивалентно 2 рублям. Разве в той теме, которую я нашел, нет решения? Там приведен код на php, но я не до конца понял, как он работает. Надо читать документацию.
legendary
Activity: 1260
Merit: 1019
Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.

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

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

Но проблемы я вижу тут такие:
1) Я не собираюсь публиковать эту программу бесплатно, а цена этой программы будет значительно больше, чем ты сэкономишь с помощью нее на комиссиях
2) Сейчас в сети много транзакций и майнеры не то что за 1000 сатоши/килобайт не проводят. Некоторые майнеры и 20к сатоши/килобайт закрутили лимиты
newbie
Activity: 9
Merit: 0
Всем привет. Имеется около 1500 кошельков, на каждом регулярно скапливается пыль. Есть ли способ переводить все на один адрес с наименьшей комиссией? Вчера пытался перевести все на один адрес, клиент Bitcoin Core ругался на большой размер транзакции. Пришлось пересылать по частям. В итоге за перевод 1 BTC заплатил комиссию 0.015 BTC, при размере минимальной комиссии 1000 сатошей за 1кб. На этом форуме нашел тему, где приведен код для склеивания выходов, но не нашел про него подробностей, как он работает, точнее, документации, а экспериментировать не очень хочется. Или может есть еще какой-нибудь способ, о котором я не знаю, поэтому прошу помощи тут.
Jump to: