我正在学习区块链技术。我阅读了很多教程,对区块链有了基本的理解,但是我对以下事实感到困惑:是否为不同的 DAPP 单独建立单独的区块链,并且使用该 DAPP 的人将只成为该 DAPP 区块链的一部分?以太坊区块链中的区块实际包含什么内容?如果有人能解决我的初学者疑问,那将非常有帮助。提前致谢 :)
一个dApp(分布式应用程序)可能有自己的区块链,也可能没有。这取决于具体情况。例如,以太坊主网是公共的,任何人都可以让自己的dApp与之交互。在这种情况下,dApp没有自己的区块链。然而,任何人都可以分叉或运行自己的以太坊副本。在这种情况下,它是一个独立拥有的区块链实例,因此它将具有自己的数据和区块,不会与公共主网区块链挂钩。
您将编写的最基本的DAPP是一个(javascript)前端和一个存储在以太坊上的智能合约作为后端。智能合约是一个机器人账户。它是一个带有代码和存储的常规账户。当交易到达机器人账户时,“以太坊机器”将启动机器人并运行其代码。也许机器人会写入其存储,启动其他机器人等等。但这仍然是“THE”区块链的一部分,因为它只是一个交易。比“从A移动X美元到B”稍微复杂一些,但仍然是一个带有源、目标和有效负载的简单交易。在以太坊上只有一个区块链,它是一系列区块。而一个区块是一系列交易。一个交易包括源、目标和有效负载。一旦您开始编写更复杂的DAPP,也许以太坊就不再足够了。也许您需要存储大型文件,这在以太坊上太昂贵了。那么您可以使用其他平台,它们将使用自己的区块链。如果您想了解更多实现细节,请查看Ethereum黄皮书: “交易”在第4.3节中描述。 “块”在第4.4节中描述。 每个智能合约都有自己的Merkle Patricia Trie,类似于区块链,但更多是实现细节。我更详细地介绍了Ethereum存储如何工作以及燃气和成本考虑因素,以及为什么您可能希望使用其他东西,希望这可以帮助您。
一个 DApp 是一个去中心化应用程序。通常它由以下组成: 智能合约(类似于后端) 一些 web 前端与之交互(用户界面) 一个特定的智能合约部署在一个或多个链上,这取决于作者的决定。关于您的前端,您可以实现它以便与您支持的所有链上的智能合约进行交互。因此,如果您的智能合约例如已经部署在主网+测试网络上,您可以编写前端来支持两者。所以一个给定的 DApp 可以支持多条链,但是作者也可以决定根据它运行的链编写不同的智能合约和用户界面。