区块链:一种分布式数据库技术,通过维护数据库的链式结构,可以维持持续增长的、不可篡改的数据记录。
区块链技术的最早应用出现在比特币项目。
交易transaction:一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录。
区块block:记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识
链chain:由区块按照发生顺序串联而成,是整个账本状态变化的日志记录
把区块链看成状态机,每次交易视图改变一次状态。
每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。
链表由一个个“区块”串联,后面的区块记录前面区块的哈希值(pre hash)
新的数据要计入,必须放到一个新的区块中
这个块是否合法? 通过计算哈希值检验
任何节点都可以提议一个新的合法区块,但必须经过共识机制来对最终选择的区块达成一致。
以比特币为例,解释区块链工作过程(6步):
1. 比特币客户端发起一项交易,广播到比特币网络中并等待确认
2. 网络中的节点会将收到的等待确认的交易记录打包在一起,组成一个候选区块
3. 视图找到一个随机数nonce放到区块里,使得候选区块的Hash结果满足一定条件(小于某个值),这个nonce的查找需要一定时间去计算尝试。
4. 一旦节点算出来满足条件的nonce串,这个区块在格式上就被认为是“合法”,则可以尝试在网络中将它广播出去。
5. 其他节点收到候选区块,进行验证,发现确实符合约定条件,就承认这个区块是一个合法的区块,并添加到自己维护的区块链上。
6. 当大部分节点都将区块添加到自己维护的区块链结构上,该区块被网络接受,区块中所包括的交易也就得到确认。
找nonce:工作量证明(POW)