Transaktion am Geth-Knoten protokolliert, aber Transaktionseintrag auf Ropsten nicht lokalisierbar

Wenn neue Transaktionen einzeln gesendet werden (d. h. durch 1 oder mehrere Minuten zeitlich getrennt), werden sie korrekt gesendet und abgebaut. Aber wenn man mehrere von ihnen nacheinander sendet (getrennt von nur wenigen Sekunden), gehen die meisten von ihnen verloren. Der Geth-Knoten bestätigt den Empfang der Transaktion, aber Blockchain Ropsten zeigt sie nicht an.

Hier ist eine Reihe von Transaktionen, von denen die meisten bei Ropsten nicht verfügbar sind:

I0421 14:23:57.216680 internal/ethapi/api.go:1107] Tx(d83896adacd210a545d8bc53be2672d2bbb535cd6fd93fc6d74dcafb24c047ea) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:23:41.739022 internal/ethapi/api.go:1107] Tx(c6002dc6a3b28b6caba7ed7cb143d79147dc705437ccf70e267a4b2379f7920d) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:23:08.040512 internal/ethapi/api.go:1107] Tx(dcaa2a36ca4e2c5c3377e6b1f72d127242b4556c001efc3aca38c980c4e4c333) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:23:07.542375 internal/ethapi/api.go:1107] Tx(dcaa2a36ca4e2c5c3377e6b1f72d127242b4556c001efc3aca38c980c4e4c333) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:23:01.623979 internal/ethapi/api.go:1107] Tx(c70976a147e3e268131b0ed2be4555277371f439bbfe641ed1c55acaeec725eb) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:54.749671 internal/ethapi/api.go:1107] Tx(c3089a845110a871713bead6b71984ac5053cf4c2a3baa864e7ba0cf4499280b) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:49.069954 internal/ethapi/api.go:1107] Tx(fb629dc7f75b9ad486fd48afe3838c093567463d850b19c867c58520420eb9e7) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:35.357242 internal/ethapi/api.go:1107] Tx(1cae8925fb57971c126f37d2cef98f71696523cd109b7359f2f5845f1f05ca6a) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:24.175374 internal/ethapi/api.go:1107] Tx(9aceebdb23c4542ea5469d4cf05cc3ee7bddc7ea55fdae05ea63c45c9e581a70) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:16.787944 internal/ethapi/api.go:1107] Tx(7a2d0660aeec7698328e1e1ee96ecc929f4f6323fd22c5a337c92995bf88b4cf) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:08.852178 internal/ethapi/api.go:1107] Tx(73e7586a05ed17f1acb21fae93806349334881393c4493d4c708e3a902cd16c6) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:22:01.956836 internal/ethapi/api.go:1107] Tx(2ded9002531b59dd7c42dcb2a51ab420be555d8c7a26269334c24ce8971e1b6e) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df
I0421 14:21:53.184982 internal/ethapi/api.go:1107] Tx(9a9ac63a5d7b061b1597892f63a906c195c258c66b81e8d2f943ca9b5664f314) to: &ce8efd03766a309af57ddeb9c79f3e7cd23da0df

Zum Beispiel,

https://ropsten.etherscan.io/tx/0x2ded9002531b59dd7c42dcb2a51ab420be555d8c7a26269334c24ce8971e1b6e

sagt "Transaktionseintrag konnte nicht gefunden werden".

Inzwischen andere wie:

https://ropsten.etherscan.io/tx/0x9aceebdb23c4542ea5469d4cf05cc3ee7bddc7ea55fdae05ea63c45c9e581a70

wurden erfolgreich abgebaut.

Wie kann ich herausfinden, wo und warum diese Transaktion verloren gegangen ist? Irgendeine Idee, wie man den Prozess debuggt?

Ref.:

Transaktion hängt seit gestern

Transaktion abgebaut oder nicht?

Könnten Sie ein paar weitere Details mitteilen, sind Sie mit Gleichgesinnten verbunden? Sind Sie vollständig synchronisiert? Welche Geth-Version verwendest du? Verwenden Sie Ropsten oder Ropsten-Relaunched?
Get-Version 1.5.9 . Ja, admin.peers gibt 64 Peers zurück. Vollständig synchronisiert, da das Protokoll den gleichen letzten Block wie ropsten.etherscan.io zeigt. Ich schätze, es ist einfach Ropsten.
Wie erstellen Sie die Transaktionen? Wie weisen Sie insbesondere Nonces zu?
Transaktionen werden mit ethereumJS lib über einen Remote-Geth-Knoten über JSON-RPC erstellt und signiert. Nonces werden mit Web3.js-Aufrufen an den Knoten abgefragt.

Antworten (2)

Mehrere Transaktionen, die von einem Konto während eines einzelnen Blocks gesendet werden, werden möglicherweise nicht unbedingt in der gesendeten Reihenfolge empfangen oder abgebaut. Die Nonce für jede Transaktion steigt, aber ein Miner muss eine Transaktion mit einer niedrigeren Nonce als zuvor erhalten ungültig machen. Wenn sie nicht in der richtigen Reihenfolge abbauen, werden möglicherweise ältere Transaktionen (um Sekunden) ungültig.

Bedeutet dies, dass es keine Garantie dafür gibt, dass eine Transaktion nach der Übertragung abgebaut wird?
Transaktions-Nonces sind strikt sequentiell. Es darf keine Lücken geben. Diese Antwort ist also falsch, der Bergmann kann sie nicht in einer anderen Reihenfolge als der durch ihre Nonce definierten Reihenfolge abbauen.
@Péter Szilágyi Ja, Nonces werden beim Senden streng erhöht. Wenn also ein Miner eine Nonce> Nonce + 1 erhält, lässt dieser Miner den TX fallen, oder? Wenn also ein Miner TXs außer Betrieb erhält , was aufgrund von Ausbreitungsverzögerungen möglich ist, wird er dann TXs nicht fallen lassen, bis er einen mit Nonce+1 sieht?

Sie müssen überprüfen, ob Sie sich auf der richtigen Kette befinden, möglicherweise befinden Sie sich auf einer falschen Kette. Versuchen Sie eth.getBlock(blockNumber), den zurückgegebenen Blockhash mit Etherscan zu vergleichen.

Wenn ja, können Sie von der Geth-Konsole aus versuchen, mit eth.pendingTransactions()zu sehen, ob diese Transaktionen auf Ihrem Computer als ausstehend aufgeführt sind.

Wenn ja, versuchen admin.peersSie zu sehen, ob Sie mit einem Peer verbunden sind. Wenn ja, versuchen Sie:

var tx = eth.pendingTransactions()[index], und ersetzen indexSie es durch den Index der Transaktion, die Sie erneut übertragen möchten. Dann:

eth.resend(tx, <optional gas price>, <optional gas limit>).

Auf diese Weise können Sie die Transaktionen an Ihre Kollegen weiterleiten (sollte einen höheren Gaspreis festlegen).

> eth.pendingTransactions() TypeError: 'pendingTransactions' ist keine Funktion bei <anonymous>:1:1
Sie können auch überprüfen web.eth.blockNumber, ob es mit der neuesten Blocknummer in einem Blockchain-Explorer übereinstimmt
> eth.blockNumber 812712 identisch mit dem letzten Block bei ropsten.etherscan.io
> eth.pendingTransactions [] bedeutet keine ausstehenden Transaktionen!