区块链本质上是一个去中心化的数据库,是一连串使用密码学方法产生相关联的数据块,每一个数据块中包含了一段时间内全网交易的信息,用于验证其信息的有效性和生成下一个区块。所以说区块链是以去中心化和去信任化的方式,来集体维护一个可靠数据库的技术方案。通俗地说,其实区块链可以称为一个全民记账的技术,或者说可以理解为一种分布式总账技术。
区块链的基本原理包括三个基本概念:交易、区块和链
交易指的是一次对账本的操作。导致账本状态的一次改变,如添加一条转账记录;区块指记录一段时间内发生的所有交易和状态结果,是对当前账本状态的共识;链是由区块按照发生的顺序串联而成,是整个账本状态变化的日志记录。
所谓区块是构成区块链的基本单元,他由包含原数据的区块头和包含交易数据的区块主体构成。如果把区块链作为一个运作状态的机器,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。
在实现上,前提假设存在一个分布式的数据记录账本,这个账本只允许添加、不允许删除。账本底层的基本架构是一个线性的链表,这也是其名字“区块链”的来源。链表有一个个“区块”串联而成,后继区块记录前导区块的哈希值(pre hash)。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过计算哈希值的方式快速检验出来。任意维护节点都可以提议一个新的合法区块,然而经过一定的共识机制来对最终选择的区块达成一致。
区块链的优势
01 去中心化
由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。
02 去信任
由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任,对信用的累积非常有帮助。
03 开放性
除交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,整个系统信息高度透明。
04 自治性
区块链采用基于协商一致的规范和协议,使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。
05 信息不可篡改
一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
具体以比特币为例来看如何使用了区块链技术?客户端发起一项交易后,会广播到网络中并等待确认。网络中的节点会将一些等待确认的交易记录打包在一起(此外还要包括此前区块的哈希值等信息),组成一个候选区块。然后,试图找到一个 nonce 串放到区块里,使得候选区块的 hash 结果满足一定条件(比如小于某个值)。一旦算出来这个区块在格式上就合法了,就可以进行全网广播。大家拿到提案区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,被添加到链上。当然,在实现上还会有很多的细节。