feat: add robinhood chain (4663) - #469
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
murderteeth
left a comment
There was a problem hiding this comment.
The chain definition itself checks out against the live chain: chain id, multicall3 predeploy, explorer, vault creation block, incept timestamp, asset, decimals and name all match.
Issues
-
Manual entry contradicts the on-chain contract (high) — the vault is a Yearn TokenizedStrategy (apiVersion 3.0.4, share symbol
ysUSDG) but is recorded as non-Yearn, non-v3 with noapiVersion, so none of the yearn/3 hooks (reports, fees, performance) run for it and it is absent from every v3- or yearn-filtered API query, which is how most consumers find vaults.config/manuals.yaml:213
Done when: the thing's defaults match the contract, andvaults(chainId: 4663, v3: true)andvaults(chainId: 4663, yearn: true)both return it.
Provenance: a7e2d62 -
Price service does not know the new chain name (high, handled in yearn-prices) — every price lookup tested for chain 4663 fails with a server error, in both the exact and batch routes, the same response a made-up chain name gets. Until that lands the vault gets no USD TVL, and because the batch queue is shared across chains, one Robinhood coin in a flush window fails the whole
batchHistoricalrequest and pushes every other chain's coins in that window to per-coin fallback calls. The fix is being tracked in the yearn-prices project, not here; this PR just needs to keep4663mapped to the name that service ends up using.packages/ingest/prices.ts:208
Done when: the historical price route forrobinhood:0x5fc5…d168returns 200 or 404 rather than 500, and a mixed batch containing a Robinhood coin returns 200. Test plan step 7 should be re-run once that is true.
Provenance: a7e2d62
How This Was Reviewed
Reviewed with the review-pr-workflow skill —
5 review lenses, each finding independently verified by claude. 1 candidate finding was refuted and dropped.
on-chain apiVersion 3.0.4, symbol ysUSDG, FACTORY 0x770D0d1F. register under vault and strategy labels so yearn/3 hooks run and v3/yearn queries return it.
Summary
Adds Robinhood Chain (chain ID 4663) as a supported indexing chain, plus a manual entry
for its spUSDG/USDG Morpho looper vault.
How to review
packages/lib/chains.ts/packages/web/chains.ts: newrobinhoodchain def, RPC andblock explorer URLs, multicall3 address.
packages/lib/multicall3.ts: activation block wired for the new chain.packages/ingest/prices.ts: added to the price-service chain-name map.config/manuals.yaml: manual vault entry for0xC7d60aBfa6f4D79C2C42Bf84A54795bD8c586957..env.example: newHTTP_ARCHIVE_4663/HTTP_FULLNODE_4663vars.Test plan
.env, setHTTP_ARCHIVE_4663andHTTP_FULLNODE_4663(public RPC:
https://rpc.mainnet.chain.robinhood.com).make dev, wait for redis/postgres/ingest/web to come up.ingest→fanout abis. Run it twice if the first passonly seeds manuals.
select chain_id, address, label from thing where chain_id = 4663;expect
0xC7d60aBfa6f4D79C2C42Bf84A54795bD8c586957with labelvault.evmlog_stridescovers blocksfrom
inceptBlock3362381 onward.name
spUSDG/USDG Morpho Looper, asset0x5fc5…d168, decimals 6.USE_PRICE_SERVICEon, confirm no "unavailable price" loop in ingestlogs for chain 4663 (chain-name map entry
robinhood).Risk / impact
Additive only, no changes to existing chains. Rollback: remove
robinhoodfromconfig/chains.yaml.