主页 > imtoken官网下载安全吗 > Bit Requiem 02 (Part 2) 凶手的朋友是比特币矿主

Bit Requiem 02 (Part 2) 凶手的朋友是比特币矿主

imtoken官网下载安全吗 2023-03-27 06:42:39

写作/苏为

本集中的关键词:交易所、分布式账本、节点、区块链、区块、链、交易、打包、广播、散列、散列函数、加密安全、发行机制、反向散列、枚举、记账权、默克尔树、时间戳

即使只是多了一个空格,哈希值也会完全改变。那么,对于“安全”的含义,你应该猜到了,密码学最怕什么?

最差?你最害怕什么?

密码学最怕“规律”!法律是密码学的天敌。算法规律的发现意味着它不再安全。而如果生成哈希值的算法是安全的,那就意味着试图通过修改输入值来获得相似的哈希值是不可能的。

嗯,我明白了,比特币的这种“安全性”是区块链“链”的安全性,是牢不可破的。因为人们无法通过操纵已经打包好的区块来改变已建立的数据,因为生成哈希值的算法是“安全的”,无法破解。

那么,你现在明白了吗?如果你无视加密规则,试图篡改或破坏任何一个区块,整个“链条”都会断裂,即使你有技术也无法修复它。与其花费巨额成本去做做不到的事情,不如诚实地接受这个“分布式账本”的客观性和真实性。

你说,有没有可能两个不同的输入数据的hash值完全一样?毕竟你看,即使是256位,也只是字母和数字的组合,而且长度,字母和数字的个数也是有限的,也就是hash值的个数是有限的,而且,世界上的文件数据是无限的!

嘿,为什么你总是喜欢直截了当?你的想法理论上是正确的,但是如果有一个“安全”成熟的哈希算法,我可以很清楚的告诉你,概率太小不可能,就像……这就像你连续买了3次彩票可以赢得大奖,甚至比这更不可能。

比特币主网是什么,我明白了,用法律语言来说,这是“无可置疑的”。

是的!计算哈希值的算法有很多种,MD5、SHA-1、SHA-2、SHA-3等。随着技术的进步和计算机硬件的发展,有一些旧算法因为不那么安全而被抛弃,但这种所谓的不安全其实只是相对的。

那么比特币主网是什么,如果可以概括,那么本质上,“不安全”的原因似乎是什么?

正如我之前所说,它是“法律”。或者,从算法的角度来看,“重复”、“不够随机”。

不够随机?

是的,不够随机。之所以能将原始数据映射成难以逆向推导的哈希值,是因为算法的元素具有足够的随机性。但是,我们怎样才能得到一个真正的随机数呢?这一直是个问题!我们今天所认为的在更大范围内产生随机数的功能,只是因为某个定律足够宽泛,以至于我们人类只能盲目地触摸大象并偷看它。

感觉自己掉进了一个大坑……

所以,让我们停止这个话题,否则我们会遇到麻烦。因为,就地球人的认知而言,无论怎么折腾,都如同孙悟空十万八千里的逆袭,无论如何也逃不出佛陀的手掌心。无论我们如何“寻找支点”,都无法改变“地球漂浮在一个空荡荡的宇宙中”这一客观事实。

作为一个普通的地球人,我只能顾及时事,走自己脚下的路。我没有这么大的心去承担世界的命运!

你的“即时事件”是什么?

努力工作,养家糊口!另外,当你有空闲的时候,做一些你感兴趣的事情来满足你与生俱来的好奇心。哎~说到养家,要是能发财就好了。

“人活着就应该立下大功,何必叹息!”

哈哈,坏掉的机器人,你的台词很会记!

我想告诉你,“挖矿”可以让你变得富有!很多人通过“挖矿”实现了财务自由!当然,我指的是几年前投资比特币和区块链的那群人。现在,暴利时代已经过去,他们赚的只是血汗钱。

是的,我们聊了很久,本案中的老张是如何“挖”比特币的?

所谓“挖矿”,就是比特币的发行机制。

比特币是分布式的,没有中心化的组织来管理它。谁来发行?

比特币总量为2100万,用比特币代码写成总量不变。所谓发行,就是按照一定的规则,从系统中无中生有地发放到指定账户。这套规则是,所有比特币节点,每个人都来回答一道数学题,谁先算出正确答案,谁就得到一定数量的比特币奖励,那就是以奖励的形式发行比特币!

这是什么数学题,我也算一下,纸笔都准备好了,报告题,看看能不能抢到几个硬币?

师父,你总是那么幽默!这道数学题,普通人计算不了,普通机器也计算不了。

比特币矿工

我不相信,你在说什么?

题目说起来也很简单,可以表示为hash(hash(a+b+c+X))=N,其中a、b、c是已知的,是一些hash值,N就是前面有几个0的一串hash值,例如000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506,找到X?

这个,这个,我用纸和笔可能算不出来,但我应该可以用电脑算出来吧?

呵呵~没那么简单!有没有注意到公式括号外的计算方法是hash?并且有两个哈希值。

哦?

还记得我们之前说的吗?哈希计算很容易从输入计算输出,但很难从输出推导出输入!更何况比特币是设置做两次hash的,你怎么计算的?

哦,是的,哈希函数是一种加密应用程序。

所以,从N计算X的值,相当于逆向破解hash运算。

我明白了,因为hash操作是一种加密,因为这种操作没有规则可循,所以反向破解没有捷径,只有暴力枚举,从1,2,3,4.. .开始一一尝试。

那么,你认为,这可以用普通机器计算吗?至于由血肉组成的人脑,完全无关紧要!

切~人的劳动是聪明的,但算法是人脑发明的!机器比人类更暴力!

所有比特币节点都通过做这样的数学问题来竞争“挖矿”:哪个节点先计算结果,哪个节点可以获得“记账权”,然后获得奖励的比特币。

会计对吗?

是将一段时间内的所有交易打包成块的权力,所以记账权也称为打包权。

题目的公式是hash(hash(a+b+c+X))=N,计算过程是要知道N求X,那么a、b、c分别是什么?

a 是前一个区块的 Prev Hash,我们之前在电脑上模拟过,还记得吗?

嗯! b和c呢?

b 是由所有需要打包的“交易”组成的 Merkle 树的根,也是一个哈希值(Merkle Root)。 c 是时间戳(Timestamp)。

比特币“挖矿”解题原理示意图

新术语的高密度使用已经开始。

“我们总是驶入未知领域,如果你退缩,就没有下一艘船了。”

那句名言在哪里?

无处,我根据气氛编造的。

我真的很喜欢你。那么,告诉我,什么是“默克尔树”?

Merkle 树是一种树状的数据组织结构。在比特币中,需要打包的交易是由二叉默克尔树组织的,也称为二叉默克尔树。比如两个交易1和2的hash值构成节点12,两个交易3和4的hash值构成节点34,以此类推;在上层,数字12和34构成节点1234号节点……这样就将所有需要打包的数据组织起来,最后生成一个树根,也就是根节点。

hash值逐层生成,最后汇总到一个根节点,就是带入挖矿操作的b。

默克尔树结构示意图

是的!只有包含这个根节点,也就是“区块头”,才能验​​证数据的完整性!

但是,像这样在树中组织数据似乎很麻烦。就不能像刚才模拟的那样把所有的交易打包成一个包吗?

理论上不是不可能的,打包块不需要树形结构,但是,你想,如果没有合理的数据结构来打包,那么在后续的操作中,会造成一些麻烦。

例如?

例如,如果要检索某个区块中是否有某笔交易,使用默克尔树可以达到更高的效率。

哦,这就像一个国家行政区划。中心下方是省、市、自治区。省级以下是地、市、州,再往下是区县,从上到下部署。对于工作来说,扁平化管理虽然方便,但成本太高,划分行政区划还是合理的,不仅可以控制成本,而且效率更高。

所谓编程,就是创建合理的数据结构的过程。日常生活中类似的例子还有很多,但并不像编程听起来那么神秘,但不影响我们的理解和使用。

那么,什么是“时间戳”?也就是“挖矿”公式中的c是什么?