图1比特币交易过程 交易 交易 B的公钥 C的公钥 D的公钥 散列 散列 散列 A的数字签名 B的数字签名 C的数字签名 B的私钥 C的私钥 D的私钥 资料来源: Nakamoto(2008),笔者进行了一定修改。 上述过程略显复杂。我们可以换一种不太精确但更容易理解的解释(姚勇,2013)。 依然以交易1为例,交易单1中其实包含以下六种信息:一是交易单1的ID:二是 资金的来源,即交易单0的ID:三是A对资金的签名,以证明是他把100BTC给B 的;四是资金的去向,即C的账号(公钥):五是资金的数额,即100BIC:六是B 的签名(即B用自己私钥进行的数字签名),以证明是他自己签发的交易。由于每笔 交易单都记录了该笔资金的前一个拥有者、当前拥有者以及后一个拥有者,我们就可 以依据交易单实现对资金的全程追溯。这也是比特币的典型特征之一。最后,当每 笔交易完成时,系统都会向全网进行广播,告诉所有用户这笔交易的实施 (5)区块( Block) 交易和区块的关系,就如同水和瓶子,属于内容和容器的关系。由于每笔交易是 相对分散的,为了更好地统计交易,比特币系统创造了区块这一概念。每个区块均包 含以下三种要素:一是本区块的ID(散列);二是若干交易单;三是前一个区块的ID (散列)。比特币系统大约每十分钟创建一个区块,其中包含了这段时间里全球范围 内发生的所有交易。每个区块中也包含了前一个区块的ID,这种设计使得每个区块都 能找到其前一个节点,如此可一直倒推至起始节点,从而形成了一条完整的交易链条
6 图 1 比特币交易过程 资料来源:Nakamoto(2008),笔者进行了一定修改。 上述过程略显复杂。我们可以换一种不太精确但更容易理解的解释(姚勇,2013)。 依然以交易 1 为例,交易单 1 中其实包含以下六种信息:一是交易单 1 的 ID;二是 资金的来源,即交易单 0 的 ID;三是 A 对资金的签名,以证明是他把 100BTC 给 B 的;四是资金的去向,即 C 的账号(公钥);五是资金的数额,即 100 BTC;六是 B 的签名(即 B 用自己私钥进行的数字签名),以证明是他自己签发的交易。由于每笔 交易单都记录了该笔资金的前一个拥有者、当前拥有者以及后一个拥有者,我们就可 以依据交易单实现对资金的全程追溯。这也是比特币的典型特征之一。最后,当每一 笔交易完成时,系统都会向全网进行广播,告诉所有用户这笔交易的实施。 (5)区块(Block) 交易和区块的关系,就如同水和瓶子,属于内容和容器的关系。由于每笔交易是 相对分散的,为了更好地统计交易,比特币系统创造了区块这一概念。每个区块均包 含以下三种要素:一是本区块的 ID(散列);二是若干交易单;三是前一个区块的 ID (散列)。比特币系统大约每十分钟创建一个区块,其中包含了这段时间里全球范围 内发生的所有交易。每个区块中也包含了前一个区块的 ID,这种设计使得每个区块都 能找到其前一个节点,如此可一直倒推至起始节点,从而形成了一条完整的交易链条
(图2)因此,从比特币的诞生之日起,全网就形成一条唯一的主区块链( Block chain), 其中记录了从比特币诞生以来的所有交易记录,并以每十分钟新增一个节点的速度无 限扩展。这条主区块链在每添加一个节点后,都会向全网广播,从而使得每台参与比 特币交易的电脑上都有一份拷贝。在现实世界里,每笔非现金交易都由银行系统进行 记录,一旦银行计算机网络崩溃,所有数据都会遗失。而在互联网世界里,比特币的 所有交易记录都保存在全球无数台计算机中,只要全球有一台装有比特币程序的计算 机还能工作,这条主区块链就可以被完整地读取。如此高度分散化的交易信息存储 使得比特币主区块链完全遗失的可能性变得微乎其微。 图2区块链的局部结构 区块 区块 之前随机散列 随机数 之前随机散列 随机数 T Tx T Tx 资料来源: Nakamoto(2008)。 (6)挖矿( Mining) 如前所述,比特币的所有交易记录都保存在主区块链中。每十分钟就会有一个新 区块生成并加入进主区块链,这个新区块中记录了十分钟内全网的所有交易。由于比 特币使用的是P2P模式,这意味着网络上的每个节点都是平等的,没有一个中心节点 可以用来承担交易记录工作。因此,如此重要的交易记录任务交给谁来完成,就变成 一个现实问题。而比特币创始人中本聪给出的答案居然是任何人来完成都可以。由于 每笔交易完成后都会被广播给全网,因此每个人在对交易的有效性进行验证后,都可 以根据这些交易数据生成新区块。但这又引发了一个新问题,即如何让所有人都信任 由一个陌生人生成的新区块?这个新区块中是否记录了虚假交易或重复交易? 要解决这个问题,就要用到前文提到的工作量证明概念。基本思路是,寻找一个 随机数,使得将这个数字与新区块的交易信息一起输入SHA256后产生的数字,前面 n位(比如n=100)都是0。此项工作的意义在于,由于将会耗费很多时间,如果一个 人进行了这项计算且获得成功,那么他提供的区块很可能是真实可信的,因为花费如 此大力气作假得到的好处,远远不计花费同样努力从事真实工作得到的好处。此外
7 (图 2)。因此,从比特币的诞生之日起,全网就形成一条唯一的主区块链(Block Chain), 其中记录了从比特币诞生以来的所有交易记录,并以每十分钟新增一个节点的速度无 限扩展。这条主区块链在每添加一个节点后,都会向全网广播,从而使得每台参与比 特币交易的电脑上都有一份拷贝。在现实世界里,每笔非现金交易都由银行系统进行 记录,一旦银行计算机网络崩溃,所有数据都会遗失。而在互联网世界里,比特币的 所有交易记录都保存在全球无数台计算机中,只要全球有一台装有比特币程序的计算 机还能工作,这条主区块链就可以被完整地读取。如此高度分散化的交易信息存储, 使得比特币主区块链完全遗失的可能性变得微乎其微。 图 2 区块链的局部结构 资料来源:Nakamoto(2008)。 (6)挖矿(Mining) 如前所述,比特币的所有交易记录都保存在主区块链中。每十分钟就会有一个新 区块生成并加入进主区块链,这个新区块中记录了十分钟内全网的所有交易。由于比 特币使用的是 P2P 模式,这意味着网络上的每个节点都是平等的,没有一个中心节点 可以用来承担交易记录工作。因此,如此重要的交易记录任务交给谁来完成,就变成 一个现实问题。而比特币创始人中本聪给出的答案居然是任何人来完成都可以。由于 每笔交易完成后都会被广播给全网,因此每个人在对交易的有效性进行验证后,都可 以根据这些交易数据生成新区块。但这又引发了一个新问题,即如何让所有人都信任 由一个陌生人生成的新区块?这个新区块中是否记录了虚假交易或重复交易? 要解决这个问题,就要用到前文提到的工作量证明概念。基本思路是,寻找一个 随机数,使得将这个数字与新区块的交易信息一起输入 SHA256 后产生的数字,前面 n 位(比如 n=100)都是 0。此项工作的意义在于,由于将会耗费很多时间,如果一个 人进行了这项计算且获得成功,那么他提供的区块很可能是真实可信的,因为花费如 此大力气作假得到的好处,远远不计花费同样努力从事真实工作得到的好处。此外
其他所有节点在接收到新区块时,也会对其中包含交易的有效性进行校验,这意味着 虚假交易或重复交易很难骗过其他所有用户,这就形成了节点之间的信用保障机制 挖矿(Mnng)就是指产生新区块并计算随机数的过程。具体过程可分为以下六 步:第一步,由于网络上的每台计算机都保存有之前的主区块链,某台计算机以其中 最后一个区块的内容为输入,计算一个散列值;第二步,该计算机在接收广播来的交 易单并逐笔校验交易的准确性之后,把没有被列入之前区块的那些交易进行组合,并 纳入一个新区块;第三步,该计算机任意猜一个随机数,其大小和长度没有限制;第 四步,该计算机将第一步至第三步产生的数据作为输入,一起放到SHA256散列函数 中,计算得到一个长度为256的二进制数;第五步,检查这个二进制数的前n位是否 符合要求;第六步,如果该二进制数符合要求,则本轮游戏结束,该计算机会把新区 块连同这个幸运随机数一起广播给网络上的其他计算机。其他人在收到这个新区块后 会以同样的方式进行校验。如果结果无误,全网就接受这个新区块,将它连同之前的 主区块链一起保存。如果产生的随机数不合要求,则第二步至第六步就会重复进行 直到自己成功或者收到别人发来的新区块(姚勇,2013)。 从上述流程中可以看出,挖矿就是指搜集交易数据并建立新区块的过程。这个过 程虽然重要,却耗时费力,为什么所有参与者都趋之若鹜呢?最重要的原因在于,比 特币系统规定,每个成功建立新区块的人都将获得50个新比特币的奖励,且该奖励 将被记录在对应的新区块里。这50个新比特币是系统自动产生的,且得到全网的认 同。有趣的是,这种奖励的数额每四年减半,即2009年至2012年年为每区块50个 比特币、2013年至2016年为每区块25比特币、2017年至2021年为每区块125比特 币,如此不一而足。最终,全系统的比特币容量将达到2100万个的上限,至此不再 增加。从那时起,为保证主区块链能继续不断増长以确保比特币交易能继续正常进行, 每个创建新区块的人,都将从新区块包含的交易单中抽取一定的“交易税”作为奖励。 这种新的激励机制将保证比特币交易得以延续。 2、运行原理 在上述概念的基础上,我们就可以介绍比特币的运行原理了。作为一种脱离了实 物交接的货币形式,比特币需要解决如下几个基本问题:首先,谁来发行比特币并对 其进行信用背书?其次,如何建立账户并进行管理?再次,比特币交易如何确认? (1)发行和信用背书 与美元等国别信用货币不同,没有中央银行负责比特币的发行,也没有政府为其
8 其他所有节点在接收到新区块时,也会对其中包含交易的有效性进行校验,这意味着 虚假交易或重复交易很难骗过其他所有用户,这就形成了节点之间的信用保障机制。 挖矿(Mining)就是指产生新区块并计算随机数的过程。具体过程可分为以下六 步:第一步,由于网络上的每台计算机都保存有之前的主区块链,某台计算机以其中 最后一个区块的内容为输入,计算一个散列值;第二步,该计算机在接收广播来的交 易单并逐笔校验交易的准确性之后,把没有被列入之前区块的那些交易进行组合,并 纳入一个新区块;第三步,该计算机任意猜一个随机数,其大小和长度没有限制;第 四步,该计算机将第一步至第三步产生的数据作为输入,一起放到 SHA256 散列函数 中,计算得到一个长度为 256 的二进制数;第五步,检查这个二进制数的前 n 位是否 符合要求;第六步,如果该二进制数符合要求,则本轮游戏结束,该计算机会把新区 块连同这个幸运随机数一起广播给网络上的其他计算机。其他人在收到这个新区块后, 会以同样的方式进行校验。如果结果无误,全网就接受这个新区块,将它连同之前的 主区块链一起保存。如果产生的随机数不合要求,则第二步至第六步就会重复进行, 直到自己成功或者收到别人发来的新区块(姚勇,2013)。 从上述流程中可以看出,挖矿就是指搜集交易数据并建立新区块的过程。这个过 程虽然重要,却耗时费力,为什么所有参与者都趋之若鹜呢?最重要的原因在于,比 特币系统规定,每个成功建立新区块的人都将获得 50 个新比特币的奖励,且该奖励 将被记录在对应的新区块里。这 50 个新比特币是系统自动产生的,且得到全网的认 同。有趣的是,这种奖励的数额每四年减半,即 2009 年至 2012 年年为每区块 50 个 比特币、2013 年至 2016 年为每区块 25 比特币、2017 年至 2021 年为每区块 12.5 比特 币,如此不一而足。最终,全系统的比特币容量将达到 2100 万个的上限,至此不再 增加。从那时起,为保证主区块链能继续不断增长以确保比特币交易能继续正常进行, 每个创建新区块的人,都将从新区块包含的交易单中抽取一定的“交易税”作为奖励。 这种新的激励机制将保证比特币交易得以延续。 2、 运行原理 在上述概念的基础上,我们就可以介绍比特币的运行原理了。作为一种脱离了实 物交接的货币形式,比特币需要解决如下几个基本问题:首先,谁来发行比特币并对 其进行信用背书?其次,如何建立账户并进行管理?再次,比特币交易如何确认? (1)发行和信用背书 与美元等国别信用货币不同,没有中央银行负责比特币的发行,也没有政府为其
提供信用背书。比特币的发行是通过挖矿来完成的。每一次有效挖矿都将产生新的比 特币,直至达到数量上限。比特币的信用,则源自所有参与比特币挖矿和交易的用户 所付出的大量计算,以及由此消耗的时间和电力等成本。人们为此投入的劳动越多 就意味着对比特币的认可程度越高。比特币系统是一种互联网环境下的新型信用体系, 它既不需要任何历史信用记录,也不需要任何机构或个人提供的信用担保。换言之, 比特币主要依靠理论和技术的双重保障来保证其信用:一方面,人是理性的,在诚实 劳动所能获得的报酬远高于欺骗时,没有人会花费力气进行欺骗;第二,比特币的特 征决定了欺骗是极其困难的。要成功进行欺骗,不仅需要经受其他所有用户的检验, 也需要具有高于全网总计算能力51%的计算设备。以目前比特币全网累积的计算能力 来看,即便是全球最先进的大型计算机距离这一要求也相差甚远。随着越来越多的新 增计算力加入,在比特币的世界里,欺骗的难度将变得越来越大。 (2)账户管理 账户管理涉及账户的建立、查询和安全保障,比特币也不例外。对比特币而言, 建立账户就是生成一个地址。比特币的账户、地址和公钥等概念是基本重合的。账户 就是一个地址(一串数字),相当于银行账户的户名,这当然是公开的。地址是由公 钥通过一系列数学计算推导出来的,因此地址仅仅是公钥的另一种形式。有了地址, 就可以查询比特币账户的余额 虽然地址类似于银行账户名,但与银行账户不同,该地址的余额并没有特意记录 在某个地方。如前所述,每一枚比特币自诞生之日起的所有交易路径都是可追溯的, 都被记录在主区块链中。因此,每个账户的余额都可以通过对主区块链进行计算得到, 而不需要单独记录。这种设计看似麻烦,但有着明显的优势:首先,每个使用者可以 拥有的账户数量是没有限制的。随着比特币使用者的不断增多,账户数量也与日俱增, 为每个账户单独保存余额是对存储空间的极大浪费;其次,对比特币而言,没有中央 节点来保存并管理余额信息,想要保存余额信息,就必须将其合并写入到区块中。否 则,全网节点在对新生成区块的有效性进行检验时,就不仅需要对新的交易进行检验, 还需要对全网所有账户的余额进行追溯检验,这无疑会显著增加工作量。在传统银行 里,储户不能仅仅通过户名就对账户余额进行查询。然而,比特币世界允许上述操作, 也即任何人都可以通过计算主区块链而查询任何账户的余额。比特币账号是完全匿名 的,且每个人可以有多个账号,这就保证了比特币拥有者的个人信息不可能通过分析 账号来获得。因此,即使将余额信息完全公开,也可以保证拥有者的个人隐私
9 提供信用背书。比特币的发行是通过挖矿来完成的。每一次有效挖矿都将产生新的比 特币,直至达到数量上限。比特币的信用,则源自所有参与比特币挖矿和交易的用户 所付出的大量计算,以及由此消耗的时间和电力等成本。人们为此投入的劳动越多, 就意味着对比特币的认可程度越高。比特币系统是一种互联网环境下的新型信用体系, 它既不需要任何历史信用记录,也不需要任何机构或个人提供的信用担保。换言之, 比特币主要依靠理论和技术的双重保障来保证其信用:一方面,人是理性的,在诚实 劳动所能获得的报酬远高于欺骗时,没有人会花费力气进行欺骗;第二,比特币的特 征决定了欺骗是极其困难的。要成功进行欺骗,不仅需要经受其他所有用户的检验, 也需要具有高于全网总计算能力 51%的计算设备。以目前比特币全网累积的计算能力 来看,即便是全球最先进的大型计算机距离这一要求也相差甚远。随着越来越多的新 增计算力加入,在比特币的世界里,欺骗的难度将变得越来越大。 (2)账户管理 账户管理涉及账户的建立、查询和安全保障,比特币也不例外。对比特币而言, 建立账户就是生成一个地址。比特币的账户、地址和公钥等概念是基本重合的。账户 就是一个地址(一串数字),相当于银行账户的户名,这当然是公开的。地址是由公 钥通过一系列数学计算推导出来的,因此地址仅仅是公钥的另一种形式。有了地址, 就可以查询比特币账户的余额。 虽然地址类似于银行账户名,但与银行账户不同,该地址的余额并没有特意记录 在某个地方。如前所述,每一枚比特币自诞生之日起的所有交易路径都是可追溯的, 都被记录在主区块链中。因此,每个账户的余额都可以通过对主区块链进行计算得到, 而不需要单独记录。这种设计看似麻烦,但有着明显的优势:首先,每个使用者可以 拥有的账户数量是没有限制的。随着比特币使用者的不断增多,账户数量也与日俱增, 为每个账户单独保存余额是对存储空间的极大浪费;其次,对比特币而言,没有中央 节点来保存并管理余额信息,想要保存余额信息,就必须将其合并写入到区块中。否 则,全网节点在对新生成区块的有效性进行检验时,就不仅需要对新的交易进行检验, 还需要对全网所有账户的余额进行追溯检验,这无疑会显著增加工作量。在传统银行 里,储户不能仅仅通过户名就对账户余额进行查询。然而,比特币世界允许上述操作, 也即任何人都可以通过计算主区块链而查询任何账户的余额。比特币账号是完全匿名 的,且每个人可以有多个账号,这就保证了比特币拥有者的个人信息不可能通过分析 账号来获得。因此,即使将余额信息完全公开,也可以保证拥有者的个人隐私