返回目录

比特币科普

引言

2010 年 5 月 22 日 美国佛罗里达州的一名程序员在 Bitcointalk 论坛上发帖,成功用 10,000枚比特币 换取了总价值约 41 美元的棒约翰 (Papa John's) 披萨。

而截止至2026年 9 月 20 日,这 10,000 枚比特币的价值已经超过 8 亿美元。5 月 22 日成了“比特币披萨日”,常有记者去回访这名豪掷千金的程序员。

有人可能会问,比特币只不过是一串数据,为什么有如此高的价值?但我需要提醒一下,纸币也只不过是一张纸罢了,却已经成为全球流通的货币。其中的原因在于,货币的价值并不取决于其物理价值,而在于信任。

对于纸币,国家信用与法律让人们相信它的价值。而对于比特币,这种信任甚至不依赖于任何中央机构,而是依赖于使用它的每一个人。比特币是一种去中心化的数字货币,它的规则由社区共同维护。这意味着不会有某个不明智的政府突然随意发布大量比特币导致通货膨胀(津巴布韦币、金圆券)。比特币是一种安全透明的货币,所有交易都是公开的,这意味着很难有某个强权又腐败的官员能悄悄修改自己的余额却不被任何人发现。

或许正是由于对中心化银行的不满,比特币创始人中本聪在比特币的第一个区块中写下了这样一句话:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”(泰晤士报:2009年1月3日,财政大臣正处于对银行进行第二次紧急救助的边缘)

为了理解比特币的安全性,我们首先简单介绍两个密码学概念:哈希函数和非对称加密。

密码学基础

哈希函数

任意长度的输入数据经过哈希函数处理后,都会得到一个固定长度的随机输出值,这个输出值被称为哈希值。

Hash(internetsb) = 85717595a79c990ac88557c6c9735c6842147cc4f755e097c33b2cc584cf7919

且任何微小的输入变化都会导致输出值发生巨大变化,极难从输出值反推出输入值。因此我们可以通过比较较短的哈希值来判断两段非常长的输入数据是否相同。如果一段数据遭到了篡改,那么它的哈希值也会发生剧烈变化。

Hash(12345) = 5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5
Hash(12346) = 34d128f5b3dede622e107438fbefabdf0519ebab21ac7b6f2075f974d09ce524

比特币使用的哈希函数算法是 SHA-256,将任意输入数据转换为一个256比特的哈希值。

SHA256(internetsb) = 85717595a79c990ac88557c6c9735c6842147cc4f755e097c33b2cc584cf7919

非对称加密

非对称加密是一种加密算法,它使用一对密钥:公钥和私钥。公钥可以公开给任何人,而私钥则必须保密。使用公钥加密的数据只能用对应的私钥解密,使用私钥签名的数据只能用对应的公钥验证。

这便有了非对称加密的两个用法:
1. 使用公钥加密一段数据,只有拥有私钥的人才知道这段数据的内容,这就是加密传输
2. 使用私钥对一段数据进行签名并附加未加密的数据,任何人都可以使用公开的公钥和未加密的数据验证这个签名,确保数据的来源是私钥的拥有者,这就是数字签名。

UTXO

在使用比特币进行交易时,我们并不是看账户里总共有多少钱,而是看我们账户还有多少钱没有交易出去,这些未花费的比特币被称为 UTXO(Unspent Transaction Output,未花费交易输出)。让我们详细解释一下:

比特币钱包地址是一串由字母和数字组成的唯一字符串,由公钥进行一定规则的转换得到。每个钱包地址都有一个对应的私钥,当我们想要花费比特币时,我们需要使用私钥,通过某种算法对一笔交易进行签名,证明我们是该地址的拥有者,拥有对该地址下比特币的支配权,其它人可以使用公钥来验证我们的签名。

地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (请勿转账)
地址:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh(请勿转账)
1A 私钥签名 (1A1z... 转给 bc1q... 50 BTC)
通过公钥验证该签名,确定交易有效

比特币的交易虽然为数字形式,但不同于其它电子钱包通过交易双方账户余额的增减来进行一笔交易,比特币的交易方式更类似于纸币。

想像这样一个场景:
Alice 有50比特币,她想给 Bob 20比特币。Alice 的钱包地址 A1 有 30 比特币,地址 A2 有20比特币,Bob 的钱包地址是 B。
当 Alice 想要用地址 A1 给 Bob 20比特币,并找零10比特币至地址A2时,她需要使用她的私钥对这笔交易进行签名,证明她是地址 A1 钱包的拥有者。Bob 收到交易后,他(和全网其它节点)会确保 Alice 的签名是正确的,并且查找以往的交易,确认 Alice 的 UTXO 足够支付这笔交易。这样,Alice 的交易花费了 A1 的 30 BTC UTXO,生成两个新 UTXO:Bob 的 B 地址 20 BTC,A2 地址 10 BTC 找零。A2 原有的 20 BTC UTXO 仍然存在,只是新增了一个 10 BTC UTXO。A1 的旧 UTXO 则被标记为已花费。

任何人都可以查看 Alice 地址的交易记录,确认她的 UTXO 是否足够支付这笔交易。比特币的交易是公开透明的,任何人都可以查看某地址的交易记录,但只有拥有私钥的人才能签名并花费对应地址上的比特币。

区块与区块链

区块是比特币交易记录的“账本”,区块有区块头和区块体,每个区块体包含了一定数量的交易记录。这些交易记录通过Merkle树结构进行组织,确保这些记录不可篡改。

区块体中的每条交易记录通过两次 SHA-256 哈希运算生成一个哈希值,这些哈希值再通过两两组合拼接再次进行双重哈希运算,最终生成一个根哈希值,这个根哈希值被称为 Merkle Root,这个根哈希值存放在区块头中。通过这种方式,任何一条交易记录的篡改都会导致根哈希值发生变化,从而使整个区块的哈希值发生变化。

同时,区块头中还包含一个随机数(Nonce),这个随机数是不断尝试最终得出的一个值,使得区块头的哈希值满足一定的条件(即小于某个值)。求解这个数需要很长时间(全网大约每10分钟产生一个新区块),黑客如果想要修改区块中的交易记录,会导致区块头的哈希值发生变化,从而使得这个随机数不再满足条件,黑客需要重新计算这个随机数来制造一个“合法可信”的区块,这个过程是非常耗时的。

此外,区块头中还包含前一个区块的哈希值,这就形成了一个链条,称为 区块链。这样一来,如果有人想要篡改某个区块中的交易记录,即使偶然算出了满足条件的随机数,也会导致与后一个区块中记录的前一区块哈希值不匹配,导致必须同时计算该区块之后产生的所有区块的随机数。这相当于与全网的算力进行竞争,几乎不可能成功。

区块链确保了交易记录公开透明且不可篡改,那么谁来维护这个区块链呢?这就涉及到比特币的挖矿机制。

每个区块的第一笔交易是一个特殊的交易,称为 Coinbase 交易,由第一个计算出满足条件的随机数的人(即矿工)将一定数量的比特币奖励给维护区块链的自己,这就是挖矿。

Coinbase 交易的奖励数量是固定的,最初为 50 枚比特币,每隔 210,000 个区块(大约每四年)减半一次。2024 年 4 月,比特币的奖励减半至 3.125 枚比特币。预计在 2140 年左右,比特币的总量将达到 2100 万枚,届时将不再有新的比特币产生。但不用担心,区块中的每一笔交易都会产生交易手续费,这些手续费将成为区块链维护者的主要收入来源。

随着硬件算力的提升,随机数会变得越来越容易计算,为了保持每 10 分钟产生一个新区块的速度,比特币网络会根据全网算力的变化调整难度(即调整合法区块头哈希要小于的值)。比特币网络每 2016 个区块(大约两周)会重新计算一次难度,确保新区块的产生速度保持在平均每 10 分钟一个。

去中心化

比特币没有一个中心化的机构来维护账本,而是由全网的节点共同维护。理论上,任何人都可以成为比特币网络中的节点,只要下载比特币客户端并同步区块链数据,就可以参与到比特币网络中来。

所有节点都会保存一份完整的区块链数据,并且会不断接收新的交易和新区块。当一个节点收到新的交易时,它会验证交易的合法性,并将其加入到自己的内存池中。当一个矿工计算出满足条件的随机数并生成一个新区块时,它会将这个新区块广播给全网的所有节点,其他节点在验证新区块的合法性后,也会将其加入到自己的区块链中。

节点会信任累计工作量最大的区块链,因为累计工作量最大的区块链意味着有最多的算力在维护它,篡改困难。

如果同时出现两个新区块,节点会选择在其中一条链上进行挖矿,直到其中一条链又产生了更多区块,从而成为累计工作量最大的链。这样一来,节点之间就形成了共识,确保了区块链的安全性和一致性。

行业惯例标准为:如果六个区块之后,某个交易仍然在累计工作量最大的链上,那么这个交易较为可靠。

51% 攻击

51% 攻击是指一个实体控制了比特币网络中超过 50% 的算力,它将能够更快地计算出随机数,构造最长链,从而能够对区块链进行攻击。

攻击者拥有超过 50% 的算力后,可能:
1. 一笔钱花两次:回滚自己的交易,实现同一笔资金的多次消费,即双花。
2. 垄断:攻击者可以孤立其他矿工构造的区块,垄断区块奖励和交易手续费。并且可以挑选性地记录交易,阻止某些交易被确认。

但由于攻击者没有不属于自己的地址的私钥,因此无法擅自签署交易从其他人的地址中盗取比特币。

并且,即使一个实体拥有超过 50% 的算力,它也可能不进行攻击,为什么呢?因为比特币的价值来源于信任,而攻击者的行为会破坏这种信任,导致比特币价格暴跌,从而使攻击者手中的比特币贬值。换句话说,攻击者的利益与比特币的价值是绑定在一起的。

2014年,GHash.io 算力占比一度触及 51% 临界点,导致比特币社区的恐慌和比特币价格的下跌。GHash.io 公开承诺不会滥用其算力,并且在社区的压力下,GHash.io 的算力占比迅速下降至 40% 以下。

结语

目前,虚拟货币“挖矿”在中国大陆已经被禁止,本人不鼓励任何投机行为。

相较于炒币,构建出可信共识的区块链技术更值得我们关注。其去中心化、公开透明、不可篡改的特性,使得区块链技术在金融、供应链、医疗等多个领域都有广泛的应用前景。

留言