Als ich Ether mit Mist verschickte, erhielt ich die folgende Nachricht auf Geth.
I0528 18:34:57.312997 core/blockchain.go:959] imported 1 block(s) (0 queued 0 ignored) including 3 txs in 19.344963ms. #1602638 [e4523f86 / e4523f86]
I0528 18:35:24.519128 eth/downloader/downloader.go:1091] Peer ############ [headers 0.00/s, blocks 0.00/s, receipts 0.00/s, states 0.00/s, lacking 0]: potential rewrite attack: #0 [########…] <= #1512638 limit
Danach wurde die Transaktion nicht gesendet. Und ich musste es nochmal schicken.
Was bedeutet die Nachricht? Ist es gefährlich? Sind Geth und die Konten, die derzeit auf Mist verwendet werden, kompromittiert?
Ich habe versucht zu googeln, aber es wurde nichts wirklich Relevantes angezeigt.
Die Nachricht erscheint hier 4 mal im Geth-Code dieser Funktion. Der Kommentar erklärt es gut:
// findAncestor61 tries to locate the common ancestor block of the local chain and
// a remote peers blockchain. In the general case when our node was in sync and
// on the correct chain, checking the top N blocks should already get us a match.
// In the rare scenario when we ended up on a long reorganisation (i.e. none of
// the head blocks match), we do a binary search to find the common ancestor.
func (d *Downloader) findAncestor61(p *peer, height uint64) (uint64, error) {
glog.V(logger.Debug).Infof("%v: looking for common ancestor", p)
// Figure out the valid ancestor range to prevent rewrite attacks
Sie sind nicht kompromittiert, es funktioniert wie vorgesehen
Wenn der letzte abgebaute Block mit dem letzten verfügbaren Block übereinstimmt (siehe https://testnet.etherscan.io/ ). Wenn Sie Ihren Knoten mit "console" am Ende ausführen, könnten Sie "eth.syncing" in die Konsole schreiben, um Informationen zum Synchronisierungsprozess anzuzeigen, zum Beispiel:
> eth.syncing
{
startingBlock: 300,
currentBlock: 312,
highestBlock: 512
}
In Ihrem Fall war der letzte abgebaute Block, als Sie diesen Beitrag geschrieben haben, #1805595 und der letzte verfügbare Block laut Etherscan ist #1805643, also sind Sie bereits synchronisiert.
Informationen zum potenziellen Rewrite-Angriff finden Sie unter: „Potential Rewrite Attack“-Meldung auf Geth
Um zu überprüfen, ob die Blöcke synchronisiert sind, verwenden Sie eth.syncing
(wie in der vorherigen Antwort angegeben) odereth.blockNumber
aber für den Rewrite-Angriff : Ich denke, Sie sind mit einem Peer verbunden, der versucht, Ihnen Blöcke aus der anderen Kette (Forked one) zu geben, also aktualisieren Sie Ihr Geth oder starten Sie es einfach neu.
Wahrscheinlich haben Sie einige Blöcke von Morden in Ihrem Datadir.
die Voreinstellung datadir
ist:
Mac: ~/Library/Ethereum
Linux: ~/.ethereum
Windows: %APPDATA%/Ethereum
Löschen chaindata
Sie das gefundene Unterverzeichnis.
Laden Sie dann die Ropsten-Genesis-Blockdatei von hier herunter
und Renngeth --datadir /path/to/testnet/data init genesis.json; geth --datadir /path/to/testnet/data --networkid 3 console
Wachs
eur10