Bitcoin 中的挖矿算法(4) 产生genesis区块
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区块相关推荐
- Bitcoin 中的挖矿算法(1) 难度值前奏
1. 什么是难度值? 假设有一个集合 [1,100],我们的目标是随机生成一个数字其值小于 50.需要尝试的次数平均为 2 次. 下面提高难度,假设目标是小于 20, 那么尝试成功为 20/100 = ...
- Bitcoin 中的挖矿算法(3) 挖矿算法代码说明
1. 步骤说明: step1. createNewBlock生成一个新块 step2. 轮循nounce,计算hash以符合难度值 step2.1 先循环增加CoinBase交易的Script 的no ...
- Bitcoin 中的挖矿算法(2) 难度值说明
1. Bitcoin的难度值 定义创世区块中的 target, 其 difficulty = 1既是规定一个256位的整数0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF ...
- Bitcoin 中的挖矿算法(6) 难度调整
1. 基本概念 难度调整方法: difficulty_new = difficulty * ( 2016 ActualTimespan / 2016 targetTimespan )新的难度目标值 = ...
- Bitcoin 中的挖矿算法(5) 难度值举例说明
1. 区块277,316的nBits的值为 0x1903a30c(10进制为419,668,748) =>0x19为指数,而 0x03a30c为系数target = 0x03a30c * 2^( ...
- 区块链系列教程之:比特币中的挖矿
文章目录 简介 比特币的节点构造 挖矿 挖矿节点 创币交易 矿池收入分配 挖矿方向 算力浪费 算力调整 总结 简介 我们知道比特币就是挖矿产生的,那么在比特币网络中,挖矿有什么特点呢?怎么分配挖矿收入 ...
- 对“初链”混合共识、双链结构和抗ASIC挖矿算法的详解
前段时间写了篇博客说了说自己对"初链"白皮书和黄皮书的解读,其中一部分涉及到对"初链"混合共识和双链技术的解读,由于是从说明文档中获取的信息,难免会有误解,虽然 ...
- 肖臻公开课(七)——比特币中的挖矿难度
本笔记对应北京大学肖臻老师<区块链技术与应用>公开课第七课. 0.前言 在本节中,肖老师介绍了比特币的挖矿难度的调整算法. 1.定义 在比特币的挖矿算法中,需要找出一个"恰当&q ...
- 深度学习中的优化算法之BGD
之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD.SGD.MBGD,它们的 ...
最新文章
- 【iOS】sqlite3的使用(増删改查)
- 盛大游戏卷入“沙巴克”商标之争
- python自动化—web页面操作之窗口切换
- 杂项相关工具的使用方法(边刷题边更新...)
- 《Cracking the Coding Interview》——第16章:线程与锁——题目3
- 北京大学 微软:预训练模型(Transformer)中的知识神经元
- 大数据_Flink_数据处理_命令行提交Job---Flink工作笔记0014
- RpcException:No provider available for remote service异常
- webgl与opengl技术资讯
- centos安装ab测试工具
- FastDFS分布式架构,详细安装步骤,测试;Nginx中配置FastDFS,并提供优化,下载方法,楼主已测
- Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用
- 通过路由远程计算机重启,路由器如何重启 三种重启路由器的方法【步骤教程】...
- MATLAB中怎么表示对数函数及e
- Excel 替换 回车
- 时间序列之holt-winters(三次指数平滑)
- openid无效什么意思_“洋河年份原浆”商标被驳回,为什么古井贡酒坐不住了?...
- 线性回归梯度下降py实现
- iOS开发icon图标设置
- corners边框_Js实现的6种圆角边框样式
热门文章
- select/poll/epoll 与 /dev/poll
- 磁盘调度算法寻道问题
- Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead
- 微擎html注释,微擎界面设计规范
- java 广义表_数据结构:广义表的实现(Java)
- 数据中心外包面临法律考验
- 用php写shell,php与shell实现多线程的简单例子
- 成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格
- DL之RBM:(sklearn自带数据集为1797个样本*64个特征+5倍数据集)深度学习之BRBM模型学习+LR进行分类实现手写数字图识别
- 虚拟机 centos 6.5 扩展根目录分区大小