Solana CLIでSPL TOKEN

公式見ながらゆるくハンズオン

Solana CLI と SPL Token CLI をインストール
$ sh -c "$(curl -sSfL https://release.solana.com/v1.8.0/install)" # .zshrcに追記 # export PATH="/Users/shmn7iii/.local/share/solana/install/active_release/bin:$PATH" # rustup curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh $ cargo install spl-token-cli --- # ここでspl-token-cliのインストールの失敗する場合 # rustのバージョン上げたら通った $ rustup update
やってみる
### 初期設定 # クラスターをdevnetに設定 $ solana config set --url https://api.devnet.solana.com # キーペアファイルを設定 $ solana config set --keypair /Users/shmn7iii/Desktop/splana/devnet/new-keypair.json # キー生成 $ solana-keygen new -o /Users/shmn7iii/Desktop/splana/devnet/new-keypair.json Generating a new keypair For added security, enter a BIP39 passphrase NOTE! This passphrase improves security of the recovery seed phrase NOT the keypair file itself, which is stored as insecure plain text BIP39 Passphrase (empty for none): Enter same passphrase again: Wrote new keypair to /Users/shmn7iii/Desktop/splana/devnet/new-keypair.json =================================================================================== pubkey: HTqyoyXgQS9zjVCT2Co4iS2FTYWkivdUJHZuhJdHYktg =================================================================================== Save this seed phrase and your BIP39 passphrase to recover your new keypair: rail nuclear wrestle involve riot gather clap sponsor between immense favorite slot =================================================================================== # エアドロ(Faucetからもらう) $ solana airdrop 1 # 残高確認 $ solana balance 1 SOL ### FT # トークン作成 $ spl-token create-token Creating token 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn # サプライ量確認 $ spl-token supply 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn 0 # アカウント作成 $ spl-token create-account 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn Creating account 3YbccGfx3BWo2qCmbtYtC8VPni5szyA2P21cM1CjU1dx # 100個ミントする $ spl-token mint 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn 100 Minting 100 tokens Token: 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn Recipient: 3YbccGfx3BWo2qCmbtYtC8VPni5szyA2P21cM1CjU1dx # サプライ量確認 $ spl-token supply 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn 100 # アカウント情報表示 $ spl-token account-info 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn Address: 3YbccGfx3BWo2qCmbtYtC8VPni5szyA2P21cM1CjU1dx Balance: 100 Mint: 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn Owner: HTqyoyXgQS9zjVCT2Co4iS2FTYWkivdUJHZuhJdHYktg State: Initialized Delegation: (not set) Close authority: (not set) ### TOKENs $ spl-token accounts Token Balance --------------------------------------------------------------- 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn 100 ### NFT # トークン作成 $ spl-token create-token --decimals 0 Creating token HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac # アカウント作成 $ spl-token create-account HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac Creating account 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG # ミント $ spl-token mint HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac 1 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG Minting 1 tokens Token: HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac Recipient: 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG # アカウント情報 $ spl-token account-info HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac Address: 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG Balance: 1 Mint: HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac Owner: HTqyoyXgQS9zjVCT2Co4iS2FTYWkivdUJHZuhJdHYktg State: Initialized Delegation: (not set) Close authority: (not set) ### TOKENs $ spl-token accounts Token Balance --------------------------------------------------------------- 41esUV1X3Ekm7yuaoT8TntefS6po9Ad64rUzAWVV3kWn 100 HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac 1

NFT
  1. create-tokenに--decimals 0フラグを追加して発行
  2. アカウント 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG に向けて 1 だけ mint
  3. トークン HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac の将来の mint (future minting) を無効化
  4. これによりアカウント 2vWKkYD7ho7FzrArizriTLPrtfBmJjkmRDtscKvQp9JG はたった一つで唯一の (the one and only) トークン HgYLSyG1WkvJnuTKQuvVubj7S5VUaP2GMzR9zPmrGCac を所持する

SolanaにおけるNFTはamount = 1 固定のFT扱い?

記述あった

An NFT is simply a token type where only a single token has been minted.
https://spl.solana.com/token#non-fungible-tokens

たぶん

  • Solanaではトークンをアカウント単位で所持
  • アカウントは一つのキーペアで複数作成可能
  • キーペアの公開鍵で各人を識別、例えばトークンのOwnerはPubKeyが表示されてる
  • spl-token account-info はトークンを所持しているアカウントを教えてねコマンド
    • Addressにアカウントアドレスが表示
    • Ownerは所持者のPub Key
  • ことあるごとに出てくるSignitureがなんなのかは知らん