| name | robinhood-net-fee-claim |
| description | Claim creator LP fees for Net Protocol / Banger memecoins on Robinhood Chain from locked Uniswap V3 position NFTs, then optionally use the claimed WETH to buy back the memecoin. Use when the user says "claim Robinhood fees", "claim Hoodie fees", "claim Netr/Banger LP fees", links a Robinhood Blockscout UNI-V3-POS NFT instance, or asks to buy back a Robinhood memecoin with claimed fees. Do NOT use for Base Clanker fee claims or Uniswap V4 positions.
|
| allowed-tools | Bash(cast:*), Bash(curl:*), Bash(jq:*), Bash(node:*), Bash(bankr:*), Bash(git:*) |
| metadata | {"author":"Axiom","version":"1.0.0","tags":["net-protocol","robinhood-chain","lp-fees","banger","bankr","uniswap-v3"]} |
| license | MIT |
| compatibility | Requires Foundry cast, Robinhood Chain RPC, Blockscout, and a Bankr API key or signer able to submit chain 4663 transactions. |
Robinhood Net Fee Claim
Claim locked Uniswap V3 LP fees for Net Protocol / Banger memecoins on Robinhood Chain, then optionally recycle claimed WETH into a token buyback.
Quick decision guide
| User request | Do this |
|---|
Links robinhoodchain.blockscout.com/token/.../instance/<id> for a UNI-V3-POS NFT | Treat it as the LP position NFT. Read owner, position data, and locker. |
| Says "claim fees" for a Net / Banger / Netr token | Find the position NFT and call the locker collectFees(recipient, tokenId). |
| Says "use claimed WETH to buy token" | Claim first, verify balances, then swap exact WETH amount through Bankr on Robinhood Chain. |
| Mentions Base or Clanker | Wrong skill. Use a Clanker fee-claim skill. |
Constants
| Item | Value |
|---|
| Chain | Robinhood Chain |
| Chain ID | 4663 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| Explorer | https://robinhoodchain.blockscout.com |
| BangerV4 | 0x00000000CDaB5161815cD4005fAc11AC3a796F63 |
| Net ERC-1155 drops | 0x0000004c6cc2cA10Cf4d67C8902659085D31e1Dc |
| Position manager | 0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3 |
| HOODIE token reference | 0x01cb33041500bA454DD4F75F51c121272B768442 |
| HOODIE/WETH position reference | token ID 1754 |
Claim workflow
1. Resolve the Blockscout link
For a URL like:
https://robinhoodchain.blockscout.com/token/0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3/instance/1754
Read the NFT instance and transfers:
POSITION_MANAGER=0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3
TOKEN_ID=1754
curl -sS "https://robinhoodchain.blockscout.com/api/v2/tokens/$POSITION_MANAGER/instances/$TOKEN_ID" | jq
curl -sS "https://robinhoodchain.blockscout.com/api/v2/tokens/$POSITION_MANAGER/instances/$TOKEN_ID/transfers" | jq
The transfer recipient from BangerV4 is usually the liquidity locker address. For HOODIE #1754 it is:
0x69cB759C978333723004c278114923c438016da0
2. Verify the position and locker onchain
RPC=https://rpc.mainnet.chain.robinhood.com
POSITION_MANAGER=0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3
TOKEN_ID=1754
LOCKER=0x69cB759C978333723004c278114923c438016da0
cast chain-id --rpc-url "$RPC"
cast call --rpc-url "$RPC" "$POSITION_MANAGER" 'ownerOf(uint256)(address)' "$TOKEN_ID"
cast call --rpc-url "$RPC" "$POSITION_MANAGER" \
'positions(uint256)(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)' \
"$TOKEN_ID"
cast call --rpc-url "$RPC" "$LOCKER" 'owner()(address)'
cast call --rpc-url "$RPC" "$LOCKER" '_feeRecipient()(address)'
cast call --rpc-url "$RPC" "$LOCKER" '_fee()(uint256)'
For HOODIE #1754, verified values were:
| Field | Value |
|---|
| Position owner | 0x69cB759C978333723004c278114923c438016da0 |
| Locker owner / creator wallet | 0xeF2cC7D15d3421629F93fFA39727F14179f31C75 |
| Token0 | 0x01cb33041500bA454DD4F75F51c121272B768442 (HOODIE) |
| Token1 | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 (WETH) |
| Fee tier | 10000 (1%) |
| Locker fee recipient | 0x2a67566660714AfaD6eB80A8a64eb7431B121F3c |
| Locker fee | 50 |
3. Simulate collectFees
The locker exposes this ABI:
function collectFees(address _recipient, uint256 _tokenId) external;
Simulate before submitting. Use the Bankr wallet or other signer as --from, and the intended recipient as _recipient.
RECIPIENT=0xeF2cC7D15d3421629F93fFA39727F14179f31C75
SIGNER=0xeF2cC7D15d3421629F93fFA39727F14179f31C75
cast call --rpc-url "$RPC" --from "$SIGNER" "$LOCKER" \
'collectFees(address,uint256)' "$RECIPIENT" "$TOKEN_ID"
cast estimate --rpc-url "$RPC" --from "$SIGNER" "$LOCKER" \
'collectFees(address,uint256)' "$RECIPIENT" "$TOKEN_ID"
A successful simulation returns 0x. An estimate around 300000 gas is normal.
4. Submit through Bankr wallet API
Use the Bankr wallet submit API when the wallet is Bankr-managed. Do not print the API key.
BK=$(security find-generic-password -a axiom -s openclaw.BANKR_API_KEY -w)
DATA=$(cast calldata 'collectFees(address,uint256)' "$RECIPIENT" "$TOKEN_ID")
jq -nc --arg to "$LOCKER" --arg data "$DATA" '{
transaction: { to: $to, chainId: 4663, value: "0", data: $data },
description: "Claim Robinhood Net LP fees",
waitForConfirmation: true
}' > /tmp/net-fee-claim.json
curl -sS -X POST https://api.bankr.bot/wallet/submit \
-H "X-API-Key: $BK" \
-H 'Content-Type: application/json' \
--data @/tmp/net-fee-claim.json | jq
5. Verify receipt and balances
TX=0x...
HOODIE=0x01cb33041500bA454DD4F75F51c121272B768442
WETH=0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
RECIPIENT=0xeF2cC7D15d3421629F93fFA39727F14179f31C75
cast receipt --rpc-url "$RPC" "$TX" --json | jq '{status,blockNumber,gasUsed,transactionHash}'
cast call --rpc-url "$RPC" "$HOODIE" 'balanceOf(address)(uint256)' "$RECIPIENT"
cast call --rpc-url "$RPC" "$WETH" 'balanceOf(address)(uint256)' "$RECIPIENT"
Buyback workflow
After claiming, ask Bankr to swap the claimed WETH on Robinhood Chain. Always specify exact token addresses to avoid ticker collisions.
BK=$(security find-generic-password -a axiom -s openclaw.BANKR_API_KEY -w)
PROMPT='On Robinhood Chain, swap 0.11 WETH token 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 from my Bankr EVM wallet for HOODIE token 0x01cb33041500bA454DD4F75F51c121272B768442. If the route requires unwrapping to native ETH first, do that. Do not bridge. Do not buy any other HOODIE. Return transaction hash or exact blocker.'
curl -sS -X POST https://api.bankr.bot/agent/prompt \
-H "X-API-Key: $BK" \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg prompt "$PROMPT" '{prompt:$prompt}')" | jq
Poll /agent/job/<jobId> until completed, failed, or cancelled, then verify the returned tx with cast receipt and balance checks.
Verified HOODIE reference run
Claim
| Item | Value |
|---|
| Claim tx | 0xbbf15789e88bafa660030a2842b1ab6753886f0df82dfa9d523ab3e0db7c7da6 |
| Explorer | https://robinhoodchain.blockscout.com/tx/0xbbf15789e88bafa660030a2842b1ab6753886f0df82dfa9d523ab3e0db7c7da6 |
| Gas used | 296878 |
| Claimed to owner | 476,068,464.501343672152311458 HOODIE and 0.110165684386288488 WETH |
| Total fees collected | 952,136,929.002687344304622915 HOODIE and 0.220331368772576975 WETH |
Buyback
| Item | Value |
|---|
| Buyback tx | 0x5d673402cc55f34c62a1ce8888dedb988230f59d1fc506a50f26dd46611c549a |
| Explorer | https://robinhoodchain.blockscout.com/tx/0x5d673402cc55f34c62a1ce8888dedb988230f59d1fc506a50f26dd46611c549a |
| Spent | 0.11 WETH |
| Received | 633,024,152.87 HOODIE |
| Post-buy balance | 1,114,030,170.140074214666863730 HOODIE |
Gotchas
- The NFT link is the claim surface. The Net ERC-1155 drop points to the memecoin, but the fee claim happens through the locked Uniswap V3 position NFT and its locker.
- Ticker search is dangerous. There are many
HOODIE tokens. Always use the token address from the Net/Blockscout metadata or the position's positions() call.
- This is not Clanker. Bankr's "claim token fees" path for Base Clanker can return zero even when Robinhood Net LP fees are claimable.
collectFees splits internally. In the HOODIE reference run, half of collected LP fees went to the locker owner/creator and half to the configured fee recipient.
- Bankr job completion is not enough. Verify the onchain receipt and wallet balances.
completed only means the Bankr agent job finished.
- WETH is not native ETH. The buyback route may need WETH swap or unwrap. Prompt Bankr with the WETH token address and tell it not to bridge.
Troubleshooting
| Issue | Cause | Fix |
|---|
ownerOf returns a locker, not the wallet | LP NFT is locked | Use the locker collectFees, not direct PositionManager.collect. |
collectFees simulation reverts | Wrong locker, token ID, or caller | Read the NFT transfer history and verify owner() on the locker. |
| Buyback buys the wrong token | Ticker collision | Include chain plus exact WETH and memecoin addresses in the Bankr prompt. |
| Blockscout transaction endpoint returns null immediately | Indexer lag | Verify with cast receipt first, then retry Blockscout after a block. |
| No WETH after claim | Fees were already claimed or position had no accrued fees | Compare pre/post balances and inspect ClaimedFees logs. |
| Bankr says insufficient gas | Robinhood native ETH is low | Bridge a small amount of ETH to the same Bankr wallet before retrying. |
Public receipt format
Use this shape when reporting publicly:
Claimed Robinhood Net LP fees from UNI-V3 position #1754, then recycled the claimed WETH into a HOODIE buyback.
Skill: <GitHub URL>
Claim: <Blockscout tx>
Buyback: <Blockscout tx>