fix: Fix vault transaction history and add owner discovery probe - #28
Closed
lndgalante wants to merge 5 commits into
Closed
lndgalante wants to merge 5 commits into
lndgalante wants to merge 5 commits into
Conversation
…ion timestamp remapping-processor v0.0.21 validates that every event_fields ($.x) target column is a MoveType. Both multisig_account columns were declared EventMetadata(AccountAddress) yet are fed by the $.multisig_account payload field on the modern module events (Vote, AddOwners, RemoveOwners and the execution events), so the processor crash-looped on boot with "Column multisig_owner_activities.multisig_account should have a MoveType column_type" and stopped indexing entirely. Declare both multisig_account columns as MoveType(Address). The legacy *Event variants that populate them from account_address metadata stay compatible, since that metadata is the same underlying address. Also map the previously-idle transaction_metadata.timestamp hook into a new multisig_transactions.timestamp column, so execution history can be rendered straight from the indexer, and bump spec_version to 0.0.21 to match the running processor.
The history hook re-fetched every transaction from the fullnode via getTransactionByVersion just to read timestamp and sender: heavy (one full transaction per row) and broken for aged vaults whose versions the fullnode has pruned (HTTP 410), which left the whole page blank. Everything the row renders is already indexed: payload, executor (== the on-chain sender), status and approval counts. With the new multisig_transactions.timestamp column the last missing field is covered too, so the hook now builds execution events directly from the indexer rows — no fullnode calls — collapsing each page to the single indexer query it already made and removing the pruning dependency entirely. TransactionRow renders from the execution event alone; rejected executions carry no payload, so they fall back to a "Rejected transaction" label. The unused fetchCachedTransaction action is removed. Deploy ordering: the indexer processors must be redeployed with the timestamp column before the web app is built, since graphql-codegen validates the query against the live indexer schema.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch had an error being deployed
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.
Description
multisig-mainnet.yaml, with a GraphQL example and integration notes.Test Plan
Note
Medium Risk
Changes core vault history data sourcing and indexer schema (including genesis backfill cost for mainnet creation candidates); behavior is covered by new unit tests but processor deployment is not verified in this PR.
Overview
Vault transaction history no longer calls the fullnode per row (
fetchCachedTransactionremoved).useMultisigExecutionEventsbuilds rows from indexermultisig_transactions(payload, executor, timestamp, status), normalizes timestamps, paginates withrawCountso filtered rows do not truncate history, and bumps the React Query key tov2so old array-shaped cache entries are not misread. The GraphQL query addstimestamp; the transactions page andTransactionRowrender fromExecutionEventonly (including a “Rejected transaction” label when payload is missing).Mainnet indexer (
multisig-mainnet.yaml) bumps to0.0.21: mapstimestampand fixes address column types/indexes on existing tables; addsmultisig_creation_candidatesseeded fromFeeStatementevents withcreate_with_ownersargument0as nullableowners. README documents GraphQL usage, ingestion/backfill cost, and that mobile integration and deployment are still separate.Testnet YAML gets the same timestamp/address schema fixes without the creation-candidates table. Tests add
executionHistory.test.ts(pruned fullnode, timestamp formats, pagination, cache hydration); Vitest enables automatic JSX for component tests.Reviewed by Cursor Bugbot for commit efa092a. Bugbot is set up for automated code reviews on this repo. Configure here.