第二章 核心技术概览
定义:
1.交易--账本的一次操作
2.区块--记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识
3.链--由区块按照顺序串联而成,是整个账本状态变化的日志记录。
原理:
如果把区块链作为一个状态机,则每次交易就是试图改变一次交易,而每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。
分布式数据记录账本,这个账本只允许添加不允许删除,账本底层的基本结构是一个线性的链表,链表由一个个区块串联而成,后继区块记录前导区块的hash值,新的数据要加入,必须要放到新的区块中,而这个块是否合法,可以通过计算hash的方式快速检验出来。任意维护节点都可以提议一个新的合法区块,然而必须经过一定的共识机制来对最终选择区块达成一致。
比特币例子:
比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一起(此外还要包括前一个区块头部的hash值等信息),组成一个候选区块-->找到一个nonce串(随机串)放到区块中,使得候选区块的hash满足一定的条件。一旦节点算出来满足条件的nonce串,这个区块在格式上就认为“合法”了,就可以尝试在网络中将它广播出去。-->其他节点收到候选区,进行验证,发现确实符合约定条件,就承认这个区块是一个合法的新区块,并维护到自己的区块链中-->当大多数的节点都将区块添加到自己维护的区块链结构上时,该区块链被网络接收,区块中所包括的交易也就得到确认。
关键点:比特币的这种基于算力寻找nonce串的共识机制被称为工作量证明。采用的是尝试性暴力计算。尝试的次数越多,算出来的概率越大。
参与者不同分为:公有链、联盟链、私有链
使用目的和场景不同:货币链、产权链、众筹链、通用链
组成部分:网络层、共识层、智能合约、应用层、权限管理机制。
涉及的领域:分布式系统、存储、密码学、心理学、经济论、博弈论、控制论、网络协议等。
关键问题:
1.防止交易记录被篡改:
2.证明交易双方的身份:
3.保护交易双方的隐私:
传统方案:hash算法、加解密算法、数字证书和签名(盲签名和环签名)
但是量子计算等新技术的出现,RSA等目前商用的加密技术,在未来可能无法提供足够的安全性。
经典的技术难题:如何让大多数节点承认,同时这个信息是被确认的、不可推翻的。
公开匿名场景下:基于概率的算法
带权限管理的场景下:确定性算法
区块链不适用于高频交易的场景,如何提高区块链系统的交易吞吐量,降低交易的确认。
目前公开的区块链只能支持每秒7笔,而对于大额交易来说,交易确认时间为一小时左右,以太坊的区块链的吞吐量略高一些,但交易性能也被认为是较大的瓶颈。
方案是将高频的交易放到链外来,只用区块链记录最终交易信息。
核心是解决多方的互信问题。
可以使用以太坊、超级账本快速设计复杂的分布式账本应用。