Есть знающие люди: как руками сделать транзакцию, которая будет тратить неподтвержденные входы? Но не просто сделать, а чтобы мемпул эту транзакцию принял вместе с другой неподтвержденной.
Два вопроса в одном. Причем первый из двух частей.
1а) Руками можно по-разному сделать. Я пробовал через createrawtransaction штатного клиента
и мне не понравилось - уж больно гиморно. В результате у меня есть просто движок/либа/тулкит - не знаю как назвать
и вот таким кодом я собираю транзакцию. Ну приблизительно таким
UxToList list;
list.append(UxTo("e530ef9292137eb7cd493dc4dbcb4f0ae3f7b2cb5dd69b3e279075894f9ca899:1", 100000, "1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN" ));
list.append(UxTo("69bc8caecb7bb2924c304fcb4e9a09379a7b65c7fc6c4d39c39ae7ed8eaceee8:0", 5500, "1LzCTTy2BgqtVrpwbFn9KYziCR8stdXkKX" ));
list.append(UxTo("451d1bb69253bbb031d8b7e4bf0472fb142f6f2a755074642bf1e0ce03054e11:0", 34039, "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac" ));
list.append(UxTo("44faaf956ef8afb87d395f0be5b72408afab736a2a4a65f22c1c371d19f5e14f:0", 1726655, "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac" ));
list.append(UxTo("8f6981599c85548af45c91065c57b94dde78b720d58d1492ed281d8a102c85d9:0", 70000, "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac" ));
list.append(UxTo("e8d4ef4ba7bec74b1e07391e18eec7d5a8b165ebdd336d8f6406c8b7fca4a6d2:0", 53183212, "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac" ));
for ( quint64 fee ( 0 );; )
{
Outer outer ( list, fee );
outer.add ( "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac", list.sum ( ) - fee );
const QByteArray outTx ( list.createRawTransaction ( outer ) );
if ( outTx.size ( ) * 1 > fee )
{
fee = outTx.size ( ) * 1;
_trace ( QString ( "# fee = %1 sum = %2 #" ).arg ( fee ).arg ( Util::getAmount ( list.sum ( ) ) ) );
continue;
}
const MyKey32 outKey ( MyKey32::calc ( outTx ) );
_trace ( outKey.toString ( ) );
QFile ff ( "txraw.main" );
ff.open ( QIODevice::WriteOnly | QIODevice::Append );
ff.write ( outTx.toHex ( ).constData ( ) );
ff.write ( "\n" );
ff.close ( );
_trace ( QString ( "txsize=%1 fee=%2" ).arg ( outTx.size ( ) ).arg ( fee ) );
break;
}
1б) А спросите вы как имея свои приватные ключи найти все свои неизрасходованные выходы?
Берем блокчейн и парсим. Можно не с самого начала, а с какого-то определенного blk-файла
2) Как отправить трензакцию в сеть? Ну для этого у меня есть прграммка - могу поделиться:
https://cloud.mail.ru/public/2rUa/zgcW6vf8gПисалась для себя, так что не взыщите.
С другой неподтвержденной мемпул примет только если стоит режим RBF - он условно говоря заменит транзакцию
если будет больше комиссия. Но если послать транзакцию на 100500 нод в сети - есть большой шанс что транзакция
и дойдет до какого-то майнера у которого RBF включен
UPDATE:
Ой, перечитал вопрос и понял, что речь не про дабл-спенд-транзакцию,
а про неподтвержденные выходы. Вообще-то мемпулу похуй - подтверждены
выходы или нет. Главное - что они неизрасходованы. Так что все точно также.
Вот только как вы будете искать неподтвержденные выходы? Либо на какой-то
сервис завязываться, либо у себя на ноде ловить и парсить все транзакции...
Вариантов куча