美文网首页
比特币源码研读(共识算法)之一(草稿)

比特币源码研读(共识算法)之一(草稿)

作者: 施二聿行 | 来源:发表于2017-08-18 23:52 被阅读293次

我加入的higer主持的一个区块链技术社区,简直就是疯狂的区块链中的一股清流。那些对白皮书说的头头是道的人,白皮书真能代表团队技术实现度吗??最终还是需要技术!技术!需要代码实现!代码!

是一篇比特币源码阅读笔记。我们十几个小伙伴正在阅读比特币源码,我领到的模块是共识算法。参考资料《Mastering Bitcoin》,和一些论文。

比特币代表了数十年的密码学和分布式系统的巅峰之作,汇集了四个关键的创新点。比特币由这些构成:

1. 一个去中心化的点对点网络(比特币协议)

2. 一个公共的交易账簿(区块链)

3. 一个去中心化的数学的和确定性的货币发行(分布式挖矿)

4. 一个去中心化的交易验证系统(交易脚本)

(摘自《mastering bitcoin》)

>> 工具

用的是mac,第一次用mac看代码,源码阅读工具选定为:Sublime Text 2

validation.cpp, file size 199k, 4414 lines

查询函数调用关系,跨文件查找还是不如当年sourseinsight方便,有好工具,希望推荐给我,O(∩_∩)O 谢谢!

相关文件:src/validation.cpp,文件199k,4414行(大家伙呢...)

重点函数:ConnectBlock()

每个区块里包含着从上一个区块产生到目前这段时间内发生的所有交易,这些交易被依次添加到区块链中。把包含在区块内且被添加到区块链上的交易称为“确认”交易,交易经过“确认”之后,新的拥有者才能够花费他在交易中得到的比特币。

函数 AcceptToMemoryPool

|__ AcceptToMemoryPoolWithTime

|__ AcceptToMemoryPoolWorker  // 接受交易,存入交易池

函数 GetTransaction

函数 WriteBlockToDisk // 包含 类 CBlock and 类 CBlockIndex

函数 ReadBlockFromDisk

函数 GetBlockSubsidy

函数 CheckForkWarningConditions

函数 CheckForkWarningConditionsOnNewFork

函数 InvalidBlockFound

函数 UpdateCoins

|__ AddCoins(inputs, tx, nHeight); // 添加输出,当前区块高度

函数 GetSpendHeight // 当前添加区块高度为之前高度+1

函数 FlushStateToDisk //

重点函数 CheckInputs // 检查所有本次交易的输入是否都合法

重点函数 ConnectBlock 

|__ CheckBlock  用给定的index应用新增区块。如果校验失败,则新增区块失败

|__UpdateCoins

函数 ProcessNewBlock

|____ AcceptBlock

|____ CheckBlockIndex

类 class ConnectTrace

函数 UpdateTip

函数 DisconnectTip

函数 ConnectTip

函数 ActivateBestChainStep

|___ ConnectTip  连接新的区块

函数 ActivateBestChain

重点函数 GenerateCoinbaseCommitment

|___ UpdateUncommittedBlockStructures

相关文章

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 比特币源码研读(共识算法)之一(草稿)

    我加入的higer主持的一个区块链技术社区,简直就是疯狂的区块链中的一股清流。那些对白皮书说的头头是道的人,白皮书...

  • 比特币源码研读之一

    比特币源码研读之一——区块链研习社 《比特币源码研读班》 一看文件夹结构 和 github编译依赖,分析的依赖库 ...

  • 比特币源码研读之十一

    比特币源码研读系列已经发表了十篇了,通过这十篇源码研读系列让我对比特币源码及比特币运行原理有了进一步的理解,也让我...

  • 比特币源码研读之一

    作者:区块链研习比特币源码研读班 菜菜子 一、源码下载 本文比特币源码下载地址为:https://github.c...

  • 比特币源码研读之一

    本人15年毕业后一直从事Java电商平台的开发工作,2017年4月开始接触区块链技术,随后慢慢自学了《精通比特币》...

  • 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述

    共识算法 区块链中最重要的便是共识算法,比特币使用的是POW(Proof of Work,工作量证明),以太币使用...

  • 比特币源码分析——共识模块

    title: 比特币源码分析——共识模块date: 2021-11-02 18:39:52 前言 分析比特币系统的...

  • 区块链面试问题汇总(持续更新...)

    比特币 1.比特币原理 2.比特币不能运行智能合约,只是电子货币 3.比特币只有一个共识算法 pow 4比特币之间...

  • 工作量证明

    工作量证明是比特币的共识机制,共识算法是区块链中非常重要的一环,甚至说是核心,比特币的共识POW是什么呢? 工作量...

网友评论

      本文标题:比特币源码研读(共识算法)之一(草稿)

      本文链接:https://www.haomeiwen.com/subject/yepurxtx.html