Welches Tool/welche Software kann ich verwenden, um eine Rohtransaktion zu übertragen, die eine Transaktion nicht wegen ungültiger oder doppelter Ausgaben zurückweisen würde?
Bitcoind mit RPC verfügt über einen Validierungsschritt, der jede Rohtransaktion ablehnt, bei der die Eingaben nicht bekannt sind oder wenn die Eingaben doppelt ausgegeben werden.
Außerdem möchte ich mich nicht auf einen Drittanbieterdienst wie blockchain.info verlassen.
Es stellt sich heraus, dass es viele Möglichkeiten gibt, dies zu tun:
Es gibt absolut keinen Grund zu versuchen, eine ungültige Transaktion zu übertragen. Es verschwendet Ihre Zeit und Ihren Verkehr. Ihre Kollegen werden es überprüfen und wegwerfen. Sie werden es nicht an das Netzwerk weiterleiten. Sie können Ihre IP-Adresse auch für einige Zeit (1 Tag?)
Vielleicht möchten Sie eine gültige, aber nicht standardmäßige Transaktion senden? Oder möchten Sie vielleicht ein benutzerdefiniertes Tool haben, das Transaktionen an ein Netzwerk sendet?
// [...]
void NetSocket::pushTx ( const QByteArray& data )
{
const MyKey32 key ( data.constData ( ), data.size ( ) ); // calculate txid
outTx.insert ( key, data ); // store data
write ( "inv", invPacket ( MSG_TX, key ) ); // send inv packet
}
//--------------------------------------------------------------
void NetSocket::write ( const char* type, const QByteArray& data )
{
socket -> write ( packet ( type, data ) );
}
//--------------------------------------------------------------
void NetSocket::procGetdataPacket ( const QByteArray& data )
{
Stream d ( data ); d.skip24 ( ); // i do not check header now
const int count ( d.readVar ( ) );
xassert ( count == 1 );
const quint8* ss = d.readAdvance ( 36 );
const quint32 tag ( *(quint32*)ss );
const MyKey32 key ( ss + 4 );
xassert ( tag == MSG_TX );
xassert ( outTx.contains ( key ) );
write ( "tx", txPacket ( outTx.value ( key ) ) );
}
// [...]
Emre Kenci
Nate Eldredge
T9b
Flavien
Flavien