¿Cuál sería la forma más rápida de consultar un determinado txid para obtener sus entradas?

Estoy trabajando en un proyecto artístico/de visualización que analiza las transacciones de Bitcoin. Tengo una Bitcoreinstancia con API de información y desde un script de Python consulto a través de la API REST para que las consultas se devuelvan en formato json. Para el proyecto utilizo un macbook pro y con su unidad ssd interna recibo alrededor de 70 consultas por segundo, usando un controlador externo NTFS (controladores de fusibles) obtengo tan solo 5 por segundo.

Me gustaría saber si hay una forma más rápida de consultar las transacciones por el hash de la transacción, incluso si es más complejo de codificar.

¿Cuál sería la forma más rápida de consultar un determinado txid para obtener sus entradas?

esta pregunta se hizo anteriormente en stackoverflow pero no obtuvo ninguna respuesta stackoverflow.com/q/41092857/2205297
¿Por un controlador externo te refieres a uno conectado a través de USB?
@shabahat-m-ayubi sí, un WD Passport ultra.

Respuestas (2)

Una forma rápida y relativamente rápida (probablemente mucho más rápida que Bitcore) es usar una versión reciente de Bitcoin Core y ejecutarla con -txindexy -rest.

Luego use la interfaz REST para consultar un txid.

Ejemplo:curl localhost:18332/rest/tx/0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098.json

Incluso puede omitir la codificación/descodificación JSON si busca un procesamiento más rápido utilizando .binen lugar de .jsonen su URI de solicitud.

Internamente, Bitcoin Core usa levelDB para el txindex, que tiende a ser ultrarrápido y una vez que la posición del archivo y el disco se ha cargado desde levelDB, se abrirá el archivo de bloque correspondiente, luego el puntero del archivo busca la posición tx y solo se deserializa. el tx solicitado.

Además, no olvide que Bitcore usa Bitcoin Core bajo el capó (muy probablemente una versión desactualizada ya que Bitcore ya no se mantiene).

El uso de un explorador de bloques (o, por ejemplo, una API web) le hará confiar en un tercero y seguramente será mucho más lento.

Dado que el hardware actúa como un cuello de botella, ¿qué tal usar las API que ofrecen los servicios o usar un VPS rápido para ejecutar bitcore?

  1. servicios API

    Los sitios web como Blockchain.info ofrecen API para desarrolladores gratuitas. Dado que tienen límites en la cantidad de consultas por tiempo determinado, puede usar varios servicios al mismo tiempo para satisfacer sus necesidades sin ser bloqueado por abuso. Además, servicios como blockr.io recomiendan contactar con ellos si tienes un gran número de consultas que realizar.

  2. VPS

    También puede gastar en un VPS que usa SSD y ejecutar bitcore en ellos para intentar obtener más consultas por segundo.

Usar un servicio de API podría ser una opción, pero no sería una solución, ya que depende de las limitaciones externas de la empresa.
VPS necesitaría 200 Gb para almacenar la cadena de bloques, sería mucho más de 10 $ al mes
@muimota ¿Esta visualización será en tiempo real y requerirá datos sobre nuevas transacciones o será algo único?
Una cosa de una sola vez. Solo verificando transacciones anteriores a tiempo, no en tiempo real.
@muimota Intenta aumentar rpcthread.