







TL;DR:本文旨在向你系统拆解下被营销号包裹的Web3本质。我们抹去黄金之上的泡沫,带你认识计算机科学历史上最激进的一次架构迁移:将信任从中心化的人类机构,转移到去中心化的数学协议之上
Web3这个词已经被市场营销号嚼烂了。本文旨在向你系统拆解下被营销号包裹的 Web3 本质。我们抹去黄金之上的泡沫,带你认识计算机科学历史上最激进的一次架构迁移:将信任从中心化的人类机构,转移到去中心化的数学协议之上
Web3 没有中心服务器,只有对等节点。
问题是:在没有 DNS 服务器的情况下,我的电脑怎么知道你在哪里?
Discovery Protocol#这完全不同于 HTTP。它使用的是基于 Kademlia 算法的 DHT分布式哈希表
Enode ID: 每个节点的身份证
enode://<128 位公钥 >@<IP 地址 >:< 端口 >引导节点 (Bootnodes):
Gossip找到整个网络RLPx#一旦找到了对方,怎么发数据?不可能是 http 以太坊使用的是 RLPx (Recursive Length Prefix Transport Protocol)
握手 (Handshake):
Auth 消息(用对方公钥加密的 ECDH 密钥交换)Ack多路复用 (Multiplexing):
eth/66: 交换区块头、交易数据snap/1: 快速同步快照数据区块链并不是一个巨大的 Excel 如果用 Excel,当你只修改一行数据,整个文件的哈希值都会变,你需要重算 1TB 数据的哈希,这很显然不显示
Web3 使用的是 Merkle Patricia Trie (MPT) 默克尔压缩前缀树
这是一种结合了哈希树Merkle Tree和前缀树Radix Trie的变态结构
Keccak256(Address))[Nonce, Balance, StorageRoot, CodeHash])在数据库底层,MPT 树由四种节点拼凑而成:
Leaf Node ( 叶子节点 ): [Key, Value]。这是真正存数据的地方(比如你的余额)
Extension Node ( 扩展节点 ): [Shared Key, Next Node Hash]
0xabc... 开头,我们不需要存一万次 0xabc,只存一次,下面挂一个指针。这叫路径压缩Branch Node ( 分支节点 ): 一个长度为 17 的数组
0-f0 走还是往 f 走Null Node: 空节点
当你修改余额时:
Root Hash 被放进了新的区块头里EVM 是如何把字节码变成转账的?
EVM 运行时有三块区域,性质完全不同:
Stack ( 堆栈 ):
ADD 从栈顶拿两个数,相加,结果推回栈顶Memory ( 内存 ):
Storage ( 存储 ):
SSTORE ( 写 ), SLOAD ( 读 )假设代码是 a = b + c。在 EVM 字节码里是这样的:
PUSH1 0x05 ( 把数值 5 推入栈 ) -> Stack: [5]PUSH1 0x03 ( 把数值 3 推入栈 ) -> Stack: [3, 5]ADD ( 加法操作 )[8]PUSH1 0x00 ( 准备存到 Slot 0) -> Stack: [0, 8]SSTORE ( 存储指令 )MPT_Update(Key=0, Value=8)。一笔交易在网线上传输时,不是 JSON,而是一串被序列化的二进制流
这是以太坊发明的一种极简序列化格式。
如果是一个字节,直接存。如果是一串字节,前面加一个前缀表示长度,这极致压缩了空间
一笔 Raw Transaction 包含以下字段(按顺序 RLP 编码):
nonce: 计数器(防重放)gasPrice: 你愿意为每单位 Gas 出多少钱gasLimit: 你最多愿意花多少 Gasto: 目标地址(如果是空,表示创建新合约)value: 转账金额(Wei)data: 这就是智能合约的函数调用数据(比如 0xa9059cbb...)v, r, s: ECDSA 数字签名当你点击 发送交易 时,你的钱包在做什么?
h = Keccak256(RLP(nonce, gasPrice, ... data))v, r, s 附在交易末尾节点端验证: 节点收到交易,不需要知道你的私钥。它通过 v, r, s 和 h,利用椭圆曲线逆运算,可以算出一个公钥 QQ 如果 Address(Q) == From_Address,则签名有效,交易合法
为什么几万个节点能达成一致?
现在可不再是挖矿算 Hash,而是在场证明Attestation
Staking: 你必须把 32 ETH 锁进存款合约。这笔钱是你的人质Randao: 系统每 12 秒随机选出一个 提议者 Proposer 又称矿工Attestation: 其他几千个验证者组成委员会,对这个区块进行签名投票,同意这个块合法Double Signing: 如果你在同一个高度签署了两个不同的区块(试图让区块链分叉)Inactivity Leak: 如果你掉线了,未能参与投票在此之前,我们补一些技术术语
Token的人投票决定的,这就像公司的股东大会,但是投票权是根据你手里币的多少来由代码自动统计的这玩意既不智能,也不合约
在计算机科学中,智能合约的准确定义是:
存储在区块链上的、地址唯一的、不可篡改的、确定性执行的字节码
If-This-Then-That的脚本这是理解智能合约最经典的教科书模型(由尼克·萨博提出):
我们用最通用的语言 Solidity(以太坊的编程语言,长得像 JavaScript/C++)写一个最简单的存钱罐合约
PRTCL // SOLIDITY
// 1. 声明版本
pragma solidity ^0.8.0;
// 2. 定义合约(就像定义一个 Class 类)
contract PiggyBank {
// --- 状态变量 ( 写在区块链硬盘上的数据 ) ---
address public owner; // 存钱罐的主人是谁?
uint256 public balance; // 里面有多少钱?(uint256 是正整数 )
// --- 构造函数 ( 部署时只运行一次 ) ---
constructor() {
owner = msg.sender; // 谁把这个合约部署上链,谁就是主人
balance = 0;
}
// --- 函数:存钱 ---
// payable 关键字表示这个函数能接收真金白银 (ETH)
function deposit() public payable {
balance += msg.value; // 余额增加
}
// --- 函数:取钱 ---
function withdraw(uint256 amount) public {
// A. 身份验证
require(msg.sender == owner, "你是所有者吗你就整,滚出去");
// B. 余额检查
require(amount <= balance, "bro 没钱了");
// C. 转账操作
balance -= amount;
payable(msg.sender).transfer(amount);
}
}
部署: 当你把这段代码通过钱包发送到区块链时,它会被编译成字节码 (Bytecode)(一堆机器才看得懂的 60806040...),并分配到一个以 0x 开头的合约地址
调用: 当你在这个合约上点击 存钱 按钮时,其实是向这个合约地址发送了一笔交易
deposit 函数balance 变量的状态不可篡改: 注意 withdraw 函数里的 require(msg.sender == owner)
传统金融(信用贷): 你想借 100 万炒股。券商 / 银行看你的工资流水、房产证、信用分。如果觉得你靠谱,就借给你
Web3 金融(抵押贷): 区块链不知道你是谁,也没法法院起诉你。它怎么敢借钱给你? 答案是:超额抵押 噔 噔 咚
假设你手上有 1 个 ETH(价值 $3000),你看好 ETH 会涨到 $5000,你想加杠杆赚更多
第一步:抵押 你把 1 个 ETH 存入 Aave 的智能合约
第二步:借贷 合约允许你借出相当于抵押物价值 80% 的稳定币(USDC) 你借出 2400 USDC
第三步:循环 这才是真正的杠杆 你拿着借来的 2400 USDC,去交易所再买入 0.8 个 ETH 然后,你把这 0.8 个 ETH 再次存入 合约
最终
你本金只有 $3000,但你控制了价值 $5000 甚至更多的 ETH
既然是借钱,合约必须保证借款人的本金不亏损。 合约里写死了一行代码:清算阈值
假设 ETH 价格暴跌 你的 1.8 ETH 贬值了,价值快要低于你借出来的 USDC 总额了 一旦触碰设定的数学红线:
Liquidate 函数在这个过程中,没有催收电话,没有宽限期,只有代码被执行,你的本金可能会一瞬间蒸发
这里我们深入讲解传统借贷和 web3
传统银行:
Web3 协议:
在去中心化世界,没有警察和法院,代码只相信扣在手里的资产
如果用 Web2 的逻辑(找银行贷款买房),Web3 的超额抵押简直是脑子有病
但我要告诉你的是
你把 Web3 的借贷当成了消费贷或救济贷
目前的 DeFi 借贷本质上是金融杠杆工具和资产管理工具
真正去借这种钱的人,只有以下四种。每一类都非常精明,并不是因为他穷
这是 DeFi 借贷最大的用途(占 80% 以上)。他们借钱不是为了花,而是为了买更多同一种资产
你看好比特币(BTC)要大涨。你手里有价值 10 万的 BTC
这根本不是借钱过日子,这是融资炒股。他们愿意抵押,是因为他们坚信手里的抵押物会升值,不想卖掉它,但又想要更多的资金来扩大收益
如果你觉得某个币要跌,你怎么赚钱?在现货市场你只能低买高卖,但在借贷协议里你可以做空
你觉得 A 马上要归零了
借贷协议是做空机制的基础设施。没有借贷,就没有做空
这是富人的游戏规则。在美国或很多国家,卖出资产是要交巨额资本利得税的,但借款不用交税
你是一个以太坊早期投资者,手里有 1000 个 ETH(假设价值 300 万美元)你需要 10 万美元去买辆保时捷
方案 A(卖币): 你卖掉 33 个 ETH
方案 B(抵押): 你抵押 ETH,借出 10 万 USDT 提现去买车
这就是著名的富人策略:Buy, Borrow, Die ( 买入资产,抵押借款消费,带着债务离世 )。DeFi 让普通人也能用这个策略
这时候,借钱是为了赚别处的利息
或许要有人问
答案极其残酷:目前的 DeFi 救不了他们
CeFi/ 银行: 靠信用放贷 银行借你钱,是因为看了你的工资流水、工作证明、征信报告。银行相信你未来能赚钱,所以即便你现在没钱,也敢借给你。这叫信用贷
DeFi: 靠资产放贷 区块链不知道你是谁,不知道你是不是在那家大公司上班,也没法在你赖账时把你送进监狱 所以,区块链完全不相信人性。它只相信扣在手里的钱
Web3 正拼命想解决这个问题。现在的热门方向叫 RWA ( 现实资产上链 ) 和 DID ( 去中心化身份 )
只有到了那一天,DeFi 才能真正服务那些 没钱但有信用 的普通人。 现在的 DeFi,本质上是一个服务于资本(资产持有者)和交易员的超级赌场及资金流转工具,而不是慈善机构或普惠银行。
并没有人坐在电脑前盯着你的账户 执行清算的是一群机器人,我们称之为 清算人
流程如下:
触发: 智能合约里写死了一条规则:如果(抵押物价值 < 借款金额 * 1.05),允许任何人调用 liquidate() 函数
巡逻: 全世界有成千上万个 24 小时运行的脚本,它们时刻监听着链上的每一个借贷账户
发现: 当你的 BTC 价值跌到红线那一瞬间,这几千个机器人会像鲨鱼闻到血腥味一样,争先恐后地向智能合约发送交易,试图触发 liquidate 函数
处决:
结局:
清算你的没有官方,而是为了赚取那 5% 罚金的第三方套利机器人。这是一种基于贪婪的自我维护系统
在 Web3 里,只有一种情况你可以不抵押一分钱就借走几个亿。这叫闪电贷 这也是很多黑客攻击的手法
但它有一个极其硬核的物理限制:原子性 Atomicity
你写一个智能合约,包含三步逻辑:
如果你在第 2 步亏了钱,导致第 3 步还不上钱,会发生什么? EVM 会判定这笔交易失败,整个过程回滚
就像时间倒流一样: 在区块链的历史上,你从来没有借过这笔钱,这 1 亿美元从来没有离开过金库。你只需要支付一点点 Gas 费,证明你曾经 试图 这么做过
所以,即使是闪电贷,你也无法卷款跑路,因为如果你不还钱,这笔借款在物理时间轴上就不存在
在 Web3,为了节省昂贵的存储费(存几万个挂单在链上太贵了),我们发明了 x×y=kx \times y = k
这是一个极其优雅的数学模型,它不需要任何做市商挂单,只要有资金池就能交易
假设池子里有:
你想用 USDC 买 1 个 ETH
这是作为流动性提供者 LP 必须懂的数学陷阱
智能合约最大的缺陷是 它是瞎子 EVM 是确定性的,无法进行 HTTP 请求(比如 GET binance.com/price),因为不同节点在不同时间请求,结果可能不同,共识就会崩溃
Chainlink 是如何把现实世界带入区块链的?
PRTCL // SOLIDITY
contract PriceFeed {
int256 public price;
function updatePrice(int256 _price) public { ... }
}
price 变量这就是为什么 DeFi 借贷协议依赖 Chainlink。如果 Chainlink 被黑,所有借贷协议都会因为价格错误而发生连环清算
以太坊 L1 太贵太慢(TPS ~15)。我们需要在不牺牲安全性的前提下扩容,因此发明了 Rollups ( 打包 )
核心思想是 在链下执行计算,在链上存结果和证据
代表:Arbitrum, Optimism。
代表有:zkSync, Starknet
在 Web3,黑客攻击不是绕过防火墙,而是合法地调用你的代码
这是 The DAO 事件(导致以太坊分叉)的罪魁祸首
漏洞代码示例:
PRTCL // SOLIDITY
function withdraw() public {
uint bal = balances[msg.sender];
require(bal > 0);
// 1. 转账
(bool success, ) = msg.sender.call{value: bal}("");
// 2. 扣余额
balances[msg.sender] = 0;
}
攻击原理:
withdraw()msg.sender.call(转账)时,会触发恶意合约的 fallback 函数fallback 函数里写了一行代码:再次调用目标合约的 withdraw()bal > 0 依然成立如何防御?: checks-effects-interactions 模式(先扣款,再转账)
内存池 是完全公开的。矿工 / 验证者就像拥有上帝视角
你发了一笔交易:用 1000 USDC 买 ETH。这笔大单会把 ETH 价格推高 1%
攻击者 (Searcher Bot) 监测到了这笔交易:
这就是 Maximal Extractable Value。这是区块链这种公开透明账本的必然副作用
大概你也会认为 NFT 就是 买一张图片,这是最大的误解 你花几十万买个猴子头像,你买到的根本不是那张图片
想象一下,你花钱买了一颗星星的命名权
NFT 就是这本大账本上的一行字:
编号 #8888 的东西,属于 #你的钱包地址
至于这个 #8888 是一张图片、一首歌,还是一把游戏里的屠龙刀,区块链其实根本不在乎。它只在乎确权
比特币(同质化)= 钞票 你手里的一百块钱,和我手里的一百块钱,是一模一样的。咱俩换一下,毫无影响。这就叫同质化
NFT(非同质化)= 房产证 你手里的是 1 排 1 座 的票,我手里是 最后一排厕所门口 的票 虽然都是票,但价值完全不一样,不能随便换。这就叫非同质化
所以在区块链上,比特币只记录 你有几个币
而 NFT 必须记录 你拥有的是哪一个编号
NFT 最荒诞、也最技术性的地方
因为区块链简直是寸土寸金。要在以太坊链上存一张普通的 1MB 高清大图,光存进去的手续费可能就要几万甚至几十万人民币,哪怕是土豪项目方也存不起
那怎么办?存链接
你的 NFT 上,其实只写了一行像网址一样的东西:
TokenURI:https://…/oiiaoii.jpg
残酷的是:
解决办法 现在的良心项目,会把图片存在 IPFS(一种去中心化硬盘) IPFS 的特点是:只要世界上还有一台电脑存着这张图,链接就永远有效。这就相当于把 房产证 指向了一个永远不会倒闭的图书馆
很多人最不服气的地方便是:这图片我也能下载,我也能设成头像,凭什么要花 100 万?
在 Web3 的世界里,所有人的钱包都是透明的 你有没有这个 NFT,大家在链上一查就知道
NFT 的价值,不在于 看 ,而在于 被全网验证的炫耀权
你在交易平台卖 NFT 时,你会发现你不需要把 NFT 转给平台 那平台怎么能在你睡觉的时候,自动把你的 NFT 卖给别人呢?
这里用到了一个类似 房屋中介 的机制:
授权: 你第一次上架时,钱包会弹窗让你点确认。 这一步其实是在链上签了一份委托书:
我授权 Opensea 这个中介,可以随时动用我钱包里的这张名为 #8888 的房产证
签名: 你填个价格:10 ETH 这一步其实是你写了一张条子:
谁给我 10 ETH,中介就把房产证给他 这张条子没上链,只是贴在了 Opensea 的服务器上(为了省手续费)
成交: 买家来了,看中了。买家把 10 ETH 给 Opensea 的智能合约 合约拿着你的委托书,直接把 NFT 从你的钱包里抓出来,塞给买家,同时把钱给你
为什么很多人点个链接 NFT 就没了? 因为骗子做的钓鱼网站,伪装成抽奖页面,弹出的那个确认框,其实是最高权限委托书 你一旦点了确认,骗子就有权搬空你所有的 NFT,根本不需要知道你的密码
只谈颠覆不谈风险是骗子,只谈愿景不谈现状是忽悠
目前的 Web3,极其撕裂。一方面是天才的数学和精妙的架构,另一方面是遍地的骗局和低效的重复建设
全世界都在修路(造公链),修了一万条高速公路,但路上跑的只有几辆玩具车(应用),而且这几辆车上坐的全是想在路上捡钱的赌徒
为什么会这样?这是激励机制的错配造成的
发公链太赚钱了:
如果你开发一个 App(比如去中心化的 YouTube),你需要累死累活运营用户,变现极难
但如果你开发一条公链(Layer 1 / Layer 2),你发一个币,讲一个 我是更快的以太坊的故事,资本就会疯狂涌入
导致工程师们不去解决真实世界的痛点,而在疯狂内卷 TPS(每秒交易量)。现在的公链性能早就过剩了,缺的是人用
以太坊、Solana、Aptos、Sui……每一条链都是一个独立的国家。用户资产跨链极难,体验极差。这就像你用微信还要分 Android 版 和 iOS 版,而且两边账号数据还不互通
真正的 DApp 并未爆发:
如果你要入行或投资,必须直面这四个死神
A. 不可挽回的技术死亡 在 Web2,微信崩了可以修,支付宝被黑了数据可以回滚 在 Web3,Code is Law 是一把双刃剑
B. 庞氏与泡沫
Web3 目前 90% 的代币经济模型(Tokenomics)本质上是庞氏(Ponzi)。
C. 监管铁拳 最大的灰犀牛
D. 中心化的伪装
很多号称“去中心化”的项目,其实控制权在 3 个人的多签钱包里。
既然全是问题,为什么还要研究它?为什么全世界最顶尖的精英,华尔街和硅谷最聪明的大脑还在往里冲?
因为泡沫之下,物理层面的变革已经发生了。就像 2000 年互联网泡沫破裂,Pet.com 死了,但互联网留下了
这是目前 Web3 唯一真正的大规模应用
别再炒你那破图片了,未来炒的是现实世界,把美债、房地产、股票映射到链上
PRTCL // PLAINTEXT
* 你可以在周日凌晨 3 点,把你的 100 块钱美债卖掉,换成一杯咖啡
* 你可以买 0.0001 份纽约的一栋大楼的收租权。
这是对抗 AI 时代唯一的武器
我作为个人开发者对 Web3 的看法
在 Web2,我们相信服务器管理员是善良的 Don't be evil 在 Web3,我们假设环境是恶意的,但依靠密码学和博弈论,系统依然能正确运转 Can't be evil
目前的 Web3 目前处于 1995 年的互联网 和 1840 年的淘金热 的叠加态
不要做那个在路边鼓掌的人,也不要做那个在赌场里红眼的赌徒
要做那个卖铲子、修铁路、或者在荒原上盖起第一家真正超市的 engineer
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。