去中心化应用

DApps(去中心化应用)

把智能合约作为大脑、分布式存储作为记忆、浏览器扩展钱包作为钥匙组合起来,就诞生了不依赖任何一家公司服务器的应用,即 DApp。

什么是 DApp:架构与传统 Web 应用的区别

DApp(去中心化应用)是把后端逻辑放在智能合约、而非中央服务器上的应用。典型的 DApp 分为四层:

  • 前端:用户接触的界面部分,用普通 Web 技术(HTML/CSS/JS)构建,有时会托管在 IPFS 等分布式存储上。
  • 钱包:保管私钥,把用户的意图表达为已签名交易的中介角色。
  • 智能合约:在区块链上运行、承担业务逻辑与状态(余额、所有权等)的程序。
  • 分布式存储:图片、视频、元数据等大体量数据的存放处,因为直接存进合约成本很高。

与传统 Web 应用的决定性区别在于,「应用的核心逻辑和数据,运营者无法擅自更改、停止或删除」。普通应用里服务器的所有者就是规则制定者,改条款、封账号皆可一言而决。而在 DApp 中,合约的规则公开且自动执行,资产和数据的所有权系于用户的密钥。即便运营者消失,合约仍会继续运行。

维度传统 Web 应用DApp
后端运营者管理的中央服务器区块链上的智能合约
数据所有权归属于运营者的数据库系于用户密钥,由本人掌控
认证方式ID/密码、OAuth 等通过钱包进行私钥签名
能否停止/变更运营者可一言而决地改条款、冻结、停止公开且自动执行,运营者消失后依然运行
执行环境运营者的云或服务器网络上的全部节点验证并执行相同逻辑
执行成本由谁承担运营者承担(靠广告、收费模式等回收)用户每次操作承担 Gas 费

钱包连接与交易签名的流程

DApp 没有登录 ID 或密码。取而代之使用的是钱包(MetaMask 等浏览器扩展或应用)。典型的用户流程如下:

  1. 连接:按下 DApp 的「Connect Wallet」按钮,钱包启动,用户批准连接。由此 DApp 得知用户的公开地址(即账户)。全程不发送任何密码。
  2. 请求操作:当用户进行「兑换代币」等操作时,DApp 组装出包含该内容的交易提案并交给钱包。
  3. 确认签名:钱包显示「将发生什么」「Gas 费多少」,用户确认后用私钥签名。密钥绝不离开钱包。
  4. 发送与确定:已签名的交易被广播到网络,经分布式共识被纳入区块后,合约状态更新,操作即告确定。

这种「不把身份托付给服务,而用自己的密钥签名」的模型,与 DID 的理念一脉相承。

数据存放在哪里:IPFS 与 Arweave

智能合约中每字节存储所消耗的 Gas 费非常高,因此图片、视频、元数据等大体量数据通常放在链外。其中的代表是 IPFSArweave,二者的设计理念恰好相反。

IPFS(InterPlanetary File System)是一种内容寻址的 P2P 文件系统,地址(CID)由内容本身的哈希值求得,内部查找基于 Kademlia 系的 DHT。但 IPFS 本身并不保证永久保存:除非有人对数据进行固定(pinning)并持续托管,否则一旦不再有节点引用,数据便可能丢失。合约中记录的只是对 CID 的引用,因此内容本身的可用性需要另行保障。

Arweave 的思路相反,目标是一次性付费、永久保存。上传时预先支付一笔已计入未来存储成本下降预期的费用,并以此为本金形成一个「基金(endowment)」,为网络参与者长期复制并保管数据提供经济激励。「持续付费的固定托管」与「一次预付的永久保存」这一设计理念的差异,正是两者的取舍标准。把 DApp 前端本身托管在 IPFS 或 Arweave 上、以内容哈希而非域名来引用,也已成为常见做法。

链上数据的检索:索引与 The Graph

智能合约擅长「调用某个函数读取当前状态中的一条数据」,却不擅长「这个地址过去发生过的全部交易」「某 NFT 系列当前的全部持有者」这类横向检索。区块链节点是账本而非搜索索引,若朴素实现就得扫描全部区块,规模稍大便不现实。

解决这一问题的常见方案,是以 The Graph 为代表的去中心化索引。开发者以「子图(subgraph)」的形式定义如何把合约发出的事件日志转换为结构化数据,网络上的索引器(indexer)据此持续处理区块,并以 GraphQL 形式对外提供查询。与由单一公司运营 API 服务器的中心化索引不同之处在于,索引器、策展者(curator)、委托人(delegator)通过质押与查询费获得经济激励。不过在实务中,许多小型 DApp 仍采用折中做法,即自建后端,通过 eth_getLogs 收集并缓存日志。

代表性类别

  • DeFi(去中心化金融):去中心化交易所(多为 AMM,即通过恒定乘积等公式在链上生成价格的方式)、需要抵押的借贷、衍生品等,无中介的金融服务。
  • NFT 市场:依 ERC-721/ERC-1155 等标准发行、交易数字艺术与收藏品所有权的场所。元数据放在链上还是放在 IPFS 等链下,是在永久性与成本之间权衡的设计选择。
  • DAO(去中心化自治组织):由代币持有者投票运营规则与资金的组织。为节省 Gas 费,投票本身放在链下进行、只把执行结果上链的混合方式也很常见。金库通常用多重签名或合约管理。
  • 区块链游戏:把游戏内物品作为 NFT 持有的尝试。「跨多款游戏携带物品」这一理想常被提及,但真正实现的作品其实有限,多数仍停留在单一游戏内的所有权证明。

课题:UX、Gas 费,以及「去中心化程度」这一光谱

DApps 仍在发展途中,普及尚需跨越若干门槛。

  • UX(易用性):安装钱包、自行保管私钥和助记词、每次操作都要确认签名,对普通用户而言门槛依旧很高。误操作直接关系到资产丢失,也十分严酷。
  • Gas 费:网络拥堵时 Gas 费飙升,小额交易变得不划算。
  • 可扩展性与 L2:区块链本体(L1)处理能力有限,主流解决方案是 L2(第二层),尤其是 Rollup:把大量交易压缩为一笔,借用 L1 的安全性,同时大幅减轻手续费与拥堵。

「去中心化程度」并非非黑即白

「DApp 一切都是去中心化的」是一个常见误解。实际上,前端托管、数据存储、索引/查询层、治理、核心逻辑各是独立的维度,每个维度都可以各自偏向中心化或去中心化。前端最终往往仍托管在中央云服务或域名上、价格信息也可能依赖单一预言机,「某处仍残留中心化」的情形并不少见。

这种现状有时被称为「Web2.5」。此外,项目起步时由团队集中管理密钥与治理权、随着业绩与社区的成长再分阶段向 DAO 移交权限的渐进式去中心化(progressive decentralization),也是被广泛采用的设计方针。真正的去中心化与实用性之间的平衡,至今仍是设计者的用武之地。

DApps 是本站所看到的 P2P、分布式共识、密钥管理、智能合约等要素技术,凝结为一个应用的样貌。可以说,它是考验技术综合实力的分布式系统最前沿。

返回首页