区块链之区块结构-学习笔记

亡梦爱人 提交于 2020-01-19 02:33:14

目录

一、区块结构

二、区块头

三、区块体

四、交易类型

(1)生产交易

(2)通用地址交易

(3)合成地址交易


一、区块结构

        数据区块是区块链的基本元素。比特币系统的每个数据区块主要由区块头(Block Header)和区块体(Block Body)两部分组成,其中区块头记录当前区块的元数据,而区块体则存储封装到该区块的实际交易数据。

比特币系统的区块结构
数据项 数据说明 大小
Block Size 区块大小 4字节
Block Header 区块头 80字节
Transaction Counter 交易数量 1~9字节
Transactions 交易列表 可变

 

下图是:比特币系统的区块结构图

二、区块头

比特币系统区块头的数据项及说明:

比特币系统区块头的数据项及说明
数据项 说明 更新时间 大小
Version 版本号,表示本区块遵守的验证规则 版本升级时 4字节
Pre-block 引用区块链中夫区块的哈希值 创建一个新区块时 32字节
Bits 压缩格式的当前目标哈希值 当挖矿难度调整时 4字节
Nonce 32位数字(从0开始) 共识过程中实时更新 4字节
Kerkle-root 基于一个区块中所有交易的哈希值 交易列表发生变化时 32字节
Timestamp 该区块产生的近似时间,精确到秒的Unix时间戳 构建区块时 4字节

三、区块体

数据项 数据描述 大小
Version No 版本号,目前为1,表示这笔交易参照的规则 4字节
In-counter 输入数量,正整数VI=VarInt 1~9字节
list of inputs 输入列表,每区块的第一个交易称为“Coinbase”交易 <in-counter>许多输入
Out-counter 输出数量,正整数VI=VarInt 1~9字节
list of outputs 输出列表,每区块第一个交易的输出是给矿工的奖励 <out-counter>许多输出
lock_time

锁定时间,如果非0并且序号小于0XFFFFFFFF,则是指块序号;

如果交易已经终止,则是指时间戳

 

        交易主要可以分成三部分:元数据、一系列的输入和一系列的输出。除了第一笔Coinbase交易是矿工的挖矿收入之外,其他每一笔交易都有一个或多个输入,以及一个或多个输出。Coinbase交易没有输入,只有输出。

(1)元数据

        主要存储一些内部处理的信息,包含版本号、这笔交易的规模,输入的数量、输出的数量、交易锁定时间,以及作为该交易独一无二的ID的哈希值。其他区块可以通过哈希指针指向这个ID。

(2)交易输入

        每笔交易的所有输入排成一个序列,每个输入的格式相同,当交易被序列化以便在网络上传播时,输入将被编码为字节流。

数据项 描述 大小
Previous Transaction hash 指向交易包含的未花费的UTXO的哈希指针 32字节
Previous Txout-index 未花费的UTXO的索引号,第一个是0 4bytes
Txin-script length 解锁脚本长度 1~9字节(可变整数)
Txin-script/scriptSig 一个达到UTXO锁定脚本中的条件的脚本 变长
sequence_no 目前未被使用的交易替换功能,通常设成0xFFFFFFFF 4字节

(3)交易输出

        每个输出的内容分成两部分,一部分是特定数量的比特币,以“聪”为单位(最小的比特币单位),另一部分是锁定脚本,即提出支付输出所必须满足的条件以“锁住”这笔总额。

数据项 描述 大小
Value 用“聪”表示的比特币值 8字节
Txout-script length 锁定脚本长度 1~9字节(可变整数)
Txout-script/scriptPubKey 定义了支付输出所需条件的脚本 变长

四、交易类型

(1)生产交易

        每个区块的第一笔交易都是生产新币的交易。该交易没有输入地址,仅有一个输出地址,其作用是将系统新生成的加密货币奖励给创造当前区块的矿工。

(2)通用地址交易

        这是区块链系统中最常见的交易,由N个输入和M个输出构成,其中N>0,M>0。根据N和M的不同取值,可以进一步细分为一对一转账交易、一对多分散交易、多对一聚合交易和多对多转账交易。

(3)合成地址交易

        合成地址交易是一类特殊交易,其接收地址不是通常意义的地址,而是一个以3开头的合成地址。合成地址一般是M of N的多重签名地址,其中1<=N<=3、1<=M<=N,通常选择N=3。合成地址的交易构造、签名和发送过程与普通交易类似,但其地址创建过程需要三对公钥和私钥,其中公钥用于创建地址、私钥用于签名。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!