比特币的发行和挖矿

概述

挖矿的用途

1. 抢夺区块打包权
2. 验证交易事务
3. 奖励发行新币
4. 广播新区块

大家约定一个规则,共同按照这个规则竞争,竞争成功谁就有数据打包权,打包完成后广播给别人,别人验证无问题就存入自己的数据文件中。

规则------->工作量证明

难度值: 一个门槛
        规定一个256位的证书,作为难度为1的目标值:
        X00000000FFFFFFF.......
        当时全网的算力,大约需要10分钟左右的运算能得到一个符合这个难度为1的值。
    0号区块的难度信息
        "nonce": 2083236893
        "bits": "1d00ffff"
        "difficulty": 1
    noce:一个随机数,挖矿计算得到
    bits: 存储难度的十六进制目标值,存储在区块头部
        源码中,用4字节,32位存储256位长度的难度目标值(压缩过)
    压缩方法:
        1. 4个字节的高位字节用来存储难度值得有效字节数
            有效字节数: 从第一个不全为0的字节开始的部分。
            约定:如果难度值有效位的最高位为1,则需要在前面补上0x00
            举例:难度为1的目标值,X00000000FFFFFFF.......(十六进制计数,没一位两个字节,所以前8个0为4字节),有四个字节长度为0,减掉这些0的长度共计32bit,剩余256-32=224,也就是28个字节,因为F转换为2进制为1111,第一位为1,所以补上0x00,因此有效位总计29个字节,29的十六进制为1D
        2. 另外3个字节中存储的是目标值有效位的最高3个字节,此时目标 值有效位前面已经加上2个0,因此最高3个字节为0x00FFFF,合起来压缩后的值就是0x1D00FFFF
    此4个字节前2位通常为幂或指数,后6位为系数:目标值 = 系数*2^(8*(指数-3))次方
        难度值:差不多两周调整一下新的难度值,算力在增加。为了维持差不多10分钟出一个区块,难度要跟随算力变化而调整。
        难度值会越来越大,目标值会越来越小,目标值越小越难挖矿。
    新的难度值 = 当前难度值*(最近的2016个区块的实际出块时间/2016分钟)

挖矿计算

1.挖矿的计算公式:
    SHA256(
        SHA256(version + prev_hash + markle_root + ntime + nbits + nonce)
    ) < TARGET
    TARGET: 难度目标值,如果计算出来的值小于这个值,就算挖矿成功
    各名词解释:
        version : 区块的版本号
        prev_hash: 前一个区块的哈希值
        merkle_root: 准备打包的交易事务哈希树,也就是梅克尔根
        ntime: 区块时间戳
        nbits: 当前难度
        noce: 随机数
    以上为去块头组成部分。

挖矿

  1. 概念
    挖矿就是重复计算区块头的哈希值,不断修改该参数,直到与难度目标值匹配的一个过程,多个节点同时匹配,谁的链最长为准。
  2. cainbase交易
    挖矿奖励作为一条交易事务包含在区块的交易事务中的,相当于系统给矿工转了一笔比特币。一般位于区块的第一条。
  3. 挖矿奖励规则
    2019年1月创建出第一个区块,每21万区块产量减半(大约4年),到2140年,所有比特币(20999999.98)将全部发行完毕。
  4. 比特币钱包
    比特币地址生成过程:

    核心钱包,轻钱包
    核心钱包: 完整交易验证,是否有足够余额,是否双花。
    跟核心客户端在一起,可以创建钱包地址,收发比特币,加密钱包,备份钱包
  5. SPV钱包
    大致过程:
    1.下载完整区块头数据,区块头中包含区块的梅克尔根------->SPV方式靠它实现
    2.算出待验证支付的交易事务哈希值taHash
    3.找到taHash所在的区块,验证一下所有区块的区块头是否包含在账本数据中
    4.获得所在区块中计算梅克尔根所需要的哈希值
    5.计算出梅克尔根
    6.若计算结果与所在区块的梅克尔根相等,则支付交易是存在的
    7.根据该区块所处的高度位置,还可以确定该交易得到了多少个确认
    注:仅能看到当前支付的支付交易是否被发起而已,并不能保证这笔交易事务最终进入到主链中,需要等待核心节点进行全面的交易验证,并且矿工打包到区块后进入主链。
  6. 管理多个私钥的钱包技术(分层确定性钱包(HD Wallets))
    特点:
    1. 用一个随机数来生根私钥,这与任何一个比特币钱包生成私钥没区别
    2. 用一个确定的,不可逆的算法,基于根私钥生成任意数量的子私钥
  7. 未花费事务输出,UTXO,(Unspent Transaction Output)

a.比特币的交易不是通过账户的增减来实现的,而是一笔笔关联的输入/输出交易事务
b.花费"输入",产生"输出",这个输出就是"未花费过的交易输出",也就是UTXO.每一笔交易事务都由一个唯一的编号,称交易事务ID,通过哈希计算而来,引用"输出",主要提供交易事务id和所处"输出"猎豹中的序号就可以了。
c.由于没有账户的概念,因此当"输入"部分的金额大于所需"输出",必须给自己找零,这个找零也是作为交易的一部分包含在"输出中"

证明哪一条UTXO是属于谁
1.输入脚本,2.输出脚本。也叫锁定脚本和解锁脚本。
1.用私钥签名解锁自己的某一条UTXO(也是之前的输出)
2.对方公钥锁定新的"输出",成功后,这笔新的"输出"就成了对方的UTXO通过输入,输出脚本实现转账。

原文地址:http://blog.51cto.com/xiaofengfeng/2093955

时间: 2024-10-10 18:09:11

比特币的发行和挖矿的相关文章

如果没有足够了解比特币就别去挖矿

深入学习之前不要贸然挖矿 哈耶克在<货币的非国家化>中描述过现在数字货币的场景:应当允许多种货币共同竞争,不同的铸币者会竞相让自己的货币拥有最优良属性,他们的激励就是为了获得铸币收入.比特币做为一种等价物,抑或大宗商品,矿业耗损了大量的电力资源,硬件.软件工程师.人力物力的投入都是巨大的,为了维护底层区块链技术的稳定,矿工们做了大量的区块打包工作.了解比特币矿业? 是,在矿业发展的这几年,比特币挖矿带来的高额利润和回报是商人逐利的天性.但最初呢?许多创始人也经常讲,创业,莫要失掉本心.今天我就

比特币代码分析5 挖矿代码分析

本文描述矿工处理线程,通过本文学习,可以了解矿工挖矿的大致流程.主要包含挖矿费用交易的产生.当前交易池的打包处理,工作量证明等相关内容.流程图(参考网络)如下所示:. 矿工处理函数1.void ThreadBitcoinMiner(void* parg)2.{ vfThreadRunning[3] = true; CheckForShutdown(3); try { bool fRet = BitcoinMiner(); printf("BitcoinMiner returned %s\n\n\

对比特币挖矿木马分析研究和清除

本文作者:simeon 来源:i春秋社区 一.什么是比特币系统 有关比特币的专业知识讲解的内容资料很多,我这里只是简单通俗的记录下个人的学习和对他的理解.大家往往看到比特币首先想问的它到底是什么,是不是钱.可以肯定的回答大家,他是钱,但是他不只是个体,他其实是一个虚拟的电子货币支付系统,是的是一个系统. 所以我这里说了这么多的废话,就是希望大家以后看到比特币,我们不是把它看成是一个硬币,而是我们一看到比特币,我就立马想到的是它其实是一个系统(电子币虚拟支付系统).只要大家能这样想,后面讲的内容大

比特币如何挖矿(挖矿原理)-工作量证明

在区块链记账原理 一篇,我们了解到记账是把交易记录.交易时间.账本序号.上一个Hash值等信息计算Hash打包的过程.我们知道所有的计算和存贮是需要消耗计算机资源的,既然要付出成本,那节点为什么还要参与记账呢?在中本聪(比特币之父)的设计里,完成记账的节点可以获得系统给与的一定数量的比特币奖励,这个奖励的过程也就是比特币的发行过程,因此大家形象的把记账称为"挖矿",本文将详细讨论这个过程. 记账工作 由于记账是有奖励的,每次记账都可以给自己凭空增加一定数量的个比特币(当前是12.5比特

《区块链100问》第27集:比特币挖矿机进化史

自从比特币诞生以来,比特币挖矿经历了以下四个阶段: CPU挖矿-GPU挖矿-专业矿机挖矿-矿池挖矿. 2009年1月3日,比特币创始人中本聪用电脑CPU挖出了第一批比特币. 随着大家对比特币的认可,挖矿的人越来越多,全网算力不断上升,挖矿难度逐渐上涨. 2010年9月18日第一个显卡挖矿软件发布.一张显卡相当于几十个CPU,挖矿能力得到明显提升. 之后又有人发明了基于挖矿芯片的专业挖矿设备,即矿机.目前行业领先的蚂蚁矿机装有将近200张BM1387芯片,相当于3万多张GPU的算力. 随着更多矿机

比特币发行机制

比特币采用的共识机制为工作量证明(POW),这也是第一个应用于区块链的共识机制.比特币区块链大约每10分钟生成一个新区块,同时生成新区块的节点获得比特币奖励,这也 是比特币的发行过程.系统给予生成新区块的奖励每4年减半,最早为50个比特币/区块,目前为25个比特币/区块,在2016年7月即将再次减半为12.5个比特币/区块.通过这种方式 ,比特币的总量会在2140年达到2100万个的上限[1].目前超过1700万个比特币已经产出. 原文地址:https://www.cnblogs.com/quk

白话比特币原理解密

一.比特币的背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨.共同进步. 二.什么是比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构. 在比特币的世界里,如果你想拥有比

解密比特币的那些核心技术原理

白话比特币原理解密 1 背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨.共同进步. 2 比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构. 在比特币的世界里,如果你想

价值3万的极比特币UBT,究竟好在哪里?

据Autonomous Research金融科技策略全球主管Lex Sololin统计和CoinDesk数据显示,上万名到百万名开发者和"服务器农场"都可以参与到分叉币的挖掘和支持系统中,核心开发者和矿工可以等待新币增值并获利,支持老旧矿机或仅GPU显卡挖矿的分叉币,可以有效推动个体矿工"再就业"等.比特币价格破万,比特币家族也越来越兴盛.投资者都在寻找谁是最有潜力成为第二个比特币的分叉币.对于投资者而言,"慧眼识币"非常重要.而UltraBit