compound.finance

Compound.finance lets you check Compound III rewards owed before claiming

Updated on

Compound.finance supports checking outstanding Compound III rewards through the Comet Rewards contract before submitting a claim transaction. The check identifies the configured reward token and the amount owed for a particular market and account. Run it as a simulated call to inspect the result without submitting a transaction. A positive amount doesn’t establish that a later claim will succeed: the destination, caller permissions, and transfer conditions still matter. After submission, distinguish a pending transaction from successful execution, then reconcile the actual reward transfer. The useful endpoint is a confirmed payment to the intended recipient, with the remaining amount owed checked separately.

Bottom line: A positive reward estimate establishes an outstanding amount; the completed claim must also show the intended recipient and token transfer.

Claims to the Owner or Another Recipient

The reward destination determines which claim function applies and whether the caller needs account permission.

Payment to the Earning Account

The claim function sends rewards to the account that earned them. Its arguments identify the Comet market, the earning account, and whether to refresh accrual. The transaction sender doesn’t replace the earning account as the recipient. This distinction matters when an application prepares the transaction through a different connected account.

Payment to a Chosen Address

The claimTo function accepts a separate recipient and requires the caller to have permission over the earning account. Ownership satisfies that requirement; an authorized manager can also qualify. Check that permission before signing. Manager authorization extends beyond reward collection and can permit collateral withdrawals or transfers, so granting it solely to redirect one payment introduces broader account access.

Inspect the Outstanding Amount Before Signing

The getRewardOwed function returns a token address and an outstanding amount for the selected market and account. Both fields matter. A quantity without its token identity and decimal scale isn’t enough to describe the payment.

Keep the network, Comet market, rewards contract, and earning account consistent throughout the check. A matching account address alone doesn’t identify the market record.

Although its name sounds like a simple read, the function calls account accrual internally. A simulated call executes that calculation without saving its changes to the blockchain. Tools can perform this through eth_call or an equivalent simulation method. Sending the same function as a transaction changes the execution context and incurs network transaction costs.

The preview neither reserves tokens nor commits a claim. It describes the result at the state that the simulation uses.

Preserve the preview’s block context when comparing it with later results. Further accrual or another completed claim can change the outstanding amount before execution. Compare the same market and account each time, and treat a changed amount as something to explain through transaction history. Repeatedly refreshing an interface without checking those identifiers can conceal a mismatch.

Signed, Submitted, and Pending Transactions

Signing authorizes a claim transaction; broadcasting submits it to the network. A submitted claim can await inclusion, but nodes can also drop or replace it in their transaction pools. A transaction hash identifies the transaction; it doesn’t prove submission or reward payment. Pending transactions have no completed receipt. Once a receipt appears, its execution status distinguishes success from a revert, while subsequent confirmation or finality concerns the durability of that inclusion. Keep the transaction hash available and inspect its status before sending another claim. An interface that continues showing the earlier reward estimate doesn’t establish that submission failed.


Accrual Refresh and the Amount Actually Payable

The shouldAccrue argument controls whether the claim refreshes account accrual before calculating its payment. With true, the contract accounts for rewards through the execution block. With false, it uses the stored accrual record, which may omit progress since the account’s last update. A previous simulated preview doesn’t persist that update.

Comet Rewards calculates the outstanding payment as converted accrued rewards minus the claimed record, with a floor of zero. The raw baseTrackingAccrued value uses the market’s reward accrual scale. The rewards contract converts that value under its configuration before calculating the token amount. Directly treating the raw tracking value as a wallet balance can therefore misstate the reward.

Supply interest, borrowing interest rates, and reward accounting describe different quantities. A refreshed lending balance doesn’t establish that reward tokens reached the wallet.


Match the Receipt to the Reward Transfer

A completed reward payment should agree across the transaction receipt, reward event, and recipient’s token record.

Execution and Event Details

The receipt must belong to the intended network and transaction. A positive successful Comet Rewards payout emits a RewardClaimed event identifying the earning account, recipient, token, and amount. Match those fields to the prepared claim. For a transaction containing several operations, isolate the relevant reward event rather than treating every token movement as part of that payment.

Token Balance and Remaining Rewards

The recipient’s token transfer record provides the payment detail that a wallet’s aggregate balance can obscure. Other incoming or outgoing transfers may affect that balance during the same period. Format the transferred amount using the reward token’s decimals, then inspect the outstanding reward again. A later positive result can reflect additional accrual; it doesn’t automatically mean that the completed transaction underpaid.


A Redirected Claim With Missing Permission

Consider a hypothetical claim with positive rewards owed, a chosen recipient, and a connected caller who is neither the earning account’s owner nor an authorized manager. The caller can retain the chosen recipient or accept payment to the earning account. Keep the market, earning account, and configured reward token identical for both options. Before submitting either option, confirm the intended destination and simulate the claim with its proposed caller.

Simulating claimTo from the unpermitted caller fails its authorization check. Retrying unchanged won’t fix that prerequisite. Ordinary claim avoids the redirect permission requirement, but sends the payment to the earning account. Retaining the chosen recipient instead requires the owner or an already authorized manager to submit the redirected claim.

In this hypothetical example, the chosen recipient stays the same, and the owner takes over as caller. Assume the remaining claim conditions hold: the owner simulates the redirected claim successfully, then submits it. After successful execution, the receipt contains the matching RewardClaimed event and token transfer. Changing the caller resolves the specific failure without granting a new manager broader control.

Why Can a Successful Claim Transfer Nothing?

A successful claim can transfer nothing when converted accrued rewards don’t exceed the account’s claimed record. The contract then completes without making a reward payment or emitting a positive payout event. This can happen after another claim clears the outstanding amount. Distinguish that outcome from a reverted transaction: successful execution establishes that the call completed, while the event and token records establish whether it paid anything. A fresh owed check helps explain the empty payment result.


Transaction Costs Before a Retry

Claim costs come from executing the transaction on the selected network, so a reward estimate isn’t a fee quote. Inspect the transaction’s gas estimate and fee settings separately. The sender also needs the network’s transaction-fee asset; an expected incoming reward doesn’t establish that the sender can fund execution.

A reverted transaction can still consume gas. Preserve its failure information before preparing another attempt. An authorization failure requires a permission or caller change, while an unsupported-market error requires checking the market and rewards-contract pairing. A reward-token transfer failure concerns payment execution. Repeating the same request without resolving its cause can spend more transaction fees without producing a transfer.


Finish With the Payment Record Intact

Reward reconciliation ends when the intended transfer and the remaining owed amount have an explanation. Retain the transaction hash, market identity, earning account, recipient, and token amount together. That record distinguishes the account that earned the reward from the address that received it. It also prevents a later wallet balance change from replacing the original payment evidence.

Finish With the Payment Record Intact: Finishing a claim doesn’t establish that a lending position has closed or that collateral has left the market.; Those balances require their own operations and checks.; If account management was enabled for a broader workflow, reviewing or revoking that permission is also separate from collecting rewards.; The concrete record of the reward payout remains the transaction’s RewardClaimed event.

View full-size image

Finishing a claim doesn’t establish that a lending position has closed or that collateral has left the market. Those balances require their own operations and checks. If account management was enabled for a broader workflow, reviewing or revoking that permission is also separate from collecting rewards. The concrete record of the reward payout remains the transaction’s RewardClaimed event.

Compound.finance: frequently asked questions

Can I Choose a Partial Amount for a Compound III Reward Claim?

The standard claim and claimTo functions don’t accept a partial-payment amount. They calculate the outstanding reward from the account’s accrual and claimed record. Choosing a recipient changes where the payment goes, while shouldAccrue changes whether the calculation first refreshes accrual. Neither argument specifies a smaller withdrawal amount.

Does Disconnecting My Wallet Cancel a Pending Reward Claim?

Disconnecting a wallet from an application doesn’t cancel a transaction that has already reached the network. The pending claim retains its transaction identity and submitted arguments. Check its status using that transaction hash. A disconnected interface or missing local activity entry doesn’t establish that the network dropped the transaction.

What Information Does a Completed Reward Claim Reveal Publicly?

A completed positive claim records the earning account, recipient, reward token, and payment amount in its reward event. Transaction data also identifies the sender and contract interaction. Sending rewards to a separate recipient therefore creates an observable connection between that address and the earning account; the redirect doesn’t make the payment private.