Author

Topic: Нужна помощь с пылью. Error. Transaction too large. (Read 1591 times)

legendary
Activity: 1386
Merit: 1009
Можете склеивать выходы из listunspent, пока клиент не скажет, что transaction too large.
Запомните это количество, и в следующий раз клейте не больше него.
Главное правильно рассчитайте выходную сумму (как сумму всех входов - комиссия).
Можете отправлять сразу на биржу, ничего страшного.

Если вы майните в соло, настройте демон на включение бесплатных транзакций
Code:
-blockminsize=500000

Вот как я клеил в новакоине
Code:

require_once 'jsonRPCClient.php';

$bitcoin = new jsonRPCClient('http://login:[email protected]:8344/');

$value 0;
$inputs = array();

$unspent $bitcoin->listunspent(0);

foreach (
$unspent as $output)
{
if (count($inputs) < 50
{
$inputs[] = $output;
$value += $output['amount'];
}
}

$outputs = array(
'address' => $value,
);

$rawtx $bitcoin->createrawtransaction($inputs$outputs);
$signed $bitcoin->signrawtransaction($rawtx$inputs);
print_r($bitcoin->decoderawtransaction($signed['hex']));
//print_r($bitcoin->sendrawtransaction($signed['hex'])); 
50 - сколько входов склеивать в транзакции
address - куда отправлять монеты
Смотрим, всё ли верно, потом убираем // с последней строки и запускаем снова - транзакция отправляется.
OZR
sr. member
Activity: 281
Merit: 250
You're in my wonderland!
Скрипт на отправку заглох сразу.

Code:
sendtoaddress   [comment] [comment-to]

Quarkcoind.exe при любых вариантах написания шлёт на.
Code:
error: {"code":-4,"message":"Insufficient funds"}

И какие нафиг комменты он от меня хочет?

Debug window в QT в этом плане более мягок. Отправка происходит без указания [comment] и [comment-to]. Но так же зависает на N минут. Комиссию снимает автоматически, ничего подтверждать не надо. Сколько не понятно.

----

Варианты, которые вижу:

- Создать транзакцию максимальным размером 100-250 кб? И желательно, чтобы я её сразу обработал просчётом блока, не дожидаясь пока в сети кто-то этим займётся. *Мозг взорвался на этом моменте, как это сделать*
- Всё же родить скрипт, который заспамит кошелёк получателя много раз монетками по одной.
- Выводить вручную несколько тысяч операций из listunspent... *так есть шансы не управиться и до нового года*

---

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

Code:
createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}

Значения я беру из listinspent и создаю большую строчку длинной те самые 100-250кб?
А второе значение оставить таким {address:amount} с адресом, на который и будет проходить склейка? Или уже существующем адресе?

Затем мы её отправляем (куда? на свой существующий адрес, или на свой новый адрес? на биржу поидее нельзя, т.к они не смогут её склеить, или принять)
Code:
signrawtransaction  [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [,...] [sighash="ALL"]
БЛЕАТЬ

либо
Code:
sendrawtransaction 
Тут попроще, но всё равно не ясно откуда брать значение .

Декодировать строку поидее не понадобится, и после этого останется только
Code:
getrawtransaction  [verbose=0]
Где, txid мы получаем в одной из предыдущих двух строк, но что такое verbose?

Это и есть склеивание? И клеить я могу по максимальному размеру транзакции? Но тогда не понимаю каким образом резкое уменьшение amount будет мешать процессу.

SOS.



legendary
Activity: 840
Merit: 1000
Максимальный размер транзакции в биткоин - 100кб, если не ошибаюсь. Этого достаточно, чтобы склеить десятки входов.

250кб вроде
если я правильно курил доки
legendary
Activity: 1386
Merit: 1009
Максимальный размер транзакции в биткоин - 100кб, если не ошибаюсь. Этого достаточно, чтобы склеить десятки входов.

В вашем случае я бы написал скрипт для склейки, с использованием raw transactions. Только надо быть осторожным с расчётом выходов.

Либо отправлять по-маленьку на какую-нибудь биржу, потом вывести оттуда всё.

vout - это номер выхода в транзакции, которая вам отправила деньги.

Транзакции до 10кб могут быть отправлены без комиссии (при определенных условиях), а вообще в кварке какие комиссии?
OZR
sr. member
Activity: 281
Merit: 250
You're in my wonderland!
5 597 512 байт в текстовом файле.
174 751 строка.

"scriptPubKey" : "не уверен, что его можно выкладывать в открытый доступ", а поиск и замену сейчас сделать нет возможности, так что лог выложить пока не могу... Формат лога прост до безобразия. Не понятно только значение vout. И чем мне это сможет помочь.

В среднем что-то вроде этого:

Code:
{
"txid" : "[delete]",
"vout" : 17,
"address" : "[delete]",
"account" : "",
"scriptPubKey" : "[delete]",
"amount" : 2.54284000,
"confirmations" : 201593
},

Минимальный amount 0.71634000 . Многовато для пыли...

Ах да, при отправке вручную из командной строки:

Code:
Transaction too large (code -4)

offtopic: недавно в сети bitcoin прошла транзакция на сумму чуть больше 100 000 BTC за один раз и при этом без комиссии. Я не понимаю, как её вообще возможно отправить. Сеть не должна была позволить ей пройти из-за размера. Либо выходит, что они были сгенерированы одними из самых первых, когда вход был чрезвычайно большой. Но в этом случае выходит, что криптовалюты не приспособлены для действительно крупных переводов людям, которые имеют средства, но ещё не пользуются криптовалютами. Либо есть какой-то альтернативный способ передачи, о котором я не знаю. Для меня застряла очень вкусная сумма, которая для серьёзных дядей ничего не стоит... Впервые всерьёз задумался о протоколе. И ладно, я его разберу в течение нескольких месяцев. Не технари этим заниматься не будут. И рухнет курс к чёртовой бабушке.

Я уже второй день трахаюсь с переводом. И такими темпами ещё трахаться и трахаться. Здесь же на бирже ситуация может меняться в течение пары часов. Утром - золото. Вечером - черепки. Привет антилопе.

Основной вопрос. Продолжать переводить малыми транзакциями ещё чёрт знает сколько времени? При этом есть риск, что потом транзакции совершить будет невозможно, а собрать пыль будет в разы сложнее. И в сети действительно застрянет бабло и про него можно забыть. Или думать над способом, как собрать пыль и молиться, чтобы бабло не стало за это время черепками?

legendary
Activity: 1386
Merit: 1009
Неясно, сколько всего выходов и какого они размера в среднем.
listunspent что говорит?
OZR
sr. member
Activity: 281
Merit: 250
You're in my wonderland!
Хрен его знает, куда запихнуть эту тему.

Code:
Quarkcoin - Error. Transaction too large.
Send Coins - Error: Transaction creation failed!

Пыль. Очень много маленьких транзакций с p2pool. С каждым новым переводом средств сумма доступная к переводу уменьшается. Кошелёк зависает минут на 5 при каждом переводе на очень мощном компьютере, но потом всё же отправляет. Такими темпами перевод можно делать до конца года. И есть подозрение, что он вообще потом не захочет отправлять, потому что сумма комиссии за перевод будет превышать доступную сумму.

P.s - если я правильно понимаю данную проблему, то мне необходимо провести эту транзакцию, обработав необходимые мне блоки в соло, т.к сеть их не может принять из-за большого размера. Но тут много технических деталей, в которых я слабо понимаю. MAX_BLOCK_SIZE_GEN ...
Jump to: