Cómo verificar mi estado de sincronización en Geth 1.5.5, Raspberry Pi 3

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?

Respuestas (6)

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.

cuando estoy escribiendo eth.syncingsimplemente falseimprimiendo
Espera unos segundos y te dará un resultado.
@Coren puedes esperar para siempre
Prácticamente necesitas una supercomputadora para ejecutar Ethereum hoy en día.
sintaxis geth para windows:geth attach ipc:\\.\pipe\geth.ipc
@sreginogemoh falsesignifica 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)
@sreginogemoh falso es bueno. Significa que está actualizado con el último bloque y completamente sincronizado. Es estúpidamente contradictorio como mensaje de usuario, pero literalmente cierto: no estás sincronizando, estás sincronizado.

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
Hola, esto me ayuda mucho para ver las ETA que se imprimen continuamente en la terminal. Elegiría esto como la respuesta si tuviera que hacer la pregunta.
O así: 99% ETA: 399672 minutos @ 0.2bps 99% ETA: 399672 minutos @ 0.2bps 99% ETA: 399672 minutos @ 0.2bps 99% ETA: 399672 minutos @ 0.2bps 99% ETA: 399672 minutos @ 0.2bps Ethereum está muerto para mí.
@Dagelf, probablemente estés "atascado" en la sincronización de prueba de estado. lea más sobre esto en este número github.com/ethereum/go-ethereum/issues/… (encuentre comentarios del mantenedor karalabe )
Esto funciona bien, pero he notado que los tiempos de sincronización de bloques varían mucho . He sincronizado varias veces en paridad y, aunque durante mucho tiempo, los tiempos de bloque fueron de alrededor de 1-2 bloques por segundo durante varias horas (ETA de 100 días), pero luego terminó durante la noche de todos modos
me da un juego vacio{}
@Dagelf RIP, mi amigo.

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 attachy luego usé eth.syncingen la consola geth.

eth.syncing en la consola "geth adjuntar".

Podría obtener información del bloque. Y si está justo después de ejecutar el gethcomando en sí, debe esperar hasta que geth comience el proceso de sincronización "real". De lo contrario, verás false.

geth versionresultado

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 asyncusando getSyncing :

web3.eth.getSyncing(callback(error, result){ ... })

Porcentaje de sincronización Eth:

eth.syncing.currentBlock * 100 / eth.syncing.highestBlock
Esa fórmula funciona cuando estás sincronizando en modo completo. En el modo rápido, una gran parte son estados de descarga y la fórmula no los tiene en cuenta.