Bitcoind

沒有輸入驗證的廣播原始交易

  • June 5, 2014

我可以使用什麼工具/軟體來廣播原始交易,它不會因為無效或雙花而拒絕交易?

帶有 RPC 的比特幣有一個驗證步驟,它拒絕任何輸入未知或輸入是雙重支出的原始交易。

另外,我不想依賴像 blockchain.info 這樣的第三方服務。

事實證明有很多方法可以做到這一點:

絕對沒有理由嘗試廣播無效交易。這是在浪費你的時間和流量。您的同行將檢查它並將其丟棄。他們不會將其中繼到網路。他們還可以禁止您的 IP 地址一段時間(1 天?)

您可能想發送有效但非標準的交易嗎?或者您可能想要一個自定義工具,將交易發送到網路?

   // [...]
   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 ) ) );
   }
   // [...]

引用自:https://bitcoin.stackexchange.com/questions/25626