Skip to content

Commit

Permalink
fix: assorted links (#483)
Browse files Browse the repository at this point in the history
* fix: links

* fix: more
  • Loading branch information
nickfrosty authored Sep 13, 2024
1 parent 411f49c commit 19b2489
Show file tree
Hide file tree
Showing 31 changed files with 107 additions and 116 deletions.
3 changes: 2 additions & 1 deletion content/cookbook/development/start-local-validator.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ Testing your program code locally can be a lot more reliable than testing on
devnet, and can help you test before trying it out on devnet.

You can setup your local-test-validator by installing the
[solana tool suite](/getting-started/installation.md#install-cli) and running
[Solana CLI tool suite](/docs/intro/installation.md) and running the following
command:

```shell
solana-test-validator
Expand Down
6 changes: 3 additions & 3 deletions content/cookbook/tokens/manage-wrapped-sol.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ and creating token accounts specifically on the `NATIVE_MINT` address.

## Create Token Account

Like
[Create Token Account](#https://solana.com/developers/cookbook/tokens/create-token-accounts)
but replace mint with `NATIVE_MINT`
Like creating
[SPL token accounts](/content/cookbook/tokens/create-token-account.md) but
replace mint with `NATIVE_MINT`

```js
import { NATIVE_MINT } from "@solana/spl-token";
Expand Down
2 changes: 1 addition & 1 deletion content/cookbook/transactions/add-priority-fees.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Units (CU) \* number of instructions, with a max of 1.4M CU. The Base Fee is
5,000 Lamports per signature. A microLamport is 0.000001 Lamports.

> You can find a detailed guide here on
> [how to use priority fees](https://solana.com/developers/guides/advanced/how-to-use-priority-fees).
> [how to use priority fees](/content/guides/advanced/how-to-use-priority-fees.md).
The total compute budget or Prioritization Fee for a single TX can be changed by
adding instructions from the ComputeBudgetProgram.
Expand Down
3 changes: 1 addition & 2 deletions content/cookbook/transactions/calculate-cost.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ description:
The number of signatures a transaction requires are used to calculate the
transaction cost. As long as you are not creating an account, this will be the
base transaction cost. To find out more about costs to create an account, check
out
[calculating rent costs](https://solana.com/developers/cookbook/accounts/calculate-rent).
out [calculating rent costs](/content/cookbook/accounts/calculate-rent.md).

```typescript filename="calculate-cost.ts"
import {
Expand Down
6 changes: 3 additions & 3 deletions content/cookbook/transactions/optimize-compute.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ the transaction is both processed in a timely manner as well as to avoid paying
too much in priority fees.

For more information about requesting optimal compute,
[check out the full guide](https://solana.com/developers/guides/advanced/how-to-request-optimal-compute).
[check out the full guide](/content/guides/advanced/how-to-request-optimal-compute.md).
You can also find more information about
[using priority fees](https://solana.com/developers/guides/advanced/how-to-use-priority-fees)
in this detailed guide.
[using priority fees](/content/guides/advanced/how-to-use-priority-fees.md) in
this detailed guide.

```typescript filename="optimize-compute.ts"
// import { ... } from "@solana/web3.js"
Expand Down
2 changes: 1 addition & 1 deletion content/cookbook/wallets/connect-wallet-react.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description:
Solana's [wallet-adapter](https://github.com/anza-xyz/wallet-adapter) library
make it easy to manage wallet connections client-side. For a full length guide,
check out
[how to add wallet-adapter to nextjs](https://solana.com/developers/guides/wallets/add-solana-wallet-adapter-to-nextjs).
[how to add wallet-adapter to nextjs](/content/guides/wallets/add-solana-wallet-adapter-to-nextjs.md).

## How to Connect to a Wallet with React

Expand Down
2 changes: 1 addition & 1 deletion content/cookbook/wallets/generate-vanity-address.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ key more easily identifiable.
**Note**: The more characters in your vanity address, the longer it will take.

You can generate a vanity address using the
[Solana CLI](https://docs.solanalabs.com/cli):
[Solana CLI](/docs/intro/installation.md):

```bash
solana-keygen grind --starts-with e1v1s:1
Expand Down
2 changes: 1 addition & 1 deletion content/courses/mobile/intro-to-solana-mobile.md
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ and explanations for why we need them:
from [@solana/web3.js](https://github.com/solana-labs/solana-web3.js), such
as `Transaction` and `Uint8Array`
- `@solana/web3.js`: Solana Web Library for interacting with the Solana network
through the [JSON RPC API](https://docs.solana.com/api/http)
through the [JSON RPC API](/docs/rpc/http/index.mdx)
- `react-native-get-random-values` Secure random number generator polyfill
for `web3.js` underlying Crypto library on React Native
- `buffer`: Buffer polyfill; also needed for `web3.js` on React Native
Expand Down
2 changes: 1 addition & 1 deletion content/courses/mobile/solana-mobile-dapps-with-expo.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ For a Solana + Expo app, you'll need the following:
from [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) – such
as `Transaction` and `Uint8Array`.
- `@solana/web3.js`: Solana Web Library for interacting with the Solana network
through the [JSON RPC API](https://docs.solana.com/api/http).
through the [JSON RPC API](/docs/rpc/http/index.mdx).
- `react-native-get-random-values`: Secure random number generator polyfill
for `web3.js` underlying Crypto library on React Native.
- `buffer`: Buffer polyfill needed for `web3.js` on React Native.
Expand Down
3 changes: 1 addition & 2 deletions content/courses/offline-transactions/durable-nonces.md
Original file line number Diff line number Diff line change
Expand Up @@ -432,8 +432,7 @@ devnet if you'd like. ( If you have issues airdropping on devnet, check out
[Solana's Faucet](https://faucet.solana.com/) )

To run the local validator, you'll need to have it installed, if you don't you
can refer to
[installing the Solana CLI](https://docs.solanalabs.com/cli/install), once you
can refer to [installing the Solana CLI](/docs/intro/installation.md), once you
install the CLI you'll have access to the `solana-test-validator`.

In a separate terminal run:
Expand Down
2 changes: 1 addition & 1 deletion content/courses/onchain-development/local-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
### Download the Solana CLI tools

Next,
[download the Solana CLI tools](https://docs.solana.com/cli/install-solana-cli-tools):
[download the Solana CLI tools](/docs/intro/installation.md#install-the-solana-cli):

```bash
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
Expand Down
9 changes: 4 additions & 5 deletions content/courses/token-extensions/token-extensions-onchain.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,11 +328,10 @@ solana --version

If the version printed out after running `solana --version` is less than
`1.18.0` then you can update the
[cli version manually](https://docs.solanalabs.com/cli/install). Note, at the
time of writing this, you cannot simply run the `solana-install update` command.
This command will not update the CLI to the correct version for us, so we have
to explicitly download version `1.18.0`. You can do so with the following
command:
[cli version manually](/docs/intro/installation.md). Note, at the time of
writing this, you cannot simply run the `solana-install update` command. This
command will not update the CLI to the correct version for us, so we have to
explicitly download version `1.18.0`. You can do so with the following command:

```bash
solana-install init 1.18.0
Expand Down
8 changes: 4 additions & 4 deletions content/guides/advanced/introduction-to-durable-nonces.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ Now that we know what Durable Nonces are, it's time to use them to send durable
transactions.

> If you do not have the Solana CLI installed, please go through
> [this](https://docs.solana.com/cli/install-solana-cli-tools) tutorial and set
> up the CLI and a keypair with some airdropped SOL on devnet
> [this tutorial](/docs/intro/installation.md) and set up the Solana CLI and
> create a keypair with some airdropped SOL on devnet
### Create Nonce Authority

Expand Down Expand Up @@ -617,5 +617,5 @@ change will happen on-chain, and the winner can be decided.
## References

- [Neodyme Blog: Nonce Upon a Time, or a Total Loss of Funds](https://neodyme.io/blog/nonce-upon-a-time/)
- [Solana Durable Nonces CLI](https://docs.solana.com/offline-signing/durable-nonce)
- [Solana Durable Transaction Nonces Proposal](https://docs.solana.com/implemented-proposals/durable-tx-nonces)
- [Solana Durable Nonces CLI](https://docs.solanalabs.com/cli/examples/durable-nonce)
- [Solana Durable Transaction Nonces Proposal](https://docs.solanalabs.com/implemented-proposals/durable-tx-nonces)
7 changes: 3 additions & 4 deletions content/guides/dapps/journal.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,10 +212,9 @@ In the above code, we used the following macros:
- `#[account(...)]` attribute macro then specifies additional constraints on the
accounts

Each journal entry is a Program Derived Address (
[PDA](https://solanacookbook.com/core-concepts/pdas.html#facts)) that stores the
entries state on-chain. Since we are creating a new journal entry here, it needs
to be initialized using the `init_if_needed` constraint.
Each journal entry is a Program Derived Address ( [PDA](/docs/core/pda.md)) that
stores the entries state on-chain. Since we are creating a new journal entry
here, it needs to be initialized using the `init_if_needed` constraint.

With Anchor, a PDA is initialized with the `seeds`, `bumps`, and
`init_if_needed` constraints. The `init_if_needed` constraint also requires the
Expand Down
7 changes: 3 additions & 4 deletions content/guides/games/nfts-in-games.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,9 @@ other assets for your game. GameShift offers these features:

Using NFTs, you can conditionally gate access to a particular part of a game
based on owning the NFT. This can form a more tight-knit community within your
game. In
[JavaScript](https://docs.solana.com/de/developing/clients/javascript-api) using
the [Metaplex SDK](https://github.com/metaplex-foundation/js#readme) this would
look like this:
game. In [JavaScript](/docs/clients/javascript.md) using the
[Metaplex SDK](https://github.com/metaplex-foundation/js#readme) this would look
like this:

```js
JSON.parse(
Expand Down
2 changes: 1 addition & 1 deletion content/guides/getstarted/how-to-create-a-token.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ instead.
## Installing Solana Tools

First we need to download Solana tools to our system. Follow this guide to
[install the Solana CLI](https://docs.solanalabs.com/cli/install).
[install the Solana CLI](/docs/intro/installation.md).

## Create folder

Expand Down
29 changes: 14 additions & 15 deletions content/guides/getstarted/local-rust-hello-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
## Run your localhost validator

The Solana CLI comes with the
[test validator](https://docs.solana.com/developing/test-validator) built in.
This command line tool will allow you to run a full blockchain cluster on your
machine.
[test validator](https://docs.solanalabs.com/cli/examples/test-validator) built
in. This command line tool will allow you to run a full blockchain cluster on
your machine.

```shell
solana-test-validator
Expand All @@ -81,8 +81,8 @@ solana config set --url localhost
## Create a new Rust library with Cargo

Solana programs written in Rust are _libraries_ which are compiled to
[BPF bytecode](https://docs.solana.com/developing/on-chain-programs/faq#berkeley-packet-filter-bpf)
and saved in the `.so` format.
[BPF bytecode](/docs/programs/faq.md#berkeley-packet-filter-bpf) and saved in
the `.so` format.

Initialize a new Rust library named `hello_world` via the Cargo command line:

Expand Down Expand Up @@ -143,8 +143,8 @@ use solana_program::{

Every Solana program must define an `entrypoint` that tells the Solana runtime
where to start executing your onchain code. Your program's
[entrypoint](https://docs.solana.com/developing/on-chain-programs/developing-rust#program-entrypoint)
should provide a public function named `process_instruction`:
[entrypoint](/docs/programs/lang-rust.md#program-entrypoint) should provide a
public function named `process_instruction`:

```rust
// declare and export the program's entrypoint
Expand All @@ -169,9 +169,8 @@ Every onchain program should return the `Ok`
tells the Solana runtime that your program executed successfully without errors.

This program above will simply
[log a message](https://docs.solana.com/developing/on-chain-programs/debugging#logging)
of "_Hello, world!_" to the blockchain cluster, then gracefully exit with
`Ok(())`.
[log a message](/docs/programs/debugging.md#logging) of "_Hello, world!_" to the
blockchain cluster, then gracefully exit with `Ok(())`.

## Build your Rust program

Expand Down Expand Up @@ -202,8 +201,8 @@ solana program deploy ./target/deploy/hello_world.so
```

Once your Solana program has been deployed (and the transaction
[finalized](https://docs.solana.com/cluster/commitments)), the above command
will output your program's public address (aka its "program id").
[finalized](https://docs.solanalabs.com/consensus/commitments)), the above
command will output your program's public address (aka its "program id").

```shell
# example output
Expand Down Expand Up @@ -363,7 +362,7 @@ transaction on the Solana blockchain.

See the links below to learn more about writing Rust based Solana programs:

- [Overview of writing Solana programs](https://docs.solana.com/developing/on-chain-programs/overview)
- [Overview of writing Solana programs](/docs/programs/overview.md)
- [Solana Quick Start Guide](https://solana.com/docs/intro/quick-start)
- [Learn more about developing Solana programs with Rust](https://docs.solana.com/developing/on-chain-programs/developing-rust)
- [Debugging onchain programs](https://docs.solana.com/developing/on-chain-programs/debugging)
- [Learn more about developing Solana programs with Rust](/docs/programs/lang-rust.md)
- [Debugging onchain programs](/docs/programs/debugging.md)
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ Currently supported:

### Using the Solana CLI

Specify your [Cluster](https://docs.solana.com/clusters) to be your RPC
provider's URL:
Specify your [Cluster](/docs/core/clusters.md) to be your RPC provider's URL:

```shell
solana config set --url <your RPC url>
Expand Down
4 changes: 2 additions & 2 deletions content/guides/intro/wallets-explained.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,8 @@ signature pens! ✍️.**
Do you want to start building on Solana?

- A gentle introduction to Solana:
[https://solana.com/news/solana-scaffold-part-1-wallet-adapter](https://solana.com/news/solana-scaffold-part-1-wallet-adapter)
- Tutorials: [https://soldev.app/](https://soldev.app/)
[Quick Start guides](/docs/intro/quick-start/index.md)
- [Install the Solana CLI](/docs/intro/installation.md)

### Blockchain and blockchain

Expand Down
43 changes: 19 additions & 24 deletions content/guides/javascript/compressed-nfts.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ altRoutes:
Compressed NFTs on Solana use the
[Bubblegum](https://docs.metaplex.com/programs/compression/) program from
Metaplex to cheaply and securely store NFT metadata using
[State Compression](https://docs.solana.com/learn/state-compression).
[State Compression](/docs/advanced/state-compression.md).

This developer guide will use JavaScript/TypeScript to demonstrate:

Expand All @@ -30,10 +30,9 @@ This developer guide will use JavaScript/TypeScript to demonstrate:

## Intro to Compressed NFTs

Compressed NFTs use
[State Compression](https://docs.solana.com/learn/state-compression) and
[merkle trees](https://docs.solana.com/learn/state-compression#what-is-a-merkle-tree)
to drastically reduce the storage cost for NFTs. Instead of storing an NFT's
Compressed NFTs use [State Compression](/docs/advanced/state-compression.md) and
[merkle trees](/docs/advanced/state-compression.md#what-is-a-merkle-tree) to
drastically reduce the storage cost for NFTs. Instead of storing an NFT's
metadata in a typical Solana account, compressed NFTs store the metadata within
the ledger. This allows compressed NFTs to still inherit the security and speed
of the Solana blockchain, while at the same time reducing the overall storage
Expand All @@ -53,10 +52,9 @@ transfer. More on this below.
### Compressed NFTs and indexers

Since compressed NFTs store all of their metadata in the
[ledger](https://docs.solana.com/terminology#ledger), instead of in traditional
[accounts](https://docs.solana.com/terminology#account) like uncompressed NFTs,
we will need to help of indexing services to quickly fetch our compressed NFT's
metadata.
[ledger](/docs/terminology.md#ledger), instead of in traditional
[accounts](/docs/terminology.md#account) like uncompressed NFTs, we will need to
help of indexing services to quickly fetch our compressed NFT's metadata.

Supporting RPC providers are using the Digital Asset Standard Read API (or "Read
API" for short) to add additional RPC methods that developers can call. These
Expand Down Expand Up @@ -90,7 +88,7 @@ happen in 3 primary steps:

- create an NFT collection (or use an existing one)
- create a
[concurrent merkle tree](https://docs.solana.com/learn/state-compression#what-is-a-concurrent-merkle-tree)
[concurrent merkle tree](/docs/advanced/state-compression.md#what-is-a-concurrent-merkle-tree)
(using the `@solana/spl-account-compression` SDK)
- mint compressed NFTs into your tree (to any owner's address you want)

Expand Down Expand Up @@ -168,7 +166,7 @@ actually create them following the same process of creating an
- store the collection's metadata in an Account on-chain

Since NFT Collections having nothing special to do with
[State Compression](https://docs.solana.com/learn/state-compression) or
[State Compression](/docs/advanced/state-compression.md) or
[compressed NFTs](/content/guides/javascript/compressed-nfts.md), we will not
cover creating one in this guide.

Expand All @@ -186,7 +184,7 @@ various addresses for your Collection, including:
## Create a tree

One of the most important decisions to make when creating compressed NFTs is
[how to setup your tree](https://docs.solana.com/learn/state-compression#sizing-a-concurrent-merkle-tree).
[how to setup your tree](/docs/advanced/state-compression.md#sizing-a-concurrent-merkle-tree).
Especially since the values used to size your tree will determine the overall
cost of creation, and **CANNOT** be changed after creation.

Expand Down Expand Up @@ -218,9 +216,8 @@ Your tree size is set by 3 values, each serving a very specific purpose:
a large of cost and composability of your compressed NFT collection

> Read more about the details about
> [State Compression](https://docs.solana.com/learn/state-compression),
> including
> [how to size a tree](https://docs.solana.com/learn/state-compression#sizing-a-concurrent-merkle-tree)
> [State Compression](/docs/advanced/state-compression.md), including
> [how to size a tree](/docs/advanced/state-compression.md#sizing-a-concurrent-merkle-tree)
> and potential composability concerns.
Let's assume we are going to create a compressed NFT collection with 10k NFTs in
Expand Down Expand Up @@ -254,8 +251,7 @@ node hashes" on-chain. Thus requiring us to always include `4` proof node values
### Generate addresses for the tree

When creating a new tree, we need to generate a new
[Keypair](https://docs.solana.com/terminology#keypair) address for the tree to
have:
[Keypair](/docs/terminology.md#keypair) address for the tree to have:

```ts
const treeKeypair = Keypair.generate();
Expand Down Expand Up @@ -363,7 +359,7 @@ Allowing us to cryptographically verify that our original metadata has not
changed (unless we want it to).

> Learn more about how State Compression uses
> [concurrent merkle trees](https://docs.solana.com/learn/state-compression#what-is-a-concurrent-merkle-tree)
> [concurrent merkle trees](/docs/advanced/state-compression.md#what-is-a-concurrent-merkle-tree)
> to cryptographically secure offchain data using the Solana ledger.
### Define our NFT's metadata
Expand Down Expand Up @@ -401,8 +397,8 @@ In this demo, the key pieces of our NFT's metadata to note are:
### Derive the Bubblegum signer

When minting new compressed NFTs, the Bubblegum program needs a PDA to perform a
[cross-program invocation](https://docs.solana.com/developing/programming-model/calling-between-programs#cross-program-invocations)
(`cpi`) to the SPL compression program.
[cross-program invocation](/docs/core/cpi.md) (`cpi`) to the SPL compression
program.

> This `bubblegumSigner` PDA is derived using a hard coded seed string of
> `collection_cpi` and owned by the Bubblegum program. If this hard coded value
Expand Down Expand Up @@ -626,8 +622,8 @@ together in a deterministic way to compute the "root hash". Therefore, allowing
for cryptographic validation of an asset within the merkle tree.

> **NOTE:** While each of these hash values resemble a Solana Account's
> [address/public key](https://docs.solana.com/terminology#public-key-pubkey),
> they are not addresses.
> [address/public key](/docs/terminology.md#public-key-pubkey), they are not
> addresses.
Transferring ownership of a compressed NFT happens in 5 broad steps:

Expand Down Expand Up @@ -745,8 +741,7 @@ Since we will use the `createTransferInstruction` helper function from the
Bubblegum SDK to actually build our transfer instruction, we need to:

- remove the proof values that are already stored on-chain in the
[tree's canopy](https://docs.solana.com/learn/state-compression#canopy-depth),
and
[tree's canopy](/docs/advanced/state-compression.md#canopy-depth), and
- convert the remaining proof values into the valid `AccountMeta` structure that
the instruction builder function accepts

Expand Down
Loading

0 comments on commit 19b2489

Please sign in to comment.