Skip to main content

在 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 池子只有在你允许时才会跟单,快进快出的带单钱包会有警告,利润不是来自手续费的带单钱包会被停掉。
和 Solana 不一样的地方:
  • 仓位用它的 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。
本页剩下的内容是给用 API 的开发者看的。

概览

LP Agent 为 Robinhood Chain(一个 EVM 网络)上的 Uniswap V3 和 Uniswap V4 流动性建立索引。公开 API 通过你在 Solana 上已经在用的同一套 endpoint 提供这些数据:用 chain query 参数选择网络。
chain 默认是 SOL。现有的集成都不用改,照常工作:只有在你想要 Robinhood 数据的请求上才传 chain=ROBINHOOD。

选择链

无法识别的 chain 值会回退到 SOL,而不是返回错误,所以拼错了会拿到 Solana 的数据,而不是 400。请检查你传的值。

Endpoint 支持情况

查 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 都不区分大小写。
这些 endpoint 目前在 Robinhood Chain 上没有对应的版本。它们要么读取 Solana 特有的池子状态,要么通过 Jito bundle 构建并上链 Solana 交易,而这在 EVM 上没有对应的东西。

响应上要注意的差异

Robinhood 的响应和 Solana 用同一个外层结构(envelope),但有几个字段的约定不一样。请显式处理这些差异,不要默认它们和 Solana 的格式一样。
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 地址。
GET /token/balance 会把原生 ETH 余额记在 wrapped 原生代币地址下,而不是零地址。在 Solana 上,原生 SOL 显示在 wrapped SOL 的 mint 下,而且响应还会额外过滤,只保留价值高于 $0.02 的持仓;Robinhood 的响应没有这种粉尘过滤。
GET /pools/discover?chain=ROBINHOOD 按这些报价代币(quote token)筛选:传符号(quote_token=USDG),不要传地址。
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 至少 50,000、但24h交易量不到50,000、但 24h 交易量不到 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)仍然可以用。

已知限制

Robinhood 仓位的盈亏(PnL)还不完整。 下面这些字段只能当参考,不是已结算的账目;涉及资金的事,请对照链上数据核对。
  • 兑换环节不在账本里。 仓位盈亏只算流动性这一部分。进出仓位时的兑换(每个周期最多四次)没有记进去,而它们的成本相对一般的 LP 收益来说不小。
  • 当前仓位没有实时价值。 当前仓位存储的现值不会持续刷新,所以仓位还开着时,基于它算出的盈亏不可靠。要实时读取请用 GET /lp-positions/position。
  • Robinhood 上还没用上校正后的盈亏。 用来校正 Solana 仓位盈亏的审计流程目前不覆盖 Robinhood 的数据,所以 Robinhood 的数值是账本里的原始数字。
目前 Robinhood 上最可靠的数字是已平仓仓位和已实现的手续费。