比特币
第一个比特币是2009年1月3日 18:15:05诞生,比特币从实践意义上实现了一套去中心化的数字货币系统。 2014年开始,比特币背后的区块链(Blockchain)技术受到大家关注,并正式引发了分布式记账本(Distributed Ledger)技术的革新浪潮。
区块链
区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。 区块链的基本原理理解起来并不难。基本概念包括:
- 交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;
- 区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
- 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
区块链示例,如上图所示
在实现上,首先假设存在一个分布式的数据记录本(这方面的技术相对成熟),这个记录本只允许添加、不允许删除。其结构是一个线性的链表, 由一个个“区块”串联组成,这也是其名字“区块链”的来源。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法, 可以通过一些手段快速检验出来。维护节点都可以提议一个新的区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。
具体以比特币为例来看如何使用了区块链技术?
客户端发起一项交易后,会广播到网络中并等待确认。网络中的节点会将一些等待确认的交易记录打包在一起(此外还要包括此前区块的哈希值等信息), 组成一个候选区块。然后,试图找到一个 nonce 串放到区块里,使得候选区块的 hash 结果满足一定条件(比如小于某个值)。 一旦算出来这个区块在格式上就合法了,就可以进行全网广播。大家拿到提案区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块, 被添加到链上。当然,在实现上还会有很多的细节。
比特币的这种基于算力的共识机制被称为 Proof of Work(PoW)。目前,要让 hash 结果满足一定条件并无已知的启发式算法,只能进行暴力尝试。 尝试的次数越多,算出来的概率越大。通过调节对 hash 结果的限制,比特币网络控制约 10 分钟平均算出来一个合法区块。 算出来的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是 12.5 比特币,每四年减半)。也即俗称的挖矿。
很自然会有人问,能否进行恶意操作来破坏整个区块链系统或者获取非法利益。比如不承认别人的结果,拒绝别人的交易等。 实际上,因为系统中存在大量的用户,而且用户默认都只承认他看到的最长的链。只要不超过一半(概率意义上越少肯定越难)的用户协商, 最终最长的链将很大概率上是合法的链,而且随着时间增加,这个概率会越大。
关键技术
区块链涉及到的领域比较杂,包括分布式、存储、密码学、心理学、经济学、博弈论、网络协议等,下面列出了目前认为有待解决或改进的关键技术点。
-
密码学技术
怎么防止交易记录被篡改? 怎么证明交易方的身份? 怎么保护交易双方的隐私?
密码学正是要提供解决这些问题的有效手段。传统方案包括 hash 算法,加解密算法,数字证书和签名(盲签名、环签名)等。 区块链技术的应用将可能刺激密码学的进一步发展,包括随机数的产生、安全强度、加解密处理的性能等。量子计算等新技术的出现,让 RSA 算法等已经无法提供足够的安全性。
-
分布式共识
这是个古老的话题,已有大量的研究成果(Paxos、拜占庭等)。
核心在于如何解决某个变更在网络中是一致的,是被大家都承认的,同时这个信息是被确定的,不可推翻的。 该问题在公开匿名场景下和带权限管理的场景下需求差异较大。
比特币区块链考虑的是公开匿名场景下的最坏保证。引入了“工作量证明”(Proof of Work)策略来规避少数人恶意破坏数据, 并通过概率模型保证最后大家看到的就是合法的最长链。此外,还有以权益为抵押的 PoS、DPoS 和 Casper 等。 这些算法在思想上都是基于经济利益的博弈,让恶意破坏的参与者损失经济利益,从而保证大部分人的合作。 同时,确认必须经过多个区块的生成之后从概率学上进行保证。
-
处理性能
如何提高交易的吞吐量,同时降低交易的确认延迟。
目前,公开的比特币区块链只能支持平均每秒约 7 笔的吞吐量,一般认为对于大额交易来说,安全的交易确认时间为一个小时。 小额交易只要确认被广播到网络中并带有交易服务费用,即有较大概率被最终打包到区块中。
区块链系统跟传统分布式系统不同,其处理性能无法通过单纯增加节点数来进行扩展,实际上,很大程度上取决于单个节点的处理能力。 高性能、安全、稳定性、硬件辅助加解密能力,都将是考察节点性能的核心要素。
-
系统安全
区块链目前最热门的应用前景是金融相关的服务,安全自然是讨论最多、挑战最大的话题。
区块链在设计上基于现有的成熟的密码学算法。但这是否就能确保其安全呢? 世界上并没有绝对安全的系统。系统是由人设计的,系统也是由人来运营的,只要有人参与的系统,就容易出现漏洞。
-
数据库和存储系统
区块链网络中的块信息需要写到数据库中进行存储。
观察区块链的应用,大量的写操作、hash 计算和验证操作,跟传统数据库的行为十分不同。
当年,人们观察到互联网应用大量非事务性的查询操作,而设计了非关系型(NoSql)数据库。那么,针对区块链应用的这些特点,是否可以设计出一些特殊的针对性的数据库呢?
levelDB、RocksDB 等键值数据库,具备很高的随机写和顺序读\/写性能,以及相对较差随机读的性能,被广泛应用到了区块链信息存储中。但目前来看,面向区块链的数据库技术仍然是需要突破的技术难点之一。
未来将可能出现更具针对性的“块数据库(BlockDB)”,专门服务类似区块链这样的新型数据业务,其中每条记录将包括一个完整的区块信息,并天然地跟历史信息进行关联,一旦写入确认无法修改。所有操作的最小单位将是一个块。
未来趋势
区块链是第一个试图自带信任化和防止篡改的分布式记录系统。它的出现,让大家意识到,除了互联网这样的尽力而为的基础设施外, 我们还能打造一个彼此信任的基础设施。
类似比特币这样的大规模长时间自治运行的系统,也为区块链技术的应用开启了更多遐想的空间。
更进一步,比特币只是基于区块链技术的一种金融应用(而且是直接嵌入区块链中),区块链技术还能带来更通用的计算能力。 Hyperledger 和 Ethereum 就试图做类似的事情,基于区块链再做一层平台层,让别人基于平台开发应用变得更简单。
另外,区块链本身可以作为分布式存储,也自然可以作为分布式计算引擎。随着更多商业应用场景的出现,区块链技术将在未来金融和信息技术领域占据一席之地。