为了呼应 “介绍比特币” 系列的萌萌哒风格,编译这篇文章的 Xiaoke 也是萌妹子一枚。Xiaoke 说,这篇文章让她对比特币的了解大大加深。这篇文章有点长、很多图,但如果你有一点耐心,读完后一!定!能!看!懂!

在上一篇 “写给女盆友的萌萌的比特币指南” 中,我们讲到了比特币是一种与任何机构和政府都无关的数字货币系统,比特币上的所有消费记录都会永久存在一个公共且分布式的长链条之上,也提到了哈希函数的概念。那么,传说中的挖比特币究竟是怎么回事?为什么好多人都说挖比特币会费电?大家又是为什么会相信比特币呢?
小编作为一个脑子不是十分好使的非技术宅,在翻译这篇文章前始终认为比特币是一种 "信则有不信则无" 的东西,十分玄妙。但在认认真真研读完这个文章后,虽不能说有醍醐灌顶之感,但还真的是突然明白了点什么,起码终于开始相信比特币背后是有强大的技术支撑。以下文字都是小编在多方核实之后编译出的肺腑之言,全是大白话,保! 你! 看! 懂!
就像美元一样,比特币的价值也是会浮动的。曾经人们相信美元的价值是因为美元可以买黄金,而大家相信黄金。现在大家相信美元,也是因为相信美国政府。而比特币之所以值得信任,既不是因为黄金也不是政府,而是因为比特币是基于哈希函数和公钥密码学的一种数学机制。
哈希函数 & 比特币区块链
区块链是一本全网记录所有已发生的比特币交易的公共账本。它是一串使用密码学方法相关联产生的数据块,你可以把区块链想象成一堆连在一起的箱子,每个箱子都是一个区块,包含了过去10分钟内所有比特币网络交易的信息。

你也可以把区块链理解成摞在一起的一堆箱子,最早的交易在最底端,最新的交易在最上边。如果试图篡改中间任何一段交易,上边的箱子都会倒下,因此篡改比特币交易是很容易被发现的哦!
每个区块头都会被进行 SHA256 哈希加密,生成一个哈希值。每个区块都有自己独一无二的哈希值,一般是一长串看起来像乱码的字符。比如,一个区块的哈希值可能是:
“00000000003e95b0ac78cb961d0”
看晕了? 我们来点例子。
假设第1个区块的哈希值是⚽ (足球), 第2个区块的哈希值是 ???? (鱿鱼), 第3个是 ???? (雨伞),那么这个区块链就会长成这样:

假设我的朋友小明给了我 5 刀的比特币,然后我想把这 5 刀的比特币给你。当我把它给你的时候,这笔交易就会和很多笔其它交易一起,被加到一个区块中,然后被放到同一个的区块链上。每个区块都有自己在区块链上的独特位置,因为每个区块头都包含它的父区块的哈希值。
也就是说,假设比特币系统的第 3 个区块刚刚有了自己独特的哈希值,也就是 ???? 。那么我一旦给了你 5 刀的比特币,这笔交易就会被算在第 4 个区块上,这个区块暂时还没有哈希值,我们不妨用?表示:

下面就要讲到传说中的挖矿了。搬小板凳,划重点!
挖矿,就是一群技术宅在比赛看谁能最先算出第 4 个区块的哈希值。第一个算出哈希值的 “矿工” 会得到 12.5 个比特币。(按照中本聪的设计,整个比特币系统在最初阶段,每十分钟就会发行 50 个比特币,每四年发行量减半。所以已经运行到第九年的比特币目前是每十分钟发行 12.5 个比特币。发行量不断收敛,到 2140 年左右,比特币发行总量就会接近理论上限 2100 万个。)
算出并核实这个哈希值的正确性之后,这个区块就会被加到整个的大区块链上,然后大家又会投入到计算下一个区块的哈希值上。
计算哈希值这件事情本身并不难,电脑在一秒钟之内可以找到上万个哈希值。但是!这件事情放比特币上就难了,因为相比于其它的哈希值,得到的这个区块哈希值必须灰常、灰常、灰常小才可以。矿工如果想找到这个巨小无比的哈希值,唯一的方法就是一遍一遍的试。而且每一次尝试的方法都必须要不一样才行。
计算哈希值中一个很重要的概念是“随机数”,有点像上篇文章中提到的一个1像素的黑色跳蚤放在小狗的眼睛上。

“Puppy” by Jonathan Kriz is licensed under CC BY 2.0.
我们上次提到,无论你对图片进行了多小的改变,对小狗进行哈希函数运算之后,得到的数值都会完全不同。
究竟是怎么个随机法呢?矿工每次会把前一个区块的哈希值和新区快的所有交易放在一起,加上一个随机数,企图算出一个哈希值。这个矿工需要尝试很多个随机数,期望最后得到的哈希值会是那个极小的数值。
现阶段,一般需要矿工无数亿次猜想,才可能找到一个正确的随机数。每十分钟一般就会有一个人猜出来,因为矿工用来挖矿的电脑配置都十分强大,而矿工的数量本来也就多。比特币很“贱”的一点在于,如果得到正确哈希值的平均时间小于十分钟了,那么比特币系统就会自动把问题变得更难,也就是把目标哈希值设定的更小,这样大家解题所需时间就会更长。
金子之所以有价值,是因为它是一种稀有金属;同理,一个最终成功的哈希值之所以有价值,正是因为它的小使得它具备了稀缺性。矿工们一起尝试数亿次,为的就是猜出一个随机数,使得最后算出的哈希值可以达到比特币系统的严格要求。如果要赢,诀窍就在于电脑要足够强大,猜的次数也要足够多。
举个例子,我们假设这个系统的要求是最终的哈希值必须是一个小动物。三个矿工的尝试如下:

很明显,其中只有第二名矿工得到海豚的符合要求,而得到花和梨的两个人都没达到要求。
因为第二名矿工得到了正确的哈希值,这个矿工可以得到新的比特币作为奖励。整个过程真心很像挖矿,需要不断的努力,才有可能最终得到比特币。
如果矿挖得过快,系统就会产出过多的比特币,导致膨胀。为避免膨胀,比特币系统拥有一套自动调节机制,也就是我们上边提到的,它接下来就会选择更加严格的限制。
比如我们把要求改成,下一个哈希值必须是一个小动物,而且还必须是有爪子的。三个矿工计算后得到以下结果:

其中没有一个是有爪子的小动物,所以这三个人决定再试一次:

这次,我们看到了 ????,一个有爪子的小动物!这第三个矿工此时就可以把这个值公布出来,其他矿工会很快验证这个值是否符合要求。一旦证明符合,他们就会把这个区块放到区块链上,开始准备计算下一个区块的哈希值。
现在,区块链已经变成了这个样子,我刚才给你的5刀比特币已经被包含在了????这个区块中:

公钥密码学
哈希值只是比特币所依赖的数学概念中的一个,公钥密码学是另一个。研究公钥密码学的人一般用 Alice 和 Bob 来解释这个概念。
假设 Alice 想给 Bob 一个装有很多秘密文件的公文包。如果 Alice 和 Bob 有相同的钥匙,问题就很简单了。Alice 用自己的钥匙把公文包锁上,然后把包给 Bob:

Bob 收到包之后,可以拿自己的钥匙把包上的锁打开,拿到文件。这个过程就叫做“对称加密”。
但一般来说,互相传送秘密的人之间是没有相同的钥匙的。这时候,Alice可以用自己的钥匙把公文包加上自己的锁,把包给 Bob。Bob 收到包之后,没有钥匙开 Alice 的锁,但是可以加一把自己的锁上去:

然后把包送回给 Alice...

Alice 用自己的钥匙把自己的锁打开:

然后把公文包再送到 Bob 那里:

Bob 就可以再用自己的钥匙把自己刚才的锁打开了。
于是 Alice 和 Bob 不需要有相同的钥匙或者共用一把钥匙了,他们只要有自己的钥匙,和各自的锁就可以啦。
但是,对方突然变成了一个你不认识的路人甲怎么办?如果 Bob 突然变成了一头牛,该怎么办?

会发生如下惊人事件:
1. Alice 把公文包锁好后送出去,她以为自己给了 Bob,但事实是给了一头牛。
2. 这只神奇的牛,把公文包加上自己的锁,把包送回给 Alice。
3. Alice 以为把包还给自己的人是 Bob,也就是以为包上的锁是 Bob 的,于是愉快地把自己的锁打开了,把包还给了对方。
4. 这只神一般的牛理所当然的就打开了锁,打开了包...
5. 哞哞哞!牛牛把机密文件当草吃了...
我们不想上述悲惨事件发生,于是中间需要加一步:Alice 如果知道 Bob的锁长什么样,那不就好办了!所以事实是,Bob 的锁长什么样,全世界人都知道。一把钥匙开一把锁,Bob 才不 care 谁知道自己的锁什么样呢,反正自己的锁只有自己能开。同时,Alice 也不用担心公文包被不认识的人打开啦。
区块链中,这个锁是一串公开的数字,就是“公有链”;钥匙是一串只有自己知道的数字,叫做“私有链”。
敲黑板:锁=公有链;钥匙=私有链。这也就是公钥密码学。
区块链系统中,公钥密码学用来证明所有权。先来说几个定义:
私有密钥、公有密钥和地址:

不像 Alice 和 Bob 的秘密文件,这些比特币系统中的钥匙并不是想给任何东西加密。它们不是用来给任何东西开锁的,而是为了证明所有权。
在比特币世界中,Alice 给 Bob 的不是一个秘密公文包,是一个装有她的锁和比特币的玻璃盒子:

为了把比特币给 Bob, Alice 需要做两件事:
1. Alice 需要把 Bob 的锁加在盒子上。这步不难,因为 Bob 的锁是公开的。只要 Bob 可以拿自己的钥匙打开这把锁,那么就证明这个盒子/比特币归他所有。
2. Alice 需要先证明跟比特币放在一起的是她的锁,而证明这个只要她能拿自己的钥匙把这把锁打开即可。

当 Bob 想把 Alice 给他的比特币再给另一个人 Carlos 的时候,他只需要把 Carlos 的锁放在盒子里,然后用自己的私有密钥确认交易。
实际上,除了把 Bob 的锁放在盒子里之外,还有另一个方法,那就是 Alice 可以从 Bob 的公有密钥中得到他的比特币地址。所以 Alice 只要把比特币送到 Bob 的比特币地址就可以。从一个公有密钥可以得到无数个地址,所以如果 Bob 每次都想用一个不同的地址,他也是可以做到的。
回到我给你的那 5 刀比特币。如果我把这 5 刀比特币发到你的比特币地址,你就可以用自己的私有密钥拿到这 5 刀毕业币。如果想把这 5 刀比特币花掉,你只需要把钱打到另一个人的比特币地址,然后用自己的私有密钥签字。
本文编译自 Tess Rinearson “Making Money Trustworthy
Bitcoin Explained (with Emoji), Part 2”
图文版权归原作者所有
编译:Xiaoke
返回搜狐,查看更多
责任编辑:
