区块链的区块结构

    交易数据被永久地记录在称为区块的文件中,它们(指区块)可以被看作是城市记录者的记录簿(其中记录了房地产所有权的变化)或者股票交易分类帐的各个独立的页面。随着时间的推移,区块被组织成一个线性序列(也称为区块链),矿工不断地将新的交易打包成新的区块并将这些区块添加到区块链的末端。随着区块在区块链中被埋得越来越深,它们变得越来越难以改变或移除,这就赋予了比特币交易的不可逆转性。

一个区块的区块结构如下所示:

数据项描述大小
Magic no(魔法数)值总是0xD9B4BEF94字节
Blocksize(区块大小)到区块结束的字节长度4字节
Blockheader(区块头)包含6个数据项80字节
Transaction counter(交易数量)正整数VI=VarInt1-9字节
Transactions(交易)交易列表(非空)<Transaction counter>-许多交易

每个区块都包括了一个被称为魔法数的常数、区块的大小、区块头、区块所包含的交易数量及部分或所有的近期新交易。在每个区块中,对整个区块链起决定作用的是区块头。

        除了其他内容外,每个区块还包含当前时间、部分或所有最近交易的记录,以及对它前一个区块的引用。它还包含一个难以解决的数学难题的答案——每个区块的答案是唯一的。没有得出正确的答案,新的块就不能提交到区块链网络上——“挖矿”的过程本质上是竞争成为下一个找到“解决”当前块的答案的过程。每个区块中的数学问题非常难解,但是一旦找到一个有效的解,区块链网络的其他区块就很容易确认这个解是正确的。对于任何给定的区块都有多个有效的解决方案—只需找到待解决区块的一个解决方案即可。

  另外由于每解决一个区块问题都有一份全新的比特币奖励,每个块还包含一个记录,用以记录哪些比特币地址或脚本有资格获得奖励。此条记录称为第一代交易,或coinbase交易,并且始终是每个块中出现的第一条交易记录。每个区块产生的比特币数量从50个开始,每21万个区块(大约4年)减半。

  比特币交易由发送方向区块链网络广播,然后由所有试图解决区块的节点收集交易记录,并将它们添加到他们正在解决的区块中。由于附加的交易费用(手续费),矿商有动力将交易纳入他们的区块。

  数学问题的难度(即挖矿的难度)由网络自动调整,比如它设置了一个目标是每小时平均解决6个块。每出2016个区块(大约两周的时间),所有比特币客户端都会将实际解决的区块问题数与这个目标进行比较,并根据变化的百分比修改目标。网络达成共识,并自动增加(或减少)生成区块的难度。

  由于每个区块都包含对前一个区块的引用,所以所有现存的区块聚集起来可以被称为形成了一条链。然而,链可能会有暂时的分裂——例如,如果两个矿工在同一时间为同一块找到两个不同的有效解决方案,而彼此不知道。点对点网络的设计是为了在短时间内解决这些分裂,结果便是只有一个分支的链存活下来。

  客户端接受“最长”链上的区块是有效的。整个区块链的“长度”指的是组合难度最大的那条链,而不是区块数最多的那条。这可以防止有人分叉链和创建大量的低难度块,并被网络接受为“最长的”。

  如前面所言,在每个区块中,对整个区块链起决定作用的是区块头。

区块头结构描述:

数据项目的更新时间大小(字节)
Version(版本)区块版本号更新软件后,它指定了一个新的版本号4
hashPrevBlock(前一区块的Hash)前一区块的256位Hash值新的区块进来时32
hashMerkleRoot Merkle(根节点Hash值)基于一个区块中所有交易的256位Hash值接受一个交易时32
Time(时间戳)从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳每几秒就更新4
Bits(当前目标的Hash值)压缩格式的当前目标Hash值当挖矿难度调整时4
Nonce(随机数)从0开始的32位随机数产生Hash时(每次产生Hash随机数时都要增长)4

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值