Bitcoin Forum

Local => Español (Spanish) => Topic started by: 01835113 on June 26, 2014, 07:43:05 PM



Title: Sincronizar por linea de comandos SOLUCIONADO
Post by: 01835113 on June 26, 2014, 07:43:05 PM
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.


Title: Re: Sincronizar por linea de comandos
Post by: xcbtrader on June 26, 2014, 08:37:07 PM
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


Title: Re: Sincronizar por linea de comandos
Post by: 01835113 on June 27, 2014, 03:32:02 AM
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?


Title: Re: Sincronizar por linea de comandos
Post by: xcbtrader on June 27, 2014, 04:57:18 AM
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.


Title: Re: Sincronizar por linea de comandos
Post by: dserrano5 on June 27, 2014, 06:03:29 AM
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.


Title: Re: Sincronizar por linea de comandos
Post by: Shawshank on June 27, 2014, 11:41:28 AM
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.


Title: Re: Sincronizar por linea de comandos
Post by: 01835113 on June 27, 2014, 12:00:28 PM
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.


Title: Re: Sincronizar por linea de comandos
Post by: Shawshank on June 27, 2014, 12:09:57 PM
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 (https://blockchain.info)


Title: Re: Sincronizar por linea de comandos
Post by: 01835113 on June 27, 2014, 12:23:09 PM
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 (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.




Title: Re: Sincronizar por linea de comandos SOLUCIONADO
Post by: 01835113 on June 27, 2014, 12:30:28 PM
Joer, que guay está esto me encanta  ;D


Title: Re: Sincronizar por linea de comandos
Post by: dserrano5 on June 27, 2014, 12:31:28 PM
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.


Title: Re: Sincronizar por linea de comandos
Post by: Shawshank on June 27, 2014, 12:50:29 PM
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.


Title: Re: Sincronizar por linea de comandos
Post by: dserrano5 on June 27, 2014, 12:55:27 PM
{"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.


Title: Re: Sincronizar por linea de comandos
Post by: Shawshank on June 27, 2014, 01:18:21 PM
{"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.


Title: Re: Sincronizar por linea de comandos SOLUCIONADO
Post by: gizzig on June 27, 2014, 06:34:07 PM
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