比特币、挖矿、区块链

比特币、挖矿、区块链

1. 原理概述

比特币是第一个加密货币。类似比特币等加密货币,它们的支柱是一个去中心化的、无需信任的验证系统,它依赖数学和密码学。

加密货币的交易实体是一个账本(上的记录),货币的实体就是交易的历史(通过交易历史计算某个人的余额)。

对于账本上的一条记录,例如 A pays B 10$(A 支付给 B 10 美元),如何确保这条记录的可靠性?非对称加密,A 通过私钥加密记录信息,任何拥有 A 公钥的人都可以解密并验证该信息。并且为了防止他人复制该信息(例如 C 复制了多次 A 通过私钥加密后的消息,这样 C 虽然不知道 A 的私钥,但依然可以伪造 A 的消息),每条消息还会加上一个时间戳,确保相同记录间的唯一性。

另外,如果将账本保存在一个实体手中,那就不符合去中心化的要求,因为由单一实体保管账本,是不可信的,因此,在加密货币中,任何人都可以保管账本。对于一条消息是否可信,由大多数人决定(>50%)。

但是,对于保管账本的这些人,它们不会白白给我们保管账本,需要给他们一定的奖励。在这里,通过 “工作量证明” 来进行奖励。

工作量证明的原理是,对于用户 Alice 保管的账本,他需要进行计算,使得账本经过单项哈希计算后的二进制串的前 k 位为 0(例如 k=60),由于哈希计算是单向的。具体的,为了使得账本的哈希值前 60 位为 0,Alice 需要在账本添加一条记录(一个随机数),使得账本在添加随机数之后,哈希计算所得二进制串前 30bit 为 0。

在这里,Alice 只能暴力枚举这个随机数,对于 k=60 的情况,需要 \(2^{60}=1e18\) 次计算,这个计算量是很大的了。如果 Alice 成功计算出了这个随机数,我们就给与 Alice 一定的奖励:Alice 可以在帐本中添加一个记录(Block creator 1 gets 10 比特币),第一个发现新区块的人,也即该随机数的 1 号发现者获得 10 比特币。

获得该奖励记录的过程就是“挖矿”。所谓的“矿工”,就是接收交易信息,计算随机数获得区块(下文所提到的链表中的节点),把区块广播出去,

对于账本的历史记录,就通过这个随机数作为 ID 连接起来,每个账本需要记录 pre hash(pre 指针) 和 cur hash,就是一个链表,链表中的节点就是账本。在这里,链表节点就称为 block,这个链表就是 block-chain(区块链)。

对于使用这个加密货币系统的用户,它们不需要接受交易记录信息,只需要接受矿工们广播出来的区块(账本),然后更新到自己保存的区块链中即可。

如果此时接受的多个账本发生了冲突,就选择长度更长(链表节点更多)的区块,如果一样长,就都不接受,等待新的更长的区块。

问题是,信任最长的区块链是否可靠?

在这里,我们思考以下,在“信任最长的区块链”的标准下,如果我们想完成欺骗,要怎么做。在这里,我们假设 Alice 欺骗了 Bob:

  • Alice 在最新的区块中添加一条欺骗信息:Alice pays Bob 100 比特币。但是 Alice 只将该区块发送给 Bob 而没有发送给其他人,这样其它矿工就无法得知该记录,也就是其他人不知道 Alice 花了 100 比特币。
  • 此时,Bob 除了接受 Alice 发来的区块之外,依然会接受其它矿工发来的区块,根据 “信任最长的区块链” 原则,Alice 只有总是比其它矿工先计算出使得该区块的哈希值前 k 位为 0 的随机值才行。
    • Alice 广播的的区块链:... -> 最新区块 -> Alice添加了欺骗消息的区块
    • 其它矿工广播的区块链:... -> 最新区块
  • 这样 Alice 的区块链才比其它矿工的区块链要长。
  • 最核心的问题是,对于之后 Alice 广播给 Bob 的每个区块,它都要添加该欺骗消息并计算新的区块,一次两次还可能说碰运气(虽然也不可能),时间长了 Alice 肯定会露馅,因为要保证 Alice 的区块链总是比其它矿工的区块链要长,就要保证 Alice 计算出新区块的速度更快。否则, Alice 迟早会露馅。这就要求 Alice 的算力至少是该加密货币系统中总算力的 50%(不考虑小数),这显然是不可能的。

这也给我们一个启示,当我们接收到一个新区块时,它的可信度并不高,就如我们上面提到的,但如果后续我们由接收到了很多新区块,那么之前接收到的那个区块的可信度就比较高了,因为不会有人做到算力达到总算力的 50%。

不过,为了加速新区快的发现时间,加密货币系统会动态控制 k,使得新区快的平均发现时间在 10 分钟左右,这意味着,每 10 分钟只会有一个人获得奖励,当然,不同加密货币对数值的规定不同,这里讨论的是比特币。因此,随着挖矿的人越来越多,率先发现新区块的竞争压力也就越大,并且为了避免比特币贬值,随着发现的新区块的个数的增加,奖励也会减少。

在比特币中,每隔 4 年,也就是大约新发现 21w 个区块之后,奖励会减半,最初是 50 比特币,目前,每个区块的奖励是 12.5 比特币。根据上面提到的,210000(50+25+12.5+...)=21,000,000,也就是比特币的总数在 2100w。当然,这并不意味着,在比特币接近 2100w 时矿工们没有收入了。除了发现新区块的区块收入,矿工们也能获得手续费,具体而言,就是对于每一条用户添加的交易,需要支付一定的手续费,这份手续费属于第一个发现该区块的矿工。

2. 核心概念

Digital Signatures

The ledger is the currency:公共账本就是货币

Decentralize

Proof of work

Block chain

3. 参考

3Blue1Brown

posted @ 2025-06-11 17:58  光風霽月  阅读(40)  评论(0)    收藏  举报