
注:本文翻译自 Medium,作者巧妙的用 Excel 中的 MD5 函数解释了整个区块链中的重要技术,读者可以一边阅读文章一边在 Excel 中操作,感受区块链的魅力。
正文:
学习区块链如何工作的最佳方式是与它们一起玩。这通常需要大量的代码,但我希望能避开这些并使用 Google 表单来解释这些内容。
Excel 通过网盘分享在这里,当你完成后,相信你会很有兴趣向同事和家人来分享它。
https://pan.baidu.com/s/1jwe9x7gbNwzLrH6Ar2zAAA
下载到本地就可以对它进行操作。
哈希
第一个需要了解的,也最重要的事情是哈希。
哈希是用来识别数据的。更具体地说,它是一种将任何数据映射到唯一的随机数据串的方法。在 Excel 中试试吧,更改任意单个字符会导致完全不同的新哈希值:

注意到更改一个大小写字母,后面输出的哈希值都会产生翻天覆地的变化。
这个属性使哈希函数在很多地方都有用处,比如如何检查你的同事是否修改了电子表格?
非常简单,比较历史和现在的哈希值就知道了。
由此可以引入比特币的核心思想:
“Don’t trust, verify.”
哈希函数有很多种。在这个例子中,我们使用的是 MD5 散列函数。让我们再多尝试一下(可以输入任何你想输入的字符):

为什么哈希如此特别?
因为哈希难以逆转(实际上是不可能的)比如上图的 chicken,你无法从那一串哈希函数得出 chicken 这个信息。
小总结 #1:哈希是不可逆的,任何人使用 MD5 算法去哈希 chicken 这串字符,永远都会得到 742929dcb631403d7c1c1efad2ca2700
小总结 #2:哈希函数是确定性的,我们很快就会看到挖矿是如何依赖于寻找特殊的哈希值,从而创建比特币
一个区块到底是什么样的?
一个区块是许多个交易的合集,这些交易会被分组放入区块中,并随着时间的推移逐步添加到链上,下图是就区块里面的样子,包括几条交易信息和区块信息:

单个区块里的信息
🤚花点时间研究这些,并思考为什么这些交易信息是必要的。Junk 字段和 Miner 交易的存在可能会使您感到困惑,但它们非常特殊,我们很快就会讨论它们。
请注意,即使是交易里一分钱的更改也会导致哈希输出完全更改:

修改一点点之后,底部的区块哈希都会发生改变
哈希提供了欺诈保护功能,如果作恶者修改了区块内的任何字段,整个网络都会知道,因为哈希值会发生变化。
挖矿
如果你仔细研究了有效的块,你会注意到有关哈希的奇怪之处:它以六个零开始!这很奇怪,因为我们学到的第一件事是哈希是随机的。那么以 6 个零开头的哈希值的概率是多少?
大约是 1 的 24 次方 = 16,777,216 或极不可能。
这是确定区块是否有效的规则,如果它们以一定数量的零开始(在本例中我选择了6)。
尝试理解这个概念,假设现在需要找到开头是 0 的哈希函数,这个过程应该平均需要 16次尝试,而随着 0 的增加,这个难度也会指数级提升,这个过程就是挖矿。

不断修改字段来找到第一个数字是 0 的哈希函数
矿工的任务
矿工是网络上有兴趣通过形成新的区块来创建新比特币的人。
这是 Junk 字段的来源。矿工设置随机的 Junk 值,对区块进行哈希并检查它是否以零开头。如果没有,则插入另一个 Junk 值并再次尝试,直到它们成功为止。
如果你听说过矿机?这就是矿机在做的事情,因为矿机是专用的,可以比普通计算机更快的执行哈希。
而作为对这项工作的奖励,矿工会收到一些比特币,并作为区块中的第一笔交易。这个奖励就是新比特币的创建方式,并随着时间的推移而减少。
每产生 210,000 个区块,奖励就会减半。在撰写本文时,每挖出一个区块奖励是12.5 个比特币,但在 2020 年将减半到 6.25 比特币,并最终在 2140 年变为零。这就是比特币供应受到控制的方式,一共只有 2100 万比特币。
哈希值开头那些零的数量称为难度,并且经常变化,因为计算机硬件(矿机)每年变得更快。比特币的目标是大约每 10 分钟创建一个新块,因此挖矿难度会不断提升。
工作量证明(POW)
上面描述的算法 - 设定 Junk 值并确定区块哈希是否以零开头的行为称为工作证明:Junk 值是矿工完成工作的证明!
给定一个区块,网络上的任何人计算哈希并验证它以零开头是微不足道的。这里的精妙在于工作证明是一个非常难以计算但易于验证的东西。
一旦矿工找到了有效的 Junk 值,他们就会广播该块,导致每个人都检查该块确实以所需的零数开始。如果每个人都将块添加到他们的区块链中,就意味着整体网络现在已就新区块达成了共识。
在比特币中,junk 值被称为 nonce(无意义),当矿工猜测每个 nonce 没有成功时,他们置换交易并向区块添加额外数据以继续猜测。
区块链的不可逆性
正如我们所了解到的,比特币只是一个分布式账本,其中包含一个这样的过程,链上的矿工通过验证哈希来确定新区块是否有效。
当对区块进行哈希处理时,它包含 Previous Hash 字段(前一个区块的哈希值),这就是为什么它被称为“链”。这可能看起来很简单,但这就是区块链不可逆性的原因,之前产生的区块任何地方的单一变化都会使后续所有区块的哈希失效。
如下图,将 Block 5 中的交易数据更改一点点,后面的区块哈希都会发生改变。

修改之前的区块里的信息,后面的哈希都会发生改变
这就是比特币如此富有弹性的原因。如果作恶者欺骗性地为自己创建了一个交易,比如转账 100 个比特币到自己的钱包,他必须重新计算所有后续哈希值(非常难),并说服整个网络接受这些新的区块。
在任何给定时间,网络上都有许多有效的链。但最终,所有节点达成共识并共享同一条链,承认这条链上的所有交易是有效的,这就是最长链机制。
还有哪些没解释的
我没有解释的大部分内容都与交易有关。如何创建和传输它们需要了解密码学。
交易 - 由创建它们的人进行数字签名。理解这个过程涉及大量的密码学知识。
钱包 - 跟踪发送到你公钥地址的交易软件。大多数钱包本身就是比特币节点
联系我们
扫描下方二维码添加小助手微信: CovenantSQL
加入交流群




阅读原文快速开始 CovenantSQL




