Related Wie bestätigen, dass meine eigene Doublespend-Transaktion bestätigt wurde
Hier geht es nicht um doppelte Ausgaben und ich glaube, dass es bei der damit verbundenen Frage nicht um doppelte Ausgaben für Äther geht!
Auf dem Testnet3 von Bitcoin sehe ich (unter Verwendung von https://github.com/bitpay/bitcore-p2p ) viele TX -Änderungs-IDs
Szenario:
Ich sende etwas tBTC über http://testnetwallet.com
Ich sehe ein utx mit txid von XXXX, das mit meinen Eingaben ins Netzwerk gesendet wird und zu meiner Testadresse geht (alles sieht cool aus)
Ich beobachte weiterhin alle ausgestrahlten Txs
ein neuer Block passiert.
Ich sehe die txids im Block durch, finde aber meine txid nicht
Ich frage meine Empfangsadresse bei einem Block-Explorer-Webdienst ab und sehe, dass die txid meiner tx in YYYY umbenannt wurde
Ich gehe und schaue mir den Block noch einmal an und sehe, dass YYYY in seinem tx-Array ist!
Ich höre auf, alle ausgestrahlten Txs zu überwachen
Ich fange an zu glauben, dass es (tx-Formbarkeit) passiert, wenn die Miner die txs in die Blöcke aufnehmen!
Ich sehe nie eine tx mit txid YYYY, die NIE gesendet wird (ich sehe jede Transaktion!), dies deutet darauf hin, dass die txid geändert wird!
Ich sehe das jetzt seit über 2 Wochen und habe niemanden gefunden, der darüber gesprochen hat, abgesehen von der ersten Person heute (4. April 2017) in der verwandten Frage.
Ich habe viele Dinge in meinem Code ausprobiert, um mich nicht mehr auf die txid zu verlassen, um festzustellen, ob meine tx 6 Bestätigungen hat. Aber ich finde es unmöglich, meinen TX mit seiner neuen TXID zu aktualisieren !
Ich habe (viele Male auf unterschiedliche Weise) versucht, Peers (P2P-Peers) getdata für jede nicht erkennbare txid in neuen Blöcken zu fragen, aber die Peer scheint die meiste Zeit die Verbindung zu trennen ....
Meine Frage ist: Was soll ich in dieser Situation tun?
Hinweis: Ich versuche, keine Dienste von Drittanbietern zu verwenden
auch verwandt: Wie hat blockr.io das gesehen?
Ich sehe, dass alle TXs die ID ändern, nicht nur meine! Ich sammle jede txid, die ich ausgestrahlt sehe, und lege sie in ein Array namens seen. Wenn dann ein Block auftritt, suche ich nach jedem tx auf dem Block in meinem gesehenen Array.
für die letzten etwa zehn Blöcke heute habe ich bei jedem Block console.logged
gesehen:1/52 von 73 Peers gesehen:0/4 von 73 Peers gesehen:0/35 von 73 Peers gesehen:0/22 von 73 Peers etc...
99 % aller TXs (alle) auf testnet3 ändern txid
Ich höre max peers 150
{ hash: '00000000000017f2a1d8ff44f149e7ead61a38e1a03217c33762ed9ace3c0c7d', validProofOfWork: true, validTimestamp: true, prevHash: '000000000000178c28b96e945965b9311ea4005a66e8c5c2701d30f928a498d8', txs: [ '775b7b0bf9345cbee62e3af57e1660a6fd92d0a089fd0694e4804a7190dd4a05', '1133ba34f4ef95af8a53c9698877cf8b7dc0e03d3095c371c0e2a1b8cd395ce2', '14df326c04bf2da2edbd4f9f04810916b95144eeef67570458c06449d3a56fc4', 'b969a4bdab4b6a5ea91500b4230c3eadc9aa807cca000ecce6686450d2676b42', 'fa5acc2feecae6a603673c6a817f79fa3a4dd1516d50c59014772c80500b7063', '0cd386804b65a3fb826557881dc3b50c1b298b7f0a0372da8faec97a2744d0e0', '24ca695bac05c4500a596415b70bd199c935308f7a90ccfc8ae01d7b96e6b115', '8125ed124dd4d0b3af98bc6028905fb329ff311c22f484be41bf9def8ea7b63e', '4f1e5a894be245d2a68c79e2b73dde54dbeaa8bb2e872b9b1115f40c0b93585b', 'aee4a615c617d71c544930d5dbacdb62d66fb089d556d84cbe92682295895d91', '545b2164e6bc2e764a702eac1bd69e625c6100c8cbeaa9528c16cd74eb144ecb', '450c86ef90858943f6b6ba284da3987191880b2b534749d3ae762d7c9060bb7c', '83d9107d90c36b0302af47f2b7e7bece30aaf20431dcdf251faa025d31f02fa8', '4785a7fb5b0a6106152dc80d2c028b2aa80cb9b4f0ce81985b8c672a34561703', '232a70178859760c5cd75ae054c503af9db4515d92a47b9da17ca5c81cee5d34', '5c218f9e957cfd7fa97dbbdd29a81673d4c91b3441279c23607a7d3889533855', 'b2472c88eb6c7a38476444c22cb560793624216e1e36354b406f15b09dd8316b', '5a7f3652282429eedf7bd2a6d0a8404e7844515f4139d14f8d7ed1e871efd373', '5147d190550b44eddad2d8ea6cdd022e47fe71a2517458b69c07c2424fd08bb2', '8e64ee1dcde8feb6b39ee043ecc43be719d0999ad181acee4d01e9d603976ff1', '0223ed8beb7d466d9d4026665d2ba58a97cbd1e6641be22f16d23be2b4574688', '18efc474f89835fb9eb1fa9ed1fc1dc296621aae3b727aab64f4f80ff76a098f', '8f38f6030a0471c7bef2b1e1757a6db0b63edf07aab3fe12a7e85d86b35c5eb5', '6b88744cba8f7661e64c67cd554d07a1b1981fe10614647a18b101520d289816', '6aee3deb7c0cb7247c2a85f14f96f8cb8447dee00e98a72ace80cbb850f5a709', '67de891a99a4c62fc90af91f5d880f9c2be80c1fc55bc444d10b74b63dd1ae1a', '62f955cf10d52f34a0b7bf2328c5095051d8dcf5009b65dd53632d54de4a515c', 'c42685086053a0b2d989453b6f0cb17a1b60642ac963acc782b5269c8e563b89', 'e2c2114e7cd15e47a84a4a48e7c1adbb29daff0f85afb5be6015a17271859909', 'cc834a0f20e43f4eb05638398e8cfc61bfaaa303dcd82705be2c9cbf80189ded', '10907000e1062dc63c817b995683a4a7433836f450f763c910fe6191aa555f24', 'a5bf7009e9c97b1b7652d3f5ed4067c1eeb40d1625e2fadb6ffb11ca18a27e74', '40c3ffce0140a9db634e4b869e79848f4316fd40528e48b0899e2b5606075ef2', '22b9db7c0ee380ec0c4eed97788dbf6f75fedbec569fb84a6c0d27bf36923cfa', 'f4906eda20607d733ae55caf3274fa91d5c2f20506881857af59be4d8bb0af25', '98dfd83a0506b7a56e7cc6b1c91623a38ecf504c9b78c658bb8a6e5c56f7af72', 'cd2711ab3400f03cb3830e6d7401058c99f5b3c0c438fe78180785582994b884', '566251b6b27cfbca202678f87ab6ebe5e6a71f306dea8e4035bca96207e630c1', '68eb0e868ebc4f0388c130bac9adcfb26fb526d8fdd7af6646ddcb9969e045df', '1cc856b20b1a66702782b4063caa1cce1cfd9a77600d53dbb727bc8d59cdeee3', 'd5312340a7bd04a732ea6da056fa4a32ef92558a30160cb63c457b9d72603823', 'd6cadd383605ab45e1cab2499349724d8973b160cd85e226115cbb30df383d44', '30a09d4abd5f3f52d47b7a7d2da05c5e0db2e40d93ae26a3d8b772227dffed48', 'efb6889c4507f2e7ccb781dc5982e14d111b696098acaa450a286b100322ca5d', 'cb7d6e3b904b49f01c85de319d4f3ed5ecc80aa3048dfbb97bb7300bc2fb4bd1', 'bb70bd40d0d9d2ceda243172a10c05b2f9099d4ea6c62414e6c04c0309e5f7d1', '7912e77605eddb2e18a5baac16326f5ee3f31ebee5ed5badec7f9327dda75a7e', '75255b0e2000c546b5f9e3836a8ed483b401280f993b5320f433507b7dad4981', '77af8d90ecca1b09f072b244a032775f025a82c148ae8393a56bdf2f055e687f' ] }
Schauen Sie sich den Block an: http://tbtc.blockr.io/block/info/1115996
Als nächstes können wir einen zufälligen TX aus dem Block auswählen, der jeder TX sein könnte:
http://tbtc.blockr.io/tx/info/a5bf7009e9c97b1b7652d3f5ed4067c1eeb40d1625e2fadb6ffb11ca18a27e74
Sie werden sehen, dass dieser TX zwei Ausgänge hat. Schauen wir uns eine der Adressen an, zu denen ein Ausgang führt:
http://tbtc.blockr.io/address/info/mjSujFSUn1uCVHkD4bDj5cs3mZrp8ayec5
Oh, was für eine Überraschung! es hat 1 bestätigten tx und einen unbestätigten tx
unbestätigt: http://tbtc.blockr.io/zerotx/info/8d7778e2238db427149f0c7fa46a572e0ea5c3ae9eeefe78c0ec9e4b795f0d38
bestätigt: http://tbtc.blockr.io/tx/info/a5bf7009e9c97b1b7652d3f5ed4067c1eeb40d1625e2fadb6ffb11ca18a27e74
Die Ein- und Ausgänge sind bei beiden gleich!
Ich habe das heute zufällig aus einem zufälligen TX in einem zufälligen Block herausgeholt, was vor ein paar Minuten passiert ist!
Wenn Sie jede dieser Sendungen durchgehen, werden sie zu 99% alle so sein!
Jemand (nennen wir sie weiter Alice) bringt Testnet-Transaktionen durcheinander, das ist heute einer meiner Minen passiert.
Was ist los
Alice ändert die s
Darstellung der EDCSA-Signatur ( siehe ECDSA-Signaturerzeugungsalgorithmus ) von mindestens einer der Eingaben der Transaktionen. Dadurch ändert sich die Signatur, bleibt aber gültig und damit die txid
geänderte.
Wie geht es ihr?
Wie im BIP62 erklärt , gibt es zwei gültige Darstellungen des s
Werts, je nachdem, wie groß der Wert ist. Darüber hinaus kann je nach Ergebnis auch die DER-Kodierung geändert werden .
Alice ändert einfach einen der s
Werte von einer der ursprünglichen Transaktionssignaturen, indem sie eine Subtraktion zwischen der Ordnung n
der Kurve (d . h. FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
für Secp256k1 ) und dem Wert durchführt s
.
Beispiel:
Nehmen wir an , die s
Komponente einer Signatur einer unserer Transaktionen ist s = 37c0af486123367bc7839d507894bd30cba3f61e0d1bbf54727e43199864452c
, wenn wir von subtrahieren :s
n
s' = n - s = c83f50b79edcc984387c62af876b42cdef0ae6c8a22ce0e74d541b7337d1fc15
Das ist eine gültige Darstellung von s
.
Da s'
beginnt mit 0xc8
, was größer als 0x80
ist, benötigt die DER-Codierung ein führendes 0x00
:
00c83f50b79edcc984387c62af876b42cdef0ae6c8a22ce0e74d541b7337d1fc15
Wer tut das?
Es könnte ein Miner sein, so wie Sie es vorgeschlagen haben, aber es könnte auch ein normaler Knoten sein.
Wenn es sich um einen Miner handelt, könnte er die Änderungen vornehmen, bevor er die Transaktionen in den Block einbezieht, den er abbaut. Wenn andererseits ein normaler Knoten (besser verbunden als Sie) die Transaktion empfängt, modifiziert und sendet, könnte sie anstelle Ihrer ursprünglichen Transaktion in einen Block aufgenommen werden. Beachten Sie auch, dass Sie, da Sie die ursprüngliche Transaktion von Ihrem Knoten gesendet haben, wahrscheinlich keine Transaktionen bemerken, die versuchen, sie doppelt auszugeben, da Ihre Nachbarn (an die Sie die ursprüngliche Transaktion gesendet haben) die doppelte Ausgabe fallen lassen versuchen und nicht an Sie weiterleiten.
Was kannst du tun?
Sie können die Transaktion von einer anderen Quelle weiterleiten als der, die Sie zur Überwachung des Netzwerks verwenden, und sich nicht auf Transaktionen von letzterer verlassen, um zu sehen, was vor sich geht. Darüber hinaus können Sie das Netzwerk mithilfe des Symbols, das UTXO
Sie auszugeben versuchen ( prev_txid
+ index
), anstelle des txid
von der Transaktion, die Sie gerade erstellt haben, überwachen. Wenn eine andere Transaktion aus derselben Quelle ausgegeben wird, werden Sie es wissen.
Ben Muircroft
Nate Eldredge
Ben Muircroft