在 App 里
用 EVM 钱包(MetaMask、Rabby 等)登录,或者用邮箱注册时选 Robinhood,你的账户就会跑在 Robinhood Chain 上。用 ETH 或 USDG 出资
ETH 用来付 Gas。选 ETH 或 USDG 作为新仓位的 Base Token(基础代币)。用 USDG 时,Keep ETH 会自动帮你补 Gas。
Uniswap V3 和 V4
用 ETH 或 USDG Zap In(单币入池),选好价格区间,平仓时换回开仓用的币种。
代币化股票
Stocks 筛选会显示持有 Robinhood 发行的股票代币的池子,按合约地址匹配。
带防护的 Copy LP
带 Hook 的 V4 池子只有在你允许时才会跟单,快进快出的带单钱包会有警告,利润不是来自手续费的带单钱包会被停掉。
- 仓位用它的 Uniswap token ID 标识,显示为
#1234567。 - 每个跟单都会留一点 ETH(至少 0.001 ETH),用来付它自己退出时的费用。WETH 不能付 Gas。
- 如果开仓加平仓的 Gas 超过仓位大小的 3%,自动跟单会被跳过,标为 Too small for gas。我们建议净资产至少 0.08 ETH 再跟单。详见 Robinhood Chain 上的 Copy LP。
- Claim SOL、资金保护和复投只支持 Solana。
概览
LP Agent 为 Robinhood Chain(一个 EVM 网络)上的 Uniswap V3 和 Uniswap V4 流动性建立索引。公开 API 通过你在 Solana 上已经在用的同一套 endpoint 提供这些数据:用chain query 参数选择网络。
chain 默认是 SOL。现有的集成都不用改,照常工作:只有在你想要 Robinhood 数据的请求上才传 chain=ROBINHOOD。选择链
chain 值会回退到 SOL,而不是返回错误,所以拼错了会拿到 Solana 的数据,而不是 400。请检查你传的值。
Endpoint 支持情况
SOL 和 ROBINHOOD 都支持
SOL 和 ROBINHOOD 都支持
查 Robinhood 池子时,
/pools/{poolId}/positions 需要传 chain=ROBINHOOD。在 Robinhood 上,它的 positionState 始终为空,activeBin 会被省略,因为这两个都是 Meteora DLMM 的 bin 数据;platform 会被忽略,改用池子自己的协议。/pools/{poolId}/onchain-stats 和 /pools/{poolId}/top-lpers 跟其他 endpoint 一样接受 chain 和 platform。这两个 endpoint 的 chain 是可选的:不传时,Uniswap V3 池子地址或 Uniswap V4 pool ID(32 字节的 0x 哈希)会被当作 Robinhood。两种 ID 都不区分大小写。仅 Solana
仅 Solana
这些 endpoint 目前在 Robinhood Chain 上没有对应的版本。它们要么读取 Solana 特有的池子状态,要么通过 Jito bundle 构建并上链 Solana 交易,而这在 EVM 上没有对应的东西。
响应上要注意的差异
Robinhood 的响应和 Solana 用同一个外层结构(envelope),但有几个字段的约定不一样。请显式处理这些差异,不要默认它们和 Solana 的格式一样。仓位 ID 是 manager 地址 + token ID
仓位 ID 是 manager 地址 + token ID
Robinhood 仓位 ID 由 Uniswap V3 position-manager 地址和 NFT token ID 组成,中间用连字符连接:
0x1234…abcd-5678。API 也接受带完整前缀的 robinhood:0x1234…abcd-5678 格式。因为这种格式本身就能看出是哪条链,所以你不传 chain 时,GET /lp-positions/position 会从 ID 推断出链。Solana 仓位 ID 仍然是 base58 的 mint 地址。原生 ETH 记在 wrapped 地址下
原生 ETH 记在 wrapped 地址下
GET /token/balance 会把原生 ETH 余额记在 wrapped 原生代币地址下,而不是零地址。在 Solana 上,原生 SOL 显示在 wrapped SOL 的 mint 下,而且响应还会额外过滤,只保留价值高于 $0.02 的持仓;Robinhood 的响应没有这种粉尘过滤。池子发现用的报价代币
池子发现用的报价代币
GET /pools/discover?chain=ROBINHOOD 按这些报价代币(quote token)筛选:传符号(
quote_token=USDG),不要传地址。Robinhood 上的池子发现筛选
Robinhood 上的池子发现筛选
GET /pools/discover?chain=ROBINHOOD 和 Solana 有几点不同:min_bin_step、max_bin_step、min_organic_score和max_organic_score是 Solana 的概念,会被忽略。- 浏览时会隐藏流动性低于 $5,000 的池子。传
min_liquidity、show_small_pools=true或search就能看到它们。 - 浏览时还会隐藏声称 TVL 至少 500 的池子,这是用单边存入刷出来的 TVL 的典型特征。
search不受这条限制。 category=stock只显示持有 Robinhood 链上资产注册表里代币化股票的池子。search匹配0x地址和 Uniswap V4 pool ID,不区分大小写。
交易历史的过滤方式不一样
交易历史的过滤方式不一样
GET /lp-positions/logs 只返回经济事件。在 Solana 上,open 和 close 行属于元数据,会被丢掉。在 Robinhood 上,被丢掉的是 close 和 collectGross(collectGross 是 Uniswap Collect 的原始到账,API 会把它拆成单独的减仓行和手续费行),而 open 会保留,因为 Uniswap V3 把初始存入记在那里。每个仓位的日志最多 200 行。各条链的默认协议
各条链的默认协议
带
platform 参数的 endpoint,默认包含所请求的链上的所有协议:SOL 上是 meteora,meteora_damm_v2,ROBINHOOD 上是 uniswap_v3,uniswap_v4。传这个参数可以缩小结果范围。旧的参数名 protocol(overview、revenue)和 type(discover)仍然可以用。已知限制
- 兑换环节不在账本里。 仓位盈亏只算流动性这一部分。进出仓位时的兑换(每个周期最多四次)没有记进去,而它们的成本相对一般的 LP 收益来说不小。
- 当前仓位没有实时价值。 当前仓位存储的现值不会持续刷新,所以仓位还开着时,基于它算出的盈亏不可靠。要实时读取请用
GET /lp-positions/position。 - Robinhood 上还没用上校正后的盈亏。 用来校正 Solana 仓位盈亏的审计流程目前不覆盖 Robinhood 的数据,所以 Robinhood 的数值是账本里的原始数字。