fix: collect remaining fees after a partial RAV collection#1247
Open
MoonBoi9001 wants to merge 1 commit into
Open
fix: collect remaining fees after a partial RAV collection#1247MoonBoi9001 wants to merge 1 commit into
MoonBoi9001 wants to merge 1 commit into
Conversation
A query fee voucher can be paid out more than once as it grows, but the agent treated any past payout as full settlement, so a voucher collected mid-allocation was frozen and the fees earned afterwards were never claimed. Settlement is now judged against the amount actually paid out.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR stops the indexer-agent from permanently writing off query fees still owed on a Receipt Aggregate Voucher (RAV). In Graph Horizon a RAV's total keeps growing while its allocation is open, and the GraphTallyCollector contract pays out the difference from what it has already paid, so one RAV can be collected several times before the allocation closes; on Arbitrum One, 7 allocations have been collected repeatedly this way by the same payer, one of them 49 times. The agent's collection path already understands partial collection, but its settlement bookkeeping can only represent a single collection event: once the allocation closed, any earlier collection transaction older than 3,600 seconds caused the RAV to be marked final and dropped from collection forever, stranding everything earned between the last mid-allocation collection and the close.
The reviewer-relevant parts:
The legacy pre-Horizon collector is unchanged; its escrow contract allows only 1 collection per allocation.