凭证
凭证是比特币和区块链拼图上的最后一块碎片。如何确保没有人以你的名义发送错误的交易?在由中间人调度的货币系统中,你只有在登录你的账户后才能支付或汇款。你的用户名和密码等账户信息,是由信用卡组织或银行等受信任的金融机构保存的。
当然,比特币的意义在于去中间人。因此,用户名和密码(你需要委托受信任某些组织来保存它们)可以不起作用。实际上,根本不应该有一个“注册”的中心场所。那么该如何让比特币用户管理他们的比特币呢?
去中心化的账户
比特币依靠数学和概率学实现账户的去中心化。实现没有中间人的去中心化的注册的首要方法是,让用户自行选择用户名和密码。但是因为没有中央服务器,用户无法检查他们想要的用户名是否已经被其他用户注册了。这个问题的解决方案是,让用户从数万亿个随机的“用户名”中选择一个。面对数量庞大的用户名,用户选到一个已经被选过的用户名的概率微乎其微。
下一个难题是如何在没有中央服务器的情况下提供检查密码的系统。比特币系统通过运行根据用户的“密码”计算用户的“用户名”的单向函数(就像前面提过的哈希函数)来解决这个问题。用户为了证明自己拥有一个“用户名”,他必须提供输入函数后能被转换为“用户名”的“密码”。(请记住,根据“用户名”猜出“密码”是不可能的。)
我们之所以把“用户名”和“密码”放在引号里,是因为比特币不使用这些术语。
比特币要用到私钥。私钥是一个只有你才应该知道的长且完全随机的字符串。它通常是52位的由字母和数字组成的字符串。这种编码方式被称为Base58[11]。私钥在比特币中扮演着密码的角色。
可以用私钥运行一个被称为椭圆曲线数字签名算法的单向函数来生成一个被称为公钥的中间数字(intermediary number)。
然后运行比特币挖矿中著名的SHA-256和RIPEMD-160这两个单向函数,并且进行更多的数学调整,以获得一个压缩版本的公钥。这个公钥被称为比特币地址。比特币地址是一串由字母和数字组成的26~35位字符串,也是由Base58这种编码方式生成的。比特币地址是比特币最接近用户名的东西:它是公开的,能用来识别你的身份。
你可以在generatepaperwallet.com这个网站上随机生成自己的比特币私钥和地址。(人们通常会忽略公钥,因为它是一个中间数字)。使用该工具,我们可以得出一个私钥:
L3QwdtohEnUvkUDXH6KDyN1RLF2uLYNQ1qeyp8mmL6cNvZsk orDW
和一个地址:
12zQuwSVdSo7YhU6sjLnYuni2K24jZR8AA
我们现在可以使用这些凭证来接收和发送比特币了。注意,私钥和地址是由算法生成的,因此你甚至可以在不连接互联网的情况下生成它们。你不需要为它们做登记。
交易签名
一旦有了私钥和地址,你就可以开始发送和接收比特币了。为了证明你是一笔交易的发送方,你可以使用自己的私钥在交易上创建一个“标记”,从而对交易进行数字“签名”。任何人都可以使用你的公钥(当然可以,因为它对所有人是可见的)来确认应用标记的人是你,但是没有人可以根据标记反向推出你的私钥。
这个系统的工作原理就像我们在支票、法律文件等上面使用的墨水签名一样。任何人都可以看到你的签名。你可以将一个新签名与一个已知真实的签名进行比较,以检查它们是否由同一人签署。而且,最重要的是,你不可能仅仅通过观察就伪造签名。
透明的保险箱
事实上,比特币比传统的用户名—密码方案更高级。因为所有的交易记录都在区块链上公开展示,所有人都可以查看任意地址的交易记录和比特币余额。我们喜欢把比特币“账户”比喻成透明的保险箱:任何人都能看到里面有多少钱,但只有拥有私钥的人才能使用这些钱。
我们生成了一个随机的私钥和地址。不要把钱发送到这个地址,因为任何有这个私钥的人都可以获得里面的钱。这张图片叫作纸钱包。你可以打印出你的私钥,这样就可以把它保存在一个安全的地方了。
这是一项非凡的创举。除了雅浦岛石币,其他任何形式的货币都无法提供这种透明度。它为分析师提供了一种了解比特币经济状况的有力方法,有助于追踪使用比特币的网络犯罪分子,并且能轻松证明你进行了交易。但显而易见的是,这意味着用户没有那么多的隐私了。
将“密码”嵌入货币
退一步说,你会注意到比特币背后隐藏着许多数学原理:用于挖矿的哈希函数、用于生成密钥和地址的单向函数,以及用于证明身份的数字签名。这些都属于密码学范畴。密码学是一门通过将信息编码或加密成攻击者无法逆向求解的格式来保证信息安全的科学。
因此,比特币被称为加密数字货币。中本聪的观点是,密码学让你拥有一种既安全又透明的货币。这就是比特币的核心。
[1] 较高的费率是美国许多商店不接受运通卡的原因。
[2] 西联汇款(Western Union)是西联国际汇款公司的简称,是世界上领先的特快汇款公司,迄今已有150年的历史,拥有全球最大、最先进的电子汇兑金融网络,代理网点遍布全球近200个国家和地区。中国光大银行、中国邮政储蓄银行、中国建设银行、浦发银行等多家银行是西联汇款的中国合作伙伴。使用这种方式支付大概要花费15分钟的时间。
[3] 速汇金(MoneyGram)是一种个人间的环球快速汇款业务,可在十余分钟内完成由汇款人到收款人的汇款过程,具有快捷便利的特点。速汇金是与西联汇款相似的一家汇款机构。速汇金在国内的合作伙伴有中国银行、工商银行、交通银行、中信银行。
[4] 有关十六进制和其他数字系统的知识,见附录A。
[5] “nonce”这个词来源于“number used only once”(只用一次的数值),因为你试了一次,如果不行就得把它扔掉。
[6] 你是否也很好奇呢?我们猜测这是默默无闻的美国第11任副总统乔治·米夫林·达拉斯(George Mifflin Dallas)的名字缩写。
[7] 具体的难度取决于输入文本的复杂程度。如果你的密码是“hello”,然后使用SHA-256算法进行哈希处理,你的密码很容易被破解。因为互联网上可能有人发布了“hello”经过SHA-256算法处理的哈希值。在谷歌上对哈希进行简单的搜索就会显示输入。
[8] ASIC的全称为Application-Specific Integrated Circuit,指的是专门设计用来完成特定计算任务的集成电路。
[9] 还有其他类型的ASIC,如专门用于机器学习或图像处理的ASIC,但是在加密数字货币的相关文章中,这个术语总是指专门用于挖矿的芯片。
[10] 即与所有比特币矿工的计算机的哈希能力的总和对比。
[11] 有关Base58和其他数字系统的知识,见附录A。