主页 > imtoken钱包官网版最新 > 比特币发行与挖矿

比特币发行与挖矿

imtoken钱包官网版最新 2023-06-03 05:53:54

概述挖矿的目的

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: 随机数 以上为去块头组成部分。

采矿理念

挖矿是一个反复计算区块头的哈希值,不断修改参数,直到匹配难度目标值的过程。 多个节点同时匹配,以链条最长者为准。 交易

比特币挖矿软件_比特币挖矿软件下载_比特币挖矿核心

挖矿奖励作为交易包含在大宗交易中,相当于系统转给矿工一笔比特币。 一般位于第一个区块。挖矿奖励规则

第一个区块创建于 2019 年 1 月,每 210,000 个区块(约 4 年)产量减半。 到2140年,将发行所有比特币(20999999.98)比特币钱包

比特币地址生成过程:

比特币的发行和挖矿

核心钱包比特币挖矿核心,轻钱包

核心钱包:完成交易验证,余额是否充足,是否双花。

与核心客户端一起,您可以创建钱包地址,发送和接收比特币,加密钱包,备份钱包 SPV 钱包

一般流程:

1.下载完整的区块头数据,区块头包含区块的Merkle根------>SPV方法依赖于它

2.计算待验证支付的交易哈希值taHash

3.找到taHash所在的区块,验证所有区块的区块头是否包含在账本数据中

比特币挖矿核心_比特币挖矿软件下载_比特币挖矿软件

4. 获取区块中计算Merkle根所需的哈希值

5.计算默克尔根

6.如果计算结果等于区块的Merkle根,则支付交易存在

7. 根据区块高度,也可以判断交易收到了多少个确认

注意:您只能看到当前支付交易是否已经发起,并不能保证这笔交易最终会进入主链。 需要等待核心节点对交易进行全面验证,矿工打包成块后进入主链。 管理多个私钥的钱包技术(Hierarchical Deterministic Wallets (HD Wallets))

特点:使用随机数对私钥求根,这与为任何比特币钱包生成私钥没有区别。 使用确定的、不可逆的算法,根据根私钥生成任意数量的子私钥。 未花费的交易输出,UTXO,(Unspent Transaction Output)

比特币的发行和挖矿

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

证明哪个UTXO属于谁 1. 输入脚本比特币挖矿核心, 2. 输出脚本。 也称为锁定脚本和解锁脚本。 1、用私钥签名解锁自己的一个UTXO(也是之前的输出) 2、对方的公钥锁定新的“输出”。 成功后,这个新的“输出”成为对方的UTXO,通过输入输出脚本实现转账。