区块链为何如此安全? [关闭]

2024-02-26

昨天我读到一篇关于区块链的文章,根据它,区块链非常安全?我无法理解它如何安全? 区块链如何确保数据安全,即使普通人也可以使用?


@saurabh 提供了非常好的解释, 这是一个复杂的主题,需要详细的解释,请阅读更多有关不同共识和工作量证明算法的内容,以真正了解区块链的美妙之处。互联网上有大量优秀的博客供您探索。让我尝试以我对分布式账本有限的知识为您提供一个简短的总结。

区块链实际上理论上是防篡改的(有人仍然可以对区块链进行51%攻击,但这需要巨大的算力)

为什么会这样呢?两个原因:

每个区块都有唯一的加密指纹

共识协议,网络中的节点就共享历史达成一致的过程。

指纹(称为哈希)最初需要大量的计算时间和能量来生成(此时间和能量的增加或减少取决于矿工的总计算能力)。因此,它可以证明将区块添加到区块链的矿工进行了计算工作以获得比特币奖励(因此,据说比特币使用“工作量证明”协议)。该哈希只是该块中包含的所有交易的默克尔哈希。它也可以用作一种密封,因为更改块需要生成新的哈希值。然而,验证哈希值是否与其块匹配很容易,一旦节点完成验证,它们就会使用新块更新各自的区块链副本。这就是共识协议。

最后一个安全要素是哈希值还充当区块链中的链接:每个块都包含前一个块的唯一哈希值。因此,如果您想追溯更改分类帐中的条目,您不仅必须为其所在的块计算新的哈希值,还必须为每个后续块计算新的哈希值。而且您必须比其他节点向链添加新块的速度更快(平均每 10 分钟添加一个新块)。因此,除非您拥有比其余节点组合更强大的计算机(即使如此,也不能保证成功),所有更改都需要在 10 分钟内完成,您添加的任何块都会与现有块发生冲突,其他节点将自动拒绝您的更改。这就是区块链防篡改或“不可变”的原因。

如果您部署自己的带有工作量证明的区块链会发生什么?这实际上取决于您的区块链上已有多少块以及工作量证明算法的难度。如果复杂性较低,并且很少有矿工竞争下一个区块,那么任何具有更多计算能力的人都可以将所有矿工组合起来创建自己的有效分叉,并进行适合他们需求的交易。

我想操纵第 n-10 个区块的交易?

假设此时比特币区块链中的区块数量为 n,并且您想要在第 n-10 个区块(即 10 个区块之前)更改交易。

矿工们将竞争下一个区块第n+1个区块,时间范围约为10分钟,你也可以竞争,但要获胜你必须拥有与矿工相比大约51200544 TH/s的计算能力。 从概率上来说,如果你有 1TH/s 的挖矿能力,你解决一个区块的机会是 1/ 51200544,假设计算 1TH/s 的硬件成本约为 1000$,只需计算一下成本即可。

如前所述,每个区块的标头中都包含一个默克尔哈希值,而该哈希值又取决于该区块中包含的每笔交易以及需要解决的难度(矿工计算的内容)。该默克尔根包含在下一个区块的标头中。

所以如果你想改变第n-10个区块的一笔交易或多笔交易,你需​​要对第n-10个区块做两件事。 1. 当交易发生变化时,重新计算merkle root。 2、解决困难。

由于merkle根发生了变化,您需要解决该块之后的每个块直到此时此刻的难度,以使其成为有效分支。

完成这一切的时间框架仅为 10 分钟,因为在接下来的 10 分钟内,链上的矿工将推送另一个区块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链为何如此安全? [关闭] 的相关文章

随机推荐

  • 使用 okHttp3 上传动态数量的文件

    如何管理动态数量的文件的上传OkHttp http square github io okhttp v3 我已经用旧版本的 OkHttp 实现了compile com squareup okhttp okhttp 2 6 0 类 Form
  • C - 为什么在进行指针算术时转换为 uintptr_t vs char*

    我正在开发一个程序 我必须修改目标进程内存 读取它 到目前为止 我使用 void 来存储地址 如果需要更改它们 请将它们转换为 char 一般添加偏移量或修改 我听说过 stdint h 中定义的该类型 但我没有看到使用它进行指针算术与 c
  • 类中的java构造函数不能应用于给定类型

    我有 2 个子类 员工 学生 他们属于超类 Person 这是我的老师给出的代码 任务 public class Person private String name private int yearOfBirth Create a per
  • 我可以用 git 拆分已经拆分的块吗?

    I ve recently discovered git s patch option to the add command and I must say it really is a fantastic feature I also di
  • 具有变化对象的 Java instanceof

    我需要一个方法 我可以传递一个参数 我假设该参数是一个类 但不确定 并且在该方法中 instanceof 将用于检查 x 是否是传递的类的实例 我该怎么做 我尝试了一些方法 但没有成功 这个怎么样 public boolean checke
  • 超立方体错误:警告。分辨率 0 dpi 无效。使用 70 代替

    Error was reported when running tesseract on a image image attached tesseract rsa out jpg stdout Warning Invalid resolut
  • 如何使用spring动态跟踪数据库变化?

    我在用spring spring data spring cronjobs and java mail 我需要立即扫描表中的更改my sql数据库并向管理员发送有关更改的邮件 为了实现这一目标 我所做的就是运行一个 cronjob 来扫描表
  • 刷新令牌不稳定

    我在用spotipy从中检索一些曲目Spotify using python 我收到令牌过期错误 因此我想refresh我的令牌 但我不明白如何从spotipy 获取刷新令牌 是否有另一种方法来刷新令牌或重新创建令牌 谢谢 Spotipy
  • 在 Mac 终端的 Vim 内滚动

    我一直在谷歌搜索试图找出是否可以使用鼠标滚轮在里面滚动Vim http en wikipedia org wiki Vim 28text editor 29在 Mac 的终端中 没有运气 好像只有X11 http en wikipedia
  • firebase admin:验证电话号码时“发生内部错误。原始服务器响应”

    我正在使用 firebase admin 创建新用户 该用户有电话号码 当我像这样填写电话号码 7777777 时 我的 firebase 管理员响应有正确的错误 Error The phone number must be a non e
  • 用于 MPLS 配置的 iproute2 命令

    尝试弄清楚如何使用 iproute2 来管理 Linux 内核 4 1 中的静态标签交换 MPLS 路由 我知道 iproute2 对 MPLS 的支持现在可能不完整 2 谁能解释一下 iproute2 4 1 1 目前能做什么 这是我到目
  • 无法使用 JAR 中的外部库部署 JavaFX 应用程序

    我正在 Eclipse 中开发 JavaFX 应用程序 该应用程序具有外部库 例如 log4j 等 并且可以从 Eclipse 完美运行 我尝试过通过 Eclipse 内置功能将它作为可运行 jar 从 Eclipse 部署 它在某些计算机
  • sklearn:在 RandomizedSearchCV 中使用 Pipeline?

    我希望能够在 sklearn 的 RandomizedSearchCV 构造中使用管道 然而现在我相信只支持估计器 这是我希望能够执行的操作的示例 import numpy as np from sklearn grid search im
  • c# - 文本框有字符限制吗? [复制]

    这个问题在这里已经有答案了 可能的重复 文本框 C 中的最大字符数 https stackoverflow com questions 1382983 max char in textbox c MaxLength 设置为 0 的 c wi
  • 为什么 clang 优化会破坏我的内联汇编代码?

    为了尝试了解有关 ARM 汇编的知识 我编写了一个简单的测试项目来使用内联汇编和 NEON 指令执行图像缩小 你可以在这里看到它 https github com rmaz NEON Image Downscaling https gith
  • 当我的 main.c 不使用 pthreads 时,为什么我必须在 main.c 编译中显式链接到 pthreads?

    在 Linux 中 我制作了一个使用 pthread 的共享库和一个不使用 pthread 的 main c libpthread so 显示在我的共享库的 ldd 中 这是正确的 ldd libmapreduce so 1 0 linux
  • 为什么可以在主线程上运行 Kotlin 协程?

    我无法理解why 这段代码 https medium com trionkidnapper launching a kotlin coroutine for immediate execution on the main thread 85
  • 卡坦岛地图的数据结构? [复制]

    这个问题在这里已经有答案了 不久前 有人问我是否知道一种对卡坦岛游戏的信息进行编码的好方法 这需要以每个六角形都可以有与其关联的数据的方式存储六角形网格 但更重要的是 我需要某种方法来有效地查找这些六边形侧面的顶点和边 因为这就是所有动作的
  • 如何允许用户移动表单上的控件

    我有一个 winform 我想允许用户在其上移动控件 该控件 目前 是一条垂直线 带有边框且宽度为 1 的标签 上下文不是很重要 但无论如何我都会给你 我有一个带有一些图形的背景 我希望用户能够在图形上方滑动指导线 图形是用 Nplots
  • 区块链为何如此安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 昨天我读到一篇关于区块链的文章 根据它 区块链非常安全 我无法理解它如何安全 区块链如何确保数据安全 即使普通人也可以使用 saura