界面上写着 389% 的年化,我盯着看了三天,第一反应是"这肯定有诈"。 于是我决定花点真钱,去搞清楚诈在哪。 两天后账面赚了 607.87 美元。但如果我什么都不做、只是拿着那些币,我会多赚 11.75 美元。 这篇讲的就是这中间到底发生了什么。
今年 7 月 1 号,Robinhood 上线了自己的公链。链上跑的是代币化的美股——你能在链上买到 GLD(黄金 ETF)、SGOV(短债 ETF)、NVDA 这些标的的代币版本,一共 190 多个。
这条链上的交易几乎全部跑在 Uniswap 上。我去 Uniswap 界面上翻池子,看到的年化是这样的:
主流链上什么水平?以太坊上 1 亿美元 TVL 的 USDC-WETH 池,年化 19%。纯稳定币对普遍 2–7%。
差了几十倍。
我的第一反应不是"发财了",是"这里面一定有我没看懂的东西"。可能是数据算错了,可能是有个大坑在下面等着,也可能是这个数根本不是我以为的那个意思。
光看是看不出来的。链上的东西,你只有真金白银下去,事件日志才会记你的名字。
所以我掏了 44,090 美元,分两个标的建了仓,然后写了一套脚本,把每一笔手续费、每一分无常损失、每一次 gas 全部从链上事件里重新算了一遍。
结论比我预想的有意思得多。
很多人第一次听 LP(流动性提供者),会以为是"把钱存进去吃利息"。
完全不是。你是去开摊做生意的。
传统的撮合平台有订单簿,你挂个单等对手方。Uniswap 没有订单簿,它的逻辑是:你把两种资产按比例扔进一个池子,谁想换,就直接从池子里拿走一种、放进另一种。每笔交易抽 0.05%–1% 不等的手续费,按你出资的比例分给你。
你赚的是过路费,不是利息。所以这门生意的核心变量只有一个:有多少人从你这儿路过。
Uniswap v3 加了一个东西叫集中流动性,这是理解一切的关键。
你不用把钱铺满 0 到无穷大的价格区间,可以指定一段。比如我认为金价这两天在 397 到 411 美元之间震荡,就只在这一段放钱。
区间越窄,同样的钱在这一段的深度就越大,抽到的手续费也越多。我实测过:同样的资金,区间从 ±0.7% 收窄到 ±0.3%,有效收益能翻 2.3 倍。
代价是——价格一旦走出你的区间,你就彻底不干活了,手续费瞬间归零。
这不是打个折,是断电。后面第 5 节我会贴出我自己那天的数字,昨天赚 278.99 美元,今天赚 0.00 美元。
第二件必须搞明白的事,叫无常损失(Impermanent Loss,IL)。
池子的机制决定了:金价涨的时候,池子会自动把你手里的黄金卖掉、换成稳定币;金价跌的时候,反过来自动帮你买入。
也就是说,你在这个摊位上永远是逆势的那一方。涨了你被迫卖,跌了你被迫接。
跟"什么都不做,就拿着这些币"相比,你少赚的那部分,就是无常损失。
这不是 bug,这就是你能收手续费的对价。你为市场提供了可以随时成交的深度,作为回报你收过路费;作为代价你在单边行情里必然吃亏。
震荡市里手续费赚过 IL,你就赢。单边行情里必然跑输。 没有第三种可能。
技术上它是 Arbitrum Orbit L2,chainId 4663,ETH 当 gas,约 100ms 出块。
我实测下来的体感:gas 便宜到可以忽略。建一个仓位 0.47 美元,做一次 swap 0.52 美元。我全程折腾了十几笔交易,gas 总共花了 3.21 美元。这个数字放在以太坊主网上是不可想象的。
Uniswap 的 v2/v3/v4 加上 UniswapX,在这条链主网上线第一天就全量部署了,现在占链上股票代币流动性的约 99%(v4 约 73%,v3 约 26%)。上线六周处理了约 15 亿美元的股票代币交易。
但真正让我下决心下场的,是另一个特别关键的点:
这条链上没有任何 LP 激励补贴。
不发平台币,不搞流动性激励,不给任何形式的补贴。你的收益 100% 来自真实交易产生的手续费。
这件事有两面。
好的一面是:这个年化是真的,不是发币发出来的数字游戏。主流链上很多高 APR 池子,收益里有一大半是项目方印的代币,你今天领到手,明天砸盘归零。
坏的一面是:没有代币补贴兜底,IL 就是纯成本。 你亏多少就是多少,没人给你补。
顺带一提,这些股票代币美国用户不可用。这是个挺讽刺的设计。
时间线大致是这样的:
今天早上把脚本跑了一遍,全部数字从链上事件重建,结果是:
GLD/USDG 投入 $40,853.09 在手 $41,453.03 价格变动 +618.58 IL -333.76 手续费 +315.12 gas -1.33 净 PnL +$598.61 SGOV/USDG 投入 $9,963.74 已撤出本金 $6,725.97 在手 $3,245.53 价格变动 +1.04 IL -0.06 手续费 +10.16 gas -1.88 净 PnL +$9.26 ──────────────────────────────────────────────────────────── 合计 手续费 +$325.28 IL -$333.82 gas -$3.21 净 PnL +$607.87
两天赚 607.87 美元,本金 4.4 万,看着挺美。
但把这个式子换一个角度看,就不美了:
LP 相对于「什么都不做,只拿着币」的超额收益 = 手续费 + 无常损失 − gas = 325.28 − 333.82 − 3.21 = −11.75 美元
我忙活两天,写了一堆脚本,盯了一堆盘,结果比躺着不动少赚了 11.75 美元。
这个数字昨天更难看,一度是跑输 183 美元。今天金价回落了一点,IL 缩小了,才追回来大半。
我没有把这个结果藏起来的意思。恰恰相反,这才是这篇文章最值钱的部分——网上讲 LP 的教程,收益永远是正的,因为他们不算 IL,或者只截取赚钱的那几天。
这一节全是我自己撞出来的,每一条都花了真钱或真时间。
前面说了,界面上 SGOV 池 1,145%,GLD 池 389%。SGOV 看着好四倍。
我实际测下来,单位资金的收益,GLD 是 SGOV 的 3.7 倍。方向完全反了。
原因很简单,但没人在界面上告诉你:
界面 APR = 整个池子的手续费 ÷ 整个池子的 TVL 你的实际收益 = 池子手续费 × 你占「活跃流动性」的份额
界面那个数是整池的平均值,它假设所有钱都均匀铺开。但集中流动性下压根不存在"均匀铺开"这回事——大家的钱堆在不同的价格段上,成交发生在哪一段,哪一段的人分钱。
你的区间设在哪、设多宽,决定了你实际能分到多少。界面那个数字跟你的仓位没有任何关系。
我现在的判断依据只有一个:把自己的仓位放进去,算实测年化,跟整池 APR 对比。低于整池的一半,说明区间铺太宽了,钱没堆到成交发生的地方。
这个是我最意外的发现。
我写了个脚本,从链上的 Swap 事件把手续费一笔一笔重新算出来:每笔 swap 如果成交价落在我的区间内,我该分到 交易额 × 费率 × 我占该笔活跃流动性的比例。
算完跟链上实际 collect() 到手的数一对——我算出来的数,恒定比实际到手高 20.00%。
不是差不多高 20%,是两个池子、四个币种,误差完全一致。
误差如果是浮动的,那多半是我算法有问题。误差恒定,那就是有个地方在按固定比例抽水。
顺着这条线去查,找到了 Uniswap v3 池子里一个叫 slot0.feeProtocol 的字段。这是协议层面的抽成开关。读出来是这样的:
| 池子 | 抽成 | LP 实际拿到 |
|---|---|---|
| GLD/USDG 0.3%、SGOV/USDG 0.3% | 1/6 | 83.33% |
| NVDA/USDG 0.05%、WETH/USDG 0.01% | 1/4 | 75% |
| SGOV/USDG 0.05% | 0 | 100% |
1/(1-1/6) - 1 = 20%。完全对上。
最关键的是这句话:
所有第三方数据源——包括 Uniswap 自己的界面——给你看的 APR,都是没扣协议费的毛值。
你看到 389%,实际到手 324%。你看到 1,145%,实际到手 954%。而且不同池子抽成还不一样,得逐个池子去读,不能想当然。
SGOV 有两个池子,一个 0.3% 费率,一个 0.05%。
我建仓的时候,手一抖建到了 0.05% 那个。
后果:
0.05% 池:日收益 $8.35 0.3% 池:日收益 $55.60
差 6.7 倍。
费率低 6 倍只是一半原因。另一半是 0.05% 池的流动性还比 0.3% 池密 5.9 倍——同样的钱扔进去,我占的份额被稀释得更厉害。两个因素叠一块,就是 6.7 倍的差距。
这里的教训比"看清楚再点确认"要深一层:
TVL 不等于深度。
一个池子 TVL 一个亿,但钱全铺在离现价很远的地方,那现价附近的深度可能还不如一个 TVL 一百万但区间设得准的池子。集中流动性下要看的是 liquidity()——当前价格上的活跃流动性,不是总锁仓量。
我现在建仓前必做的一步:把候选池子的活跃流动性都读一遍,再决定钱放哪。
定区间宽度,得先知道这东西一天能波动多少。
我一开始用的是第三方数据源 DexPaprika 的日线,算出 SGOV 的日振幅约 0.9%,据此推荐了 ±0.7% 的区间。
后来不放心,自己扫了链上 72 小时的 Swap 事件,一笔一笔还原真实成交价格。24 小时的真实价格范围是:0.351%。
差了 2.5 倍。
回头去看那份日线数据,发现 volume 字段全是 0——数据本身就是坏的,high/low 里混了脏值。
用真实成交分布重新做回测(指标是「区间集中度 × 成交量落在区间内的比例」),±0.3% 的有效收益是 ±0.7% 的 2.3 倍。
这条的普适教训:链上有原始事件,就别信二手 API 的聚合数据。 前者是账本,后者是别人的转述。
折腾到现在,我认为判断"这个 LP 还值不值得待着",只需要看一个数:
累计手续费 ÷ |无常损失|
远大于 1,说明你收的过路费盖得住逆势的代价,这生意在赚钱。 接近 1 或者小于 1,说明你在给市场白打工。
我这两天这个数的变化,比任何理论都清楚:
前天 8.6x ← 震荡行情,躺着数钱 昨天 6.7x ← 开始有单边苗头 今天 0.97x ← 已经在给市场打工了
中间发生了什么?金价从 404 美元冲到了 415 美元。
我的区间上沿是 406.71 和 411.62 美元,价格一路向上穿过去,池子机制忠实地执行了它的逻辑:把我区间里的 63 个 GLD 全部卖掉了,均价大约 404 美元。
然后金价到了 415 美元。
IL 一天涨了 16 倍。
更直观的是手续费日报:
标的 今天 昨天 前天 GLD/USDG $0.00 $278.99 $3.82 SGOV/USDG $3.89 $3.95 $2.18
GLD 昨天一天赚 278.99 美元,今天赚 0.00 美元。
不是少赚,是归零。因为价格出界了,我的钱躺在池子里,一分不干,一分不赚。
这就是集中流动性的两面:区间设窄,赚钱效率翻倍;价格一走,收益断电。
而这次断电还叠加了最坏的情况——出界方向是"全部换成了稳定币",等于在 404 美元清仓了黄金,然后眼睁睁看着它涨到 415 美元。
这不是操作失误,这是 LP 这门生意的固有代价。 我提前知道会这样,我只是没料到它来得这么快。
年化再高,前提是钱还在。所以我把这两个标的的合约扒了一遍。以下全部是链上实读的结果,不是猜的。
GLD 和 SGOV 都是 beacon 代理,本体只有 283 字节的壳,逻辑指向同一个实现合约。
我把实现合约的字节码搜了一遍,里面有这几个函数:
mint(address,uint256) —— 增发,这个正常burn(address,uint256) —— 销毁任意地址的余额pause() / unpause() —— 暂停第二个得单独说。参数是 (address, uint256),意味着持有 mint/burn 权限的人,可以直接把你链上账户里的 GLD 烧掉,不需要你签名,不需要你同意。
第三个的后果更狠。pause() 一按,代币转账全部禁止,连带的结果是:
不是"暂时不能交易",是资金原地锁死,你什么操作都执行不了。
那这些权限在谁手上?我去读了 beacon 的 owner() 和 DEFAULT_ADMIN_ROLE()。
都读不出来。
这个合约的权限结构,在链上是不可见的。
GLD 全网总供应量:8,611 个,按现价约 347 万美元。
我待的那个 0.3% 池子,占了其中的 19%。
我还追踪到一段记录:8 小时之内铸了 28 次,一共 111 个 GLD,全部发给同一个合约地址。供应完全由发行方控制,随开随关。
链上的 GLD 价格,跟真实的 GLD ETF 价格,靠什么保持一致?
靠做市商跨市场搬砖。
没有原子赎回路径——你不能拿链上的 GLD 去 Robinhood 换成真的黄金 ETF 份额。所以它俩的价格能不能对得上,全看有没有人愿意去两边搬。
实测下来偏离能有多大:
而且约 60% 的股票代币成交,发生在美股休市时段——那时候套利路径是断的,价格纯粹由链上供需决定。
我两个仓位,一个 GLD/USDG,一个 SGOV/USDG。看起来分散了,实际没有:
它们都以 USDG 计价。USDG 一出事,两个仓位一起完蛋。
USDG 是标准的 EIP-1967 可升级代理,也就是说逻辑随时可以被换掉。
我在建第二个仓位的时候完全没意识到这一点。以为"两个不同标的 = 分散",实际上分母是同一个。
最后这个问题,是我下场之前最想不通的。
先把对比摆出来:
| GLD/USDG(Robinhood Chain) | USDC-WETH(以太坊) | |
|---|---|---|
| TVL | 143 万美元 | 1.04 亿美元 |
| 费率档 | 0.3% | 0.05% |
| 日换手率 | 3.1x | 0.64x |
| 净年化 | 284% | 19% |
主流链上的实测水位(数据来自 DefiLlama,剔掉了成交量缺失的池子):
差距的来源,拆开看其实很清楚:
费率档高 6 倍 × 日换手率高 4.8 倍 = 差不多 29 倍。 数学上完全能对上。
那为什么这条链能有这么高的换手率和费率?
因为它只上线了两个月。池子小(TVL 才 143 万),做市商还没进来卷,费率档还停在 0.3% 这种"早期档位",成交却因为标的稀缺而异常活跃。
这三个条件,每一个都会随着时间消失。
TVL 会涨,套利机器人会来,费率档会被 0.05% 池抢走成交,日换手率会回归正常水位。
所以我的结论是:
我拿的这 200% 溢价,本质是在为「这条链才上线两个月」收租,不是我发现了什么别人没看见的机会。
这个认知很重要,它直接决定了策略:这是一笔有保质期的生意,不是一个可以长期配置的仓位。 该盯着的不是"年化多少",而是"什么时候这个溢价会消失"。
两天,4.4 万美元,账面 +607.87,相对于躺平 −11.75。
如果只让我留三句话:
第一,界面上的数字全都不是给你的。 APR 是整池的,跟你的区间无关;而且是没扣协议费的毛值,实际到手要打八三折甚至七五折。想知道自己赚多少,只有一个办法——自己从链上事件把账重算一遍。
第二,判断 LP 值不值,只看「手续费 ÷ 无常损失」。 我这个比值两天从 8.6 掉到 0.97,中间只发生了一件事:金价单边涨了 11 块。震荡市这门生意成立,单边市它必然亏——这不是风险,这是规则。
第三,把合约读完再算收益。 我的两个标的都能被任意销毁余额、能被随时暂停(暂停后连撤资都做不了)、权限结构在链上不可见、全网供应只有 347 万美元、锚定靠人肉搬砖、两个仓位共用同一个稳定币做分母。这些事情一件都还没发生,但只要发生一件,前面那 607 美元就没有任何意义了。
我会继续跑下去,也会继续把数据记下来。但我心里很清楚——这不是一个"稳赚"的机会,这是一次付费的实地考察。
学费目前是 11.75 美元。这个价格,我觉得挺值。
加入AI技术交流群,可以先关注本公众号,然后在后台回复「交流」,获取入群方式。
感谢你看到这里,如果觉得有帮助,转发,点个赞或在看,就是对我最大的鼓励。也欢迎留言交流你的想法~
本文作者:花菜
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!