1 / 11
文档名称:

比特币(区块链)源码分析.doc

格式:doc   大小:105KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

比特币(区块链)源码分析.doc

上传人:小辰GG 2022/4/12 文件大小:105 KB

下载得到文件列表

比特币(区块链)源码分析.doc

相关文档

文档介绍

文档介绍:比特币挖矿
挖矿命令 2
块结构 4
创建块 5
奖励比特币 6
SHA256算法加密 8
检验块 9
工作量证明 10
计算算力 12
比特币网络 12
挖矿命令
比特币客户端内嵌了挖矿模块,可以使用相关的命令开e用于扫描块,使块的hash满足POW的要求。
类CBIock继承了CBIockHeader类,增加了交易信息相关的数据。 class CBIock : public CBIockHeader
{
public:
// network and disk
std::vector<CTransaction> vtx; // 交易信息数组
// memory only
mutable std::vector<uint256> vMerkleTree; // Merkle 树 };
Vtx包含了交易信息,用于网络传播、硬盘存储。 vMerkleTree仅仅用于内存。
结构CBIockTemplate定义了块模版,增加了交易费、签各 struct CBIockTemplate
CBIock block; 〃块
std:: vector<int64_t> vTxFees; // 交易手续费
std::vector<int64_t> vTxSigOps; 〃 签名
};
创建块
如果是挖矿创建新块,贝I]先需要从CReserveKey中获取公钥 (CPubKey),然后计算出公钥脚本(CScript),再创建新块。
创建新块的函数是CreateNewBlock函数°
新建块模版CBIockTemplate实例。
建的交易信息添加到新建的块中,数组vTxFeesv vTxSigOps添加值© 如果指定了公钥脚本,则保存到交易信息的vout[0].scriptPubKey中。
计算创建的块的最大值,块最大值在1000与 (MAX_BLOCK_SIZE(1000000)-1000)之间,如果指定了参数”• blockmaxsize",则块最大值设置为指定值,否贝j设置为默认值
DEFAULT_BLOCK_MAX_SIZE(750000)o
计算初建的块禹最小值,块最小值在0与块最大值之间,如果指定了 参数”・blockminsize”,则块最小值设置为指定值,否则设置为默认值0。
计算块优先级值,块优先级值决定了块中包含的高优先级交易信息 的数量,不管支付的交易费是多少。块优先级值的最大值为块最大值,如 果指定了参数"-blockprioritysize\则设置为指定值,否则设置为默认值 DEFAULT_BLOCK_PRIORITY_SIZE(50000)o
遍历丙存池交身信息,组產优先级数组,不处理内存池中的 CoinBaae类型的交易信息、最后的交易信息。计算优尤级、每千字节的 手续费,添加到优先级数组中。(COrphan)
优先级计算公式:
Priority = sum(valuein * age) / modified_txsiz©
每千字节的手续费计算公式:
dFeePerKb = double(nlbtalln-()) / (double(nTxSizG)/ );
遍历优先级数组,把交易信息添加到新建的块中。
添加时注意以下几点:
1、 不添加最高优先级的交易信息。
2、 添加交易信息时, 的总和不能超过最大值MAX_BLOCK_SIGOPS(2DOOO)。
3、 当块大小总和低于块最小值时,可以添加免费的交易信息,当块 大小总和超过块最小值时,不能添加免费的交易信息了,免费的交易信息 是扌旨交易手续费用低于最小ffi(dFeePerKb<CTransaction::nMinTxFee)o
4、 只添加在UTXO集中09交易信息()。
5、 不添加交易信息的接收信息无效的信息(Checklnpu⑸。
然后提交在UTXO集中的交易信息的结果(UpdateCoins)o把交易信 息添加到CBIock的vtx中,计算交易费,添加到vTxFees中,计算签名, 添加到vTxSigOpso如果porphan中含有相同的hash项,则从porphan中 移除,添加到vecPriority中。
计算此块得到的比特币数量、手续我。
初始化块的成员信息。设置hashPrevBlock为上一个块的哈希索弓I。 更新块时间nTimeo设置nBits为下一个需要的POW。设置nNonce为0。 设置vTxSigOps[0]为块的签名数最。
提交UTXO集上的

最近更新

EMI电源滤波器的设计和研究的任务书 2页

2024年晋开高级教师述职报告模板7篇 28页

DyCoSn三元系合金相图773K相关系的测定的任务.. 2页

投资学考试试题及答案 3页

2024年昆虫记读后感500字左右7篇 13页

学校教育教学管理工作经验交流发言稿范文(通用.. 20页

DF西安公司不良资产商业化收购模式研究的中期.. 2页

学校教师述职报告范本(全文共5301字) 3页

2024福建省安全员《B证》考试模拟题及答案(推.. 13页

消防安全,用电安全生产 26页

学校教师2017年工作述职报告(全文共3685字) 4页

学校教学工作计划中学 46页

2024年一级注册建筑师之建筑结构模考模拟试题.. 7页

CDMA北向接口适配器配置管理系统研究与实现的.. 4页

2023年度河南省《安全员B证》考试题库及答案 4页

BTO生产模式下H公司供应物流优化的中期报告 2页

高二下语文的教学总结 2页

2019年小学生春游作文400字:美丽的桃花岛 1页

ATRA对人结直肠癌LoVo细胞VEGF及其受体表达的.. 2页

ADAM9基因启动子区多态性对散发性阿尔茨海默病.. 2页

80例前列腺癌患者的临床诊断研究的任务书 2页

2024大学演讲稿(31篇) 74页

2024年初中教务处工作总结(35篇) 164页

2024年服务员的工作总结优质5篇 12页

2024门面房租赁合同(34篇) 124页

《有个性的羊》读后感范文 3页

三年级写景作文5篇 8页

2型糖尿病周围神经病变与踝肱指数的关系的任务.. 2页

2-(v,k,1)设计的可解线-传递自同构群的中期.. 3页

125MN挤压机动梁速度控制系统研究的中期报告 2页