定义:一种记录比特币交易账目历史的数据结构,也可以说是一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长、不可篡改的数据记录。
主要组成部分:
交易—— 一次对账本的操作,对账本状态的一次改变。
区块—— 记录一段时间内所有交易和状态结果,是对当前账本状态的一次共识。
链—— 由区块链按发生顺序串联而成,是整个账本状态变化的日志记录。
每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果的确认。
新的交易信息要加入,需要放到一个新的区块中,而这个块的合法性可以通过计算哈希值的方式检验。
区块链工作的过程:
某个区块链客户端发起一项交易,广播到比特币网络中等待确认,网络中的节点(计算计算节点)会将一些收到的等待确认的交易记录打包到一个块里,然后试图找到一个nonce串(随机串)放到区块里,使得这个区块的哈希结果满足一定条件(比如小于某个值)。一旦某个节点算出来满足条件的nonce串,这个区块就被认为合法了,可以在网络上把它广播出去,其他节点收到后进行验证,算出其确实符合条件就承认是合法新区块,并添加到自己维护的区块链上。当大部分节点都将区块添加到自己维护的区块链结构上时,该区块被网络接受。
基于算力寻找nonce穿的共识机制称为 工作量证明 pow,只能暴力计算,没有啥可以作弊的捷径,因此被某少数恶意节点控制的概率很小。通过对限制条件的调整也可以控制新区块产生的速度。
这个计算新区块的过程就是 挖矿。
大部分节点勾结在一起想搞事的成本比收益都多 ,因此大概率不会有人这么干。
分类:
公有链,联盟链,私有链
pow虽然可以基本保证了不被恶意节点操纵,但这种算法的主要问题在于效率低下,因为需要等待大部分节点的确认。
在带权限管理的场景下,引入拜占庭算法等可以解决快速确认的问题。
区块链系统的处理性能取决于单个节点的处理能力,在公链中,存在大量低性能节点,导致延迟整个网络性能。要解决这个问题,根本上是放松对每个节点都必须参与完整处理的限制,即,不用每个节点都必须参与整个过程。(已经应用在超级账本中)