构建以太坊 dApp 的完整指南:前端和后端

面向全栈开发人员的端到端 dApp 教程

目录

面向全栈开发人员的端到端 dApp 教程

什么是 DApp?

后端(智能合约)

前端(Web 用户界面)

数据存储

IPFS

一群

去中心化消息通信协议

拍卖 DApp

拍卖 DApp:后端智能合约

DApp 治理

拍卖 DApp:前端用户界面

进一步分散拍卖 DApp

将拍卖 DApp 存储在 Swarm 上

准备蜂群

将文件上传到 Swarm

以太坊名称服务 (ENS)

ENS 规范

底层:名称所有者和解析者

中间层:.eth 节点

顶层:事迹

注册名称

管理您的 ENS 名称

ENS 解析器

将名称解析为 Swarm 哈希(内容)

从 App 到 DApp

结论


什么是 DApp?

DApp 是一种大部分或完全去中心化的应用程序。

考虑可能分散的应用程序的所有可能方面:

  • 后端软件(应用程序逻辑)
  • 前端软件
  • 数据存储
  • 消息通讯
  • 名称解析

这些中的每一个都可以有些集中或有些分散。例如,前端可以开发为在集中式服务器上运行的 Web 应用程序,或作为在您的设备上运行的移动应用程序。后端和存储可以在私有服务器和专有数据库上,或者您可以使用智能合约和 P2P 存储。

创建 DApp 有很多典型的中心化架构无法提供的优势:

弹性:由于业务逻辑由智能合约控制,DApp 后端将在区块链平台上完全分布和管理。与部署在集中式服务器上的应用程序不同,DApp 不会停机,只要平台仍在运行,它就会继续可用。

透明度:DApp 的链上特性允许每个人检查代码并对其功能更加确定。与 DApp 的任何交互都将永久存储在区块链中。

审查阻力:只要用户有权访问以太坊节点(必要时运行一个),用户将始终能够与 DApp 进行交互,而不受任何集中控制的干扰。一旦代码部署在网络上,任何服务提供商,甚至智能合约的所有者都无法更改代码。

在今天的以太坊生态系统中,很少有真正去中心化的应用程序——大多数仍然依赖中心化服务和服务器来进行部分操作。未来,我们期望任何 DApp 的每个部分都可以以完全去中心化的方式运行。

后端(智能合约)

在 DApp 中,智能合约用于存储业务逻辑(程序代码)和应用程序的相关状态。您可以考虑用智能合约替换常规应用程序中的服务器端(也称为“后端”)组件。当然,这是过于简单化了。主要区别之一是在智能合约中执行的任何计算都非常昂贵,因此应尽可能少。因此,确定应用程序的哪些方面需要可信和分散的执行平台非常重要。

以太坊智能合约允许您构建架构,其中智能合约网络在彼此之间调用和传递数据,随时读取和写入自己的状态变量,其复杂性仅受区块气体限制的限制。部署智能合约后,您的业务逻辑很可能在未来被许多其他开发人员使用。

智能合约架构设计的一个主要考虑因素是智能合约一旦部署就无法更改代码。如果使用可访问的 SELF-DESTRUCT 操作码对其进行编程,则可以将其删除,但除了完全删除之外,不能以任何方式更改该代码。

智能合约架构设计的第二个主要考虑因素是 DApp 大小。一个非常大的单体智能合约可能会花费大量的气体来部署和使用。因此,一些应用程序可能会选择链下计算和外部数据源。但是请记住,让 DApp 的核心业务逻辑依赖于外部数据(例如,来自中央服务器)意味着您的用户必须信任这些外部资源。

前端(Web 用户界面)

与需要开发人员了解 EVM 和 Solidity 等新语言的 dApp 的业务逻辑不同,dApp 的客户端界面可以使用标准的 Web 技术(HTML、CSS、JavaScript 等)。这允许传统的 Web 开发人员使用熟悉的工具、库和框架。与以太坊的交互,例如签名消息、发送交易和管理密钥,通常是通过 Web 浏览器,通过 MetaMask 等扩展程序进行的。

虽然也可以创建移动 dApp,但目前帮助创建移动 dApp 前端的资源很少,主要是由于缺乏可以作为具有密钥管理功能的轻客户端的移动客户端。

前端通常通过 web3.js JavaScript 库链接到以太坊,该库与前端资源捆绑在一起,并由 Web 服务器提供给浏览器。

数据存储

由于高昂的 gas 成本和当前较低的区块 gas 限制,智能合约不太适合存储或处理大量数据。因此,大多数 DApp 使用链下数据存储服务,这意味着它们将大量数据从以太坊链上存储在数据存储平台上。该数据存储平台可以是中心化的(例如,典型的云数据库),也可以是去中心化的,存储在 P2P 平台(如 IPFS)或以太坊自己的 Swarm 平台上。

分散式 P2P 存储非常适合存储和分发大型静态资产,例如图像、视频以及应用程序前端 Web 界面的资源(HTML、CSS、JavaScript 等)。接下来,我们将看看其中的一些选项。

IPFS

星际文件系统 (IPFS) 是一种分散的内容可寻址存储系统,它在 P2P 网络中的对等点之间分配存储的对象。“内容可寻址”意味着每个内容(文件)都经过哈希处理,并且哈希用于标识该文件。然后,您可以通过其哈希请求从任何 IPFS 节点检索任何文件。

IPFS 旨在取代 HTTP 作为交付 Web 应用程序的首选协议。文件存储在 IPFS 上,并且可以从任何 IPFS 节点检索,而不是将 Web 应用程序存储在单个服务器上。

有关 IPFS 的更多信息,请访问https://ipfs.io

一群

Swarm 是另一种内容可寻址的 P2P 存储系统,类似于 IPFS。Swarm 由以太坊基金会创建,作为 Go-Ethereum 工具套件的一部分。与 IPFS 一样,它允许您存储由 Swarm 节点传播和复制的文件。您可以通过哈希引用任何 Swarm 文件来访问它。Swarm 允许您从分散的 P2P 系统而不是中央 Web 服务器访问网站。

Swarm 的主页本身存储在 Swarm 上,可以在您的 Swarm 节点或网关上访问:https ://swarm-gateways.net/bzz:/theswarm.eth/ 。

去中心化消息通信协议

任何应用程序的另一个主要组件是进程间通信。这意味着能够在应用程序之间、应用程序的不同实例之间或应用程序的用户之间交换消息。传统上,这是通过依赖集中式服务器来实现的。然而,基于服务器的协议有多种去中心化的替代方案,通过 P2P 网络提供消息传递。DApps最著名的 P2P 消息传递协议是Whisper,它是以太坊基金会 Go-Ethereum 工具套件的一部分。

可以分散的应用程序的最后一个方面是名称解析。我们将在本章后面仔细研究以太坊的名称服务;不过,现在让我们深入研究一个示例。

拍卖 DApp

拍卖 DApp 允许用户注册“契约”代币,它代表一些独特的资产,例如房屋、汽车、商标等。一旦注册了代币,代币的所有权就会转移到拍卖会DApp,允许它上市出售。拍卖 DApp 列出了每个注册的代币,允许其他用户出价。在每次拍卖期间,用户可以加入专门为该拍卖创建的聊天室。拍卖完成后,契约代币所有权将转移给拍卖的获胜者。

整个拍卖过程如下图所示

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值