-
Notifications
You must be signed in to change notification settings - Fork 3
feat(seo): Improve Internal Linking #426
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,18 +18,18 @@ description: "Optimize your Solana dedicated node performance with best practice | |
|
|
||
| While nodes don't have strict usage limits, they are bound by hardware constraints. A balanced workload helps maintain optimal performance and node liveliness. | ||
|
|
||
| * **Use `getProgramAccounts` carefully**: While supported, dedicated nodes are not optimized for these calls - heavy usage can impact performance or cause node failure | ||
| * Use your shared plan for `getProgramAccounts` queries as we have a [**custom indexer**](https://x.com/heliuslabs/status/1864750969755422797) that makes those calls much faster and more reliable | ||
| * **Poor transaction landing rates**: While `sendTransaction` is supported, it's not optimized - most transactions will not land; use your shared plan for reliable transaction submission | ||
| * **Use [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) carefully**: While supported, dedicated nodes are not optimized for these calls - heavy usage can impact performance or cause node failure | ||
| * Use your shared plan for [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) queries as we have a [**custom indexer**](https://x.com/heliuslabs/status/1864750969755422797) that makes those calls much faster and more reliable | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. typically it's best not to include the same link multiple times. better to include it once in the most relevant section. imo, better to remove this link to gPA and mention gPAV2 instead:
|
||
| * **Poor transaction landing rates**: While [`sendTransaction`](/api-reference/rpc/http/sendtransaction) is supported, it's not optimized - most transactions will not land; use your shared plan for reliable transaction submission | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. change to: "...shared plan or Sender for landing Solana transactions more reliably" |
||
| * **No archival queries**: Historical data access should be done through your shared plan | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link "Historical data" to https://www.helius.dev/docs/rpc/historical-data |
||
| * Monitor your node's metrics to understand its performance based on response times, successful request %, and error counts | ||
| * Consider distributing intensive workloads across multiple nodes in a dedicated fleet | ||
|
|
||
| <Warning> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This whole warning section is pretty duplicative of the bullets in the managing load section. Recommend removing it to keep the page simpler. If you want to keep the "No platform APIs, webhooks, or staked connections" stuff, it might be better served with a new "What's Not Supported" header where we include them in simple bullet list Then you'd wanna move the historical data bullet from the load section here since it's unsupported, and not a load management thing |
||
| **Remember**: Dedicated nodes limitations: | ||
| - `sendTransaction` supported but not optimized - most transactions will not land | ||
| - [`sendTransaction`](/api-reference/rpc/http/sendtransaction) supported but not optimized with staked connections - most transactions will not land as effectively compared to [Sender](/sending-transactions/sender) | ||
| - No archival data access | ||
| - `getProgramAccounts` supported but not optimized - heavy usage can impact performance or cause node failure | ||
| - [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) supported but not optimized - heavy usage can impact performance or cause node failure | ||
| - No platform APIs, webhooks, or staked connections | ||
|
|
||
| Use your shared paid plan for these features. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,7 +22,7 @@ The type of node you choose depends on your requirements. Since we don't impose | |
| **For gRPC streaming applications** (primary use case), any node type will perform well. | ||
|
|
||
| <Warning> | ||
| **Important**: While `getProgramAccounts` is supported, dedicated nodes are not optimized for these calls. Heavy usage can impact node performance or even cause node failure. Use your shared plan for `getProgramAccounts` queries as it has a custom indexer that makes these calls much faster and more reliable. | ||
| **Important**: While [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) is supported, dedicated nodes are not optimized for these calls. Heavy usage can impact node performance or even cause node failure. Use your shared plan for [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) queries as it has a custom indexer that makes these calls much faster and more reliable. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove the 2nd gpa link |
||
| </Warning> | ||
|
|
||
| <Frame caption="Choose your dedicated node's type and location"> | ||
|
|
@@ -134,9 +134,9 @@ ws.onmessage = (event) => { | |
|
|
||
| <Warning> | ||
| **Remember**: The above RPC examples are for basic functionality only. Dedicated nodes limitations: | ||
| - `sendTransaction` supported but not optimized - most transactions will not land (use your shared plan for reliable transaction submission) | ||
| - No archival data queries (use your shared plan) | ||
| - `getProgramAccounts` supported but not optimized - heavy usage can impact performance or cause node failure (use your shared plan for reliability) | ||
| - [`sendTransaction`](/api-reference/rpc/http/sendtransaction) supported but not optimized - most transactions will not land (use your shared plan for reliable transaction submission) | ||
| - No archival data queries (use your shared plan) | ||
| - [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) supported but not optimized - heavy usage can impact performance or cause node failure (use your shared plan for reliability) | ||
|
|
||
| **Primary use case**: Use the gRPC streaming setup below for optimal performance. | ||
| </Warning> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -171,7 +171,7 @@ ws.on('close', function close() { | |
| </Accordion> | ||
| </AccordionGroup> | ||
|
|
||
| ### Monitoring new Jupiter DCAs using Transaction Subscribe + getAsset | ||
| ### Monitoring new Jupiter DCAs using Transaction Subscribe + [getAsset](/api-reference/das/getasset) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. generally best to not link things in headers instead it's better to include those links in the paragraph text underneath the header my recommendation is to add a sentence or 2 to bridge between the header and the accordions like: Jupiter DCA, or Dollar Cost Averaging, is a way to schedule recurring trades for tokens on Solana. Because these scheduled buy/sell orders are recorded on-chain, traders can use the |
||
|
|
||
| <AccordionGroup> | ||
| <Accordion title="Code Example"> | ||
|
|
@@ -199,7 +199,7 @@ function decodeOpenDcaV2(base58Data) { | |
| const TOKEN_META = new Map(); // mint → { symbol, decimals } | ||
| /** | ||
| * Fetch symbol & decimals for a mint once then cache. | ||
| * Uses Helius getAsset DAS method. | ||
| * Uses Helius getAsset DAS method: https://docs.helius.dev/api-reference/das/getasset | ||
| */ | ||
| async function getMeta(mint) { | ||
| if (TOKEN_META.has(mint)) return TOKEN_META.get(mint); | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -24,7 +24,7 @@ Use the standard RPC method `getTokenLargestAccounts` with your token's mint add | |
| </Accordion> | ||
|
|
||
| <Accordion title="How do I find all token holders of a specific mint?"> | ||
| Use `getProgramAccounts` filtered by the token program and mint address, or `getTokenAccountsByOwner` for specific owners. For comprehensive token holder analysis, combine with `getTokenLargestAccounts`. | ||
| Use [`getProgramAccounts`](/api-reference/rpc/http/getprogramaccounts) filtered by the token program and mint address, or [`getTokenAccountsByOwner`](/api-reference/rpc/http/gettokenaccountsbyowner) for specific owners. For comprehensive token holder analysis, combine with [`getTokenLargestAccounts`](/api-reference/rpc/http/gettokenlargestaccounts). | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a second paragraph: Alternatively, you can use the |
||
| </Accordion> | ||
|
|
||
| <Accordion title="How do I get the market capitalization of a token?"> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -69,9 +69,9 @@ The first step to building a Solana index is getting all the historical data tha | |
|
|
||
| There are three main ways to do this: | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since we already include these links in their dedicated sections below, we don't need to link them here. Duplicate links hurt instead of help, and it's always best to include links in their most contextually relevant section. So if the section details using the gTFA method, that's the best section to include a link to the gTFA reference. |
||
|
|
||
| 1. **getTransactionsForAddress** (recommended) | ||
| 2. **getSignaturesForAddress** and **getTransaction** | ||
| 3. **getBlock** | ||
| 1. [**getTransactionsForAddress**](/rpc/gettransactionsforaddress) (recommended) | ||
| 2. [**getSignaturesForAddress**](/api-reference/rpc/http/getsignaturesforaddress) and [**getTransaction**](/api-reference/rpc/http/gettransaction) | ||
| 3. [**getBlock**](/api-reference/rpc/http/getblock) | ||
|
|
||
| ### Method 1: getTransactionsForAddress (recommended) | ||
|
|
||
|
|
@@ -388,6 +388,29 @@ To update an index that stores all token transfers, you would subscribe to [`tra | |
| } | ||
| ``` | ||
|
|
||
| ## Related Methods | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This section feels a bit unneccessary since we link to all of these methods in their sections above. would recommend removing it, or replacing the /api-reference/ links with their respective "guides" but even that feels like overkill for an already long/detailed guide like this |
||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="getTransactionsForAddress" href="/api-reference/rpc/http/gettransactionsforaddress"> | ||
| Fetch full transaction history for an address with filtering (recommended) | ||
| </Card> | ||
| <Card title="getSignaturesForAddress" href="/api-reference/rpc/http/getsignaturesforaddress"> | ||
| Get transaction signatures for an address | ||
| </Card> | ||
| <Card title="getTransaction" href="/api-reference/rpc/http/gettransaction"> | ||
| Retrieve full transaction details by signature | ||
| </Card> | ||
| <Card title="getBlock" href="/api-reference/rpc/http/getblock"> | ||
| Fetch all transactions in a specific block | ||
| </Card> | ||
| <Card title="getTokenAccountsByOwner" href="/api-reference/rpc/http/gettokenaccountsbyowner"> | ||
| Get all token accounts owned by a wallet | ||
| </Card> | ||
| <Card title="getTokenAccountBalance" href="/api-reference/rpc/http/gettokenaccountbalance"> | ||
| Get the token balance for a specific account | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## Get started | ||
|
|
||
| Building a robust Solana index and backfilling data requires solving three core challenges: | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you remove the ? Better that this information is just normal paragraph text / bullets instead of being wrapped in the . We do this a lot with where we shove multiple bullets or long paragraphs in notes, but they should just be clearly written header/paragraph sections. If we abuse the markup it loses it's urgency/meaning imo