当宏ENABLE_WALLET被定义bool VerifyWallets();函数就行钱包的验证工作。 -disablewallet当该参数被设置后,Do not load the wallet and disable wallet RPC calls。
初始化函数第五步钱包数据库的验证对每个钱包的路径进行重复检测 For循环里面进行判断
1. 对导入的钱包的名字进行检测
2. 对导入钱包的名字是否含有不安全字符进行检测
3. 拿到钱包所在完整路径
4. 判断钱包文件是否存在并且钱包文件必须是一个普通的文件
5. 对导入的钱包文件名进行判断,看本地是否已存在该钱包文件
6. CWalletDB访问钱包数据库的类,当对象超出范围时,默认刷新到磁盘 VerifyEnvironment(); //verifies the database environment
7. salvagewallet由前面可知该参数是损坏的钱包恢复私钥,默认是不启用 8. VerifyDatabaseFile(); //verifies the database file
/** RAII class that provides access to a Berkeley database */
class CDB
/*An instance of this class represents one database.For BerkeleyDB this is just a (env, strFile) tuple.*/
class CWalletDBWrapper 上面所有的操作数据库的和数据库文件的验证都是通过这个两个类的的底层实现 http://www.jianshu.com/p/93e20b9e6345
剩下参见源码研读班的作者ttblack的写的很详细。
网友评论