请选择 进入手机版 | 继续访问电脑版
您好!欢迎来到明日经济网-21世纪经济日报报道电子版专注中国中原产业经济信息与新闻
关注我们
扫码关注官方微信
手机版
下载明日经济APP

比特币源码解读之初始化

4
回复
790
查看
[复制链接]

112

主题

27

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2018-5-14 10:41:08 | 显示全部楼层 |阅读模式
笔者邀请您,先思考:
1 什么是比特币?
2 比特币源代码如何研究?
(本文使用的是比特币v0.1.0版本点击下载源码)
1 加载地址LoadAddresses()
2 加载区块LoadBlockIndex()
3 加载钱包LoadWallet()
本文主要描述了进程启动时节点地址、区块信息和钱包信息的初始化(节点线程和矿工挖矿线程在后续“比特币源码解析之线程处理”一文中介绍,孤立块处理在后续“比特币源码解读之挖矿”一文中介绍)。
初始化流程图如下所示:
比特币源码解读之初始化  区块链 102701uyif8tlo36i6bf3k


1 加载地址LoadAddresses()


(1)首先调用CAddrDB类的LoadAddresses()函数(同时CAddrDB的构造函数默认打开addr.dat文件)。源码如下所示:

(2)判断有没有用户自定义的地址信息(信息位于addr.txt中)。如果有自定义地址信息,则获取对应地址信息,如果该地址不在mapAddresses中,则保存到mapAddresses并且写入addr.dat配置文件中;否则将nServices信息写入addr.dat配置文件中。

(3)从addr.dat文件中匹配key为“addr”,从而获取对应地址信息,并插入到mapAddresses向量中。

2 加载区块LoadBlockIndex()


(1)首先调用CTxDB 类的LoadBlockIndex()函数(同时CTxDB 的构造函数默认打开blkindex.dat文件)。如果打开blkindex.dat失败,则创建创世块(创世块的后续文章介绍)。

(3)从blkindex.dat文件中匹配字符位“blockindex”的key值,进而获取对应区块索引信息,如果mapBlockIndex中不存在该区块,则插入mapBlockIndex中向量中。

(4)如果该区块是创世块pindexGenesisBlock,则保存到创世块索引pindexGenesisBlock中

(5)从配置文件blkindex.dat中找到字符位“hashBestChain”的key值,取出索引保存到最长链索引pindexBest中以及取出高度保存到nBestHeight 中。

3 加载钱包LoadWallet()


(1)调用CWalletDB类的LoadWallet()函数(同时CWalletDB的构造函数默认打开wallet.dat文件)。

(2)从wallet.dat文件中
匹配字符为“defaultkey”的key,从而获取对应默认钱包地址.

匹配字符为“name”的key,从而获取对应新增的公钥和私钥地址,并将名称和地址信息保存到向量mapAddressBook中。

匹配字符为“key”的key,从而获取对应新增的公钥和私钥地址,将私钥保存在mapKeys[vchPubKey]中,将公钥保存在mapPubKeys[Hash160(vchPubKey)]中。

匹配字符为“tx”的key,从而获取对应交易的信息,并将交易信息保存到向量mapWallet中。

(3)判断默认的vchDefaultKey是否在mapKeys中,如果在,则对应的公钥和私钥保存在keyUser结构中。否则创建一个新的keyUser, 并以名称为“Your Address”保存到向量向量mapAddressBook中;同时写入配置文件wallet.dat中。

上一篇:
比特币源码解读之整体框架
下一篇:
比特币源码解读之线程处理-矿工线程
文章推荐
您有什么见解,请点击【留言】按钮,写下您的留言。
加入“链圈”或者商务合作,请添加笔者微信
回复

使用道具 举报

44

主题

32

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2018-6-6 04:00:14 | 显示全部楼层
路过,支持一下啦
回复 支持 反对

使用道具 举报

0

主题

39

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2018-6-8 21:31:35 | 显示全部楼层
好好 学习了 确实不错
回复 支持 反对

使用道具 举报

68

主题

38

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2018-8-20 12:06:48 | 显示全部楼层
同意、
回复 支持 反对

使用道具 举报

89

主题

37

帖子

38

积分

新手上路

Rank: 1

积分
38
发表于 2018-11-8 18:37:53 | 显示全部楼层
沙发!沙发!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们

免费联系电话

400-123-45678

客服QQ:1235689987

服务时间:周一到周日8:00-23:30

关注我们
  • 手机网页版

  • 手机APP

Archiver手机版小黑屋明日经济网-21世纪经济日报报道电子版专注中国中原产业经济信息与新闻 ( 京ICP备11005339号-2 )|网站地图

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.