chainparams.cpp

1. 区块hash值计算

uint256 CBlockHeader::GetHash() const
{return SerializeHash(*this);
}/** Compute the 256-bit hash of an object's serialization. */
template<typename T>
uint256 SerializeHash(const T& obj, int nType=SER_GETHASH,int nVersion=PROTOCOL_VERSION)
{CHashWriter ss(nType, nVersion);ss << obj;return ss.GetHash();
}

2. 创建genesis区块

将 “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” 写入到coinbase交易的附加数据中.

static CBlock CreateCustomGenesisBlock(uint32_t nTime,
uint32_t nNonce, uint32_t nBits,
int32_t nVersion, const CAmount& genesisReward)
{const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";const CScript genesisOutputScript = CScript() << ParseHex(STR_OUTPUT_SCRIPT_GENESIS)<< OP_CHECKSIG;CMutableTransaction txNew;txNew.nVersion = 1;txNew.vin.resize(1);txNew.vout.resize(1);txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << std::vector<unsigned char>((const unsigned char*)pszTimestamp,(const unsigned char*)pszTimestamp + strlen(pszTimestamp));txNew.vout[0].nValue = genesisReward;txNew.vout[0].scriptPubKey = genesisOutputScript;CBlock genesis;genesis.nTime    = nTime;genesis.nBits    = nBits;genesis.nNonce   = nNonce;genesis.nVersion = nVersion;genesis.vtx.push_back(MakeTransactionRef(std::move(txNew)));genesis.hashPrevBlock.SetNull();genesis.hashMerkleRoot = BlockMerkleRoot(genesis);return genesis;
}

Bitcoin 中的挖矿算法(4) 产生genesis区块相关推荐

  1. Bitcoin 中的挖矿算法(1) 难度值前奏

    1. 什么是难度值? 假设有一个集合 [1,100],我们的目标是随机生成一个数字其值小于 50.需要尝试的次数平均为 2 次. 下面提高难度,假设目标是小于 20, 那么尝试成功为 20/100 = ...

  2. Bitcoin 中的挖矿算法(3) 挖矿算法代码说明

    1. 步骤说明: step1. createNewBlock生成一个新块 step2. 轮循nounce,计算hash以符合难度值 step2.1 先循环增加CoinBase交易的Script 的no ...

  3. Bitcoin 中的挖矿算法(2) 难度值说明

    1. Bitcoin的难度值 定义创世区块中的 target, 其 difficulty = 1既是规定一个256位的整数0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF ...

  4. Bitcoin 中的挖矿算法(6) 难度调整

    1. 基本概念 难度调整方法: difficulty_new = difficulty * ( 2016 ActualTimespan / 2016 targetTimespan )新的难度目标值 = ...

  5. Bitcoin 中的挖矿算法(5) 难度值举例说明

    1. 区块277,316的nBits的值为 0x1903a30c(10进制为419,668,748) =>0x19为指数,而 0x03a30c为系数target = 0x03a30c * 2^( ...

  6. 区块链系列教程之:比特币中的挖矿

    文章目录 简介 比特币的节点构造 挖矿 挖矿节点 创币交易 矿池收入分配 挖矿方向 算力浪费 算力调整 总结 简介 我们知道比特币就是挖矿产生的,那么在比特币网络中,挖矿有什么特点呢?怎么分配挖矿收入 ...

  7. 对“初链”混合共识、双链结构和抗ASIC挖矿算法的详解

    前段时间写了篇博客说了说自己对"初链"白皮书和黄皮书的解读,其中一部分涉及到对"初链"混合共识和双链技术的解读,由于是从说明文档中获取的信息,难免会有误解,虽然 ...

  8. 肖臻公开课(七)——比特币中的挖矿难度

    本笔记对应北京大学肖臻老师<区块链技术与应用>公开课第七课. 0.前言 在本节中,肖老师介绍了比特币的挖矿难度的调整算法. 1.定义 在比特币的挖矿算法中,需要找出一个"恰当&q ...

  9. 深度学习中的优化算法之BGD

    之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD.SGD.MBGD,它们的 ...

最新文章

  1. 【iOS】sqlite3的使用(増删改查)
  2. 盛大游戏卷入“沙巴克”商标之争
  3. python自动化—web页面操作之窗口切换
  4. 杂项相关工具的使用方法(边刷题边更新...)
  5. 《Cracking the Coding Interview》——第16章:线程与锁——题目3
  6. 北京大学 微软:预训练模型(Transformer)中的知识神经元
  7. 大数据_Flink_数据处理_命令行提交Job---Flink工作笔记0014
  8. RpcException:No provider available for remote service异常
  9. webgl与opengl技术资讯
  10. centos安装ab测试工具
  11. FastDFS分布式架构,详细安装步骤,测试;Nginx中配置FastDFS,并提供优化,下载方法,楼主已测
  12. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用
  13. 通过路由远程计算机重启,路由器如何重启 三种重启路由器的方法【步骤教程】...
  14. MATLAB中怎么表示对数函数及e
  15. Excel 替换 回车
  16. 时间序列之holt-winters(三次指数平滑)
  17. openid无效什么意思_“洋河年份原浆”商标被驳回,为什么古井贡酒坐不住了?...
  18. 线性回归梯度下降py实现
  19. iOS开发icon图标设置
  20. corners边框_Js实现的6种圆角边框样式

热门文章

  1. select/poll/epoll 与 /dev/poll
  2. 磁盘调度算法寻道问题
  3. Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead
  4. 微擎html注释,微擎界面设计规范
  5. java 广义表_数据结构:广义表的实现(Java)
  6. 数据中心外包面临法律考验
  7. 用php写shell,php与shell实现多线程的简单例子
  8. 成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格
  9. DL之RBM:(sklearn自带数据集为1797个样本*64个特征+5倍数据集)深度学习之BRBM模型学习+LR进行分类实现手写数字图识别
  10. 虚拟机 centos 6.5 扩展根目录分区大小