主页 > imtoken安卓版下载app > 区块是如何防篡改的_区块链数据不可篡改详解

区块是如何防篡改的_区块链数据不可篡改详解

imtoken安卓版下载app 2023-07-04 05:14:50

详解区块链数据不可篡改

背景介绍

我是新人。 在学习区块链的过程中,看到网上很多文章讨论区块链区块数据的不可变性。 以比特币为例,主要有两种解释:

解释1:由于哈希指针的存在,假设有一个节点修改了当前区块数据,其后果是后续所有N级子区块的数据都会被修改,代价巨大。 ..

解释2:由于哈希指针的存在,假设有节点修改当前区块数据,需要回到父块修改父块,直到创世块,创世块为链的开始。 它不能改变(否则它不会是这个链)。

先不说谁答对了,反正我第一眼看的时候激动得觉得hash指针牛逼! 散列指针应该有联合国和平奖什么的。

通过仔细研究思考并请教博大哥和风大哥两位专家(感谢二位答疑解惑),发现这些文章并不能回答区块链数据不可篡改的真正原因,所以有必要在这里写点东西 澄清事实!

关于防篡改

由于文章有点长,如果没有基础,可能看不懂。 为了避免大家不耐烦,我先说结论——区块链防篡改的真正原因可以从两个层面来解释(以比特币为例):

比特币分叉影响比特币总量_比特币不可篡改_现在比特币在哪可交易

(1)从全网来看——分布式P2P网络是关键:以比特币为例,全网所有节点(虽然只有全节点有完整的数据库)都有一个“相同”的区块头. 作恶不是少数节点能做的。 整个网络的架构决定了数据只能通过算力攻击被篡改,因为P2P网络的数据维护依赖于算力来争夺记账权并跨网络复制。 这确保了最大的安全性! 想要对网络进行攻击,就必须拥有大量的算力,但是拥有大量算力的节点是否有必要去做“偷鸡不吃亏”的事情呢? 就像一个公司的大股东为什么要毁掉公司的资产和价值? 这就是比特币“组织结构”的天然优势!

(2)从单节点的角度——“数据不是你想改的,你想改就改!”

很多小伙伴上来就说,“假设某个节点修改了一个区块”,然后怎么... 没有介绍区块数据生产的逻辑以及如何修改,带来了先入为主的误导(比如一个例子一个不恰当的笑话:大象今天没有来动物园开会,因为一个人把大象放进了冰箱!兄弟,我们不是必须先看到“放大象”才能问大象会不会来吗参加会议?大象被关在冰箱里的可能性有多大???)

换句话说比特币不可篡改,如果“修改某个区块数据”这一步比较难,那么“回溯到创世区块”或者“修改所有N级子区块”是不存在的!

那么,详细解释一下,为什么单节点的某个操作,区块数据“几乎”不能改变! (如果要改的话,可以回到之前的话题,如果你的算力很大,同时试10亿十亿次……这当然又是一个悖论,你有这样一个大算力。没关系,为什么要给自己挖个坑)

为了便于理解,我们以比特币为例。 获得某次挖矿记账权的节点必须满足以下条件:

只是通过哈希碰撞得到随机数Nonce,使其满足以下条件:

即H(block header)≤target

即哈希表头部的两个SHA256计算值必须满足前N位全为0。

比特币不可篡改_现在比特币在哪可交易_比特币分叉影响比特币总量

这里我们列出比特币区块头的结构:

场地

描述

版本

4字节数据,版本号

父块哈希

32字节数据,父块数据的哈希值

默克尔根

32字节数据,本次区块交易的Merkle根哈希值

现在比特币在哪可交易_比特币分叉影响比特币总量_比特币不可篡改

时间戳

4字节数据,出块时间

难度目标

4 个字节的数据用于调整工作量证明算法的难度

随机数

4字节数据,随机数

网上有同志痴迷于说“哈希指针”是保证整个不可篡改机制的最大功臣。 矿工们说,首先要介绍一下“挖矿”的原理!

假设我们的幸运节点挖矿成功,找到一个4字节的随机数Nonce,使得当前数据块的80字节头部的双哈希运算值满足前面的N个零。

那么,问题来了。 当你修改交易数据时,必然会导致Merkle根发生变化,从而导致80字节的数据包发生变化。 Nonce随机数的hash碰撞,需要重新启动“撞彩票”操作。 这里需要了解一个原理,SHA256运算输出的值域空间为:

现在比特币在哪可交易_比特币分叉影响比特币总量_比特币不可篡改

[0 ~ 2^256],这个范围空间是一个巨大的区间!

Nonce的取值范围空间只有0~2^32,很不幸,一个“幸运儿”即使算力再强大,“猜”随机数也不是单纯靠实力,而是靠运气(为什么这就是比特币如此公平的原因!)因为在计算时“每个矿工的初始状态不同——打包的交易数据不同,时间戳不同”,有可能算力小的节点更幸运, 10分钟 在节点内部“计算”出随机数,但有些节点很难计算或根本无法计算(即使遍历整个值空间,也不落入解空间)。

具体来说,比特币网络发展到一定程度后,算力和节点都比较稳定,所以即使给“作恶”节点足够的时间修改数据,重新计算Nonce,也几乎不可能找到一个合适的。 Nonce,因为一旦修改了一点数据,就会造成“蝴蝶效应”。 Nonce的取值范围空间只有0~2^32,完全落在了目标范围之外,因为不符合条件的hash值太多了……

举个栗子:以比特币为例,在SHA256算法下,有多少个哈希值的第一位是1开头? 这个比较容易推导,因为有一半的hash值都是1开头的,这个空间还是超级大的。。。那么区区2^32个数的尝试,极有可能落入这个不满足的空间条件都没有!

BLOCK 区块头的数据结构是有游戏规则的。 在交易数据变更后的区块中,Nonce随机值很可能“无解”(在新条件下)! 并且不要认为在已经找到一个符合规则的Nonce值的前提下,BLOCK数据部分“只变化一点点”,是不是可以找到一个新的符合游戏规则的Nonce值,或者它离“中标”仅一步之遥? SHA256 函数意味着它不是作为“素食者”创建的。 江湖上为数不多的一把刷子“不可测度”……中奖本身就是小概率事件!

用数学语言描述:

大概率是,在某个节点篡改了某个区块的交易数据的情况下,在本次计算中比特币不可篡改,在随机数的值空间[0~2^32]中,是不可能找到一个合适的“解“Nonce,还是让它满足下面的公式:

即H(block header)≤target

用“人话”来形容:

比特币分叉影响比特币总量_现在比特币在哪可交易_比特币不可篡改

一位大哥在树下乘凉时,被晴天霹雳击中(绝对小概率事件),120被送往医院(这个类似于挖矿,不是单个节点很容易“得到”答案)。 但是大哥却躲过一劫。 当他在朋友们的鲜花和掌声中坐着轮椅离开医院时,大哥突然情绪激动,想回去看看那棵患难与共的树(类似于当年不得不去的那棵树) . 算出来的结果好不容易,希望变身后能再得到一个幸运值),刚到树下,突然起风了,一道闪电再次击落了“裤子”。 ..

看到这里,你还要问我,这位大哥后来是不是又去了那家医院? 他的胃口还好吗? 我上楼的时候腿脚不好。 我补钙的时候是不是喝了哈药六厂的蓝瓶口服液……我觉得我们聊不下去了,因为同一棵树下两次被闪电击中的故事简直不可能现身! ! !

一句话,单个节点连续“获胜”的可能性,就像大哥在不同时间站在同一棵树下,两次被雷击中……这几乎是不可能的! 那么,理发师可能又要说了,也不是不可能! ? 是的,如果你要意识到大哥连续两次被雷击中,你就得让丫去那棵树上,每天呆在那里(多个节点可以同时计算,多找几个就行了树),而你要在不同的天气条件下(不同的初始条件,不断修改区块头,创造各种可能的初始条件),日复一日地抱着树看闪电。 1年不行就10年,10年不行,100年,100年不够,再天天借500年(机会多多创造一个试用,“忽悠”一个合适的随机number)... 总之,同一句话,你要有“大量的计算能力”才有可能! ! !

另外,在座的各位要明白:对于单个节点的具体挖矿操作(记住我说的前提),即使一个节点拥有全网十分之一的算力,是否一定比全网算力强?网络? 万分之一算力节点,成功概率大1000倍?

子说:当然不是,很有可能这个牛逼分叉的节点因为“出生条件(初始条件)”不好而不幸掉进了“无解空间”……比特币挖矿是一个限时竞赛游戏,而一次性挖矿具有“运气”的属性,因为你不知道你的“初始位置”距离皇冠上的宝石有多远,而且你无法逆转(由SHA256函数的特性决定) ) 并且不能使用已经得到的“帮助加速”之类的计算结果!

文末总结一下结论(以比特币为例):

(1)P2P架构的分布式存储决定了链上数据在全网不可篡改(作恶难)! 除非你有巨大的计算能力,否则重新创建一个分叉链并替换它!

(2)从单个节点来看,“一个人连续两次被雷击中”的概率极低。 很有可能为了某一次尝试,根本无法改变这个区块的数据! 如果你想改变,除非你有巨大的计算能力,否则先实现一个小目标,1秒尝试10亿次!

最后,还是那句话,你必须拥有庞大的计算能力才能实现攻击! 那么这个命题又回到了中本聪设计比特币的天才——出于人类自私而维护的网络最终演变成最公平的网络,是的,我拥有全网51%的算力,作为比特币的控股股东,我不需要毁了我的工作...

本人区块链新手,文中难免有错误和不足之处。 欢迎指教与交流!