主页 > imtoken钱包安卓版手机下载 > 比特币数据目录

比特币数据目录

数据目录是存放比特币数据文件的位置,包括区块数据、钱包数据等相关文件。 html

默认位置

默认位置与操作系统有关。下面列出了操作系统下比特币数据目录的三个默认存储位置:linux

macOSX

~/库/应用程序支持/Bitcoinc++

Unix/Linux

~/.bitcoingit

您需要使用“ls -a”来查看(隐藏)以点开头的目录。如果不在这个目录下,也可以这样搜索:github

find / -name wallet.dat -print 2>/dev/null 数据库

以前的比特币怎么存放的

窗户

C:\Documents and Settings\用户名\Application Data\Bitcoin (XP)macos

C:\Users\Username\AppData\Roaming\Bitcoin(Vista、7、8 和 10)windows

目录“AppData”和“Application data”默认是隐藏的。缓存

您还可以将比特币数据目录存储到任何驱动器或文件中。安全

如果要存放在指定目录D:\BitcoinData,点击bitcoin-qt.exe快捷方式的属性,在target后面加上字符串“-datadir=D:\BitcoinData”,如下:

“C:\Program Files (x86)\Bitcoin\bitcoin-qt.ext”-datadir=D:\BitcoinData

以前的比特币怎么存放的

启动比特币,您现在将看到在新数据目录中创建的所有文件。

源码分析

数据目录的默认位置被硬编码在源“util.cpp”文件的GetDefaultDataDir()函数中。

boost::filesystem::path GetDefaultDataDir() { namespace fs = boost::filesystem; // Windows < Vista: C:\Documents and Settings\Username\Application Data\Bitcoin // Windows >= Vista: C:\Users\Username\AppData\Roaming\Bitcoin // Mac: ~/Library/Application Support/Bitcoin // Unix: ~/.bitcoin #ifdef WIN32 // Windows return GetSpecialFolderPath(CSIDL_APPDATA) / "Bitcoin"; #else // Unix/Linux fs::path pathRet; char* pszHome = getenv("HOME"); if (pszHome == NULL || strlen(pszHome) == 0) pathRet = fs::path("/"); else pathRet = fs::path(pszHome); #ifdef MAC_OSX // Mac pathRet /= "Library/Application Support"; TryCreateDirectory(pathRet); return pathRet / "Bitcoin"; #else // Unix return pathRet / ".bitcoin"; #endif #endif }

目录结构/层次结构

比特币版本号:v0.12.1

rev00000.dat /chainstate/ db.log debug.log fee_estimates.dat peers.dat wallet.dat 目录内容文件

以前的比特币怎么存放的

Bitcoin Core 文档 file.md 的内容概述。

.lock banlist.dat bitcoin.conf[optional] bitcoind.pid blocks/blk000??.dat[v0.8.0 及更高版本]; blkxxxx.dat[v< @0.8.0 个以前的版本] blocks/rev000??.dat[v0.8.0 和以后的版本] blocks/index/*[v 0.@ >8.0 及以后]; blkindex.dat[v0.8.0 及更高版本] 链状态/*[v0.8.0 及更高版本] 数据库/*[v0.< @8.0 及更高版本];[v0.16.0 及更高版本] db.log[v 0.16.0 及更高版本] 调试.log fee_estimates.dat[v0.10.0 及更高版本] 索引/txindex/*[v0.17.0 及更高版本] mempool.dat[v 0.14.0 及更高版本] peers.dat[v0.7.0 及更高版本]; addr.dat[v0.7.0 个以前的版本] wallets/wallet.dat[v0.16.0 和以后的版本]; wallet.dat wallets/database/*[v0.16.0 及更高版本] wallets/db.log[v0.16.0 及更高版本] onion_private_key [v0.12.0 及更高版本] guisettings.ini.bak

这些数据、索引和日志文件由比特币使用的嵌入式键/值对数据存储 Oracle Berkeley DB 使用。

数据库子目录

包含 BDB (Berkeley DB) 日志文件。

testnet3 子目录

包含这些文件的测试网版本(如果使用启动选项 -testnet 运行)。

以前的比特币怎么存放的

块子目录[v0.8及以上]

包含区块链数据。

blocks/index 子目录 [v0.8 及以上] 链状态子目录 [v0.8 及以上]

LevelDB 数据库,具有所有当前未使用的交易输出的紧凑表示以及有关它们源自的交易的一些元数据。这里的数据对于验证新传入的块和交易是必要的。理论上,它可以从块数据中重建(参见 -reindex 命令行选项),但这需要大量时间。没有它,理论上您仍然可以进行验证,但这意味着要对每个输出的输出进行全面扫描(截至 2017 年 11 月,总块大小为 150GB)。

锁定子目录[v0.8及以上]

包含“撤销”数据。

您可以将块视为链状态的“补丁”(它们会消耗一些未使用的输出,并生成新的输出),并将撤消数据视为反向补丁。它们是回滚链状态所必需的,也是重组时所必需的。

以前的比特币怎么存放的

我的身份数据[v0.8 及以上]

如果您希望将区块链发送给您的朋友并避免他们大量下载,本部分可能对您有用。

db.log debug.log 数据库/文件夹 peers.dat

其余文件和目录(块、块/索引、链状态)可以安全地传输/存档以前的比特币怎么存放的,因为它们包含仅与公共区块链相关的信息。

转移

“block”和“chain state”目录下的数据库文件是跨平台的,可以在不同平台之间复制安装。这些文件统称为节点的“区块数据库”,代表了节点在同步过程中下载的所有信息。换句话说,如果节点A的数据目录的块数据库被复制到节点B的数据目录,节点B的同步百分比将与节点A相同。这通常比再次进行正常的初始化同步要快得多。但是,当您以这种方式复制某人的数据库时,您必须绝对信任他。比特币核心将其区块数据库文件视为 100% 准确且值得信赖,并且在正常的初始同步期间,将对等方提供的每个区块视为无效,除非另有证明。如果攻击者可以修改您的块数据文件,他们就可以做各种邪恶的事情,导致您丢失比特币。所以以前的比特币怎么存放的,你应该只从你控制和我的控制下的其他人那里复制块数据库,并且只能通过安全链接。

每个节点都有一个唯一的区块数据库,所有文件都是高度可链接的。所以如果你从一个数据目录中的“blocks”或“chain state”目录复制几个文件到另一个数据目录,这几乎肯定会导致第二个节点崩溃或在未来某个随机时间点卡住。如果要将块数据库从一个数据目录复制到另一个数据目录,则必须删除旧数据库并一次复制所有文件。复制时必须关闭两个节点。

只写入“chunks”目录中编号最高的文件。以前的文件永远不会改变。此外,在访问这些块 blk.dat 文件时,通常按高度顺序访问它们。因此,可以将“块”目录或 blk.dat 文件的某些本身符号链接到磁存储驱动器而不会造成太多性能损失(请参阅拆分数据目录),并且如果两个节点以相同的块开头数据库启动(由于前面描述的复制),随后的同步运行将非常有效。

感谢您的宝贵时间。

参考