Falix

通过查询网上的一些资料,简单整理了一些区块链的知识,旨在整理自己所学内容,梳理知识框架。

区块链的定义

简单来说,区块链是由节点参与的分布式数据库系统,最主要的的特点是不可更改,不可伪造。

从另一个角度来说,区块链是由一串使用密码学方法产生的数据块组成的。每一个区块都包含了上一个区块的哈希值,从创世区块开始连接到当前区块,形成块链。每一个区块都确保时间顺序在上一个区块之后产生,否则前一个区块的哈希值是未知的。当出现同时产生两个区块A和B时,根据中本聪提到的,每个节点先收到哪个就追随哪个(提前验证过),这个时候就会出现AB分叉,但是此时两个区块都是正确的。当一个新的区块C被广播出来,假如区块C认可区块A,A+C会成为最长的链,而节点始终都将最长的链视为正确链,并且持续工作和延续它,因此,收到区块C的广播后,之前认可区块B的节点就会认可C,并且下载区块A,将C作为自己追随的对象。

区块链也指代基于区块链结构实现分布式记账技术,包括分布式公式、隐私与安全保护、点对点通信技术、网络协议以及智能合约。

简单介绍一些区块链中常用的术语:

交易(Transaction):指一次对账本的操作,导致账本中状态的一次改变(如添加一条转账记录)。

区块(Block):记录一段时间内发生的交易和状态结果等,是对当前账本状态的一次共识。

链(chain):由区块按照当前发生顺序串联而成,是整个账本状态变化的日志记录。

如果把区块链系统看作一个状态机,而每次交易意味着一次状态的改变,生成的区块就是参与者对其中状态改变结果(交易导致的)的共识。


 

区块链的结构

 

 由上图可以看到一个区块由两个部分组成:区块头和区块体。其中区块头包括版本号、上一个区块哈希值、Merkle根节点、时间戳、难度值、随机数。而区块体存储交易数据。

大小 字段 描述
4字节 版本 版本号,用于跟踪软件/协议的更新
32字节 上一个区块哈希值 引用区块链中父区块的哈希值
32字节 Merkle根节点 该区块中交易的merkle树根的哈希值
4字节 时间戳 该区块产生的近似时间(精确到秒的Unix时间戳)
4字节 难度目标 该区块工作量证明算法的难度目标
4字节 Nonce 用于工作量证明算法的计数器

 

 

 

 

 

 

 

 

区块头组成如上表


区块链应用场景 

从计算特点上,区块链技术有三种典型的演化场景,数字货币、分布式应用引擎、带权限的分布式账本


 

按照节点的参与方式的不同,区块链技术可以分为三大类:公有链、联盟链、私有链

公有链,顾名思义,任何人都可以参与使用和维护,参与者多为匿名。典型的如比特币和以太坊区块链,信息是完全公开的。

如果进一步引入许可机制,可以实现私有链和联盟链两种类型。

私有链,由集中管理者进行管理限制,只有内部少数人可以使用,信息不公开。一般认为跟传统中心化记账系统的差异不明显。

联盟链则介于两者之间,由若干组织一起合作(如供应链机构或银行联盟等)维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,典型如超级账本项目。在架构上,现有大部分区块链在实现都至少包括了网络层、共识层、智能合约和应用层等分层结构,联盟链实现往还会引入额外的权限管理机制。

 

分类:

技术点:

相关文章: