题目描述
最近总听一些专家说区块链可以保证数据不被篡改,它的原理是什么呢?真的可以做到吗。我的理解是不管什么系统,都会有超级管理员权限,破解了就可以改全部的数据呀。究竟是怎么做到的,想不通呢。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
最近总听一些专家说区块链可以保证数据不被篡改,它的原理是什么呢?真的可以做到吗。我的理解是不管什么系统,都会有超级管理员权限,破解了就可以改全部的数据呀。究竟是怎么做到的,想不通呢。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
你理解的有超级管理权限的是传统的中心化系统,比如我们手机上的微信,在进行登录,退出,发送接收消息等操作时,都需要经过腾讯的服务器,我们的个人信息数据也是存储在腾讯服务器后面的数据库里面。这个服务器相对于我们客户端就是一个中心,从技术上来讲这个中心是可以随便修改我们的个人信息,限制我们所有交互行为的。
而区块链是去中心化的,是没有中心节点的,从原理上来讲就像是一个由所有参与者共同发起的投票选举的活动,对于每一次投票选举(区块链中的交易)的结果是由所有人共同见证(存储)的。所以任何一个人都无法篡改数据,因为即便是你修改了,另一个人在拿到你的数据后会与其他人进行对比,对比后发现你的数据与别人不一致,也就不认可你的数据了。除非是超过了共同参者总数量的一半共同篡改,才可以彻底修改数据。也就是百分之五十一攻击。
区块链的不可修改重点体现在于分布式。
区块链是个账本系统,存储的数据可能是这样的:
区块ID | 上一个区块ID | 发生人 | 事件内容 | 下一个区块ID |
---|---|---|---|---|
0 | 0 | 张三 | 做了什么事 | 1 |
1 | 0 | 李四 | 做了什么事 | 2 |
2 | 1 | 王五 | 做了什么事 | 3 |
3 | 2 | 赵六 | 做了什么事 | 4 |
多个区块间,多个区块ID前后衔接成为链。
这份账本如果只在一个地方存储并能修改,那就是中心化,比如腾讯、百度等等各种服务,属于中心化服务,因为账本只有他们能写入并存储。
反之,如果这份账本,在全世界所有人手里,并且都能进行数据的写入(注意是写入不是修改)和存储,那会怎么样呢?
假设,在上面的账本的基础之上,A写入了一条数据888|3|张三|做了什么事|999
,ok,没有问题,是成功的,但是,当A把这条数据广播(分享)给其他节点(人),要求我这写了一条数据
你们都给我同步
一下(你们也都记)。
其他节点会先对数据进行检查,当检查发现,这个区块的下一个ID应该是4
,A居然记录成了888
,数据有问题,我拒绝记录
。
会导致:A写的这条数据不会被任何人认可(信任策略)
所以:同理,你修改了某一条数据,第一会导致整个链条不完成,其次其他节点也不会认可你的数据和操作。
区块链存证的原理是基于区块链技术的去中心化、不可篡改、公开透明等特性。简单来说,区块链存证是将数据的摘要信息(即数据的哈希值)保存在区块链上,通过区块链的共识机制和加密算法保证数据的真实性和完整性。
具体来说,当用户上传需要存证的数据时,系统会生成该数据的哈希值,并将哈希值保存在区块链上。如果数据被篡改,那么哈希值也会随之改变,从而在区块链上的记录也会被修改,从而被其他用户发现。
区块链技术的去中心化特性也保证了存证数据的安全性,因为存证数据不仅被保存在一个中心化的服务器上,而是分布在整个网络中的节点上,这使得存证数据很难被篡改或删除。
但是,尽管区块链存证可以提供高度的安全性和可靠性,但也并非绝对不可篡改。如果攻击者能够掌控足够数量的节点或计算资源,就有可能篡改区块链上的数据。此外,区块链存证在某些情况下也可能面临法律法规的挑战和限制。因此,区块链存证应该作为一种辅助性的存证手段,而不是唯一的存证方式。
区块链存证的原理是利用区块链技术,将数据通过加密算法转化为一条唯一的数字摘要(也称哈希值),并将该数字摘要记录在区块链上。每个区块包含前一个区块的数字摘要,这样就形成了一个不可篡改的区块链数据结构。由于每个区块都包含前一个区块的哈希值,因此一旦有人尝试篡改区块链中的某个区块,就必须同时篡改后面所有的区块,否则就会破坏区块链的完整性,这使得区块链成为了一种可以保证数据不被篡改的技术。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
参考现实世界辟谣的难度,谣言这个东西只要传开了,就是分布式存储的信息了。
不信你想办法在亲友间散播自己得艾滋病的谣言,传开之后别人看你擤鼻涕都能用“艾滋病”解释,哪怕你甩出体检报告,最终还是有一小撮人在背后议论。
并且理想的区块链里没有“官方”,更不会有裁定和惩罚造谣传谣行为的“法院”。
区块链没有超级管理员这一说吧,倒是有 51%攻击。
通俗的话来说,就是把账本分发给了“房间”里的所有人,当每次用户发生交易的时候就大喊XXX用户消费给XXX用户N元,这样“房间内所有人”都会把这笔交易记录在册。所以说只有一人修改时没有用的。因为有其他人记录了正确的交易历史。
如果说需要篡改,那么就需要篡改“这个房间内”绝大部分人记录的交易历史。让其他没有被篡改记录的人认为自己记录错了。去抛弃自己账本上的记录,转而按照绝大多数人记录的历史取记录。