引子
智慧人的心,在遭丧之家;愚昧人的心,在快乐之家。
— 圣经·旧约·传道书第七章4节
“密码朋克邮件名单”和《密码朋克宣言》
2008年的11月1日。那一天,秘密讨论群“密码朋克邮件名单”里出现了一个新帖子:“我正在开发一种新的电子货币系统,采用完全点对点的形式,而且无需第三方信托机构。”该帖的署名,就是Satoshi Nakamoto。(satoshi是日文「聡」的罗马音,Nakamoto则是「中本」)。从此,比特币开始初露头角。
这个秘密讨论群是什么?密码朋克又是什么?
TimMay是美国的一位科技和政治的作家。早请曾在英特尔担任电子工程师和资深科学家,于2003年退休。在公司的成就主要是解决了英特尔集成芯片上的α-粒子问题。”密码朋克邮件名单”则是1992年在他加州的家里发起的密码朋克邮件列表组织。共同发起人包括EricHughes与 John Gilmore。
“密码朋克邮件名单”到1994年已有700名订户。在高峰时期,这是一个非常活跃的论坛,讨论的内容涉及数学,密码学,计算机科学,政治和哲学讨论,个人论证和攻击等方面的技术讨论,并引发了一些垃圾邮件。John Gilmore的一封电子邮件报道从1996年12月1日到1999年3月1日,每天平均30封电子邮件,并且表明这个数字可能较早。1997年的用户数量估计已达2000个。[1]
在 Tim 和 Eric 创建了“密码朋克邮件名单”后的1993年,Eric Hughes 在《ACypherpunk’s Manifesto》中正式提出密码朋克的概念。它宣扬电脑化空间下的个体精神,使用强加密(密文)保护个人隐私。密码朋克提倡使用强加密算法,宣扬个体保持安全的私人性,他们反对任何政府规则的密码系统。他们宁愿容许罪犯和恐怖分子来开发和使用强加密系统,他们认为这是为个人隐私付出风险,必须接受。
“密码朋克致力于建立匿名系统……电子时代,隐私是开放的社会不可或缺的……我们不能期望政府,企业或其他大型的,匿名组织来保障我们的隐私……如果期望拥有隐私,那么我们必须亲自捍卫之。我们使用密码学,匿名邮件转发系统,数字签名,以及电子货币来保障我们的隐私”
以上内容节选自《A Cypherpunk’s Manifesto》。[2]
从哈希现金到可用工作量证明
比特币使用的工作量证明(Proof-of-Work,PoW)实际上并不是中本聪发明的。他的技术前身哈希现金(Hashcash)是Adam Back在1997年发明的。最初的目的是为了实现电子邮件的可信。发送电子邮件之前,客户端需要运算一个数学题,这样发送大量垃圾邮件的成本就会变得巨大。这个思路,后来被Hal Finney(比特币的第一笔交易也是由中本聪发送给他的)借鉴,在2004年创建了第一个“可重复的工作量证明机制”。最后,才被中本聪用到比特币中,完美的解决了拜占庭问题。
简单的来说,工作量证明是一种对应服务与资源滥用、或是阻断服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。
优点
• 算法简单,容易实现
• 客观验证:信息可以在共识协议之内被验证,节点间无须交换其他额外信息
• 容错率达50%,安全性有严格的数学论证
• 算力成本给主链币赋予价值
缺点
• 效率低
• 区块确认时间难以缩短
• 容易分叉,需要等待多个确认
• 永远没有最终性,需要检查点机制弥补最终性
• 能源消耗大
摸索
什么是去中心化?
判断一个协议是不是去中心化的,是看这个协议能不能在全部节点都永久性删除后,仅依靠一个节点仍然能够恢复过来正常运作。这一项定义是深受生物学所启发的。
比特币,以太坊和EOS是目前业内承认度较高的区块链项目。从去中心化的角度来看,虽然比特币和以太坊都采用的POW,但因为以太坊采用了ethash算法,所以相对的更加去中心化。而EOS采用的委托权益证明机制(Delegated-proof-of-stake,DPoS)则被认为诟病过于中心化。笔者所在的ok区块链工程院认为,当我们描述中心化这个词的时候,我们实际上是在考虑2个问题:
• 网络开放性
• 系统角色多样性
网络开放性
我们把像比特币这种,节点和账户可以随便加入和退出的区块链网络,称之为公链。像IBM的hyperledger这样,节点和账户的加入和退出需要满足某种条件(如CA中心审核,退出批准等)的区块链网络,称之为联盟链。实际上,这里所描述的问题则是网络开放性问题。
系统角色多样性
比特币的网络中只有普通节点和挖矿节点,拥有全量账本数据的普通节点转为挖矿节点并不需要额外的条件。
以太坊即将上线的Casper共识中,除了上述的普通节点和挖矿节点,还包括了验证人节点(validator)[4]。验证人技术是通过智能合约实现的。
EOS所采用的石墨烯架构中,则包含普通节点和出块节点(BlockProducer)。普通节点想转为出块节点则需要一些额外的步骤才可以。
与比特币相比,后两者实际上是通过降低网络的开放性,增加网络的角色多样性去提升效率。
效率
效率因素是每个区块链项目都必须考量的,一个很常见的例子是,将区块链项目与VISA进行比较。VISA信用卡备受用户青睐,每秒处理的交易量,远不是比特币和以太坊当前每秒的交易量能比拟的。
Vitalik在推特上曾表表过关于以太坊的扩容策略。
1 许多单独的链
2 超级大区块
3 不用改变安全模型的增量改进(例如,用压缩的delta+STARKs替换txs+sigs)
4 二层(Layer 2)(通道channels和plasma)
5 分片(sharding)
Vitalik说
“1(单独链)和2(大区块)在某种程度上显然是有用的,但最终是不够的,有点蹩脚(对于扩容来说,显然我们需要许多独立的链来进行实验和生态系统的多样性)。3方案可以说是被低估的。4和5能够带来最大的收益。”
为什么要有角色多样性
每一个共识机制都需要回答但不限于下面的问题(以后简称3WEI问题):
• What 下一个区块应包含哪些交易?
• Who 下一个区块应该由谁来生成?
• When 下一个区块应该何时产生?
• Evolution 如何升级共识协议?
• Immunity 如何解决交易历史的竞争问题?
共识机制的目标是找到这些问题的答案,并确保其健壮性以抵制攻击者试图获得网络的控制权。 实际上,获得控制就意味着获得了单方面审查交易的能力。共识机制也应当能健壮地抵御攻击者利用在不同计算机上的数据库状态中的临时不一致性获取好处。
在生物学中,Evolution(进化)指的是生物的可遗传性状在世代间的改变,进而引起生物各个层次的多样性。Immunity(免疫力)是多细胞生物的平衡状态,具有足够的生物防御能力来抵抗感染,疾病或其他有害的生物入侵,同时具有足够的耐受性以避免过敏和自身免疫性疾病。
如同系统角色多样性所描绘的问题。我们已经知道,只从基础链的角度去看比特币时,他的效率远不如我们所期望的,虽然他的去中心化程度很高。但当我们把区块链项目和现行生物进行对比时,我们可以推断出一个结论:
现行高级生命体的放弃了强大的再生能力(去中心化),进化出了各种不同种类的细胞(角色多样性),换取在食物链中获得更高位置的机会(提升效率)。
从POW到POS
如同我们在为什么要有角色多样性中讨论的3WEI问题,以比特币的POW为代表的中本聪共识非常巧妙的同时解答了所有问题:
中本聪共识:
通过引入经济激励改造了共识投票的过程,将每次账本数据变化都安排一轮投票变为滚动的无限期投票:任何人都可以生成一个包含交易的区块(增加账本数据)并广播,其他人如果同意该区块纳入账本,则将该区块的哈希作为自己构造的区块数据的一部分,以对该区块进行“确认”;对某个区块的“确认”也包含了对该区块前序所有区块的“确认”;以工作量大小决定投票权重,投票附加的工作量大的区块胜出。这类共识机制的安全依赖于特别设计的经济激励,比如工作量证明(PoW)或者权益证明(PoS)等。[5]
2011年一个名为Quantum Mechanic的数字货币爱好者在Bitcointalk论坛提出Proof-of-Stake(POS)证明机制。如果说POW主要比拼算力,算力越大,挖到一个块的概率越大,POS则是比拼余额,通俗说就是自己的手里的币越多,挖到一个块的概率越大。但是到目前为止,关于POS的研究和讨论还在进行,因为POS对其经济设计的特殊要求,还没有出现公认的可以直接替代POW算法的方案。
区别
POW和POS的主要区别在于是否引入外部稀缺资源。
算力,作为POW的外部稀缺资源,确实巧妙了解决了3WEI问题,但是也引起了人们对其能源浪费的指责。除此之外,Vitalik还指出其有一点设计上的问题:它并没有实现密码朋克的精神–它的攻击成本和防守成本是1:1的,并没有防守优势。(更多请参见长程攻击问题)[6]
密码学在21世纪是极其特殊的,因为密码学是为数不多的在对抗冲突中都持续地大大偏向防守者一方的领域之一。摧毁一座城堡远远比建造更容易,岛屿都是可防卫的,但仍会受到攻击,但一个普通人的椭圆曲线密码学(ECC)秘钥是足够安全的,它甚至可以抵御国家级入侵。密码朋克哲学基本上就是利用这种珍贵的不对称性,来创造一个可以更好的保持个体的自主性的世界,而加密经济学保护的是具有一致性和协作性的复合系统的安全与活力,而非仅仅保护私人信息的完整和保密,在某种程度上可以说是该哲学的延伸。自诩为密码朋克精神继承者的系统都应保持这种基本属性,使毁灭或破坏它的成本比利用和维护它的成本要大得多。
简单POS
2012年上线的Peercoin项目一般被视为第一个引入POS机制的项目。虽然他是POW/POS混合机制。随后还有众多POS的项目上线,如NXT(未来币),Blackcoin(黑币),Tendermint等。
其中,上述POS中最为突出的问题则是系统主链的稳定性–频繁的分叉。称之为”无利害关系(nothing at stake)”问题
无利害关系
Jae Kwon 2014年5月以“错误选择谬论”的不幸名字第一次提到这个问题。在2014年7月Vitalik把比特币开发者所描述的确切定义的问题普及推广为“无利害关系”。问题呈现出此情况:验证者通过在给定高度为多个有冲突的区块投票可以有效的破坏安全性而不用付出任何代价。[7]
简单的PoS实现对于这些攻击而言是非常脆弱的。灾难性的是,因为没有任何的激励来鼓励大家永远集中在一个独一的链上,并且每次激励都要同时在相互冲突的链条上进行重复签名,所以为了获得更多的区块奖励,在经济上最优的策略就变成了尽可能的在多个分杈上进行投票。
除了”无利害关系(nothing at stake)”问题之外,还有一个问题也是POS机制设计者不得不考虑的问题–长程攻击问题(long-range attack)。
长程攻击问题
长程攻击来源于用户不得不撤回保证金的权利。这就产生了一个基本问题,因为这意味着攻击者可以从任意长度的距离建立一个分杈而不用担心被削减。一旦保证金被解除绑定,激励不从某个高度区块前进行长距离投票就被取消了。换句话说,当超过2/3的验证者解除了绑定,那么他们就可以恶意的创造包含之前验证者集的第二条链,这可能导致任意的交易。[7]
想理解长程攻击问题,首先要解释一个概念,叫卡特尔(垄断联盟)。
垄断利益集团,也称垄断联盟、企业联合、同业联盟、卡特尔(Cartel),这种垄断很容易发生在少数资源被数个企业完全掌握的情况下,为了避免过度竞争导致的整体利益下跌,由一系列生产类似产品的企业组成的联盟,是卡特尔垄断组织的一种表现形式。通过某些协议或规定,甚至单靠共识来控制该产品的产量和价格,但联盟的各个企业在生产、经营、财务上仍旧独立,这些情况造成了卡特尔不稳定的本质。
采用POW的区块链中,一个占有51%矿工的卡特尔联盟有动机去屏蔽那些不在卡特尔联盟中的矿工。这些51%的矿工会立刻得到更多酬金的奖励,并最终会得到更多的区块奖励。而且再有新的算力加入之前,这个卡特尔联盟会一直持有此特权。这也是上文中提到的POW机制不复合密码朋克精神的原因。同样的,在POS中也是类似的问题(持有51%股份的卡特尔联盟)。
关于面对长程攻击的安全性问题,笔者认为在POW项目初期全网总算力较小时,危险较大。随着全网总算力的提升,安全性则随之提升。而POS面临的挑战更大,目前的解决方案是加入惩罚机制“剑手协议”,但是具体到详细的参数设定上,还未有达到完美的方案。
未来的工作
由于上述问题,对于POS的研究已经进入到更深的一步。比如以太坊新提出的Casper方案,EOS采用的DPOS+PBFT方案等。称之为复杂POS设计。关于此部分的内容,ok区块链工程院会在下一篇文章内讨论。
参考文献
[1] 维基百科,Cypherpunk ,https://en.wikipedia.org/wiki/Cypherpunk
[2] Eric Hughes,《ACypherpunk’sManifesto》 https://www.activism.net/cypherpunk/manifesto.html
[3] 维基百科,Hal Finney (computer scientist) https://en.wikipedia.org/wiki/Hal_Finney_(computer_scientist)
[4] ETH GITHUB,Proof-of-Stake-FAQs https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs
[5] 中国人民银行数字货币研究所所长姚前,《区块链研究进展综述》,期刊《中国信息安全》
[6] Vitalik Buterin,2016-12-31,《A Proof of StakeDesign Philosophy》, https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51