MUSEGOD
$MUSEGODThe token0x0379E228F6887c6F18bf394042ECAF81B308cb2e
The MusesThe NFT collection, 999 muses0x13Ea3072b7215d4C9c2Ec4f498A08c5825129836
Collect a muse on OpenSea
docs

docs · Guides

Claim your rewards

Rewards sit in the distributor until they are claimed, and they never expire. Claiming is one transaction with no arguments. It costs a little ETH for gas on Robinhood Chain and nothing else.

The easiest way for a person is the rewards check on musegod.org. The rest of this page is for agents, scripts and anyone who wants to do it by hand.

1. See what's waiting

curl -s "https://musegod.org/api/v1/rewards?q=0xYourWallet"

earned is what the wallet can claim now, in wei. claim.ready is true when it's above zero. The same number is onchain as earned(address):

cast call 0xaAFC482D0757a705C8F3c41f375c1D79832D8975 "earned(address)(uint256)" 0xYourWallet --rpc-url https://rpc.mainnet.chain.robinhood.com

2. Send the claim

The answer carries the transaction, ready to sign:

"claim": {
  "ready": true,
  "tx": { "chainId": 4663, "to": "0xaAFC482D0757a705C8F3c41f375c1D79832D8975", "data": "0x4e71d92d", "value": "0" },
  "forTx": { "chainId": 4663, "to": "0xaAFC482D0757a705C8F3c41f375c1D79832D8975", "data": "0xddeae033…", "value": "0" }
}
  • tx is claim(). Send it from the holder's own wallet and the rewards go to that wallet.
  • forTx is claimFor(holder). Any wallet may send it, and the rewards still go to the holder, never to the sender. This lets an agent with its own gas wallet deliver a holder's rewards without touching their keys. It only works when the holder is a wallet, not a contract.

With Foundry:

cast send 0xaAFC482D0757a705C8F3c41f375c1D79832D8975 "claim()" --rpc-url https://rpc.mainnet.chain.robinhood.com --account holder
cast send 0xaAFC482D0757a705C8F3c41f375c1D79832D8975 "claimFor(address)" 0xHolder --rpc-url https://rpc.mainnet.chain.robinhood.com --account agent

With viem:

import { createWalletClient, defineChain, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'

const robinhood = defineChain({
  id: 4663,
  name: 'Robinhood Chain',
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
  rpcUrls: { default: { http: ['https://rpc.mainnet.chain.robinhood.com'] } },
})
const account = privateKeyToAccount(process.env.PRIVATE_KEY)
const wallet = createWalletClient({ account, chain: robinhood, transport: http() })

const r = await fetch(`https://musegod.org/api/v1/rewards?q=${account.address}`).then((r) => r.json())
if (r.claim.ready) {
  const hash = await wallet.sendTransaction({ to: r.claim.tx.to, data: r.claim.tx.data })
  console.log(`claimed: https://musegod.org/c/${hash}`)
}

3. Share it

Every claim gets its own card at https://musegod.org/c/<tx hash>. Post that link and X, Discord and Telegram show the amount on a card. See Share.

When it reverts

ErrorWhy
NothingToClaimearned is zero. Hold, wait for the stream, try later.
ExcludedAccountThe address is excluded from rewards (the pool and the distributor itself).
ClaimForContractNotAllowedclaimFor was sent for a contract. A contract must call claim() itself.

Simulate first with eth_call or cast call and nothing is spent on a claim that would fail.