Author

Topic: Sincronizar por linea de comandos SOLUCIONADO (Read 1205 times)

hero member
Activity: 632
Merit: 500
Hola
Blockchain tiene un API que (creo) hace eso y mucho más y es gratuito.

https://blockchain.info/es/api

Está muy bien explicado y funciona desde la Web

legendary
Activity: 1623
Merit: 1608
{"result":308104,"error":null,"id":"curltest"}

indicando que, efectivamente, el bloque más alto de la cadena es la número 308104.

Pero no hay ningún valor que te diga "Estamos 0 bloques por detrás", tal como dice el GUI (vale, el GUI lo traduce en un intervalo temporal pero viene siendo lo mismo). O sea, seguimos teniendo que ir a terceros para comprobar si el último bloque coincide.

¡Ah! ¡Cierto! No dice en ningún momento estamos x bloques por detrás porque no es un valor fiable.

La interfaz gráfica dice "Descargados abc bloques de un total de xyz bloques", pero es un hack que es fácilmente trucable. En ocasiones he visto cifras de bloques en los miles de millones, algo imposible, porque hay nodos que intentan engañar. Por esa razón, tengo entendido que en la próxima interfaz gráfica de Bitcoin Core, se va a basar únicamente en el timestamp del último bloque recibido, que es lo realmente fiable y no se puede trucar.
legendary
Activity: 1974
Merit: 1029
{"result":308104,"error":null,"id":"curltest"}

indicando que, efectivamente, el bloque más alto de la cadena es la número 308104.

Pero no hay ningún valor que te diga "Estamos 0 bloques por detrás", tal como dice el GUI (vale, el GUI lo traduce en un intervalo temporal pero viene siendo lo mismo). O sea, seguimos teniendo que ir a terceros para comprobar si el último bloque coincide.
legendary
Activity: 1623
Merit: 1608
No hay una forma totalmente correcta de saber si hemos recibido el último bloque, porque la sincronización es un proceso continuo.

Sí, pero es que en el -qt hay una indicación visual de que estamos sincronizados, o de que estamos X tiempo por detrás. Por tanto el cliente lo sabe, pero por alguna razón no exporta un valor como este mediante el interface RPC.

Parece que ya está añadido también a través de la interfaz JSON-RPC. Acabo de lanzar el siguiente comando:

curl --user miusuario --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method":"getblockcount", "params":[]}' -H 'content-type: text/plain;' http://127.0.0.1:8332
Enter host password for user 'miusuario':

Y la interfaz JSON-RPC me ha devuelto lo siguiente:

{"result":308104,"error":null,"id":"curltest"}

indicando que, efectivamente, el bloque más alto de la cadena es la número 308104.
legendary
Activity: 1974
Merit: 1029
No hay una forma totalmente correcta de saber si hemos recibido el último bloque, porque la sincronización es un proceso continuo.

Sí, pero es que en el -qt hay una indicación visual de que estamos sincronizados, o de que estamos X tiempo por detrás. Por tanto el cliente lo sabe, pero por alguna razón no exporta un valor como este mediante el interface RPC.
full member
Activity: 128
Merit: 104
Joer, que guay está esto me encanta  Grin
full member
Activity: 128
Merit: 104
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.

Que yo sepa no se puede.

Entonces no sé cómo puedo saber cuando puedo poner a funcionar mis aplicaciones desde un servidor.

Lo puedes conseguir comprobando la fecha y hora que te devuelve un script como el que te he indicado.

Si solo necesitas saber si tienes Bitcoin Core sincronizado para ver si puedes lanzar tus aplicaciones, ejecuta el siguiente comando:
bitcoin-cli getblockcount

y comprueba visualmente que coincide con el último bloque recibido en https://blockchain.info




Muchas gracias funciona, yo también uso ubuntu.
Perdón por mi mensaje anterior pero no se me mostraba la otra respuesta que me habías dado donde hablas de bitcoin-cli. No sabía eso, que se había separado la funcionalidad del cliente y servidor en dos ejecutables, entonces hay que arrancar bitcoind e interactuar a través de los comandos mediante bitcoin-cli. Pero también funciona con "bitcoind comando" aún, he comprobado.
Hasta luego gracias.


legendary
Activity: 1623
Merit: 1608
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.

Que yo sepa no se puede.

Entonces no sé cómo puedo saber cuando puedo poner a funcionar mis aplicaciones desde un servidor.

Lo puedes conseguir comprobando la fecha y hora que te devuelve un script como el que te he indicado.

Si solo necesitas saber si tienes Bitcoin Core sincronizado para ver si puedes lanzar tus aplicaciones, ejecuta el siguiente comando:
bitcoin-cli getblockcount

y comprueba visualmente que coincide con el último bloque recibido en https://blockchain.info
full member
Activity: 128
Merit: 104
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.

Que yo sepa no se puede.

Entonces no sé cómo puedo saber cuando puedo poner a funcionar mis aplicaciones desde un servidor.
legendary
Activity: 1623
Merit: 1608
Desde la versión 0.9, se ha separado la funcionalidad del servidor en bitcoind, y la del cliente en bitcoin-cli. El ejecutable bitcoin-qt funciona como cliente y servidor.

No hay una forma totalmente correcta de saber si hemos recibido el último bloque, porque la sincronización es un proceso continuo. La mejor aproximación es ver el día y la hora del último bloque recibido y comprobar si no dista, por ejemplo, más de 30 minutos de la hora actual.

Te adjunto los comandos que acabo de lanzar en mi máquina Ubuntu que demuestra que tengo el Bitcoin Core actualizado. En Windows sería muy parecido.

$ bitcoin-qt &
[1] 23682

$ ./bitcoin-cli getblockcount
308097

$ ./bitcoin-cli getblockhash 308097
000000000000000025ad567405f49664d69968686762917216b9983951eec67d

$ ./bitcoin-cli getblock 000000000000000025ad567405f49664d69968686762917216b9983951eec67d | grep time
    "time" : 1403868052,

$ date -d @1403868052
vie jun 27 13:20:52 CEST 2014


Como la fecha actual son las 13:29 del 27 de junio, la diferencia es de "solo" 9 minutos, y por tanto se puede considerar que el Bitcoin Core al que he accedido está actualizado.

El ejemplo que he pasado está ejecutado en Ubuntu, pero para Windows sería parecido. Si quieres que se ejecute todo de forma automática, quizás tengas que utilizar sed o gawk en Linux, pero espero que te sirva para hacerte una idea.

Si tienes cualquier otra duda, pregunta.
legendary
Activity: 1974
Merit: 1029
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.

Que yo sepa no se puede.
hero member
Activity: 865
Merit: 1006
Hola
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.


Buenas. Si escribes help en la linea de comandos te dice todas las instrucciones que puedes poner.
De todas formas, cuando está sincronizado te sale un mensaje en verde (o eso creo)

Saludos

¿Un mensaje en verde desde la terminal?

Si.
full member
Activity: 128
Merit: 104
Hola
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.


Buenas. Si escribes help en la linea de comandos te dice todas las instrucciones que puedes poner.
De todas formas, cuando está sincronizado te sale un mensaje en verde (o eso creo)

Saludos

¿Un mensaje en verde desde la terminal?
hero member
Activity: 865
Merit: 1006
Hola
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.


Buenas. Si escribes help en la linea de comandos te dice todas las instrucciones que puedes poner.
De todas formas, cuando está sincronizado te sale un mensaje en verde (o eso creo)

Saludos
full member
Activity: 128
Merit: 104
Hola
Quería saber si alguien me podría indicar como puedo saber, por línea de órdenes, si mi programa bitcoind está sincronizado con la red.
Jump to: