Tener un nodo Geth 1.5.5 ejecutándose en una raspberry pi 3. Cuando escribo
sudo systemctl status geth
Obtendré el tiempo siempre cambiante y bloquearé la información. Genial, pero ¿cómo sé cuándo estoy sincronizado? ¿Hay otro comando sudo que deba hacer?
Continuando con la investigación, debe ingresar a la consola del nodo geth para ingresar comandos especiales. Los siguientes trabajos:
geth attach
Envía al usuario a la consola del nodo geth.
eth.syncing
Produce un resultado como bloque actual: 82,100; bloque más alto 2.910.032.
exit
Para volver al aviso de Pi.
Después de ejecutar su comando normal geth --fast, puede abrir una nueva ventana y ejecutar el comando "geth adjuntar", ya que esto lo conectará a la interfaz de JavaScript.
$ geth attach
Luego puede usar este script para tener un buen resultado de lo que está sucediendo. Es muy rudimentario pero funciona muy bien para darle una idea de cuánto tiempo tendrá que esperar. Primero espere 10 segundos (ya que la primera ETA es incorrecta) luego, después de la segunda visualización de estimaciones, comenzará a ver los números reales.
var lastPercentage = 0;var lastBlocksToGo = 0;var timeInterval = 10000;
setInterval(function(){
var percentage = eth.syncing.currentBlock/eth.syncing.highestBlock*100;
var percentagePerTime = percentage - lastPercentage;
var blocksToGo = eth.syncing.highestBlock - eth.syncing.currentBlock;
var bps = (lastBlocksToGo - blocksToGo) / (timeInterval / 1000)
var etas = 100 / percentagePerTime * (timeInterval / 1000)
var etaM = parseInt(etas/60,10);
console.log(parseInt(percentage,10)+'% ETA: '+etaM+' minutes @ '+bps+'bps');
lastPercentage = percentage;lastBlocksToGo = blocksToGo;
},timeInterval);
Esto le dará una salida similar a esta:
85% ETA: 573 minutes @ 134.4bps
86% ETA: 533 minutes @ 144.3bps
86% ETA: 442 minutes @ 173.9bps
{}
En primer lugar, deberá conectarse al proceso geth en ejecución desde una segunda terminal
$ geth attach
Como han indicado las otras respuestas, la estructura que le interesa es eth.syncing
Para ver los bloques restantes que podrías hacer
> eth.syncing.highestBlock - eth.syncing.currentBlock
Y para los estados restantes
> eth.syncing.knownStates - eth.syncing.pulledStates
Mientras ejecutaba el proceso de sincronización de geth, usé geth attach
y luego usé eth.syncing
en la consola geth.
Podría obtener información del bloque. Y si está justo después de ejecutar el geth
comando en sí, debe esperar hasta que geth comience el proceso de sincronización "real". De lo contrario, verás false
.
geth version
resultado
Geth
Version: 1.7.2-stable
Git Commit: 1db4ecdc0b9e828ff65777fb466fc7c1d04e0de9
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.1
Operating System: darwin
GOPATH=
GOROOT=/usr/local/Cellar/go/1.9.1/libexec
Puede usar web3.eth.syncing , es decir:
server:~# geth attach
> web3.eth.syncing
{
currentBlock: 4504031,
highestBlock: 4660759,
knownStates: 31357681,
pulledStates: 31357680,
startingBlock: 4504031
}
O lo mismo que arriba pero async
usando getSyncing :
web3.eth.getSyncing(callback(error, result){ ... })
Porcentaje de sincronización Eth:
eth.syncing.currentBlock * 100 / eth.syncing.highestBlock
sreginogemoh
eth.syncing
simplementefalse
imprimiendocoren
NueveCattoReglas
Dagelf
naXa apoya a Ucrania
geth attach ipc:\\.\pipe\geth.ipc
alberto renshaw
false
significa que ya está completamente sincronizado (técnicamente solo significa que no se está sincronizando en realidad, así que supongo que tal vez también podría significar que no se está sincronizando por alguna razón que no sea estar completamente sincronizado ... hmmmm)brianfit