比特币系统交易原理浅析
Posted qq_38743530
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币系统交易原理浅析相关的知识,希望对你有一定的参考价值。
本文中,所有H()标识hash函数
1.比特币技术点
- 非对称加密( ECDSA椭圆曲线加密算法)
- 哈希算法(sha-256)
- 链表
- 二叉树
2.比特币数据结构
比特币区块链就是如图所示的一个链表。每个区块分为两部分,区块头、区块体。要实际了解区块的具体信息,可访问 https://btc.tokenview.com/cn
2.1区块体
区块体是一颗二叉树,所有交易信息都保存在叶子节点(这些交易分为两种:1.铸币交易,可以凭空造指定数量比特币,没有转账人(转账地址),只有收款人(收款地址)。2.普通转账交易,转账人、收款人都有,需要校验转账人的账户是否有足够余额)。按照上图所示,一级一级向上求hash值,最终生成一颗merkle tree(可信树)。树的指针为子节点的hash值。
2.2区块头
区块头是一些区块的元信息,包括:
- hash(指向前一个区块的指针哈希指针,是前一个区块的hash值,而不是普通链表中的内存地址,至于如何通过前一个区块的hash值寻址到前一个区块,可以看后续内容)
- version(协议版本号)
- merkle root hash(可信树的根哈希,可信树就是区块体,也就是区块体的根节点的哈希值)、区块产生时间
- nBits(挖矿采用的目标阈值,用来确定挖矿难度,根据算法调节,不可以随意更改,以保证区块的平均出块时间稳定在10分钟,后续具体介绍)
- Nonce(挖矿需要寻找的随机数)
- 其它数据
3.BTC挖矿的实质
挖矿本质上就是不断调整block header中的nonce值,使整个block header的哈希值小于等于给定的目标阈值(也就是nBits编码前的值 target)。target越小,挖矿难度越大。
比特币系统采用的哈希算法为SHA-256,所以hash值的结果有2^256种可能。target是256位二进制数,target越小,前面的0越多(如 0000000000001···110101),所以调节nonce值使得block header的哈希值得到的目标哈希值也要前面有很多0。(随着难度的提升,某些情况下,即使尝试nonce所有可能值,有2^32种可能,都无法使得block header的哈希值小于等于target,这时情况下怎么办?后续会有方案。)
4.BTC挖矿难度计算
比特币的平均出块时间稳定在10分钟,这是怎么实现的呢?
1.在BTC协议中规定,每隔2016个区块需要调整一次难度,也就是target值,根据10min产生一个新区块可以得到,大概需要14天的时间。
2.target计算方法:
target=target*actualTime/expectTime
actualTime:最近2016个区块实际花费时间,累加
expectTime:2016个区块期望花费时间,固定值 2016*10分钟
5.交易
上述区块体中,每一个叶子节点,都是一笔可信的交易。此小结主要介绍比特币系统交易的数据结构。
图1:区块头截图,截图来自网址: https://btc.tokenview.com/en/block/716888
图2:区块交易列表截图,截图来自网址: https://btc.tokenview.com/en/block/716888
如图2所示,第一笔为.铸币交易,后续都是普通转账交易。
图3:.铸币交易详细信息
如图3.铸币交易,c19ed29106bba7b7c11ab44224446a46fdb4f498a7d3ec2f6b4b196e15241b8f是交易的哈希值。Input是交易的输入地址列表,因为是铸币交易不需要输入地址(付款方),只需要输出地址(收款方),所以此处可以随意写任何字符串。
以上是关于比特币系统交易原理浅析的主要内容,如果未能解决你的问题,请参考以下文章