Sistema de Archivos de Bitcoin Core
Vamos a conocer cuál es la estructura de directorios que tiene Bitcoin Core, dónde se almacena la información, cómo, si podemos cambiarla y sus consecuencias
Este artículo se ha actualizado 2 cambios
- nov 2026: Actualización para Bitcoin Core 32.1: nueva ruta en Windows, xor.dat, carpeta fees/, txospenderindex, carteras SQLite, .cookie, asmap y banlist.dat. Tablas rehechas para leerse bien en el móvil y ejemplos de rutas corregidos.
- nov 2026: El árbol de carpetas de 2021 se rehace en texto, actualizado a la 32.1.
Resumen en 30 segundos
- Bitcoin Core guarda todo en una carpeta de datos:
~/.bitcoin/en Linux,~/Library/Application Support/Bitcoin/en macOS y%LOCALAPPDATA%\Bitcoin\en Windows. Puedes cambiarla condatadir. - Lo que más ocupa es
blocks/(la cadena de bloques) ychainstate/(el conjunto de UTXO). Tus carteras están enwallets/. - Antes de mover o copiar nada, detén el nodo. Y para las carteras, haz siempre una copia de seguridad con
backupwallet.
¿Dónde se almacenan los archivos de Bitcoin Core?
En muchas ocasiones nos preguntamos ¿dónde se almacena la información de Bitcoin?, ¿cómo es almacenada?, ¿podemos cambiarla?, y si podemos cambiarla, ¿qué consecuencias tendría? Así que en este artículo vamos a hablar de ello, vamos a revisar esa estructura de archivos y directorios para resolver estas preguntas.
Nota: Dado que Bitcoin Knots es un fork de Bitcoin Core, la estructura de archivos de Knots es prácticamente la misma que Bitcoin Core, y los parámetros también, aunque Bitcoin Knots mantiene e implementa algunos más, no es menester de este artículo centrarnos en las diferencias, sino saber que ambos son similares y, por lo tanto, la información en cuanto a la estructura de directorios es totalmente reaprovechable para uno u otro cliente.
La estructura oficial está registrada en el github de Bitcoin Core y siempre es recomendable verificarla ahí por si hubiera algún cambio con respecto a lo que aquí vamos a exponer. Este artículo está revisado con la versión 32.11. Sin más preámbulos vamos a ello.
Dependiendo del sistema operativo, Bitcoin Core generará los directorios necesarios para su funcionamiento en la ruta de información de usuario por defecto que suelen ser:
| Plataforma | Ruta del directorio |
|---|---|
| Linux | $HOME/.bitcoin/ |
| macOS | $HOME/Library/Application Support/Bitcoin/ |
| Windows | %LOCALAPPDATA%\Bitcoin\ |
HechoDesde la versión 28, Bitcoin Core usa en Windows %LOCALAPPDATA%\Bitcoin\ (por ejemplo, C:\Users\tu_usuario\AppData\Local\Bitcoin\). Si ya tenías la carpeta antigua, %APPDATA%\Bitcoin\, la sigue usando1.
Esta ruta por defecto puede ser modificada con la opción datadir a la hora de iniciar Bitcoin Core. Esta opción le indica al software de Bitcoin Core que la ruta de los datos estará en otra dirección diferente a la de por defecto. Esta opción puede usarse tanto por línea de comandos, como incluyéndola en el archivo bitcoin.conf.
Otro tema a saber es que con el software de Bitcoin Core puedes trabajar en diferentes redes siendo mainnet la red principal y donde bitcoin tiene valor, el resto de redes son para realizar pruebas o aprender y el bitcoin que tienes de esas redes no tiene valor alguno.
Por lo que en el directorio se generará una ruta más dentro, salvo en el caso de mainnet, que trabaja directamente sobre la ruta datadir que tengas.
Ejemplo tomando como base Linux, con la carpeta de datos en un disco externo:
| Cadena | Ruta del directorio |
|---|---|
-chain=main (por defecto) | /mnt/My_DiscoSSD_Externo/.bitcoin/ |
-chain=test (o -testnet) | /mnt/My_DiscoSSD_Externo/.bitcoin/testnet3/ |
-chain=testnet4 | /mnt/My_DiscoSSD_Externo/.bitcoin/testnet4/ |
-chain=signet | /mnt/My_DiscoSSD_Externo/.bitcoin/signet/ |
-chain=regtest | /mnt/My_DiscoSSD_Externo/.bitcoin/regtest/ |
Diseño del directorio de datos de Bitcoin Core
Bitcoin Core usa una serie de archivos y una estructura de subdirectorios para su funcionamiento, los cuales como ya vimos anteriormente pueden cambiarse de ruta predeterminada pero no pueden cambiarse de nombre ya que esto afectaría el correcto funcionar del software, los veremos de manera particular para conocer qué información facilitan o contienen y si es posible cambiarlos de ubicación por defecto.
Antes de empezar una recomendación, aunque muchos de los archivos pueden cambiarse de ubicación, no recomiendo que lo hagas sin tener claro lo que estás haciendo y además no lo recomiendo porque demasiados cambios complican la gestión y el backup de la información de tu nodo, sin embargo es interesante conocer cómo funciona el sistema.
El directorio de datos de Bitcoin Core 32.1
/mnt/My_DiscoSSD_Externo/.bitcoin/
blocks/la cadena de bloquesblk00000.dat …los bloques, en brutorev00000.dat …datos para deshacer bloquesindex/dónde está cada bloque (LevelDB)xor.datclave de ofuscación (desde la 28)
chainstate/las monedas sin gastar, UTXO (LevelDB)indexes/solo si activas algún índicetxindex/txindex=1blockfilter/basic/blockfilterindex=basiccoinstatsindex/coinstatsindex=1txospenderindex/txospenderindex=1 (desde la 31)
wallets/tus carterasmi-cartera/una carpeta por carterawallet.datla cartera (SQLite)wallet.dat-journalsolo mientras está en uso
fees/estadísticas de comisiones (desde la 32)anchors.datsolo con el nodo apagadobanlist.jsonnodos prohibidosbitcoin.conftu configuración (la creas tú)bitcoind.pidmientras bitcoind funcionadebug.logel registro del nodoi2p_private_keysolo si usas I2Pmempool.datla mempool guardada al apagaronion_v3_private_keysolo si usas Torpeers.datdirecciones de otros nodossettings.jsonajustes de la interfaz y RPC.cookieautenticación RPC, mientras funciona.lockevita que otro programa use la carpeta
-chain=testnet4, signet o regtest se crea una carpeta con el nombre de la red y la misma estructura dentro. Pulsa una carpeta para ir a su explicación; los archivos de la raíz, en su propia tabla más abajo.La cadena de bloques: blocks/
| Ruta | Qué contiene |
|---|---|
blocks/ | Este directorio es el que contiene los bloques que Bitcoin ha generado, dicho de otra manera, aquí estará almacenada la cadena principal que nuestro software irá revisando y actualizando. Puede cambiarse de sitio con la opción blocksdir: blocksdir=/mnt/My_DiscoSSD_Externo/bloques en el archivo bitcoin.conf o -blocksdir=/mnt/My_DiscoSSD_Externo/bloques desde la línea de comandos. |
blocks/blkNNNNN.dat | Dentro del directorio blocks se generan 2 tipos de archivos. Los archivos blkNNNNN.dat contienen en sí los bloques, en un formato de red, y en bruto (RAW). Cada archivo es de 128 MB como máximo. |
blocks/revNNNNN.dat | El otro tipo de archivo, revNNNNN.dat, contiene información importante para realizar un «undo» de bloques, esto es por si fuera necesario deshacer el contenido de un bloque (por ejemplo, si la cadena se reorganiza). |
blocks/index/ | Base de datos LevelDB con metadatos con información de los bloques y su ubicación. Este subdirectorio no puede cambiarse de ubicación ya que va siempre dentro del directorio blocks. |
blocks/xor.dat | La clave con la que se ofuscan los archivos de bloques. |
¿Para qué sirve xor.dat?Para curiosos
Desde la versión 28, Bitcoin Core guarda los bloques ofuscados con una clave aleatoria (una operación XOR) que se guarda en xor.dat1. No es cifrado ni protege tu privacidad: sirve para que el antivirus no borre o ponga en cuarentena un archivo de bloques porque dentro de una transacción haya datos que parecen un virus.
La consecuencia práctica: una versión de Bitcoin Core anterior a la 28 no puede leer esos bloques. Si alguna vez necesitas volver a una versión antigua, tendrías que descargar la cadena de nuevo.
El estado de la cadena: chainstate/
| Ruta | Qué contiene |
|---|---|
chainstate/ | Aquí se guarda una base de datos en formato LevelDB con el estado más reciente de la cadena más grande (mejor cadena) y una representación compacta de todas las transacciones de salida no gastadas (UTXO) y los metadatos sobre las transacciones de las que proceden (UTXO Set). |
Índices opcionales: indexes/
Estos directorios solo se crean si activas el índice correspondiente.
| Ruta | Qué contiene |
|---|---|
indexes/txindex/ | Otra base de datos LevelDB, los archivos que aquí se almacenan solo se generan si el índice de transacciones está habilitado mediante la opción txindex: txindex=1 en el archivo bitcoin.conf o -txindex=1 desde la línea de comandos. |
indexes/blockfilter/basic/db/ | Base de datos LevelDB con el índice de los filtros básicos de bloques. |
indexes/blockfilter/basic/fltrNNNNN.dat | Archivos con los filtros básicos. Solo se generan si está habilitado mediante la opción blockfilterindex: blockfilterindex=basic en el archivo bitcoin.conf o -blockfilterindex=basic desde la línea de comandos. |
indexes/coinstatsindex/db/ | Este directorio contiene la información que permite saber el estado de todas las monedas (de todos los UTXO), y facilita al comando RPC gettxoutsetinfo información sobre cuántos UTXO existen, de qué importes y cuál es su estado. Se activa usando el parámetro coinstatsindex=1. Más información aquí. |
indexes/txospenderindex/ | Índice que dice qué transacción gastó cada salida. Se activa con txospenderindex=1 (desde la versión 31). |
HechoLa versión 32 guarda el índice de transacciones (txindex) en un formato más compacto. Si ya lo tenías, sigue funcionando; para aprovechar el ahorro de espacio (ocupa menos de la mitad), detén el nodo, borra indexes/txindex/ y deja que se reconstruya3.
Tus carteras: wallets/
| Ruta | Qué contiene |
|---|---|
wallets/ | Es el subdirectorio donde Bitcoin Core y Bitcoin Knots almacenan las carteras. Cada cartera es una carpeta con su archivo wallet.dat y, mientras está en uso, un wallet.dat-journal. |
Su ubicación se puede cambiar con la opción walletdir, lo que te da flexibilidad para ubicar tus carteras en un lugar diferente al predeterminado. El parámetro acepta:
- Rutas absolutas, por ejemplo:
- Linux/macOS:
walletdir=/media/usuario/billeteras-bitcoin - Windows:
walletdir=C:\Bitcoin\wallets
- Linux/macOS:
- Rutas relativas: se prefijan automáticamente con el directorio de datos (
datadir). Ejemplo:walletdir=billeterasse resolvería como/home/usuario/.bitcoin/billeteras. - Si no se especifica: el valor por defecto es una subcarpeta llamada
walletsdentro del directorio de datos.
HechoLas carteras actuales son bases de datos SQLite (carteras «descriptor»). Desde la versión 30, Bitcoin Core ya no carga las carteras antiguas en formato Berkeley DB: si tienes una, tienes que convertirla con migratewallet4.
Archivos de la raíz del directorio de datos
| Archivo | Qué contiene |
|---|---|
anchors.dat | Guarda las últimas conexiones salientes de tipo «solo bloques» (block-relay-only). Se crea al apagar el nodo y se borra al iniciarlo. Se implementó para acelerar el proceso de conexión y para que sea más difícil aislar tu nodo, ya que al iniciar trata de conectar con esos mismos pares. Este archivo se podría borrar y no pasaría nada. |
banlist.json | Almacena la lista de direcciones o subredes de nodos prohibidos. |
bitcoin.conf | Este archivo es el que define la configuración que va a ser usada por el nodo. Debe ser creado por el usuario, no es generado por el software. Si no existiera Bitcoin Core arranca de todas formas pero usando los valores por defecto. La ruta donde el software debe buscar este archivo puede ser modificada, para ello en el arranque de Bitcoin Core hay que pasarle el parámetro -conf=/mnt/My_DiscoSSD_Externo/bitcoin.conf. |
bitcoind.pid | Este archivo almacena el ID del proceso (PID) de bitcoind mientras se mantiene en ejecución. Se puede especificar una ruta diferente con la opción -pid=/mnt/My_DiscoSSD_Externo/bitcoind.pid. |
debug.log | Archivo que contiene la información de depuración (debug) de Bitcoin que se genera durante la ejecución del software. Es de mucha utilidad para identificar posibles problemas o fallos en el nodo. Se puede modificar la ruta mediante la opción debuglogfile: debuglogfile=/mnt/My_DiscoSSD_Externo/logs/debug.log en el archivo bitcoin.conf o -debuglogfile=/mnt/My_DiscoSSD_Externo/logs/debug.log desde la línea de comandos. |
fees/ | Carpeta con las estadísticas que usa el comando estimatesmartfee para estimar las comisiones necesarias para que una transacción se confirme: block_policy_estimates.dat y mempool_policy_estimator.dat. |
guisettings.ini.bak | Copia de los ajustes de la interfaz gráfica que se crea si los restableces con -resetguisettings. |
i2p_private_key | Clave privada de la dirección I2P del nodo. Solo existe si usas I2P (opción i2psam). |
mempool.dat | Archivo donde se vuelcan las transacciones que han sido propagadas por los nodos y que todavía no han sido confirmadas, lo que se conoce como la mempool del nodo. |
onion_v3_private_key | Este archivo almacena la clave privada del servicio onion de Tor que usa Bitcoin Core. Se crea por defecto si Bitcoin Core puede hablar con Tor; la opción es listenonion: listenonion=0 deshabilitaría el uso de este archivo, en el archivo bitcoin.conf o -listenonion=0 desde la línea de comandos. |
peers.dat | Base de datos con direcciones de peers o pares, en un formato propio de Bitcoin Core. |
settings.json | Este archivo contiene ajustes que se cambian desde la interfaz gráfica (GUI) o por RPC, y que complementan lo que tengas en el archivo bitcoin.conf. Se crea automáticamente salvo que lo deshabilites con la opción -nosettings. La ruta se puede especificar con la opción settings: settings=/mnt/My_DiscoSSD_Externo/settings.json en el archivo bitcoin.conf o -settings=/mnt/My_DiscoSSD_Externo/settings.json desde la línea de comandos. |
.cookie | Sirve para autenticarse en la interfaz RPC. Se crea al iniciar el nodo y se elimina al apagarlo. Se puede cambiar con la opción rpccookiefile. |
.lock | Este archivo bloquea el directorio de datos para que no lo use otro programa (o un segundo Bitcoin Core) a la vez. |
Sobre mempool.dat: la opción persistmempool del archivo bitcoin.conf controla si el nodo guarda la mempool en disco al apagarse y la vuelve a cargar al reiniciar.
persistmempool=1(por defecto): al apagar el nodo, las transacciones pendientes se escriben en disco; al iniciar, se recargan, evitando tener que volver a recibirlas de otros nodos.persistmempool=0: la mempool comienza vacía en cada inicio y se va llenando con lo que te envían tus pares.
HechoEl archivo .cookie es hoy la forma de autenticación por defecto: si no configuras usuario y contraseña RPC, bitcoin-cli y los programas que corren en el mismo equipo lo leen para conectarse. Para aplicaciones en otros equipos, o si prefieres credenciales fijas, usa rpcauth1.
En la primera versión de este artículo decía que no recomendaba usar .cookie todavía. Hoy es el método más sencillo para uso local, y es el que uso en la guía de BTC RPC Explorer.
Archivos que ya no se usan
| Archivo | Qué pasaba con él |
|---|---|
banlist.dat | Lista de nodos prohibidos que usaban las versiones antiguas. Las versiones 22 y posteriores la ignoran por completo: puedes borrarla1. |
fee_estimates.dat | Las estadísticas de comisiones. Desde la versión 32 están en la carpeta fees/, y Bitcoin Core lo mueve allí solo al arrancar. |
ip_asn.map | El mapa de direcciones IP a Sistemas Autónomos (ASN) que se usa para repartir las conexiones entre distintos proveedores. Desde la versión 31, asmap=1 usa un mapa que viene dentro del programa; si quieres usar uno propio, indica el archivo: asmap=/ruta/al/archivo.map1. |
Llegados a este punto, espero te quede claro qué archivos crea, usa y mantiene el software de Bitcoin Core.
Llevar tu nodo a otro equipo
Una última información, muchas veces nos preguntamos, si ya tengo descargada la cadena de Bitcoin y de hecho ya he usado Bitcoin pero quiero llevarlo a otro equipo, ¿qué archivos debería copiar?
Supongo que después de haber leído el artículo verás que la respuesta es prácticamente todos. En lo que tienes que tener cuidado es en las configuraciones que tengas, ya sea en el archivo bitcoin.conf o las que pases por comando al iniciar tu nodo, para indicarle la nueva ruta donde residirá la información.
Ahora, si lo que quieres es únicamente copiar la cadena, bastaría con que copies los directorios blocks, chainstate e indexes, y wallets si quieres llevar tus carteras también.
Antes de copiar
Marca lo que ya haces. Se guarda solo en este navegador.
- Para el nodo por completo (
bitcoin-cli stop) y espera a que termine de cerrarse. - Haz una copia de seguridad de cada cartera con
backupwallet, aunque también copies la carpeta. - Usa en el equipo nuevo la misma versión de Bitcoin Core o una más reciente (por el
xor.dat).
Bueno, espero que esta información te haya resultado interesante y de ayuda. Si es así, por favor no olvides compartir este artículo.
Referencias
-
Bitcoin Core, Bitcoin Core file system (doc/files.md, versión 32.1): https://github.com/bitcoin/bitcoin/blob/v32.1/doc/files.md ↩ ↩ ↩ ↩ ↩ ↩ ↩
-
Bitcoin Core, issue #31454, bases de datos dañadas en discos exFAT en macOS: https://github.com/bitcoin/bitcoin/issues/31454 ↩
-
Bitcoin Core, notas de la versión 32: https://github.com/bitcoin/bitcoin/blob/v32.1/doc/release-notes.md ↩
-
Bitcoin Core, notas de la versión 30.0: https://bitcoincore.org/en/releases/30.0/ ↩