Getting Started using JavaScript
Metaplex provides a JavaScript library that can be used to interact with Metaplex Inscriptions. Thanks to the Umi framework, it ships without many opinionated dependencies and, thus, provides a lightweight library that can be used in any JavaScript project.
To get started, you'll need to install the Umi framework and the Inscriptions JavaScript library.
npm install \
@metaplex-foundation/umi \
@metaplex-foundation/umi-bundle-defaults \
@solana/web3.js@1 \
@metaplex-foundation/mpl-inscription
Next, you may create your Umi
instance and install the mplInscription
plugin like so.
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
import { mplInscription } from '@metaplex-foundation/mpl-inscription'
// Use the RPC endpoint of your choice.
const umi = createUmi('http://127.0.0.1:8899').use(mplInscription())
Then you want to tell Umi which wallet to use. This can either be a keypair or the solana wallet adapter.
That's it, you can now interact with Inscriptions by using the various functions provided by the library and passing your Umi
instance to them. Here's an example of how to mint a simple inscription with a small JSON file attached, fetching the data of the inscription and printing the inscription Rank.
// Step 1: Mint an NFT or pNFT
// See https://developers.metaplex.com/token-metadata/mint
// Step 2: Inscribe JSON
const inscriptionAccount = await findMintInscriptionPda(umi, {
mint: mint.publicKey,
})
const inscriptionMetadataAccount = await findInscriptionMetadataPda(umi, {
inscriptionAccount: inscriptionAccount[0],
})
await initializeFromMint(umi, {
mintAccount: mint.publicKey,
})
.add(
writeData(umi, {
inscriptionAccount,
inscriptionMetadataAccount,
value: Buffer.from(
JSON.stringify(metadata) // your NFT's JSON to be inscribed
),
associatedTag: null,
offset: 0,
})
)
.sendAndConfirm(umi)
const inscriptionMetadata = await fetchInscriptionMetadata(
umi,
inscriptionMetadataAccount
)
console.log(
'Inscription number: ',
inscriptionMetadata.inscriptionRank.toString()
)
🔗 Helpful Links: