一.区块链思想的诞生
区块链思想最早出现在比特币开源项目中,其核心支撑结构使用的就是区块链技术。2008年10月31日,一位化名为中本聪的人在metzdowd密码学邮件列表中提出了比特币的设计白皮书《比特币:一种点对点的电子现金系统》,在2009年公开了最初的实现代码。并且首个比特币于2009年1月3日18时15分05秒生成。比特币网络自2009年上线以来,在无人管理的情况下,已经在全球范围内7x24小时运行超过8年时间,成功处理了几百万笔交易,更为难得的是,比特币网络从未出现过重大的系统故障。比特币网络目前由数千个核心节点参与构成,不需要任何中心化的支持机构参与,纯粹靠分布式机制支持了稳定上升的交易量。
比特币网络中,货币的发行是通过比特币协议来规定的。货币总量受到控制,发行速度随时间自动进行调整。因为总量一定,单个的比特币价值会随着越来越多的人认可从而水涨船高。发行速度的自动调整避免了可能出现通货膨胀或通货紧缩的情况。
区块链技术现在已经脱离比特币网络自身,在金融、贸易、农业、征信、物联网等领域也慢慢崭露头角。最近有阿里已经在全球供应链方面,上线了区块链跟踪应用,可以追踪产品的从生产、包装、运输、消费等各环节的时间和地点。
二.区块链的定义
大家公认的最早关于区块链的描述性文献是中本聪写的《比特币:一种点对点的电子现金系统》,但是其中未给出定义和概念,只是指出区块链是用来记录比特币交易账目历史的数据结构。
维基百科上的定义:将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的、不可篡改的数据记录。
百度百科上的定义:区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
三.区块链的原理
区块链包括三个基本概念:
(1)交易:一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
(2)区块:记录一段时间内发生的所有交易和状态结构,是对当前账本状态的一次共识;
(3)链:由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。
在实现上,首先假设存在一个分布式的数据记录账本,这个账本只允许添加、不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个区块串联组成,后续区块记录前导区块的哈希值。新的数据要加入,必须放到一个新的区块中。而这个块(包括块里的交易信息)是否合法,可以通过计算哈希值的方式快速检验出来。任意维护节点都可以提议一个新的合法区块,然后必须通过一定的共识机制来对最终选择的区块达成一致。
四.以比特币为例理解区块链的工作过程
首先,比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一起,组成一个候选区块。然后试图找到一个随机数放到区块里,使得候选区块的哈希结果满足一定条件(比如小于某个值)。这个随机数的查找需要一定的时间去进行计算尝试,俗称"挖矿"。
一旦节点算出来满足条件的随机数,这个区块在格式上就被认为是合法了,就可以尝试在网络中将它广播出去。其他节点收到候选区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,并添加到自己维护的区块链上。当大部分节点都讲区块添加到自己维护的区块链结构上时,该区块被网络接受,区块中所包括的交易也就得到确认。
比特币的这种基于算力寻找随机数的共识机制被称为工作量证明(Proof of Work,PoW),在白皮书中有解释到。