¿Cómo encontrar utxo?

Es posible que esté pensando demasiado en esto, pero estoy tratando de descubrir la mejor manera de crear un grupo de salida no gastado. ¿Debería analizar ingenuamente cada bloque? ¿Cada entrada se elimina del conjunto hash y cada salida se vuelve a agregar? Parece terriblemente ineficiente. La cuestión es que no parece que haya ninguna forma de construir con precisión este grupo de utxo sin atravesar la cadena de bloques al menos una vez y construirlo. ¿Hay algún atajo bien definido que deba tener en cuenta? Bienvenidos los punteros.

Supongo que primero puedo iterar a través de los bloques en el disco y luego actualizar a medida que ingresan los bloques.

Eso no suena ineficiente en absoluto. ¿Qué le parece ineficaz al respecto?
Creo que estaba pensando que podría haber una manera más eficiente. Pensé que el cliente oficial almacenaba el grupo de utxo en algún tipo de estructura de árbol, solo tratando de obtener más información sobre esto.
Simplemente puede usar RPC para obtener el grupo de salidas no gastadas directamente de bitcoind.
@goatse ¿Qué comando?
GRAN pregunta. Este es exactamente el tipo de detalles que los BITS no consideran importantes y que la mayoría no comprende por sí mismos. bitcoin.org etiquetó el núcleo de bitcoin como experimental. Si el grupo de UTXO alguna vez se desincronizó con el libro mayor, incluso si solo es un SAT, no existe una autoridad central para iniciar una recuperación.

Respuestas (4)

Ya existe un pool con la información que estás dispuesto a construir: the UTXO set. Puede acceder a él consultando el LevelDB ubicado en .bitcoin/chainstateun nodo completo.

Sin embargo, no hay una manera fácil de hacerlo usando comandos RPC, debe extraer la información usted mismo.

Puedo proporcionarle una forma de hacerlo si lo necesita, y una explicación detallada de lo que encontrará en cada entrada de LevelDB.

chainstatees solo el índice de la cadena completa
En el estado de la cadena, puede encontrar todos los datos que puede necesitar saber sobre los UTXO, como la identificación, el índice de salida, la cantidad, el scriptPubKey, el bloque en el que se ha incluido y si es una base de monedas o no.
Entonces, ¿podría hablar sobre el formato de archivo '*.ldb'?
Claro, puedes consultar esta respuesta: bitcoin.stackexchange.com/a/52167/30668

Puede configurar UTXO directamente desde bitcoind mediante una listunspentllamada RPC.

Solo para UTXO que sean suyos (o que contribuyan al saldo de su propia billetera).

No existe una manera simple de obtener lo que quieres, excepto esa manera que tratas de describir.

RPC no admitió ningún comando de lo que desea.

Si necesita UTXO, debe desensamblar cada *.datarchivo binario en serie desde el primero y conservar cada salida para verificar el gasto en el futuro.

Lo siento, pero no es cierto, lo que @Matt está dispuesto a construir ya es parte del cliente principal de Bitcoin, solo necesita verificar el conjunto UTXO. De hecho, no es de fácil acceso, ya que no hay un comando RPC disponible, por lo que necesitaría acceder a las tiendas LevelDB en /chainstate y muy probablemente codificar su propio analizador. Sin embargo, es mucho más fácil que desensamblar cada archivo .dat y verificar cuándo se gastó cada UTXO a lo largo de los años.
@sr-gi Lo hice sin ningún cliente. Base de datos UTXO a partir de archivos de datos sin procesar.

Lo siguiente funcionó para mí en una ventana de comandos de Bash:

curl https://blockchain.info/unspent?active=place_bitcoin_address_here