分散式应用程序

去中心化应用程序（DApp, dApp, Dapp, 或 dapp）是可以自主运行的应用程序，通常通过使用智能合约，在去中心化计算区块链系统上执行。与传统应用程序一样，DApp 为其用户提供一些功能或实用程式。但是，与传统应用程序不同，DApp 无需人工干预即可执行，也不属于任何一个实体，而是 DApp 分发代表所有权的代币。这些代币根据程式算法分配给系统用户，稀释了 DApp 的所有权和控制权。在没有任何一个实体控制系统的情况下，应用程序变得去中心化。

分布式账本技术 (DLT) 已经普及化分散式应用程序，例如构建 DApp 的以太坊区块链以及其他公有区块链。

DApp 的无需信任和透明的性质导致在去中心化金融 (DeFi) 空间中利用这些功能取得了更大的发展。

DApp分为17个类别：交易所、游戏、金融、赌博、开发、存储、高风险、钱包、治理、财产、身份、媒体、社交、安全、能源、保险和健康。目前使用率最高的是游戏、金融、社交。

## 定义

为了使应用程序被视为 DApp，必须满足一系列标准。

去中心化应用程序的传统定义要求 DApp 是开源的，即应用程序自主执行，无需集中实体控制应用程序的大部分相关代币。DApps 还有一个公共的、去中心化的区块链，应用程序使用它来保存资料的加密记录，包括历史交易。

虽然传统的 DApp 通常是开放源代码的，但随着加密货币行业的发展，已经出现了完全封闭源代码和部分封闭源代码的 DApp。截至 2019 年，只有 15.7% 的 DApp 是完全开放源代码的，而 25% 的 DApp 是完全封闭源代码的。换句话说，与没有任何程式码披露的 DApp 相比，应用程序的程式码及其智能合约完全可用的 DApp 所占比例较小。开放源代码的 DApps，其智能合约程式码公开，通常具有更高的交易量，这表明开放源代码 DApps 比封闭源代码 DApps 更受欢迎。完全封闭源代码和部分封闭源代码的 DApps 具有随着加密货币行业的发展而出现。截至 2019 年，只有 15.7% 的 DApp 是完全开放源代码的，而 25% 的 DApp 是完全封闭源代码的。换句话说，与没有任何程式码披露的 DApp 相比，应用程序程式码及其智能合约完全可用的 DApp 所占比例较小。

其次，应用程序使用和用户奖励所需的令牌（Token）必须由应用程序根据程式算法或标准生成。应用程序令牌的某些部分通常在应用程序操作开始时分发。

最后，应用程序的协定必须能够在应用程序用户多数同意的情况下进行调整，例如根据市场回馈对应用程序进行改进。

### 比特币作为 DApp

比特币是第一个加密货币, 是 DApp 的一个例子。

比特币是开放源代码的。比特币区块链上的所有交易都是开放和公开的，应用程序的执行不受任何中心化实体的控制。自应用程序开始以来的每笔比特币交易都是公开可用且不可变的。比特币通过对矿工的区块奖励来生成自己的比特币代币，以保护网络安全。每开采 210,000 个区块或大约每四年将区块奖励减半，以限制对比特币的通货膨胀影响，将比特币的总数量限制在 2100 万。对比特币的更改必须通过比特币的工作量证明机制进行，该机制只能通过比特币用户的多数共识来完成。

## 类型

DApp 可以根据是执行在自己的区块链上，还是运行在另一个 DApp 的区块链上来进行分类。通过这种分类，DApp 被分为三种类型。

第一类 DApp 在自己的区块链上执行。比特币和以太坊等区块链可以归类为第一类 DApp。

第二类 DApp 是在第一类 DApp 的区块链上运行的协定。这些协议本身俱有其功能所需的令牌（Token）。

第三类 DApp 是使用第二类 DApp 协议运行的协议。与第二类 DApp 类似，第三类 DApp 也具有其功能所需的代币。

## 智能合约

开发人员使用智能合约来维护区块链上的资料并执行操作。可以为单个 DApp 开发多个智能合约来处理更复杂的操作。超过 75% 的 DApp 由单个智能合约支援，其余的则使用多个智能合约。

由于部署和执行 DApp 智能合约的成本，DApp 会产生燃气费（gas fee），即支付给区块链验证者的费用。DApp 功能所需的 gas 量取决于其合约的复杂性。如果在以太坊区块链上运行的 DApp 的复杂合约花费过多的 gas，则可能无法部署，从而导致吞吐量降低和执行等待时间延长。

## 运作

DApp 使用共识机制在网络上建立共识。建立共识的两种最常见的机制是工作量证明 (POW) 和权益证明 (POS)。

工作量证明利用计算能力通过挖矿过程建立共识。比特币使用工作量证明机制。权益证明是一种共识机制，通过验证者支持 DApp，验证者通过对应用程序拥有权益和百分比所有权来保护网络。

<image>

DApps 通过三种主要机制分发其代币：挖矿、募款和开发。在挖矿中，代币按照预先确定的算法分发，作为对通过交易验证保护网络安全的矿工的奖励。代币也可以通过筹款来分发，在 DApp 的初始开发阶段分发代币以换取资金，就像在初始货币（ICO）发行中一样。最后，开发机制通过预先确定的时间表分配用于开发 DApp 的代币。

在任何 DApp 的形成和发展过程中，都会发生三个主要步骤：DApp 白皮书的发布、初始代币的分配和所有权的分配。首先，发布白皮书，描述 DApp 的协定、特性和实作。然后，向支持网络验证和募款的矿工和利益相关者提供所需的软件和脚本。作为交换，他们将获得系统分发的初始代币作为奖励。最后，随着越来越多的参与者加入网络，无论是通过使用 DApp 还是通过对 DApp 开发的贡献，代币所有权都会稀释，系统变得比较不集中。

## 特征

DApp 的后端程式码在分散的点对点网络上运行，而不是后端程式码在集中式服务器上执行的典型应用程序。一个 DApp 可以有任何可以呼叫其后端的语言撰写的前端程式码和用户界面。DApps 已用于去中心化金融 (DeFi)，其中 Dapps 在区块链上执行金融功能。

所有 DApp 都有一个识别程式码，该程式码只能在特定平台上执行。并非所有 DApp 都可以在标准网页浏览器上执行。其中一些仅适用于具有自定义程式码的特殊网站，经过调整以打开某些 DApp。DApp 的性能与其延迟、吞吐量和顺序性能有关。比特币交易验证系统的设计使得比特币的平均挖矿时间为 10 分钟。以太坊每 15 秒减少一笔交易的延迟。相比之下，Visa 每秒处理大约 10,000 笔交易。最近的 DApp 专案，例如 Solana，试图超过这个速度。

互联网连接是区块链系统的核心相依性模组，其中包括 DApp。高昂的货币成本也是一个障碍。小额货币价值的交易可能占转移金额的很大一部分。由于网络流量增加，对该服务的更大需求也导致费用增加。这是以太坊的一个问题，这归因于构建在以太坊区块链上的 DApp 导致的网络流量增加，例如非同质化代币 (NFT) 使用的那些。交易费用受 DApp 智能合约的复杂性和特定区块链的影响。

## 趋势

以太坊是拥有最大 DApp 市场的分布式账本技术（DLT）。以太坊区块链上的第一个 DApp 于 2016 年 4 月 22 日发布。从 2017 年 5 月开始，正在开发的 DApp 数量以更高的速度增长。2018 年 2 月之后，DApp 每天都在发布。不到五分之一的 DApp 捕获了以太坊区块链上几乎所有的 DApp 用户。大约 5% 的 DApp 捕获了 80% 的以太坊交易。以太坊上 80% 的 DApp 被少于 1000 名用户使用。在以太坊上，交易所类 DApp 占交易量的 61.5%，金融类 DApp 占 25.6%，赌博类 DApp 占 5%，高风险类 DApp 占 4.1%，游戏占 2.5%。

DApp 尚未得到广泛采用。潜在用户可能不具备能够有效分析 DApp 与传统应用程序之间差异的技能或知识，也可能不重视这些差异。主流用户可能难以获得这种技能和资讯。此外，DApp 的用户体验通常很差，因为它们通常是为了优先考虑功能、维护和稳定性而开发的。

许多 DApp 难以吸引用户，尤其是在其创始阶段，甚至那些最初吸引广泛流行的 DApp 也难以留住用户。一个值得注意的例子是 DApp CryptoKitties，它在以太坊网络最流行的时候严重减慢了速度。CryptoKitties 和另一个类似的基于游戏的 DApp Dice Games 此后一直未能吸引到类似的吸引力。

## 范例

- Augur - 预测市场平台
- Cryptokitties - 基于以太坊构建的游戏. 由于交易处理不足，它减慢了以太坊的速度，并暴露了公共区块链的扩展限制。
- Blockstack - 开发去中心化应用程序的平台。
- Freelance - 智能合约平台。
- Steemit - 部落格和社交媒体平台
- Uniswap - 去中心化的加密货币交易所