solana-labs / explorer

Explorer for Solana clusters
https://explorer.solana.com
MIT License
214 stars 278 forks source link

token-2022: Show all extensions #315

Closed joncinque closed 7 months ago

joncinque commented 7 months ago

Problem

Although the explorer has some support of token-2022, it doesn't show any mint or account extensions, which leads to a lot of confusion for people who create mints.

Solution

Everything is provided with JSON-parsed encoding, so:

For the most part, each commit corresponds to an extension, except otherwise noted. I wasn't sure about the best way to display all of these, especially those with many fields, so I went with a little header line before showing each field. Let me know what you think of that.

Here are some screenshots of a mint with every extension (minus token group, group member, group pointer, and member pointer):

image

image

image

And an account with all extensions:

image

image

And in case you care, here's how you can create your own mega-token:

set -ex
solana-keygen -o mint.json --no-passphrase
mint=$(solana-keygen pubkey mint.json)
solana-keygen -o source.json --no-passphrase
source_pubkey=$(solana-keygen pubkey source.json)
spl-token -ul \
  create-token \
  --enable-close \
  --enable-freeze \
  --enable-metadata \
  --enable-non-transferable \
  --enable-permanent-delegate \
  --enable-confidential-transfers auto \
  --default-account-state initialized \
  --interest-rate 5 \
  --transfer-fee 10 11 \
  --transfer-hook $mint \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
  mint.json
spl-token -ul initialize-metadata $mint MegaToken MT https://spl.solana.com/token-2022
spl-token -ul update-metadata $mint Mega Token

spl-token -ul create-account --immutable $mint source.json
spl-token -ul enable-required-transfer-memos "$source_pubkey"
spl-token -ul enable-cpi-guard "$source_pubkey"
spl-token -ul configure-confidential-transfer-account --address "$source_pubkey"
vercel[bot] commented 7 months ago

@joncinque is attempting to deploy a commit to the Solana Labs Team on Vercel.

A member of the Team first needs to authorize it.

luke-truitt commented 7 months ago

wen merge

vercel[bot] commented 7 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
explorer ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jan 23, 2024 9:58am