跳至主要内容
此页面是从英文翻译而来的。请注意,与原始页面相比,可能会出现错误或差异。真实的文档来源应始终是英文版本。

初学者概念

许多关于构建去中心化 Web 应用程序的教程都直接深入探讨了代码,但没有解释 web2 开发和 web3 开发之间的核心概念差异。

本指南将帮助您了解去中心化应用程序的工作原理,堆栈的哪些部分 不同,以及如何考虑去中心化应用程序的架构。

区块链功能丰富

在传统的 web2 开发中,你需要单独滚动整个堆栈。即使您使用像 AWS 这样的云提供商, 您仍然需要选择要使用的服务以及如何将它们集成在一起。

在 web3 开发中,区块链包含了构建大多数应用程序所需的所有功能。

| 特点 | 描述 | |--------------------------------------------------------------------------------------------- | 数据库 | 区块链本身只是一个庞大的数据库。还可以在区块链上存储数据并进行查询。| | 数据复制 | 由于区块链的工作原理,您可以免费在整个网络上复制数据。| | 身份验证 | 所有区块链都内置身份验证和用户管理。| | Payments | 区块链的核心功能之一是去中心化金融,支付变得非常简单。| | 无服务器功能 | 区块链以智能合约的形式内置了无服务器功能。| | 事件通知 | 您可以订阅区块链上发生的事件,类似于消息队列或发布订阅。|

你不需要后端

在 web2 开发中,你需要构建一个后端来存储数据和执行业务逻辑。这可能是 REST API 或无服务器函数。

在 web3 开发中,可以直接与区块链交互。您无需运行自己的后端基础架构、kube 集群或无服务器函数。 它与无服务器函数非常相似,不同之处在于这些函数是在去中心化区块链上运行的,而不是在集中式云提供商上运行的。

你可能还想运行基础架构

使用公开可用的节点或 API 服务很不错,但出于安全或性能原因,您可能需要运行自己的基础架构。 以交易所为例。他们通常运行自己的基础架构,以确保他们能够处理负载并且他们的数据是安全的。 尽管发送到链上的交易始终由密码学支持,但您从节点 API 获得的结果可能会被篡改。

在某些情况下,后端会有所帮助

在某些情况下,您可能需要运行自己的后端。例如,如果你想存储不在区块链上的数据,或者你想这样做 执行业务逻辑,这些逻辑要么过于昂贵,无法在区块链上运行,要么耗时过长且超过了智能合约执行允许的最大时间。

您可能还想为您的应用程序提供不同的方式来访问存储在区块链上的数据,这样您就可以更轻松地访问存储在区块链上的数据 可以使用,比如 GraphQL 或 SQL 查询。在这种情况下,你可能需要构建一个后端来监听区块链,并以适合你需求的方式存储你关心的数据。

熟练使用钱包

区块链钱包是一种管理私钥的软件。 钱包中不存储任何区块链数据,而是使用他们设定的私钥来签署操纵区块链的交易。

在 web2 开发中,你需要构建自己的身份验证系统。你可以使用像 Auth0 这样的第三方服务,也可以自己推出。 用户登录后,您可以依靠他们的会话来证明他们是他们所说的人。

您可以添加其他安全措施,例如 2FA、IP 用户配对以及其他各种技术。

在 web3 开发中,生活更简单,你的用户将改用钱包登录。无需密码即可对自己进行身份验证。 你也不需要依靠会话来证明他们的互动来自他们,因为每一次互动(交易) 他们制作的将使用钱包控制的私钥进行签名。

验证登录名

有些应用程序希望证明用户是他们所说的真实身份,而不要求他们签署一笔可以获得的交易 发送到区块链。在这种情况下,你可以使用一种名为消息签名的技术,即要求用户在消息上签名 使用他们的私钥,然后使用该签名来证明他们的身份。

大数据不属于区块链

区块链是一个数据库,但它不是一个用于存储大量数据的数据库。你可以将这些数据存储在 专门为此目的设计的服务,然后将该数据的哈希存储在区块链上。你会看到这个图案 在去中心化应用程序中一遍又一遍地重复。

名称描述
IPFS一种点对点的超媒体协议,旨在通过使网络可升级、弹性更强和更开放来保护和发展人类的知识。
Arweave Arweave 网络就像比特币,但对于数据而言:开放账本中的永久和去中心化网络。

你的前端只是一种体验

与 web2 开发不同,前端与后端紧密耦合,在 web3 开发中,你的前端只是一个体验层。

您的前端将直接与区块链交互,这意味着您的应用程序 100% 的安全性都存在于区块链上。它是 记住这一点很重要,因为这意味着用户可以直接与你的合同进行交互,而且 无论你在前端内置什么控件,它们总能绕过它们。

共同签名

实际上,你可以通过创建共同签署交易的后端来防止人们直接与你的合约互动 对于用户进行的每一次互动。这是非标准的,通常表明存在博弈论的设计缺陷,但是 在某些情况下用于防止 botting 和其他形式的作弊/滥用。