随着比特币过去一年的暴涨,区块链这项沉寂了数年的技术重新回到公众视野,代替AI成为了当下投资人最喜爱的概念。先不谈市场上各种靠谱或离谱的蹭热度行为,区块链技术作为一个P2P的分布式数据库无疑是一项革命性的发明。
区块链起源于2009年中本聪发表的比特币白皮书。不同于传统金融系统依赖相对安全的中心节点确保数据完整性,比特币被设计为在不可靠的网络上运行,系统中可能存在恶意节点故意篡改数据库记录以获利,因此如何确保记录的准确性是比特币最关键的问题。针对这个问题,比特币创始人中本聪发明了一种通过依赖计算能力来判断正确记录的技术,由于其中用到的块(block)和链(chain)的概念,这项技术被后人称为区块链(block chain)。
区块链系统拥有多个节点(在比特币中常被称为矿机),负责维护全局的事务记录。当系统中出现新的事务,比如比特币交易,事务会被广播到所有的节点。节点收到事务之后会缓存下来,一定时间间隔后(比特币为10分钟)会用缓存的事务生成一个块(block)。此时事务属于未确认的状态,任意一个节点都可以检验并确认这个块内的事务,并同步给其他节点。如果一个块被确认,里面的事务便会被系统承认并且是不可回滚的,这保证了系统事务的可靠性。此外,每个节点会维护一个链表(chain),也就是区块链中的链,被确认的块会被追加到节点维护的链表(chain)末端。
那么现在问题来了:如果有节点恶意修改缓存的事务并确认怎么办?区块链提供了两个机制来防止这种攻击:
- 节点收到其他节点宣称正确的块时,需要和本地已经确认的事务进行校验,确保没有冲突。
- 节点生成一个新的待确认块时,需要加上链上最后一个块的哈希值,即每一个块都是对前一个块的确认。这可以得出一个结论:最长的链最为准确。当有两个节点同时提交不一致的两个块并且都没有校验错误时,剩余节点不能判断谁是诚实的谁是恶意的。这时它们会以自己收到的第一个版本为准,即部分节点承认了Block A,部分节点承认了Block B,导致全局数据出现不一致。此时,区块链会拒绝确认其中任何一个块,而是等待下一个块Block C的计算结果。如果Block C依赖于Block A则AC长于B,于是确认AC;反之则确认BC。如果第二个待确认块也出现了多个块的情况,则重复这个步骤直至链长不同。
基于上述规则,恶意节点已经无法通过一次新块确认篡改数据了,但它依然能不断地尝试提交错误的块来产生和正确的链同样长的假链,导致系统无法确认任何事务,也就是典型的DDoS攻击,或者更过分地在一次计算中提交多个块,导致其他节点误以为这是更准确的链以篡改数据。对此,区块链引入了工作量证明(Proof-of-Work)机制。
工作量证明(Proof-of-Work,PoW)是一种对应服务与资源滥用、或是阻断服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。 —— 维基百科
打个比方,就像结婚的时候给老婆买钻戒,虽然学过化学的你知道钻石不过是随处可见的碳元素,但为了证明你对她的爱你还是不得不忍痛买个大钻戒。区块链当然不会要求一枚钻戒,但它规定了想要确认一个块必须先计算一个nonce值,这个值加上前面说过的前一个块的哈希值
和缓存的所有事务
再进行哈希结果需要全部为0比特。因为哈希函数是单向的,所以节点必须暴力(brute force)计算这个nonce。最先找到合适nonce值的节点才可以将它的计算结果广播给其他节点,计算力更强的节点有更大的机会确认新块。
突然间确认新块变成了计算力的竞赛。所以如果恶意节点想要攻击区块链,它必须有最强大的计算力。如果企图篡改新的事务,恶意节点必须生成一条长于正常链的假链,那么以上个块被确认的时间点为起点,恶意节点需要顺序计算出至少两个新块的nonce,并且时间需要比正常节点处理一个新块要短。要做到这点,有种出名的攻击称为51%攻击
,即攻击者拥有区块链系统内一半以上的计算力。因此区块链系统的总计算力越大越难攻击。
为了鼓励更多机器参与到区块链系统,中本聪还想出一种激励机制,即确认新块会获得奖励,在比特币中相当于将铸币税分散给区块链参与者。这与20世纪初大批淘金者到旧金山挖金矿,并将其铸成金币流入货币市场的状况十分相像,因此参与区块链系统又被称为挖矿。不过不同的是,20世纪是金本位,如今可以说是计算力本位了(但是投入的计算力不能像金币一样熔成金条退出流通)。
虽然由于块大小的限制(比特币中块不能大于2MB),区块链技术目前还难以大规模应用,而且消耗大量计算力来维持系统运作也广受诟病,但是区块链有一点不可忽视:它有着互联网的基因——去中心化。近几年互联网的格局渐渐出现马太效应,大数据、人工智能和云计算的资源都是向巨头倾斜,整个互联网似乎有重新中心化的趋势。然而如果中心化趋势不能扭转,互联网便会逐渐失去活力,成为下一个电视台。因此区块链尽管不成熟却称得上一股清流。希望区块链在未来有更好的发展。
参考文献:
1.Bitcoin White Paper, bitcoin.org
2.维基百科-工作量证明,维基百科
3.Wikipidae-BlockChain, Wikipedia
4.BitcoinFees, bitcoinfees.com