DApp的组件

区块链(智能合约)

智能合约用于存储去中心化应用程序的业务逻辑,状态和计算; 将智能合约视为常规应用程序中的服务器端组件。

在以太坊智能合约上部署服务器端逻辑的一个优点是,你可以构建一个更复杂的架构,智能合约可以在其中相互读取和写入数据。部署智能合约后,未来许多其他开发人员都可以使用你的业务逻辑,而无需你管理和维护代码。

将智能合约作为核心业务逻辑功能运行的一个主要问题是在部署代码后无法更改代码。此外,一个非常庞大的智能合约可能需要耗费大量gas来部署和运行。因此,某些应用程序可能会选择离线计算和外部数据源。请记住,DApp的核心业务逻辑依赖于外部数据或服务器意味着你的用户必须信任这些外部事物。

前端(Web用户界面(UI))

与DApp的业务逻辑需要开发人员了解EVM和新语言(如Solidity)不同,DApp的客户端界面使用基本的Web前端技术(HTML,CSS,JavaScript)。这允许传统的Web开发人员使用他们熟悉的工具,库和框架。与DApp的交互(例如签名消息,发送交易和密钥管理)通常通过浏览器本身使用Mist浏览器或Metamask浏览器扩展等工具进行。

虽然也可以创建移动DApp,但由于缺少可用作具有密钥管理功能的轻客户端的移动客户端,目前没有创建移动DApp前端的最佳实践。

数据存储

由于gas成本高,智能合约目前不适合存储大量数据。因此,大多数DApps将利用去中心化存储(如IPFS或Swarm)来存储和分发大型静态资产,如图像,视频和客户端应用程序(HTML,CSS,JavaScript)。

内容的哈希值通常使用键值映射存储为智能合约中的字节。然后,通过你的前端应用程序调用智能合约检索资产,以获取每个资产的URL。

上链 vs. 脱链
IPFS
Swarm

Swarm主页: http://swarm-gateways.net/bzz:/theswarm.eth/

阅读文档: https://swarm-guide.readthedocs.io/en/latest/index.html

Swarm开发人员的入门指南: https://github.com/ethersphere/swarm/wiki/swarm

Swarm讨论组: https://gitter.im/ethersphere/orange-lounge

Ethereum’s Swarm 和 IPFS 的相似之处与不同之处; https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM

中心化数据

集中式数据库是服务器上的数据存储,其特征与描述相关联。它们使用客户端 - 服务器网络架构,这允许客户端或用户修改存储在集中式服务器上的数据。数据库的控制权仍由指定的管理员进行,管理员在提供对数据库的访问之前对客户端的凭据进行身份验证。如果管理员的安全性受到损害,则可以更改甚至删除数据,因为管理员是唯一负责管理数据库的人。