Data directory: Difference between revisions
→chainstate subdirectory: Formatting. |
NotATether (talk | contribs) m Windows 8, 10 and 11 all use AppData\Roaming |
||
(33 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
The location where Bitcoin's data files are stored, including the [[Wallet|wallet]] data file. | The data directory is the location where Bitcoin's data files are stored, including the [[Wallet|wallet]] data file. | ||
==Default Location== | ==Default Location== | ||
Line 6: | Line 6: | ||
Go to Start -> Run (or press WinKey+R) and run this: | Go to Start -> Run (or press WinKey+R) and run this: | ||
%APPDATA%\Bitcoin | |||
Bitcoin's data folder will open. For most users, this is the following locations: | Bitcoin's data folder will open. For most users, this is the following locations: | ||
C:\Documents and Settings\YourUserName\Application | C:\Documents and Settings\YourUserName\Application Data\Bitcoin (XP) | ||
C:\Users\YourUserName\ | C:\Users\YourUserName\AppData\Roaming\Bitcoin (Vista and later) | ||
"AppData" and "Application | "AppData" and "Application Data" are hidden by default. | ||
You can also store Bitcoin data files in any other drive or folder. | You can also store Bitcoin data files in any other drive or folder. | ||
If you have already downloaded the data then you will have to move the data to the new folder. | If you have already downloaded the data then you will have to move the data to the new folder. | ||
If you want to store them in D:\BitcoinData then click on "Properties" of | If you want to store them in D:\BitcoinData then click on "Properties" of a shortcut to bitcoin-qt.exe and | ||
add -datadir= | add -datadir=D:\BitcoinData at the end as an example: | ||
"C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -datadir=d:\ | "C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -datadir=d:\BitcoinData | ||
Start Bitcoin, now you will see all the files are created in the new data directory. | Start Bitcoin, now you will see all the files are created in the new data directory. | ||
Line 47: | Line 47: | ||
===Files=== | ===Files=== | ||
An overview of these is in [https://github.com/bitcoin/bitcoin/blob/master/doc/files.md files.md] in the Bitcoin Core documentation. | |||
=== | ===Personally identifiable data [v0.8 and above]=== | ||
This section may be of use to you if you wish to send a friend the blockchain, avoiding them a hefty download. | |||
= | *wallet.dat | ||
**Contains addresses and transactions linked to them. <span style="color:red">Please be sure to make backups of this file. It contains the keys necessary for spending your bitcoins.</span> You should not transfer this file to any third party or they may be able to access your bitcoins. | |||
*db.log | |||
**May contain information pertaining to your wallet. It may be safely deleted. | |||
*debug.log | |||
**May contain IP addresses and transaction ID's. It may be safely deleted. | |||
*database/ folder | |||
**This should only exist when bitcoin-qt is currently running. It contains information (BDB state) relating to your wallet. | |||
*peers.dat | |||
**It contains addresses and connection statistics of peers, but does not contain any personally identifiable data. It may be safely deleted. | |||
*bitcoin.conf | |||
**May contain your IP or hidden service address, paths on your filesystem, and RPC credentials. | |||
*settings.json | |||
**Contains GUI settings with a similar nature to those in bitcoin.conf. | |||
*.cookie | |||
**Contains temporary RPC credentials in situations where you haven't specified an explicit username & password. Do not share with others. | |||
*onion_v3_private_key | |||
**Contains your hidden service key if you are running Bitcoin Core through a Tor connection. Do not share with others or they will be able to spoof your .onion address. On older versions of Core this file was called <code>onion_v2_private_key</code>. | |||
Other files and folders (blocks, blocks/index, chainstate) may be safely transferred/archived as they contain information pertaining only to the public blockchain. | |||
=== | ==Transferability== | ||
The database files in the "blocks" and "chainstate" directories are cross-platform, and can be copied between different installations. These files, known collectively as a node's "block database", represent all of the information downloaded by a node during the syncing process. In other words, if you copy installation A's block database into installation B, installation B will then have the same syncing percentage as installation A. This is usually ''far'' faster than doing the normal initial sync over again. However, when you copy someone's database in this way, you are trusting them '''absolutely'''. Bitcoin Core treats its block database files as 100% accurate and trustworthy, whereas during the normal initial sync it treats each block offered by a peer as invalid until proven otherwise. If an attacker is able to modify your block database files, then they can do all sorts of evil things which could cause you to lose bitcoins. Therefore, you should only copy block databases from Bitcoin installations under your personal control, and only over a secure connection. | |||
Each node has a unique block database, and all of the files are highly connected. So if you copy just a few files from one installation's "blocks" or "chainstate" directories into another installation, this will almost certainly cause the second node to crash or get stuck at some random point in the future. If you want to copy a block database from one installation to another, you have to delete the old database and copy ''all'' of the files at once. Both nodes have to be shut down while copying. | |||
Only the file with the highest number in the "blocks" directory is ever written to. The earlier files will never change. Also, when these blk*.dat files are accessed, they are usually accessed in a highly sequential manner. Therefore, it's possible to symlink the "blocks" directory or some subset of the blk*.dat files individually onto a magnetic storage drive without much loss in performance (see [[Splitting the data directory]]), and if two installations start out with identical block databases (due to the copying described previously), subsequent runs of rsync will be very efficient. | |||
==See Also== | ==See Also== | ||
Line 97: | Line 87: | ||
* [[Running Bitcoin]] | * [[Running Bitcoin]] | ||
* [[Securing your wallet]] | * [[Securing your wallet]] | ||
* [[Splitting the data directory]] | |||
* [http://bitcoin.stackexchange.com/a/11108/153 What is the database for?] Question on Bitcoin Stack Exchange | |||
==References== | ==References== | ||
Line 104: | Line 96: | ||
[[es:Directorio de datos]] | [[es:Directorio de datos]] | ||
{{Bitcoin Core documentation}} |
Latest revision as of 10:34, 22 March 2024
The data directory is the location where Bitcoin's data files are stored, including the wallet data file.
Default Location
Windows
Go to Start -> Run (or press WinKey+R) and run this:
%APPDATA%\Bitcoin
Bitcoin's data folder will open. For most users, this is the following locations:
C:\Documents and Settings\YourUserName\Application Data\Bitcoin (XP) C:\Users\YourUserName\AppData\Roaming\Bitcoin (Vista and later)
"AppData" and "Application Data" are hidden by default.
You can also store Bitcoin data files in any other drive or folder.
If you have already downloaded the data then you will have to move the data to the new folder. If you want to store them in D:\BitcoinData then click on "Properties" of a shortcut to bitcoin-qt.exe and add -datadir=D:\BitcoinData at the end as an example:
"C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -datadir=d:\BitcoinData
Start Bitcoin, now you will see all the files are created in the new data directory.
Linux
By default Bitcoin will put its data here:
~/.bitcoin/
You need to do a "ls -a" to see directories that start with a dot.
If that's not it, you can do a search like this:
find / -name wallet.dat -print 2>/dev/null
Mac
By default Bitcoin will put its data here:
~/Library/Application Support/Bitcoin/
Directory Contents
Files
An overview of these is in files.md in the Bitcoin Core documentation.
Personally identifiable data [v0.8 and above]
This section may be of use to you if you wish to send a friend the blockchain, avoiding them a hefty download.
- wallet.dat
- Contains addresses and transactions linked to them. Please be sure to make backups of this file. It contains the keys necessary for spending your bitcoins. You should not transfer this file to any third party or they may be able to access your bitcoins.
- db.log
- May contain information pertaining to your wallet. It may be safely deleted.
- debug.log
- May contain IP addresses and transaction ID's. It may be safely deleted.
- database/ folder
- This should only exist when bitcoin-qt is currently running. It contains information (BDB state) relating to your wallet.
- peers.dat
- It contains addresses and connection statistics of peers, but does not contain any personally identifiable data. It may be safely deleted.
- bitcoin.conf
- May contain your IP or hidden service address, paths on your filesystem, and RPC credentials.
- settings.json
- Contains GUI settings with a similar nature to those in bitcoin.conf.
- .cookie
- Contains temporary RPC credentials in situations where you haven't specified an explicit username & password. Do not share with others.
- onion_v3_private_key
- Contains your hidden service key if you are running Bitcoin Core through a Tor connection. Do not share with others or they will be able to spoof your .onion address. On older versions of Core this file was called
onion_v2_private_key
.
- Contains your hidden service key if you are running Bitcoin Core through a Tor connection. Do not share with others or they will be able to spoof your .onion address. On older versions of Core this file was called
Other files and folders (blocks, blocks/index, chainstate) may be safely transferred/archived as they contain information pertaining only to the public blockchain.
Transferability
The database files in the "blocks" and "chainstate" directories are cross-platform, and can be copied between different installations. These files, known collectively as a node's "block database", represent all of the information downloaded by a node during the syncing process. In other words, if you copy installation A's block database into installation B, installation B will then have the same syncing percentage as installation A. This is usually far faster than doing the normal initial sync over again. However, when you copy someone's database in this way, you are trusting them absolutely. Bitcoin Core treats its block database files as 100% accurate and trustworthy, whereas during the normal initial sync it treats each block offered by a peer as invalid until proven otherwise. If an attacker is able to modify your block database files, then they can do all sorts of evil things which could cause you to lose bitcoins. Therefore, you should only copy block databases from Bitcoin installations under your personal control, and only over a secure connection.
Each node has a unique block database, and all of the files are highly connected. So if you copy just a few files from one installation's "blocks" or "chainstate" directories into another installation, this will almost certainly cause the second node to crash or get stuck at some random point in the future. If you want to copy a block database from one installation to another, you have to delete the old database and copy all of the files at once. Both nodes have to be shut down while copying.
Only the file with the highest number in the "blocks" directory is ever written to. The earlier files will never change. Also, when these blk*.dat files are accessed, they are usually accessed in a highly sequential manner. Therefore, it's possible to symlink the "blocks" directory or some subset of the blk*.dat files individually onto a magnetic storage drive without much loss in performance (see Splitting the data directory), and if two installations start out with identical block databases (due to the copying described previously), subsequent runs of rsync will be very efficient.
See Also
- Running Bitcoin
- Securing your wallet
- Splitting the data directory
- What is the database for? Question on Bitcoin Stack Exchange
References
|