上链ON-CHAIN BLOCK 01 / 26
卷一 · 世界观BLOCK 01

从 App 到 dApp


你写了很多年 Android。App 里那些 Retrofit 请求最终都落到某台服务器上,那台服务器是某家公司的,数据库是它的,规则也是它定的。Web3 做的第一件事,就是把这台服务器抽走——然后问你:没有了它,你的代码还能跑吗?能。这一章我们把这套新范式,一项一项翻译成你熟悉的语言。

先说结论,免得你在术语里迷路:Web3 不是一种新框架,而是一种新的信任结构。你过去所有的架构决策,背后都默认了一个前提——「有一个我们都信任的中心」:客户端信任服务器,服务器信任数据库,大家信任云厂商不会篡改数据。Web3 把这个前提删掉了,换成「不信任任何单一方,但可以信任一套所有人都能验证的规则」。理解了这一句,后面 25 章都是它的展开。

一次网络请求,两种世界

想象你的 App 里有个「给朋友转账 10 块」的功能。在 Web2 里,它大致是这样的:

Kotlin · Web2
// 你的 App 把意图发给服务器,服务器说了算
val resp = api.transfer(
    from = "me", to = "alice", amount = 10
)
// 服务器内部:校验余额 → 改数据库两行 → 返回成功
// 你无法验证它真的改了,只能"相信"返回的 200

服务器是一个黑箱。它可能正确执行了,也可能记错账、可能被内部人改库、可能哪天公司倒闭连数据一起蒸发。你和 Alice 都只能选择相信运营方。在 Web3 里,同一件事长这样:

概念 · Web3
// 你在本地用私钥"签署"一个转账意图,广播给整个网络
tx = { to: alice, value: 10 }
signed = sign(tx, myPrivateKey)   // 只有你能签,谁都伪造不了
network.broadcast(signed)

// 全球数千个节点各自独立地执行同一套规则:
//   1. 验证签名确实来自你
//   2. 检查你余额 >= 10
//   3. 一致同意后,把结果写进那本"世界账本"
// 结果是公开的、可验证的、没有任何单点能反悔
Android 类比

Web2 的服务器像一个 private 后端,你只拿得到它暴露的 API,内部实现和数据库你看不见也改不了。Web3 的智能合约更像一个开源、全网公证、且一旦发布就不能偷偷改动public 库:任何人都能读它的字节码,任何人都能调它的方法,而它的每一次状态变更都被永久记录、人人可查。你从「调用别人的私有服务」变成了「和一段公开、透明、自动执行的代码打交道」。

把架构词典翻译一遍

与其死记新名词,不如把它们挂到你已有的知识树上。下面这张表是这一整本书的「术语对照总表」,后面每一章都在给某一行补充细节。

Web2 / Android 世界Web3 世界关键差异
REST API 后端服务器智能合约(Smart Contract)代码公开、不可篡改、自动执行
MySQL / Room 数据库区块链状态(World State)全网复制、只能追加、人人可读
Retrofit / OkHttpJSON-RPC + viem/ethers请求发给节点而非某公司
账号密码 / OAuth公私钥对(钱包)你自己保管私钥,没有"找回密码"
服务器机房 / 云全球对等节点网络(P2P)没有中心,关不掉
调 API 免费,公司付服务器钱每次写操作付 Gas 费算力和存储明码标价
公司审核你的账号无需许可(Permissionless)没人能封你,也没人给你兜底
App 更新走应用商店合约部署即"发布",地址即入口升级要专门设计(见第 17 章)

"去中心化"到底去掉了什么

这个词被滥用得厉害。精确地说,Web3 去掉的是三种中心化,而且它们可以分开谈:

这解释了一个常见困惑:"区块链不是去中心化吗,为什么一个合约有 bug 全网都遭殃?"因为逻辑层可以是中心的。去中心化保证的是没人能作弊地改结果,而不是"代码一定没 bug"。恰恰因为改不动,bug 才更致命——这也是为什么这本书专门有一章讲合约安全(第 16 章)。

风险记账

去中心化的另一面是没有客服。转错地址,钱找不回;私钥泄露,资产被卷走没人赔;合约有漏洞,损失自负。Web2 里"联系客服冻结账户"这种兜底,在这里几乎不存在。自由和自负责任是同一枚硬币的两面——这一点越早内化越好。

那"dApp"是什么形状

dApp = decentralized application。它不是一个新的 App 类型,而是一种拆分方式。一个典型 dApp 的组成,用你熟悉的三层架构来看:

Android AppdApp
界面层Compose / XML 界面网页前端或原生 App(照旧)
业务逻辑后端服务里的 Service 类链上的智能合约
数据层后端数据库区块链状态 + 去中心化存储(如 IPFS)
身份登录态 / Token钱包签名

关键的洞察是:前端几乎不变。你依然写界面、发请求、处理响应。变的是「请求发给谁、由谁执行、由谁保管数据、用什么证明你是你」。所以对你这样一个有客户端经验的人,Web3 的学习曲线不在 UI,而在中间那层——合约、交易、密钥。这本书的重心也正在那里。

要点入账

把 Web3 想成:你的后端被换成了一台全球共享、代码公开、没人能私自改动的"世界计算机",而你用一把私钥来证明身份、授权每一次操作。前端还是那个前端,数据库变成了一本谁都能查、谁都改不动的账本。接下来两章,我们先把这本账本(第 2 章)和这把钥匙(第 3 章)彻底拆开看清楚。

本章小结

◆ 返回目录