diff --git a/explorer-monorepo b/explorer-monorepo index 1b5cebf5..1aa81f45 160000 --- a/explorer-monorepo +++ b/explorer-monorepo @@ -1 +1 @@ -Subproject commit 1b5cebf5056480fc11b6b95b7289f0d04ca3bdda +Subproject commit 1aa81f454a8f2a00a45c7d8480d62be97555fa5d diff --git a/metamask-integration b/metamask-integration index f9c7929a..b15b13c5 160000 --- a/metamask-integration +++ b/metamask-integration @@ -1 +1 @@ -Subproject commit f9c7929a41696578aee5f51fb2af82fe5e499e6c +Subproject commit b15b13c57ef5714263edb40a922ef9b11968ac64 diff --git a/reports/status/2026-04-25_EXPLORER_PRICING_COMMIT_PLAN.md b/reports/status/2026-04-25_EXPLORER_PRICING_COMMIT_PLAN.md new file mode 100644 index 00000000..0c13fc7c --- /dev/null +++ b/reports/status/2026-04-25_EXPLORER_PRICING_COMMIT_PLAN.md @@ -0,0 +1,230 @@ +# Explorer Pricing And Historical Valuation Commit Plan + +Date: `2026-04-25` +Workspace root: `/home/intlc/projects/proxmox` + +## Scope + +This commit plan covers the explorer pricing, historical valuation, deployment, and MetaMask Snap integration work completed in this change series. + +It intentionally excludes unrelated dirty files already present in the parent workspace, including Solana relay inventory/docs changes and other non-explorer operational edits. + +## Excluded Unrelated Workspace Changes + +The following dirty paths were observed in the parent repo and should not be mixed into the pricing release: + +- `config/solana-gru-bridge-lineup.json` +- `config/solana-relay-runtime.json` +- `docs/01-getting-started/METAMASK_QUICK_START_GUIDE.md` +- `docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md` +- `docs/04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md` +- `docs/04-configuration/TOKEN_LIST_PR_REVIEW.md` +- `docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json` +- `docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json` +- `docs/11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md` +- `docs/MASTER_INDEX.md` +- `docs/streaming-platform/` +- `reports/status/solana-relay-worker-health.json` +- `scripts/verify/build-non-evm-lane-status.py` +- `scripts/verify/check-solana-relay-e2e-readiness.py` +- `scripts/verify/run-all-validation.sh` +- `cross-chain-pmm-lps` submodule pointer + +## Commit Set + +Because the work spans multiple nested repos, the cleanest release is a coordinated multi-repo commit set. + +### Commit 1 + +Repo: `explorer-monorepo` + +Message: + +```text +feat(explorer): add live token/native pricing and legacy tx route compatibility +``` + +Include: + +- `backend/api/rest/mission_control.go` +- `backend/api/rest/mission_control_test.go` +- `backend/database/migrations/0014_swap_events_price_columns.up.sql` +- `backend/database/migrations/0014_swap_events_price_columns.down.sql` +- `deployment/systemd/solacescanscout-frontend.service` +- `docs/CHAINLIST_METAMASK_BLOCKSCOUT_RELATIONSHIP.md` +- `frontend/next-env.d.ts` +- `frontend/next.config.js` +- `frontend/package-lock.json` +- `frontend/package.json` +- `frontend/scripts/start-standalone.mjs` +- `frontend/src/components/home/HomePage.tsx` +- `frontend/src/pages/addresses/[address].tsx` +- `frontend/src/pages/search/index.tsx` +- `frontend/src/pages/tokens/[address].tsx` +- `frontend/src/pages/tokens/index.tsx` +- `frontend/src/pages/transactions/[hash].tsx` +- `frontend/src/services/api/nativeAssetPricing.ts` +- `frontend/src/services/api/nativeAssetPricing.test.ts` +- `frontend/src/services/api/tokenAggregation.ts` +- `frontend/src/services/api/tokens.ts` +- `frontend/src/services/api/tokens.test.ts` +- `scripts/check-block-explorer-tx.sh` +- `scripts/deploy-next-frontend-to-vmid5000.sh` +- `scripts/wrap-and-bridge-to-ethereum.sh` + +Purpose: + +- Redirect legacy `/tx/:hash` URLs to `/transactions/:hash` +- Replace null token pricing with live token-aggregation pricing +- Add live price context to home, search, token, address, and transaction surfaces +- Add current native asset pricing to address/transaction pages +- Distinguish current pricing from transfer-time valuation semantics +- Fix Next 15 standalone deployment packaging and service startup +- Update explorer-side producers/docs to emit canonical transaction URLs + +### Commit 2 + +Repo: `smom-dbis-138` + +Message: + +```text +feat(token-aggregation): add historical pricing context, backfill, and indexer hardening +``` + +Include: + +- `services/token-aggregation/deploy-to-vmid.sh` +- `services/token-aggregation/docs/REST_API_REFERENCE.md` +- `services/token-aggregation/package-lock.json` +- `services/token-aggregation/package.json` +- `services/token-aggregation/scripts/backfill-historical-pricing.ts` +- `services/token-aggregation/scripts/bootstrap-lightweight-schema.sql` +- `services/token-aggregation/src/adapters/coingecko-adapter.ts` +- `services/token-aggregation/src/api/routes/admin.ts` +- `services/token-aggregation/src/api/routes/omnl-ipsas.ts` +- `services/token-aggregation/src/api/routes/tokens.test.ts` +- `services/token-aggregation/src/api/routes/tokens.ts` +- `services/token-aggregation/src/backfill-historical-pricing.ts` +- `services/token-aggregation/src/database/repositories/swap-event-repo.ts` +- `services/token-aggregation/src/indexer/chain-indexer.ts` +- `services/token-aggregation/src/indexer/cross-chain-indexer.ts` +- `services/token-aggregation/src/indexer/ohlcv-generator.ts` +- `services/token-aggregation/src/indexer/pool-indexer.ts` +- `services/token-aggregation/src/services/historical-pricing-backfill.ts` + +Purpose: + +- Add `price-at` and `pricing-context` endpoints for current + historical valuation +- Persist swap-event pricing inputs needed for OHLCV and replay +- Add historical backfill tooling +- Prevent stale OHLCV from being marked as locked historical pricing +- Prevent CoinGecko historical fallback from using future datapoints +- Add overlap protection and adaptive RPC log-range chunking +- Make deploys deterministic and production-safe +- Upgrade runtime/dev dependencies and clear audit debt + +### Commit 3 + +Repo: `metamask-integration` + +Message: + +```text +feat(chain138-snap): add snap-ready pricing methods and integrator docs +``` + +Include: + +- `chain138-snap/INTEGRATORS.md` +- `chain138-snap/docs/SNAP_PRICING_REQUIREMENTS.md` +- `chain138-snap/packages/snap/README.md` +- `chain138-snap/packages/snap/snap.manifest.json` +- `chain138-snap/packages/snap/src/index.tsx` + +Purpose: + +- Expose Snap-facing pricing methods for current and historical valuation +- Document the exact API payloads and integration expectations +- Align Snap manifest/docs with the new pricing context flow + +## Suggested Commit Commands + +### explorer-monorepo + +```bash +git -C /home/intlc/projects/proxmox/explorer-monorepo add \ + backend/api/rest/mission_control.go \ + backend/api/rest/mission_control_test.go \ + backend/database/migrations/0014_swap_events_price_columns.up.sql \ + backend/database/migrations/0014_swap_events_price_columns.down.sql \ + deployment/systemd/solacescanscout-frontend.service \ + docs/CHAINLIST_METAMASK_BLOCKSCOUT_RELATIONSHIP.md \ + frontend/next-env.d.ts \ + frontend/next.config.js \ + frontend/package-lock.json \ + frontend/package.json \ + frontend/scripts/start-standalone.mjs \ + frontend/src/components/home/HomePage.tsx \ + frontend/src/pages/addresses/[address].tsx \ + frontend/src/pages/search/index.tsx \ + frontend/src/pages/tokens/[address].tsx \ + frontend/src/pages/tokens/index.tsx \ + frontend/src/pages/transactions/[hash].tsx \ + frontend/src/services/api/nativeAssetPricing.ts \ + frontend/src/services/api/nativeAssetPricing.test.ts \ + frontend/src/services/api/tokenAggregation.ts \ + frontend/src/services/api/tokens.ts \ + frontend/src/services/api/tokens.test.ts \ + scripts/check-block-explorer-tx.sh \ + scripts/deploy-next-frontend-to-vmid5000.sh \ + scripts/wrap-and-bridge-to-ethereum.sh +git -C /home/intlc/projects/proxmox/explorer-monorepo commit -m "feat(explorer): add live token/native pricing and legacy tx route compatibility" +``` + +### smom-dbis-138 + +```bash +git -C /home/intlc/projects/proxmox/smom-dbis-138 add \ + services/token-aggregation/deploy-to-vmid.sh \ + services/token-aggregation/docs/REST_API_REFERENCE.md \ + services/token-aggregation/package-lock.json \ + services/token-aggregation/package.json \ + services/token-aggregation/scripts/backfill-historical-pricing.ts \ + services/token-aggregation/scripts/bootstrap-lightweight-schema.sql \ + services/token-aggregation/src/adapters/coingecko-adapter.ts \ + services/token-aggregation/src/api/routes/admin.ts \ + services/token-aggregation/src/api/routes/omnl-ipsas.ts \ + services/token-aggregation/src/api/routes/tokens.test.ts \ + services/token-aggregation/src/api/routes/tokens.ts \ + services/token-aggregation/src/backfill-historical-pricing.ts \ + services/token-aggregation/src/database/repositories/swap-event-repo.ts \ + services/token-aggregation/src/indexer/chain-indexer.ts \ + services/token-aggregation/src/indexer/cross-chain-indexer.ts \ + services/token-aggregation/src/indexer/ohlcv-generator.ts \ + services/token-aggregation/src/indexer/pool-indexer.ts \ + services/token-aggregation/src/services/historical-pricing-backfill.ts +git -C /home/intlc/projects/proxmox/smom-dbis-138 commit -m "feat(token-aggregation): add historical pricing context, backfill, and indexer hardening" +``` + +### metamask-integration + +```bash +git -C /home/intlc/projects/proxmox/metamask-integration add \ + chain138-snap/INTEGRATORS.md \ + chain138-snap/docs/SNAP_PRICING_REQUIREMENTS.md \ + chain138-snap/packages/snap/README.md \ + chain138-snap/packages/snap/snap.manifest.json \ + chain138-snap/packages/snap/src/index.tsx +git -C /home/intlc/projects/proxmox/metamask-integration commit -m "feat(chain138-snap): add snap-ready pricing methods and integrator docs" +``` + +## Parent Workspace Follow-Up + +After the nested repo commits are pushed, update the parent repo submodule pointers only if you want the workspace root to track the new nested revisions in a single coordination commit. + +Suggested parent message: + +```text +chore(submodules): advance explorer pricing and snap integration revisions +``` diff --git a/reports/status/2026-04-25_EXPLORER_PRICING_RELEASE_NOTES.md b/reports/status/2026-04-25_EXPLORER_PRICING_RELEASE_NOTES.md new file mode 100644 index 00000000..3333d83d --- /dev/null +++ b/reports/status/2026-04-25_EXPLORER_PRICING_RELEASE_NOTES.md @@ -0,0 +1,101 @@ +# Explorer Pricing And Historical Valuation Release Notes + +Date: `2026-04-25` +Release scope: Chain 138 explorer pricing, historical valuation, token-aggregation service, and MetaMask Snap pricing integration + +## Summary + +This release adds live market pricing across the Chain 138 explorer, introduces transfer-time historical valuation support, restores compatibility for legacy transaction links, hardens pricing/indexer operations, and exposes Snap-ready pricing methods for wallet integrations. + +## User-Facing Changes + +### Explorer + +- Legacy explorer transaction links using `/tx/:hash` now redirect to `/transactions/:hash` +- Token detail pages now show live current-market pricing from token-aggregation +- Search results now show live token price and visible liquidity +- Address token views now include live price context +- Transaction token-transfer sections now include live token pricing +- Native transfers now show current native asset USD context on address and transaction pages +- Native/current pricing and transfer-time/historical pricing are now treated separately + +### Historical Valuation + +- The pricing API now supports transfer-time lookup through token `price-at` and `pricing-context` +- Historical valuation is only marked `locked` when the source is acceptable for transfer-time use +- Stale OHLCV candles no longer masquerade as locked transfer-time prices +- Historical CoinGecko fallback no longer uses future datapoints + +### MetaMask Snap + +- Snap-side pricing methods were added for current price, historical price, and pricing context +- Integrator documentation now specifies the exact API payloads and fallback behavior + +## Operational Changes + +- Swap-event persistence was extended to support historical pricing backfill and replay +- Historical backfill tooling was added for token-aggregation +- Indexers now avoid overlapping runs +- RPC log scans now use adaptive chunking when providers reject large ranges +- Token-aggregation deploys are deterministic and production-safe +- Frontend standalone deployment now correctly handles Next 15 nested standalone output + +## Key Files + +### Explorer repo + +- [mission_control.go](/home/intlc/projects/proxmox/explorer-monorepo/backend/api/rest/mission_control.go) +- [solacescanscout-frontend.service](/home/intlc/projects/proxmox/explorer-monorepo/deployment/systemd/solacescanscout-frontend.service) +- [next.config.js](/home/intlc/projects/proxmox/explorer-monorepo/frontend/next.config.js) +- [HomePage.tsx](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/components/home/HomePage.tsx) +- [addresses/[address].tsx](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/pages/addresses/[address].tsx) +- [search/index.tsx](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/pages/search/index.tsx) +- [tokens/[address].tsx](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/pages/tokens/[address].tsx) +- [transactions/[hash].tsx](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/pages/transactions/[hash].tsx) +- [nativeAssetPricing.ts](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/services/api/nativeAssetPricing.ts) +- [tokenAggregation.ts](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/services/api/tokenAggregation.ts) +- [tokens.ts](/home/intlc/projects/proxmox/explorer-monorepo/frontend/src/services/api/tokens.ts) + +### Token-aggregation repo + +- [tokens.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/api/routes/tokens.ts) +- [coingecko-adapter.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/adapters/coingecko-adapter.ts) +- [pool-indexer.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/indexer/pool-indexer.ts) +- [cross-chain-indexer.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/indexer/cross-chain-indexer.ts) +- [chain-indexer.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/indexer/chain-indexer.ts) +- [historical-pricing-backfill.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/services/historical-pricing-backfill.ts) +- [deploy-to-vmid.sh](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/deploy-to-vmid.sh) + +### MetaMask integration repo + +- [index.tsx](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/packages/snap/src/index.tsx) +- [SNAP_PRICING_REQUIREMENTS.md](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/docs/SNAP_PRICING_REQUIREMENTS.md) + +## Validation + +### Explorer frontend + +- `npm audit` -> `0` vulnerabilities +- `npm run lint` -> passed +- `npm run type-check` -> passed +- `npm run test:unit -- src/services/api/nativeAssetPricing.test.ts` -> passed +- `npm run build` -> passed + +### Token-aggregation + +- `npm audit` -> `0` vulnerabilities +- `npm test -- --runTestsByPath src/api/routes/tokens.test.ts` -> passed +- `npm run build` -> passed + +### Live verification + +- `https://explorer.d-bis.org/tx/0xd61be3f32beb7c18782a41cf38c1d7a2f4ac7585ec656d62b7bc58b4d0ac4ebe` -> `308` redirect to `/transactions/...` +- `https://explorer.d-bis.org/transactions/0xd61be3f32beb7c18782a41cf38c1d7a2f4ac7585ec656d62b7bc58b4d0ac4ebe` -> `200` +- `token-aggregation` service on CT `5000` -> `active` +- `solacescanscout-frontend` service on CT `5000` -> `active` + +## Notes + +- Current-market pricing is used on address and token detail pages +- Transfer-time pricing is used through the historical pricing context path when a valid locked source exists +- If no acceptable historical source exists, the API now explicitly returns fallback pricing with `locked: false` diff --git a/scripts/analyze-transaction-138.sh b/scripts/analyze-transaction-138.sh index d84c4a1b..1c534f51 100755 --- a/scripts/analyze-transaction-138.sh +++ b/scripts/analyze-transaction-138.sh @@ -101,8 +101,7 @@ fi echo "" echo "==========================================" info "Explorer Links:" -echo " Blockscout: $EXPLORER_URL/tx/$TX_HASH" +echo " Blockscout: $EXPLORER_URL/transactions/$TX_HASH" echo " Direct API: $EXPLORER_URL/api/v1/transactions/$TX_HASH" echo "" info "To get full details, visit the explorer or use the API directly" - diff --git a/smom-dbis-138 b/smom-dbis-138 index c3b1b2ce..fcd55aa9 160000 --- a/smom-dbis-138 +++ b/smom-dbis-138 @@ -1 +1 @@ -Subproject commit c3b1b2cebcc2b0cd3c9b375427fea9de24225bee +Subproject commit fcd55aa9c4ca2795e437c1531a52a29f06177e6e