什么是DApp

新手Dec 01, 2022
DApp 全称 Decentralized Application ,即去中心化应用。 DApp 是一个与传统互联网行业中的 App(应用程序)相对应的概念,也是区块链世界中各种服务(如 DeFi、NFT 等)的实际提供者。诸多 DApps 与各大公链以及其他项目共同构成了纷繁复杂的区块链生态。
什么是DApp

从比特币到以太坊:DApp 的起源

2009 年 1 月 3 日,芬兰首都赫尔辛基,中本聪在一台小型服务器上挖取了比特币系统的创世区块,由此开创出了一个迅速生长、不断演变的加密世界。比特币系统是基于“分布式账本”技术而建立的,比特币的本质实际上就是这种“分布式账本”上所记录的余额( 即UXTO,未花费的交易支出 )。比特币无疑是一个天才的构想,但它的应用却有一定局限。基于 UXTO 的脚本语言只能支持较为简单的交易,这使得比特币网络难以实现更为复杂的实用逻辑,这种不足使得比特币至今也只能作为储藏价值的“数字黄金”,而难以得到更为广泛的应用。

以太坊与智能合约

受到比特币启发, 2014 年, Vitalik Buterin 在比特币杂志上发表了《以太坊:一个下一代加密货币和去中心化应用平台》一文,文中首次提出了通用型合约等技术,试图从基础协议出发创造一个具有更为广泛应用的区块链系统,这也就是我们现在所看到的智能公链霸主——以太坊。

在项目白皮书中, Vitalik 提到:“以太坊的目标就是提供一个带有内置的成熟的图灵完备语言的区块链,用这种语言可以创建合约来编码任意状态转换功能,用户只要简单地用几行代码来实现逻辑,就能够创建以上提及的所有系统以及许多我们还想象不到的其它系统。”简单来说,这也就是打造一个能够运行智能合约以及去中心化应用(DApp)的平台。

智能合约如同人与人、人与机器之间的一种“强制执行的约定”,一旦合约达成了某种预先设置好的条件,智能合约便会执行。因此,可以将智能合约视作一个“可靠的中间人”。以太坊内置专用编程语言Solidity,开发者能够借此创建智能合约,实现区块链上数字资产的转移。智能合约是以太坊最为重要的创新,也是以太坊庞大生态系统的基石。相比比特币的交易脚本而言,以太坊的智能合约是图灵完备的,这意味着以太坊在理论上能实现任何可能的计算,从而具有无限的可能。

以太坊虚拟机与DApp

如果说比特币的本质是一个具有一定脚本处理功能的“分布式账本”,那么以太坊可能更接近于一个“分布式状态机”。在以太坊中,账户被分为两类,一类是由普通用户使用私钥控制的外部账户(Externally Owned Account),一类则是内部储存有合约代码(Contract Account),没有对应私钥,故而不属于任何人的合约账户。

整个以太坊网络的状态,就是一个包括网络所有账户及其余额等的状态,以及相关状态改变规则的大型数据结构(Merkle Patricia Tree)。随着新的区块不断添加到链上,以太坊的状态也不断改变。因此,可以将以太坊视作一台“分布式的公共计算机”(以太坊虚拟机),而诸多DApp就是这台计算机上安装的各种软件程序。

在以太坊上, DApp 本质上就是一组智能合约,其中每个智能合约都有自己的合约地址。合约代码完成后,无法自动运行,而是需要外部账户对合约账户发起交易才能启动。在智能合约的基础上,开发者们可以使用官方工具轻松开发 DApp ,并将之运行于以太坊虚拟机上。由于以太坊虚拟机的运算能力有限,用户需要使用以太币作为系统的“燃料”(Gas fee),才能驱动 DApp 和虚拟机的运行。

DApp生态爆发

自以太坊智能合约诞生以来, DApps 数量不断增多,覆盖领域也在不断扩展。在以太坊白皮书中, Vitalik 设想了以太坊技术的三类应用:非金融应用(Non-financial)、半金融应用(Semi-financial)以及金融应用(Financial)。非金融应用包括在线投票、去中心化治理等;半金融应用如智能悬赏支付等;而以太坊的金融应用(即DeFi)可能是影响力最大的,以太坊提供了灵活可靠的合约方法,能够建立协议原生代币、金融衍生品、对冲合约等应用。

尽管以太坊是 DApp 生态最为丰富的头号公链当之无愧,但它也面临着网络拥堵、性能不足、手续费过高等问题。后来,随着新一代高性能智能公链的诞生,如 EOS、Solana、Flow 等,这些公链上也都建立起了各自的 DApp 生态。目前, DApps 应用的主要类别有游戏、DeFi 、NFT 藏品、Social-Fi 等,而游戏类 DApp 无论在总数量上、还是在 UAW (独立活跃钱包数)上都占据着显著优势,而 DeFi (如 Dex、借贷等)类应用则在交易额上遥遥领先。

在诸如 DAppRadar、DAppReview 等数据网站上,可以查看各大区块链上各类 DApp 的活跃用户数、交易量等数据。截至 2022 年 11 月,仅 DappRadar 上收录的 DApp 数量就已经达到了 12,000 个以上。


图:DAppRadar

DApp的组成与特点

DApp 与传统互联网中的 App 有诸多相似之处,DApp 与区块链的关系也类似于 App与 IOS 或 Android 等操作系统的关系,正如 App 运行在各种操作系统上,DApp 运行在区块链上。对于用户来说,通过浏览器使用一个 DApp 的感受可能和使用一个 Web 2 时代的 SaaS 软件没有什么差别。一个完整的 App 具有后端(业务模块)、数据库(储存模块)、前端(用户界面)三层结构,而一个典型的 DApp 也由相似功能的三个部分组成。

业务模块:智能合约

智能合约是实现 DApp 业务逻辑的程序基础。智能合约储存于区块链上的合约地址中,输入的数据会在各个合约地址之间流转传递,根据预设的逻辑实现 DApp 的功能,并引发整个虚拟机的状态转变。不过与传统 App 不同的是,智能合约也会储存 DApp 当前的状态,这也是区块链本身所具有的性质。

储存模块:数据储存

无论是 App 还是 DApp,其运行过程的本质都是数据流动的过程。数据从储存模块流动到业务模块进行处理,再通过前端与用户进行交互。App 的数据一般储存在中心化的服务器中,DApp 的数据可以完全储存于链上,但出于效率和成本的考虑,许多 DApps 会将数据储存于链下,比如 IPFS 这样的分布式储存服务中,而只在区块链上储存重要的业务模块数据。

用户界面:前端交互

前端是 DApp 与用户进行交互的接口,一般用户可以通过访问前端便捷地使用智能合约代码,而无需掌握复杂的编程知识。在前端方面,DApp 与 App 差异不大,两者都是通过 HTML、JavaScript 等一般技术开发的。不过由于使用 DApp 需要与区块链上的智能合约进行交互,前端需要提供支持钱包应用(如 Metamask)的程序接口,以支持签名等服务。


图:以太坊 DApp 架构 来源:The Architecture of a Web3 Application

相较传统 App 而言,DApp 往往具有如下特点:

DApp 不依赖于中心化的服务器,而是依赖于区块链,运行于去中心化的虚拟机上。这是 DApp 最为本质的特点,也给予了 DApp 显著的优缺点。

  • 优点一:永不停机。对于普通 App 而言,一旦中心化服务器发生故障,程序就会彻底无法使用;但对于 DApp 而言,单个节点宕机并不会影响程序在区块链上的运行。由于智能合约一旦上链就不会停止运行,因此,DApp 的运营成本往往比传统 App 更低。

  • 优点二:无需许可。与 DApp 交互只需通过钱包地址,而无需向申请一般金融账户一样,必须交付完整的个人信息才能使用,不仅不必透露个人隐私,还大幅降低门槛,任何只要有加密货币钱包的人都能轻易访问大多数的 DApps。

  • 优点三:Code is Law。区块链的不可篡改特性,让 DApp 大部分依赖智能合约的代码逻辑运作,因此一旦完成上链,除非开发者保留更改权限,基本上是无法进行修改的;且应用一旦被部署至区块链上,就会永久存在,理论上无法限定世界上的任何人的访问。

  • 缺点一:受可拓展性限制,DApp 运作效率低。受到去中心化的限制,DApp 的运行效率一般比传统 App 更低,甚至可能因为区块链拥堵而暂时无法使用。

  • 缺点二:理论上所有需要上链的行为都需要支付费用。由于区块链虚拟机处理能力有限,用户与 Dapp 交互,需向网络支付一定量的 gas fee,对于习惯了传统免费 App 的用户,一时将难以接受。

  • 缺点三:智能合约维护难度高。智能合约代码一旦上链就难以进行修改,这使得 DApp 的开发、维护难度更高,一旦代码出现纰漏也难以及时修复。

DApp的代码往往是开源的

由于区块链是去中心化的,DApp 的代码需要供所有社区成员公开访问。这也给了用户自行进行代码分析、判断项目潜力的机会。

通证机制

DApp 的功能往往是借由各种通证实现的,可以是对应区块链的通证(如ETH),也可能是 DApp 自行发行的通证(如UNI)。

DApp发展的瓶颈

尽管 DApp 生态正在如火如荼地发展,但相较 Web2 时代的世界级应用而言,DApp 的总体影响力仍然较为有限。而 DApp 生态落地的过程中,可能面临着如下瓶颈:

用户规模与学习门槛

在日活方面,UAW 能够超过 1 万的 DApps 基本不超过 100 个,最为流行的 DApp 每日也约只能获得数十万独立地址,这在 Web2 领域动辄上亿的日活面前显得相形见绌。

对于用户而言,使用 DApp 仍然需要掌握钱包、区块链等基础实施,从 Web2 应用切换到提供对应功能的 DApp 需要付出学习成本。而 DApp 所承诺的抗审查、隐私性等特性,暂时也难以显现出其真正的价值,这使得 DApp 仍然属于加密极客圈子里的小众产品,而难以获得更大规模的一般用户。

产品迭代与安全风险

在 Web2 时代,产品往往遵循“小步快跑,快速迭代”的开发法则,以此抢先获取用户,并在运营中不断提高产品质量。而对于 DApp 来说,合约代码一旦上线就难以更改,若是上线后代码出现重大漏洞,更会给整个生态带来无法消除的严重影响。为此,项目方必须在 DApp 上线前就做好产品设计和代码审计,规避一切可能问题。

区块链基础设施

目前的头号智能公链以太坊存在效率过低、费用过高的问题,相较 VISA 高达 24000 的 TPS,以太坊仅约 15 的 TPS 难以满足其成为“全球结算层”的愿景。未来区块链能否真正突破不可能三角,达成效率、安全性与去中心化三者之间的平衡,仍然需要时间的检验。

结语

DApp 是下一代互联网即 Web3 的关键,可能为信息产业带来崭新的业态。从使用上来说,DApp 的体验往往与 Web2 时代的应用十分接近,但 DApp 实际上具有抗审查、隐私性强的显著特点。

此外,使用 DApp 需要连接钱包应用,因此与用户的个人财产息息相关。在将钱包连接到 DApp 前,需要仔细判断 DApp 的安全性,最好选择有可靠机构代码审计的 DApp,以避免发生财产损失。

作者: Edward
译者: Piper
文章审校: Hugo, Cedric, Ashley
* 投资有风险,入市须谨慎。本文不作为Gate.io提供的投资理财建议或其他任何类型的建议。
* 在未提及Gate.io的情况下,复制、传播或抄袭本文将违反《版权法》,Gate.io有权追究其法律责任。