比特币作为数字世界的“黄金”,有很多关于其特性及对世界影响的耸动分析,但缺乏适当抽象度的技术解释。比特币系统的设计非常精妙和优雅,本文希望将其技术之美展现给大家。这篇文章的原始版本完成于2021年8月。
比特币起源于2008年10月31日的一封邮件。在这封邮件中,中本聪(Satoshi Nakamoto)发布了他正在开发的一个全点对点、完全不需要信任第三方的电子现金系统——Bitcoin比特币,并贴出了论文链接:https://bitcoin.org/bitcoin.pdf。这篇加密货币和Web3的奠基之作只有9页,推荐有兴趣的朋友可以阅读。
钱的本质
今天的钱是一套非常复杂的系统,从实物货币和信贷两条路线出发,形成了一个庞大的体系。所以比特币自称为狭义的现金系统而非货币系统。
我们回顾一下花钱的要素:
古代:人们使用银币作为交易媒介。这些银币在铸币厂用纯银铸造,通常带在身上或藏在家中保存。在交易时,交易对手会通过牙咬、切割、熔化或称重等方式来确认银币的真伪和价值,最终通过物理控制权的转移完成交易。
现代:我们使用印钞厂用特殊材料印刷的人民币,这些钞票通常带在身上或藏在家中保存。在交易时,交易对手通过核对防伪标记和识别面额的方式确定钞票的真伪和价值,最后通过物理控制权的转移来完成交易。
当代:我们使用借记卡时,卡里的金额通过现金存入或转账的方式增加,并保存在银行核心交易系统的账本里。在交易时,对手方的收单行向发卡行查询账户余额是否足够,最后通过更新数据库记录的方式完成交易。
设计一个新的现金系统时,同样需要满足这些功能。在讨论比特币之前,还需要介绍一些密码学知识。
基础密码学
非对称加密:大多数加密算法是对称加密,即加密密钥和解密密钥是相同的。然而,非对称加密算法则不同,其加密密钥和解密密钥是不同的,在生成时会同时生成一对密钥。一份称为私钥,由自己保管;另一份称为公钥,可以公开给其他人。使用公钥加密的信息只能通过私钥解开,反之亦然。这种机制确保了信息的安全性。例如,我们使用的网银USB-Key,就是在初始化时在U盘内部生成的一对公私钥,然后公钥交给银行,私钥则永远不会离开U盘。
哈希算法:Hash哈希算法将任意长度的输入转换成固定长度的哈希值,不同的输入会生成不同的哈希值。理论上,不同的输入出现相同哈希值的概率极低,特别是哈希值长度较大时。哈希算法可以理解为一种单向加密,效率非常高,主要用于保证信息的完整性。发送方将信息和哈希值一起发送给接收方,接收方计算收到信息的哈希值,如果与发送方的哈希值一致,则说明信息没有被篡改。
签名:签名是非对称加密和哈希算法的一种应用。传统上,签名用于证明签名者对文本的认可。在网络上,为了保证不可抵赖性,发送方使用私钥将文本的哈希值加密,接收方收到信息后使用发送方的公钥解密。如果解密后的哈希值与接收到的信息一致,则可以认为该信息确实是发送方的真实意思表达。
比特币的核心技术
下面我们同样分为从哪里来、怎么保存、实力验证和完成交易几个模块来介绍比特币系统,但我们要换个顺序,相信我,这样更便于大家理解。
怎么保存:比特币的“账户”
在现实世界中,开设账户需要去银行,由银行在自己的核心交易系统里增加一个与我们身份对应的账号。在比特币世界,账户可以由我们自己开设,不需要第三方机构。
我们使用比特币钱包应用生成一对公私钥对,将公钥进行哈希,得到的编码就是比特币的地址,也就是比特币世界的账户。
实力验证:向前追溯确认资金可用
当张三想给李四转账0.1 BTC时,这在比特币世界中已经是一笔巨款。首先,张三的比特币钱包需要生成一条交易指令,从他的A账户向李四的B账户转账0.1 BTC。这条指令包括代付款的上一笔交易的哈希值和编号,以及B账户的公钥。然后,张三用A账户的私钥对这条交易指令进行签名。
比特币系统中的节点(我们后面会聊到)会通过A账户的公钥校验签名,验证这条交易指令确实是由A账户的所有者发出的。节点还会校验指令的输入部分,通过确认上一笔交易,确保A账户确实有0.1 BTC可供支付。
从这里我们可以理解比特币的匿名性。在比特币世界中,只有A账户和B账户,A账户和其所有者张三,B账户和其所有者李四之间没有直接的关联性。张三和李四不需要通过类似银行的中介机构进行KYC(了解你的客户)并开立账户。然而,这种匿名性的负面影响是,张三对A账户的所有权只能通过私钥来实现。如果私钥丢失,账户里的比特币将无法使用。历史上,已经有许多这种情况发生,因此比特币系统中存在不少“死钱”,只能寄希望于未来的量子计算机能够解锁这些比特币。
另一个比特币系统的有趣设计是,账户里并没有余额的概念。比特币不像银行账户那样每个账户里有余额,在记账时在余额上做增减。实际上,比特币中不存在实际的币,而是UTXO(Unspent Transaction Outpu未花费交易输出)。每笔交易的资金校验源自于对其上一笔交易的校验,并一直可以向上追溯到这笔资金的产生(我们后面会聊到)。每笔交易可以有多个输入(input),也就是说,A账户支付的0.1 BTC可能来自于之前的一笔交易,也可能来自于多笔交易。
从技术角度来看,比特币记录的是一系列数字的交易链,时而合并,时而拆分。这种设计使得比特币系统能够以一种去中心化的方式进行交易验证和记账,展现了其简洁而又复杂的技术之美。
完成交易:“挖矿”
“挖矿”是普通人对比特币最熟悉的词,但它实际上是指完成交易的过程。比特币系统由一系列非授权的节点组成,每个人都可以自由加入,节点是一个程序,用来处理用户通过比特币钱包发出的交易指令。
交易的确认/记账/“挖矿”过程如下:
新交易被广播到所有节点;
各节点将收集到的新交易放进一个区块block里;
各节点为此区块计算哈希,并希望完成工作量证明(proof-of-work);
当某个节点“挖”出了符合要求的区块,就会将区块广播给所有节点;
其他节点检查收到的区块,验证其包含的所有交易,无误后接受;
节点在此新区块的基础上开始“挖”下一个区块。
在去中心化的比特币系统中,需要解决的核心问题是如何让分布在全球的节点共同工作,就像“一台计算机”一样,来记统一本账。中本聪设计的天才之处在于引入了工作量证明(Proof of Work)机制。这个机制的目的是确保分布式节点的数据一致性,并通过动态调整难度来使出块时间保持在大约10分钟,以提供足够的收敛时间。
具体方法是每2016个块(约两周时间)调整一次哈希值开头0的个数,以维持适当的难度。挖矿的过程就是不断改变区块的内容并计算其哈希值,直到找到一个满足条件的哈希值。这个过程是随机的,中本聪称之为“一台CPU一票”(one-CPU-one-vote),即每个节点都有机会参与记账。
从外部角度看,这一机制确实似乎是电力的浪费,因为大量的计算资源被用于解题。然而,这正是比特币网络确保安全和防止欺诈的关键所在。值得注意的是,新的区块链项目如以太坊已经将工作量证明(PoW)改为质押证明(Proof of Stake),以大幅降低能源消耗,同时保持系统的安全性。
从哪里来:每个区块都在铸币
比特币的生成机制非常简单,每个区块都会给“挖”出该区块的矿工一个奖励。创世区块(Block 0)产生了50个BTC,按照今天的价格,这些比特币价值超过300万美元。2021年8月的一个区块奖励给矿工的比特币数量减少到6.43个BTC。这种奖励逐步减少的机制就是比特币2100万枚上限的由来。
除了系统奖励,矿工的收入还包括发送者设定的交易费。例如,某个区块的矿工除了6.43个BTC的奖励外,还会收到0.058BTC的交易费。由于比特币每10分钟出一个块,交易量有限,当系统拥堵时,出价更高的交易会被节点优先打包,以优化整个系统的效率。后面聊比特币系统的安全性时我们还会聊到这点。
至此,我们已经介绍了比特币的技术原理。建议大家从比特币的来源、保存方式、验证机制以及交易过程这四个方面再回顾一遍,感受比特币系统设计的简洁、优雅与美。
比特币“挖矿”的收益
比特币挖矿因其高收益而吸引了大量矿工,挖矿设备也从普通计算机升级到专用ASIC设备,这些设备专门用来强化对SHA256哈希算法的计算性能。以2021年8月为例,当时最强的设备是Bitmain的T19,每秒可进行84万亿次哈希计算,功率为3.15千瓦。根据ASIC Miner Value网站的计算,T19的年利润扣除电费后约为9000美元,三年总收入可达20250美元,年收益率可达到39.9%。
比特币的安全问题
在系统设计层面,比特币主要面临双花问题和51%算力攻击问题。
双花问题是分布式账本的固有问题。只要出现两个符合要求的区块,在比特币系统中链就可能会分叉。当两条区块链同时到达一个节点时,节点会选择接受更长的那条链,最终靠长度取胜。一般认为经过6个区块确认后,交易即被视为安全。
51%算力攻击是指控制了一半以上的节点(或算力)可以控制和修改区块链。虽然不能凭空创造新的比特币,但可以撤销已完成的交易。比特币的生成机制设计上鼓励强算力的参与者维护系统的正常运作,而不是破坏交易。
整体而言,比特币系统的安全性依赖于其抗攻击能力,这主要取决于工作量证明的难度。矿工在节点上投入的算力就是比特币系统的安全保障,系统给矿工的奖励则是维持安全的激励。在2020年,系统给出的矿工奖励折算成美元高达50亿美元,占比特币市值的2.5%,与银行和卡组织的金融机构相比,这一比例相当不错。然而,随着系统奖励的减少,未来对比特币安全的激励可能不足。与50亿美元的系统奖励相比,2020年矿工收到的交易费仅为3.2亿美元。如果没有了系统奖励,比特币的安全投入将只有现在的7%,其安全性将大打折扣。
比特币不只可以记录交易
比特币不仅可以记录交易,还具有一定的扩展性。在创世区块中,中本聪在未用的输入区域留下了一段历史印记,即当天《泰晤士报》的一篇文章《财政大臣濒临为银行业提供第二次救助》,讽刺了比特币期望革新和取代的银行业。
比特币通过脚本和堆栈来锁定一些值,而这些值只能被有密钥的人解锁。比特币脚本定义了几十种操作,提供了一定的可扩展性。然而,由于编程能力更强的“世界计算机”以太坊的出现,比特币基本上沦为了“数字黄金”的存在。
总结
比特币作为一种革命性的数字货币,通过其独特的技术设计展现了极高的安全性和匿名性。从其起源到今天的广泛应用,比特币不仅改变了人们对货币的认知,还引领了区块链技术的发展。通过非对称加密、哈希算法和签名技术,比特币实现了去中心化的交易系统,避免了传统金融体系中的中介和信任问题。
比特币的“挖矿”过程和区块链技术确保了交易的真实性和不可篡改性。然而,比特币的匿名性和私钥管理也带来了新的挑战,如私钥丢失导致的“死钱”问题。尽管如此,比特币仍然在全球范围内展现了巨大的潜力和应用前景。
比特币不仅仅是数字世界的黄金,更是一次技术与金融结合的大胆实验。随着技术的不断进步和更多创新应用的出现,比特币及其背后的区块链技术有望在未来进一步推动全球金融体系的变革。希望通过本文的介绍,大家能够更好地理解比特币系统的技术之美及其对未来的深远影响。
One More Thing
最后,我想引用中本聪在2009年2月11日自己对比特币的一段介绍,来结束这篇文章。https://satoshi.nakamotoinstitute.org/posts/p2pfoundation/1/
比特币:开源的去中心化电子现金系统
我开发了一种新的开源 P2P 电子现金系统,名为比特币(Bitcoin)。它完全去中心化,没有中央服务器或可信第三方,因为一切都基于加密证明而非信任。你可以尝试使用,或者查看截图和设计文档:
下载 Bitcoin v0.1:http://www.bitcoin.org
传统货币的根本问题在于其依赖于信任。我们必须信任中央银行不会使货币贬值,但法定货币的历史充满了对这一信任的违背。我们必须信任银行保管我们的钱,但他们在仅保留少量储备的情况下,大量借出钱款,制造信用泡沫。我们还必须信任他们保护我们的隐私,不让窃贼盗取我们的账户。他们巨大的管理费用也使得小额支付变得不可能。
曾经,多用户分时计算机系统multi-user time-sharing computer systems也面临类似问题。在强加密技术出现之前,用户必须依赖密码保护来确保文件安全,并信任系统管理员保护他们的信息隐私。管理员可以根据自己的判断或上级的指示决定是否侵犯隐私。而强加密技术的普及使得不再需要信任。数据可以以物理上无法访问的方式被保护,无论出于何种原因、何种借口都无法访问。
现在是时候让货币也拥有同样的安全性。基于加密证明的电子货币,不需要信任第三方中介,货币可以容易且安全的交易。
这个系统的基本构件之一是数字签名。数字货币包含其所有者的公钥。要转移它,所有者需将货币与下一个所有者的公钥一起签名。任何人都可以检查签名以验证所有权链。这很好地保证了所有权的安全,但仍未解决一个大问题:双重支付。任何所有者都可能通过再次签名将已使用过的货币重新支付给另一个人。通常的解决方案是依靠一个拥有集中数据库的可信公司来检查双重支付,但这又回到了信任模型。该公司可以滥用其中心地位损害用户利益,支持公司的费用也使小额支付变得不实际。
比特币的解决方案是使用点对点网络来检查双重支付。简而言之,网络像一个分布式时间戳服务器,标记第一个使用货币的交易。它利用了信息易于传播但难以抑制的特性。有关其工作原理的详细信息,请参阅设计文档:http://www.bitcoin.org/bitcoin.pdf
其结果是一个没有单点故障的分布式系统。用户持有自己货币的加密密钥,直接与彼此进行交易,并借助 P2P 网络检查双重支付。
中本聪
http://www.bitcoin.org