What is … Bitcoin?


标题自然是模仿AMS著名的”What is …”系列。

对极客来说,比特币 (Bitcoin) 已经不是什么新鲜事物了。可惜我不是他们中的一员,难免有些后知后觉。
对我来说,最值得关注的当然是这种加密货币 (Cryptocurrency) 的数学原理,其次是其作为一种经济学理论的实践1,再次是其作为左派构想的金融乌托邦的基础,最后才是其投资价值。
任何一个下载过比特币核心模块的人都能直观地感受到比特币社区经历的指数性成长——时间越近,交易记录积累的速度越快。在开始写这篇文章的时候,已运行了一昼夜的核心模块正在更新1年零32个月前的交易记录。
我给自己设定的目标是:在这些交易记录下载完成前,写好这篇文章。

Cryptographic Hash Function
什么是数字货币?一段信息。简单地,可以将哈希函数(hash function)理解成信息的数字化。一个哈希函数H被称为是加密 (Cryptographic)的,如果(在实践中)不可能仅通过其哈希值重建输入信息。一般认为其至少要满足以下4个要求:

  • 给定输入信息m,计算其哈希值h=H(m)是容易的;
  • 原像抗性:给定某哈希值h,找到某个m使得h=H(m)是不现实的(infeasible);
  • 第二类原像抗性:给定输入信息m_1,找到某个m_2使得H(m_1)=H(m_2)是不现实的;
  • 碰撞抗性:找到m_1m_2,使得H(m_1)=H(m_2)是不现实的——这比第二类原像抗性更强;

90年代以来,对加密哈希函数的要求不断提高。一度被广泛采用的MD5SHA-1均被证明不满足碰撞抗性2SHA-2SHA-3是目前较为安全的选择。

Digital Signature Algorithm
我们需要一种防伪措施防止哈希函数在传输中被篡改。常用的方法是所谓的数字签名算法(DSA, Digital Signature Algorithm)3.
我们曾经提及计算数论中著名的离散对数问题:给定有限交换群Gq阶元素g,以G_0g生成的循环子群,我们可以定义离散指数函数\exp_g: \Bbb Z/q \to G_0和离散对数函数\log_g: G_0 \to \Bbb Z/q。离散指数易于计算,计算离散对数则远为困难,DSA算法正是建立在这种难度差上:
(1) 取G=(\Bbb Z/p\Bbb Z)^{*}p为某大素数(通常要求至少有1024位),qp-1的素因子,g\in G为某q阶元素。(G,q,g)可以对所有用户公开。
(2) 取x \in \Bbb Z/q,令y=g^x,我们称这样的(x,y)为一对钥匙。y=\exp_g(x)容易计算的,可以公开,x=\log_g(y)留作用户个人的私钥,不破解x就难以伪造数字签名。
(3) 对每段信息m及其哈希值H(m)\in \Bbb Z/q,随机4生成一对钥匙(r_m,s_m). 令t_m=r_m^{-1}(H(m)+xs_m),若(s_m,t_m) \neq (0,0),即可取为m的公开数字签名。
哈希值h为未经篡改的原始哈希值H(m)的必要条件是其数字签名满足等式\displaystyle s_m=g^{ht_m^{-1}}y^{s_mt_m^{-1}}. (注意,此过程无需知道私钥x
将(1)中的有限交换群G取为某有限域上的椭圆曲线的加法群,即得到椭圆曲线数字签名算法(ECDSA, Elliptic Curve Digital Signature Algorithm). 相比DSA,其优点是公钥y(此时为椭圆曲线上的某个点)通常占用较小的比特值,便于计算。

“Let Nakamoto be!”5
点对点的数字货币交易通常是如何进行的呢?我们用下面这张流程图来说明:
Screen Shot 2015-10-20 at 10.55.32 AM
假定帐号C_1要转一笔钱给帐号C_2C_1合法获得这笔钱的信息记录在交易单T_1中。交易时,C_1须将C_2的公钥y_2(也即C_2的公开帐号)添加到交易单T_1的尾部,用自己的私钥x_1H(T_1|y_2)进行数字签名,构成新的交易单T_2=\{T_1|y_2|(s_1,t_1)\}。为确认交易由C_1发起而非他人伪造,只须用公钥y_1验证数字签名(s_1,t_1).
问题在于,C_1有可能用同一笔钱发起多次交易,造成重复花钱 (double spending).一个中心化的数字金融系统需要一个第三方监管机构——例如某家数字银行——来确保交易的公平进行:银行知道此种货币的全部交易历史,因而能推算每个帐号的余额。只有银行认定为真实有效的交易才被受理。这和现实中常见的银行数字货币系统并无本质差别。

2009年,一个化名中本聪(Satoshi Nakamoto) 6 的神秘人物提出了第一个去中心化的数字货币体系方案——比特币,并开始推动比特币社区的建设。这种新型数字货币的去中心化特性得到了极客的爆发性回应,在随后几年中发展为一股蔚为壮观的潮流。
Nakamoto Bitcoin: A Peer-to-Peer Electronic Cash System
阅读中本聪纲领的人每每惊叹于此人构想之细致成熟,在短短9页中已勾勒出比特币的方方面面。这是才能的明证。

A P2P Trade Network
在中本聪设计的去中心化交易网络中,由分布在整个网络上的无数节点来取代银行,确保公平交易。
每个节点都可以视为一家小银行:所有帐号之间的全部交易记录都对这些节点公开。也就是说,在每一次交易前,交易方都必须将交易单发送到全网,通知所有节点检查这份交易单的真实性和有效性。
每个节点都存有一份自有比特币以来自己认可的交易全史——不一定相同,也无需都是真的。中本聪巧妙地设计了一个类似于Feynman历史求和的方法,使得这些形形色色的私人历史最终聚拢到诚实节点书写的真实交易史7
首先,他改造了Adam Baker的Hashcash方案,为交易史的输写设置了准入门槛。其核心是一个工作量证明(POW, Proof-of-work)系统8:人们需要解决一个有相当计算量的问题来获取有效性认可。操作上,可以取某个目前足够安全的哈希函数H(比方说SHA-2系列中的SHA-256),信息m有效当且仅当H(m)小于某个指定值(称为难度目标)。寻找有效的m的唯一方法是逐一试验,验证m有效却轻而易举。
比特币交易史储存在由交易块(block)构成的块链(block chain)中。每个交易块b_i包含3部分信息:上一个被接受的交易块的哈希值H(b_{i-1}),接受b_{i-1}后某时间段内收集的所有交易单\{T_j\},以及一个随机生成的现时标志n_i (nonce). 所有接受了b_{i-1}的节点进行n_i的生成竞争,一旦某个节点完成工作量证明(找到某个n_i使H(b_i)小于难度目标),就立即将得到的b_i通告全网。
(诚实节点守则)收到b_i的诚实节点在验证了其中包含的所有交易单均真实有效后,应立即放弃n_i的生成,接受交易块b_i,将其哈希值写入下一个块b_{i+1},继续收集交易单,并进入n_{i+1}的生成竞争,如此循环往复……
Screen Shot 2015-10-20 at 6.05.28 PM
只要全网中诚实节点占据多数,储存诚实交易史的交易块链的更新速率就是压倒性的。换言之,在形形色色的交易链中,最长的那条储存了最真实的比特币交易全史。

A Mining Game
The meek shall inherit the Earth, but not its mineral rights. — J. Paul Getty
最长的交易块链耗费了最多的CPU时间和电力,因而也是最贵的。靠什么让这些诚实节点遵守规则并心甘情愿地持续工作呢?靠他们对共产主义的忠诚信仰吗?不,中本村为此设计了一个奖励机制,同时也解决了去中心化数字货币面临的另一个问题:在缺乏银行的情况下完成货币的发行。
中本聪将逐一试验现时标志的过程比喻成挖掘金矿。一个交易块得以写入最长块链,意味着挖出这个交易块的节点是诚实的,也为社区维护付出了相当的努力。为此它将得到一些“金子”作为奖赏——它有权添加一份交易单,指定自己为一定数额的比特币的收款人。所有诚实节点都将认可这份交易单。
由此也诞生了一个新职业——比特币矿工。矿工节点保持诚实,不仅仅是出于对社区的责任感,更是为了牟利!
系统通过调节难度目标的大小使最长块链的平均更新速率保持在10分钟左右。由于近年来参与者呈指数增长,每个矿工的直观感受当然是“挖矿越来越难了”。
中本聪本人不希望这种奖励机制是永久性的。模仿现实中的黄金,他为比特币设定了储量上限:2100万枚。系统以大约4年的时间作为“半衰期”调整挖矿奖励的额度:2009年挖到一个有效的块奖励50枚比特币,2012年11月28日后奖励值降到25枚。预计到2040年,所有比特币均会被挖出,届时比特币矿业也就彻底死亡了,对诚实节点的奖励将完全来自交易方提供的小额交易费。

A Close Look
我们来仔细考察一下这个系统。
(1) 安全:由于每个交易块中储存了上一个交易块的哈希值,篡改一份交易单必须同时篡改之后被接受的所有交易块。这要求重新完成这些交易块的工作量证明。不仅如此,为了超过诚实块链的更新速率,攻击者还必须拥有超过所有诚实节点总和的计算能力——这不太可能发生。即便真的存在满足条件的攻击者,对他来说比较合算的方案也依然是将这些计算能力投入挖矿竞争来牟利,而不是篡改自己的交易单来制造重复花钱的机会!
(2) 自由:节点的维护者可以随时退出维护。重新加入时,他只需下载最长块链中储存的交易单作为自己认可的私人历史(只要他是诚实的)。
(3) 隐私:每个帐号的交易记录都是透明的,但锁定帐号的所有人并不容易——毕竟,所有权完全系于私钥x上。再者,一个人可能同时拥有海量帐号。事实上,市面上的所有比特币钱包 (wallet) 都会为用户准备多个帐号以保障其隐私。在(4)中提及的“丢失私钥”的情况下,这一举措还能减少损失。
往深处讲,就不得不涉及一个我们无意谈论的话题——如何利用比特币洗钱。所以,到此为止。
(4) 失窃:比特币是绝对安全的——只要你不丢失自己的私钥。反过来,一旦丢失了私钥,情况比丢失了纸币更加糟糕——只要带有伪造数字签名的交易被认可,根据(3)中所述,理论上没有任何办法锁定窃贼的身份或者追回这些比特币。

A Loose End
对比特币背后数学原理的介绍到此为止。许多细节问题都可以在中本聪的原始论文中的找到,此处不赘。
我想附加两条评论:
一,应用中最有效的结果往往不是技术上最困难的。创意往往源于组合;
二,似乎很少有人讨论作为电子游戏的比特币。事实上,任何对现实场景的模拟都有游戏的成分在内,可以从游戏的角度去研究解读;
本文无意讨论比特币其他的侧面。因为,作者不懂电脑技术,没有经济学常识,对make big money兴致缺然,对社会的黑暗面更是懵然无知。支撑他的仅仅是好奇心而已。
他甚至称不上是一个比特币使用者或者节点维护者。因为在他敲下这行字的时候,比特币核心模块还剩下1年零24周的交易记录需要下载呢!


  1. 有鉴于统一发行的货币往往会因为政府「缺乏自制力」而陷入货币持续增发致使通货膨胀率居高不下的境地,Friedrich Hayek早在70年代末的著作The Denationalization of Money中就提出应当允许私人机构发行货币以形成通货地位的竞争。他认为币值最稳定的货币将在竞争中胜出。由于比特币的发行总量有其上限,在投机性波动趋于稳定后,可以预计其将保持良性的通货紧缩趋势。 
  2. 在此我们必须提及一位杰出的华人女密码学家——王小云。她是这方面研究的世界级领袖。 
  3. 事实上,数字签名也被广泛应用于其他电子信息的防伪,例如检测下载软件的真实性和完整性。另一件值得注意、但或许不是众所周知的事是Shor算法同样也允许量子计算机高效地解决离散对数问题。 
  4. 随机性至关重要:Sony在对PS3软件进行数字签名时一度使用了相同的钥匙,致使私钥x于2010年12月被黑客团队ail0verflow破解。 
  5. Pope有诗曰:Nature and Nature’s laws lay hid in night: God said, “Let Newton be!” and all was light. 
  6. 日本媒体通常翻译为中本哲史。 
  7. 另一个蔚为壮观的互联网现象——维基百科的「自我演化」——事实上也基于同样的原理:「历史求和」。Aaron Swartz指出,类似的制度设计可以用来决定更一般的”Truth”(当时他年仅17岁!)。 
  8. 工作量证明系统同样有相当广泛的应用价值:从遏止垃圾邮件和博客的垃圾评论到保证电子投票的公正性。 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s