Bitcoin Forum

Local => Primeros pasos y ayuda => Topic started by: Lorient on August 31, 2014, 07:52:07 PM



Title: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: Lorient on August 31, 2014, 07:52:07 PM
Hola.

Todos sabemos que la cadena de bloques actual son varias decenas de gigas de información.

¿Cuál es el proceso que siguen para encontrar una transacción entre los miles de bloques existentes?
¿Empiezan desde el primer bloque y siguen la lista de bloques hasta encontrar la transacción?
¿O hay algún proceso rápido de acceder a la información sin recorrerse toda la cadena?

Gracias.


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: dserrano5 on August 31, 2014, 08:45:41 PM
¿Cuál es el proceso que siguen para encontrar una transacción entre los miles de bloques existentes?

Que siguen, ¿quiénes?

Si te refieres a bitcoin core, opcionalmente puede mantener un índice para localizar transacciones. Si te refieres a las webs para navegar cadenas de bloques, tienen una base de datos por detrás.


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: Lorient on September 01, 2014, 01:24:52 PM
En realidad me refiero a cualquier tipo de búsqueda para encontrar los datos de una transacción.

Imaginemos que creamos una transacción de 50 BTC, ella tendrá unos input donde están las transacciones de donde vamos a sacar esos 50 BTC.

Pues bien, el minero al validar nuestra transacción, ¿Cómo busca la información de las transacciones de esos input para comprobar que hay fondos suficientes para realizar nuestra transacción de 50 BTC?

¿Se va al primer bloque de la cadena de bloques y va buscando secuencialmente bloque a bloque las transacciones de los input?


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: dserrano5 on September 01, 2014, 01:46:41 PM
Imaginemos que creamos una transacción de 50 BTC, ella tendrá unos input donde están las transacciones de donde vamos a sacar esos 50 BTC.

Pues bien, el minero al validar nuestra transacción, ¿Cómo busca la información de las transacciones de esos input para comprobar que hay fondos suficientes para realizar nuestra transacción de 50 BTC?

¿Se va al primer bloque de la cadena de bloques y va buscando secuencialmente bloque a bloque las transacciones de los input?

Una transacción coge como inputs aquellas outputs de otra transacción anterior. Pero dichas outputs tienen una particularidad especial: no han sido gastadas en ninguna transacción anterior (de lo contrario, nuestra nueva tx sería un intento de doble gasto). Bitcoin core les sigue la pista a todas estas outputs sin gastar (en inglés, "UTXO set") y por eso no le cuesta trabajo localizarlas. El directorio chainstate de Bitcoin Core es para esto.


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: CriptoPay on September 07, 2014, 01:04:59 PM
Todos sabemos que la cadena de bloques actual son varias decenas de gigas de información.

El core de bitcoin por defecto no descarga la blockchain al completo, sino únicmante los indices, a no ser que indiques lo contrario en tu bitcoin.conf


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: dserrano5 on September 07, 2014, 07:21:25 PM
El core de bitcoin por defecto no descarga la blockchain al completo, sino únicmante los indices, a no ser que indiques lo contrario en tu bitcoin.conf

¿Según lo dispuesto en…?

(pista: eso es mentira)


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: CriptoPay on September 07, 2014, 11:13:52 PM
Si no le metes txindex=1 en el conf no descarga los bloques ni las transacciones al completo


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: fernarios on September 08, 2014, 12:41:50 AM
Si no le metes txindex=1 en el conf no descarga los bloques ni las transacciones al completo

txindex mantiene todos los índices de transacciones anteriores, pero sea que mantengas todos los indices o no, siempre se descarga toda la cadena de bloques...

Si ejecutas con -txindex=1 y -reindex=1 va a reconstruir los índices pero no va a descargar nada extra...


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: CriptoPay on September 09, 2014, 11:12:09 PM
Si ejecutas con -txindex=1 y -reindex=1 va a reconstruir los índices pero no va a descargar nada extra...

Entonces por que si no indicas la primera vez txindex=1 y luego mas adelante lo indicas te obliga a descargar todo de nuevo? hice una prueba hace tiempo primero sin txindex y luego con el y la diferencia era de un par de GB, algo más tiene que descargar.

Al igual que en el wallet movil, que utiliza solo "trozos" , en el bitcoind tiene que funcionar de manera similar aunque descargue más bloques.

También aclarar, yo no entiendo como descargar los bloques , el que transfiera únicamente el hash de cada uno sin el listado de transacciones y sus correspondientes detalles.


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: dserrano5 on September 10, 2014, 05:22:38 AM
Entonces por que si no indicas la primera vez txindex=1 y luego mas adelante lo indicas te obliga a descargar todo de nuevo? hice una prueba hace tiempo primero sin txindex y luego con el y la diferencia era de un par de GB, algo más tiene que descargar.

Bitcoin Core siempre se baja la cadena de bloques, de eso se trata el asunto, de tener la base de datos replicada en cada nodo. Pero con txindex=1, además genera localmente (o sea, sin bajarse nada adicional) un índice de todas las transacciones para poder consultarlas con getrawtransaction (y supongo que para algo más pero eso ya no lo sé).


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: CriptoPay on September 18, 2014, 01:59:53 AM
Entonces por que si no indicas la primera vez txindex=1 y luego mas adelante lo indicas te obliga a descargar todo de nuevo? hice una prueba hace tiempo primero sin txindex y luego con el y la diferencia era de un par de GB, algo más tiene que descargar.

Bitcoin Core siempre se baja la cadena de bloques, de eso se trata el asunto, de tener la base de datos replicada en cada nodo. Pero con txindex=1, además genera localmente (o sea, sin bajarse nada adicional) un índice de todas las transacciones para poder consultarlas con getrawtransaction (y supongo que para algo más pero eso ya no lo sé).

Sigo opinando que algo más se descargó , no se si duplicó la verificación de bloques o qué, pero los 2GB hay estuvieron...

Si alguien tiene algun detalle más sería de agradecer.


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: fernarios on September 18, 2014, 03:00:29 AM
Sigo opinando que algo más se descargó , no se si duplicó la verificación de bloques o qué, pero los 2GB hay estuvieron...

Si alguien tiene algun detalle más sería de agradecer.

No se trata de opinar, se trata de hechos:
-reindex               Rebuild block chain index from current blk000??.dat files

Nada se descarga, utiliza los archivos blk....dat (que ya bajaste) para crear los índices.

Creo que debes leer lo que es un índice si no lo has hecho: http://es.wikipedia.org/wiki/%C3%8Dndice_(base_de_datos)

los 2GB hay estuvieron...

Siempre que se crean índices va a aumentar el tamaño de la base de datos, pues se crean campos adicionales, se sacrifica espacio en disco duro para ganar velocidad (creando información redundante), pero no se necesita nada nuevo, lo que se agrega es una referencia a otros datos en otro lugar de la misma base de datos.

Si quieres verlo por voz mismo puedes sincronizar una BD nueva, desconectar el cable de internet y luego ejecutar con -txindex -reindex, si no aumenta de tamaño nos avisas  ::).

Si por alguna razón extraña sigues sin estar convencido siempre puedes leer el código por voz mismo y ver exactamente lo que hace...


Title: Re: ¿Cómo es el proceso de búsqueda de una transacción en la cadena de bloques?
Post by: CriptoPay on September 18, 2014, 09:29:03 PM
Muchas gracias por tus aportaciones fernarios

Tema más que aclarado ;)

Saludos