主页 > imtoken最新版app > 比特币、以太坊科学(交通)

比特币、以太坊科学(交通)

imtoken最新版app 2024-01-13 05:12:48

因此,块 1 的新签名“W10”与之前添加到块 2 数据串中的旧签名“X32”冲突。块 1 和块 2 之间的链接断开。链上的其他用户会知道区块 1 中的数据已更改。为了保持区块链的不变性,其他用户会拒绝同步变化的交易信息,原始交易记录(即达米安向乔治发送 100 BTC)保持不变,整条链保持不变。这意味着,为了不留痕迹地篡改交易,必须用新签名替换块 2 数据字符串中块 1 的旧签名。但是,一旦块 2 中的数据串发生变化,块 2 的签名也会发生变化。假设区块 2 的签名从“9BZ”变为“PP4”。那么block 2和block 3之间的链接就断开了!

区块链上的区块对每个人都是可见的。因此,如果篡改者真的想在不留痕迹的情况下篡改交易,必须保证篡改后的区块仍然是连通的(否则很容易让人发现哪个区块没有与其他区块连通,进而判断该区块块已更改)。也就是说,更改一个块需要为所有后续块计算新的签名。可以认为这几乎是不可能的,但要了解原因,请参见下文。

第三阶段——生成签名(哈希值)

那么,我们以block 1为例,画出示意图。假设区块 1 仅记录一笔交易,即 Thomas 向 David 发送了 100 BTC。需要根据这个数据串生成一个签名。在区块链上,此签名是通过加密哈希函数生成的。密码散列函数是一个极其复杂的数学公式:将任意数据串代入公式作为输入值会产生唯一的 64 位输出值。例如,您可以将单词“Jinglebells”插入此哈希函数(哈希函数的类型很多,这只是一个示例),输出将是:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

只要这个输入中有单个字符的变化,包括改变大小写或添加空格和标点符号,你就会得到非常不同的输出。如果你在这个输入后面加上一个句号,它变成“Jinglebells.”,输出变成:

B9B324E2F987CDE8819C051327966DD4071ED72D998E0019981040958FEC291B

如果我们去掉句号,我们仍然会得到和以前一样的输入:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

对于相同的加密哈希函数,相同的输入必须产生相同的输出,不同的输入必须产生不同的输出。比特币区块链使用哈希函数为区块生成签名。块中的数据作为输入,得到的输出是块的签名。让我们看一下只有一笔交易的区块 1 图表(Thomas 向 David 发送了 100 BTC)。

比特币哈希由谁产生

假设block 1中的数据串如下:

块 1 托马斯 -100 大卫 +100

将此数据串输入哈希函数,输出(签名)如下:

BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

这个签名会被添加到区块2。假设现在大卫将100 BTC转移到Jimi,并且这笔交易包含在区块2中。那么如下所示:

block 2的数据串如下:

块 2 大卫 -100 吉米 +100 BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

比特币哈希由谁产生

将这个数据串输入哈希函数,得到的输出(签名)如下所示:

25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5

这就是区块2的签名。每个区块通过这个加密哈希函数生成一个数字签名。哈希函数的种类很多,比特币区块链使用的是SHA-256哈希算法。

但是,(只有以上措施显然不够)如果有人要篡改区块中的数据,TA可以在篡改后生成新的签名,插入到下一个区块中,然后一个一个区块A生成了新的签名,这些改变的区块仍然形成一个链,其他人无法判断数据已经改变。如何预防这种情况?

答案是只有满足特定要求的哈希(签名)才会被区块链接受。这是第四关介绍的挖矿。

第 4 级 - 什么是合格签名?谁在区块上签名?

并非所有签名都符合条件。区块链协议预先确定了一些要求。例如,在比特币区块链上,只有以连续零开头的数字签名对应的区块才能上链。例如,只有数字签名以不少于 10 个连续的零开头,对应的区块才能上链。

但是,从第三部分可以看出,每个数据串对应的哈希值是唯一的。如果一个区块的签名(哈希)以少于 10 个零开始怎么办?为了获得一个合格的区块签名,需要反复修改输入数据串,直到可以生成一个以连续 10 个零开头的签名。但是,由于交易数据和元数据(区块号、时间戳等)需要保持原样(否则含义会改变),每个区块还添加了特定长度的可以更改的数据。当人们想在链上添加一个块时,可以不断地改变这条数据,直到找到一个合格的签名,然后确定这条数据的具体价值。这条数据是块的随机数。 nonce不是预先确定的数据,而是根据实际需要找出的一串完全随机的数字(注意:图中其他数据可以由任意字符组成比特币哈希由谁产生,nonce只能由数字组成)。

综上所述,区块包含:1)交易数据;2)前一个区块的签名;3)nonce。这种反复更改随机数、对块数据进行散列处理并找到合格签名的过程称为挖掘,这就是矿工所做的。矿工投入大量电力,将其转化为算力,不断用nonce代替哈希运算,直到找到合格的签名(输出)。矿工手头的计算能力越强,哈希运算越快,首先找到合格签名的概率就越高。这是一个反复试验的过程,如下图所示:

比特币哈希由谁产生

-注意:nonce必须是数字(详情请阅读r/BlockchainSchool上的线程说明)-

区块链网络上的任何用户都可以通过下载并启动挖矿软件参与挖矿,这实际上是利用他们的硬件计算能力来计算一个区块的nonce。以比特币区块链上的 Block #521,477 为例:

-来自区块链浏览器blockchain.com-

< 可以看出,这个区块的哈希值(签名)和前一个区块的哈希值都以相同数量的零开头。找到这样的哈希值并不容易,需要大量的计算能力和时间,或者说是运气。是的,有时一个幸运的矿工可以在几分钟内计算出一个合格的签名,而计算能力非常小。 Block #523034 是一个极其罕见的例子。一个算力很少的小矿工很快就找到了一个合格的签名,而其他矿工的算力加起来是他的7万亿倍。相比之下,赢得强力球彩票头奖的几率是 2.92 亿分之一,幸运儿中奖的几率是 1/24,000。

不要低估这些零。本小节的重点是很难找到合格的签名。

第五层——区块链的不变性是如何实现的?

如第三层所述,更改一个区块会导致其签名发生变化,与后续区块中记录的不匹配,从而与后续区块断开连接。为了让网络中的其他参与者接受这个更改的块,它需要与后续块重新链接。也就是说,如果一个区块的签名改变了,那么它后面所有区块的签名都必须改变,才能让别人觉得这是一条一致的链。

比特币哈希由谁产生

你还记得什么吗?

如第 4 节所述,签名必须符合要求!尽管更改所有区块的签名似乎是可行的,但由于涉及的成本和时间,这被认为是不可能的:

假设一个矿工恶意篡改了一个区块交易中的签名,然后根据哈希运算为这个区块和它后面的所有区块生成一个新的签名,这样网络中的其他参与者才能接受被篡改的交易问题是网络中的其他矿工也在不断地计算原始链上新区块的签名。随着新区块不断添加到链中,恶意矿工必须重新计算这些区块的签名。他必须确保所有区块都链接在一起,包括不断添加到链中的新区块。除非这个矿工的计算能力超过网络其余部分的总计算能力,否则他永远赶不上其他矿工。

(校对注:本段的实际意思是矿工只要在他们见过的最长的区块链上挖矿,随着时间的推移,所有的算力自然会汇聚到一条主链上。攻击者只能成功更改交易记录如果他创建一个比当前主链更长的链,每个人都同意。这个始终以最长的链作为主链(有效链)的原则,就是所谓的“最长链规则”,它是一部分中本聪共识(Nakamoto Consensus Mechanism)。另外,并非所有区块链都使用中本聪共识。)

如今,数以百万计的用户在比特币区块链上挖矿,因此可以推断,恶意行为者或实体的计算能力不能超过整个网络的剩余计算能力。这意味着网络中的其他参与者不可能接受对区块链的任何修改,从而实现了区块链的不变性。数据一旦加入区块链,就无法修改。

只有一个例外,就是恶意参与者的算力确实超过了网络其余部分的总算力。理论上,这种情况下是可以篡改区块链的(也就是改变大家都认同的历史记录)。这被称为 51% 攻击(我写了另一篇文章解释了这种情况),过去许多区块链都遭受过这种攻击。

(证明说明:目前被攻击51%的著名区块链是bitGold、Verge、Ethereum Classic。)

实际上,比特币区块链的推出 51% 攻击的好处远远超过了攻击的高成本。为了获得足够的算力,除了硬件、散热设备和存储空间的成本外,还要承担被千人指点的风险,更重要的是会对生态造成极度破坏被攻击的区块链。如果伤害很大,那么攻击的收益也会大打折扣。 51% 攻击实际上是在自己与区块链上的其他用户作战。这就是为什么参与挖矿的用户越多,整个链的安全性就越高。

比特币哈希由谁产生

恭喜你,你已经达到了一个新的水平!到目前为止,您应该了解为什么(大型)区块链被认为是不可变的。但是现在一个非常重要的问题出现了:如何防止矿工向区块链添加虚假交易数据?技术上是做不到的。区块链交易的详细解释可以在这篇文章中找到。

(校对注:只有私钥控制器才能花对应地址的资金,矿工不知道你的私钥,其他人只能通过你的公钥验证交易是否是你发起的。所以伪造交易不可行)

Level 6 - 如何治理区块链?谁来决定规则?

… 区块链协议自动将最长链上的交易记录作为代表绝大多数参与者的交易记录。构建最长的链需要整个网络的大部分计算能力。被篡改的区块与最长链断开,因此会被全网绝大多数节点自动拒绝。

在比特币区块链上,所有交易历史和钱包余额都是公开可见的 (blockchain.info)。任何人都可以查看任何钱包的余额,或第一笔交易(2009 年 1 月 3 日)的所有交易记录。虽然任何人都可以查看钱包余额,但这些钱包的所有者大多是未知的。例如,一个钱包持有 6.90,000 个比特币,在撰写本文时价值约 5 亿美元。该钱包在 2015 年 4 月使用过一次,此后一直没有交易。

(校对注:这部分实际上并没有回答“谁来决定规则”的问题,而只是粗略地陈述了“根据现有规则比特币哈希由谁产生,这项技术可以实现”。公链治理是一个复杂的问题和超出了本文的范围。)

Tier 7 - 这对加密货币意味着什么?

加密货币本质上是比特币的一种变体。绝大多数加密货币都是根据自己的区块链协议构建的,并且遵循与比特币不同的规则。比特币应该被归类为货币,这意味着它具有明确的货币功能。门罗币是一种做同样事情的加密货币,但它的区块链协议增加了一些规则来增强隐私(使得追踪交易变得更加困难)。

但是,在区块链上发行的资产可以被赋予多种不同的用途,这是由发行人决定的,以这种方式发行的资产通常被称为“代币”。这些代币可以赋予其所有者某些权利,例如游戏许可证、社交媒体渠道、实用程序等。所有这些资产交易都记录在不同的区块链上,可以通过币安等交易所在线交易。

代币其实是一种新型的互联网货币,可能会影响一些行业,典型的例子就是股市。未来,公司股份等产权很可能以代币的形式存储在区块链上。区块链不仅限于以代币的形式表示实物价值,还可以安全地记录病历、身份、历史记录、税务记录等数据。这就是区块链技术的伟大之处,更何况区块链的另一个重要特点区块链:去中心化。

原文链接:

感谢作者的科普,这篇文章是我目前看到的解释区块链最易懂、最深入的文章!