Skip to content

docs(developer-hub): add Migrate from Core guide for Pyth Pro#3595

Open
aditya520 wants to merge 2 commits intomainfrom
docs/migrate-from-core
Open

docs(developer-hub): add Migrate from Core guide for Pyth Pro#3595
aditya520 wants to merge 2 commits intomainfrom
docs/migrate-from-core

Conversation

@aditya520
Copy link
Copy Markdown
Member

@aditya520 aditya520 commented Mar 31, 2026

Summary

  • Adds a new MDX page at content/docs/price-feeds/pro/migrate-from-core.mdx — a technical migration guide for developers moving from Pyth Core to Pyth Pro
  • Updates meta.json to include the page in the How-To Guides nav section
  • Covers architecture changes, behavioral differences (confidence calculation, aggregation method, timestamps, staleness handling, bid/ask availability), endpoint changes, abbreviated EVM/SVM/TypeScript side-by-side code comparisons, and a step-by-step migration checklist
  • Uses abbreviated code snippets that link to full integration guides to minimize duplication and stale content risk

Test plan

  • Verify the MDX page compiles and renders correctly in pnpm dev
  • Verify the page appears in sidebar navigation under How-To Guides, after "Integrate prices on blockchain"
  • Verify all internal links resolve (price-feed-ids, integrate-as-consumer/evm, integrate-as-consumer/svm, acquire-access-token, subscribe-to-prices, payload-reference)
  • Verify all Tabs, Steps, and Callout components render correctly
  • Review code snippets for accuracy against current SDK versions

🤖 Generated with Claude Code


Open with Devin

Technical migration guide covering architecture changes, behavioral
differences (confidence calc, aggregation, staleness, timestamps),
endpoint changes, and abbreviated EVM/SVM/TypeScript code comparisons
with links to full integration guides.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 31, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
component-library Ready Ready Preview, Comment Apr 1, 2026 1:13pm
developer-hub Ready Ready Preview, Comment Apr 1, 2026 1:13pm
5 Skipped Deployments
Project Deployment Actions Updated (UTC)
api-reference Skipped Skipped Apr 1, 2026 1:13pm
entropy-explorer Skipped Skipped Apr 1, 2026 1:13pm
insights Skipped Skipped Apr 1, 2026 1:13pm
proposals Skipped Skipped Apr 1, 2026 1:13pm
staking Skipped Skipped Apr 1, 2026 1:13pm

Request Review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 31, 2026

🤖 llms.txt Content Review

Analyzed documentation changes — no updates to curated content required.

Products reviewed: llms-price-feeds-pro.txt, llms-price-feeds.txt

Note: Product files contain curated content. Deep dive page URLs in each file link to individual .mdx pages for full detail.

Files analyzed
apps/developer-hub/content/docs/price-feeds/pro/migrate-from-core.mdx

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3957e805ef

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


**Update frequency** becomes configurable. Core updates every 400ms (fixed). Pro lets you choose per subscription: `real_time`, `fixed_rate@200ms`, or `fixed_rate@50ms`.

**On-chain verification** uses a different signature scheme. Core verifies data using **Wormhole VAA** (guardian multi-sig) through the Pyth Receiver contract. Pro uses **Ed25519 signature verification** through the Pyth Lazer verifier contract.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Correct Pro signature scheme description by target chain

This sentence states that Pyth Pro verification uses Ed25519 universally, but that is not true for EVM consumers in this repo: the EVM format is documented as secp256k1 ECDSA and the verifier contract uses ECDSA.tryRecover (apps/developer-hub/src/components/BinaryFormatCards/index.tsx, lazer/contracts/evm/src/PythLazer.sol). As written, Core→Pro EVM migrations can adopt the wrong cryptographic assumptions and implement incompatible verification logic.

Useful? React with 👍 / 👎.

| ---------------- | ------------------------------------------------------------------- |
| Streaming | `wss://pyth-lazer-{0,1,2}.dourolabs.app/v1/stream` |
| REST (latest) | `POST https://pyth-lazer.dourolabs.app/v1/latest_price` |
| REST (historical)| `GET https://history.pyth-lazer.dourolabs.app/{channel}/history` |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Align historical endpoint host with documented History API

The migration table points historical requests to history.pyth-lazer.dourolabs.app, but the existing Pro docs consistently define the History API base URL as https://pyth.dourolabs.app/v1 (see content/docs/price-feeds/pro/api/index.mdx, api/history.mdx, and faq.mdx). This inconsistency can send migrators to an undocumented host/path and break integrations if that alias is unavailable.

Useful? React with 👍 / 👎.

@vercel vercel Bot temporarily deployed to Preview – proposals April 1, 2026 13:11 Inactive
@vercel vercel Bot temporarily deployed to Preview – api-reference April 1, 2026 13:11 Inactive
@vercel vercel Bot temporarily deployed to Preview – staking April 1, 2026 13:11 Inactive
@vercel vercel Bot temporarily deployed to Preview – insights April 1, 2026 13:11 Inactive
@vercel vercel Bot temporarily deployed to Preview – entropy-explorer April 1, 2026 13:11 Inactive
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 3 additional findings in Devin Review.

Open in Devin Review

**Data delivery** remains similar. With Core, you fetch price updates from **Hermes** (an off-chain relay for Pythnet data) and submit them on-chain in the same transaction.
With Pro, prices stream directly from publishers via WebSocket. On-demand queries are also available via REST.

**Update frequency** becomes configurable. Core updates every 400ms (fixed). Pro lets you choose per subscription: `real_time`, `fixed_rate@50`, `fixed_rate@200ms` or `fixed_rate@1000ms`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Incorrect channel name fixed_rate@50 is missing the ms suffix

Line 34 lists the channel name as fixed_rate@50 instead of fixed_rate@50ms. Every other reference in the repository — including within this same file at lines 208 and 237, as well as api/rest.mdx:30, subscribe-to-prices.mdx:84, and payload-reference.mdx:324 — consistently uses fixed_rate@50ms. A developer copying this channel name from the Architecture Changes section would use an invalid channel value that won't match any supported subscription channel.

Suggested change
**Update frequency** becomes configurable. Core updates every 400ms (fixed). Pro lets you choose per subscription: `real_time`, `fixed_rate@50`, `fixed_rate@200ms` or `fixed_rate@1000ms`.
**Update frequency** becomes configurable. Core updates every 400ms (fixed). Pro lets you choose per subscription: `real_time`, `fixed_rate@50ms`, `fixed_rate@200ms` or `fixed_rate@1000ms`.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Before diving into what changes, here's what doesn't:

- **Same data quality** — first-party publisher data from 120+ sources including major exchanges and market makers
- **Same data fields** — price, confidence interval, exponent, and timestamp are available in both Core and Pro
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pro doesn't have "confidence interval" like core


**Update frequency** becomes configurable. Core updates every 400ms (fixed). Pro lets you choose per subscription: `real_time`, `fixed_rate@50`, `fixed_rate@200ms` or `fixed_rate@1000ms`.

**On-chain verification** uses a different signature scheme. Core verifies data using **Wormhole VAA** (guardian multi-sig) through the Pyth Receiver contract. Pro uses **Ed25519 signature verification** through the Pyth Lazer verifier contract.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'd also mention there is no push model in Pro for on-chain verification, only pull

Comment on lines +53 to +60
<Callout type="warning">
Pyth Pro EVM contracts don't store the prices on-chain. The prices are parsed from the payload and verified on-chain.
That's why Pyth Pro does **not** revert on stale prices. You must check `feedUpdateTimestamp`
yourself to determine whether a price is fresh or carried forward. See
[Payload Reference — Price Availability
Semantics](/price-feeds/pro/payload-reference#core-price-properties) for
details.
</Callout>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

said another way - there is no push model in Pro for on-chain verification, only pull model. (from what i've seen, people are familiar with this verbiage.)

Comment on lines +83 to +87
<Callout type="warning">
Connect to **all three** WebSocket endpoints (`pyth-lazer-0`, `pyth-lazer-1`,
`pyth-lazer-2`) for redundancy. Individual endpoints go down briefly during
deployments.
</Callout>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd mention that this is automatically handled by our TS SDK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants