feat: link agreement events to their on-chain transactions#13
Draft
MoonBoi9001 wants to merge 1 commit into
Draft
Conversation
IndexingAgreement and IndexingFeeCollection entities don't store the on-chain tx hash for state changes, so consumers had to grep agent logs to recover what the mapping already had in hand. Add acceptedAtTx, canceledAtTx, and per-collection transactionHash. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
TL;DR
Add on-chain transaction hash fields to
IndexingAgreementandIndexingFeeCollectionso consumers can audit every agreement state change back to its transaction without grepping indexer-agent logs.Motivation
The subgraph today captures the terms of each agreement and the timing of every state change, but doesn't store the transaction hash for any of those changes. The mapping has
event.transaction.hashin hand on every handler — it just isn't being written to the entity.This gap was caught during DIPs end-to-end testing on local-network. Recovering the accept transaction hash for a single agreement required SSH-ing into three indexer-agent containers and grepping their JSON logs for the proposalId field. Auditable on-chain links are the whole point of indexing this surface; having them as entity fields on day one closes a clear gap and avoids the same recovery work in every future audit, dashboard, or incident.
Summary
IndexingAgreement.acceptedAtTx: hash of the accept transaction (typically a multicall).IndexingAgreement.canceledAtTx: hash of the cancel transaction (zero sentinel if not canceled).IndexingFeeCollection.transactionHash: hash of the collect transaction.Stacked on #12.