【问题标题】:How does every block in a blockchain contain all others blocks data if it is immutable?如果区块链中的每个区块是不可变的,它如何包含所有其他区块数据?
【发布时间】:2021-08-23 07:24:26
【问题描述】:

我是区块链生态系统的初学者,我有一些问题,但似乎真的很困扰我,因为有点矛盾。

当你生成一个块时,每个块都包含 Header,它包含之前的哈希,以及当前块数据的哈希表示,以及一些其他的东西。

但是如果每个块都使用该块的当前数据生成的哈希引用前一个块,并且每个块都是不可变的......

如果区块是不可变的,并且如果您更改数据,区块的身份哈希会立即更改,那么区块链中的每个区块如何能够拥有其他所有区块数据?

还有一个……

当有交易可用时发生的详细过程是什么,它是如何融入区块链的?

也许这个问题对某些人来说似乎有点愚蠢,但我一直在搜索,没有文章或视频能解决我的疑问。

谢谢大家,祝你有美好的一天:)

【问题讨论】:

    标签: hash blockchain


    【解决方案1】:

    区块链上的每个区块都没有其他区块的数据。实际上你可能已经把它和 区块链上的每个节点(节点是连接到区块链的 p2p 网络的实例)混淆了,到目前为止所有的区块都写入了区块链。 所以声明

    区块链中的每个区块都可以拥有其他区块数据。

    不正确。一个块只有在创建时添加到其中的数据,之后不能添加或删除数据。

    现在回答你的第二个问题

    当有交易可用时发生的详细过程是什么,它是如何整合到区块链中的?

    假设 A 现在首先转移 B 1 BTC 以提交您必须连接到区块链节点或连接到区块链(在本例中为比特币区块链)节点的服务的交易。 通常我们用来传输加密货币的钱包应用程序连接到区块链节点并为我们发布我们的交易。

    一旦将交易交给节点进行初始处理,它就会被验证并添加到所谓的内存池中,该内存池本质上是一个存放所有尚未添加到区块中的交易的地方。大多数节点都为内存池分配了一些空间。现在节点从内存池中提取交易(优先考虑费用较高的交易,因为他们可以保留费用)并将其添加到一个块中。这个块被称为“候选块”。

    节点开始挖掘候选块,如果他们有幸首先挖掘它,该块将被广播到整个网络,每个人都将这个块添加到他们的链中并开始挖掘下一个块,重复与上述相同的过程。

    以上流程主要针对比特币区块链,其他区块链都是类似流程。

    对于初学者,我建议不要阅读文章和 youtube 视频,而是学习这些书籍,以全面了解底层架构。主要有两种类型的区块链(在加密生态系统中)基于 UTXO(旧的主要是比特币及其衍生品 LTC Zcash DASH 等)和基于账户的(新的以太坊 BNB 等)。
    对于基于 UTXO 的区块链。
    https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ch01.html.
    对于基于账户的区块链。
    https://www.amazon.com/Mastering-Ethereum-Building-Smart-Contracts/dp/1491971940

    【讨论】:

    • 哦,好吧,现在清楚多了。我不能投票,但谢谢!
    猜你喜欢
    • 2020-03-26
    • 2017-07-10
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多