solana 開発勉強日誌２ テストトークンの作成&送受信

とりあえず感覚をつかむ為にdevnetで
ウォレットAとBを作成。テストトークンを作成して送り合ってみる

# inu.jsonウォレットを作る

Phantomウォレットをデベロッパー設定からテストモードにしておく

```
solana-keygen new
```
上記キーペア作成コマンドを入力

```
(base) AAAA@DESKTOP-AAAAA:~/rust-like$ solana-keygen new
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):

Wrote new keypair to /home/AAAAAAA/.config/solana/id.json
========================================================================
pubkey: CcnjrouQkmLs1TEQt333333333333333

```
こんな感じでターミナルに出力される。BIP39 PassphraseはスルーしてOK

Wrote new keypair to /home/AAAAAAA/.config/solana/id.json
上記がキーペアが保存された場所。フォルダを開きid.jsonへ。テストトークンを作成して送受信したい為、今作ったキーペアid.jsonをinu.jsonと名前を変更（以降分かりやすくする為
```
/home/AAAAAAA/.config/solana/inu.json
```
inu.jsonを開き数字の列をコピー
Phantomウォレット（テストモード）開く
ウォレットの追加雄
秘密鍵のインポート
コピーした数字の列を入力
ウォレットの名前をinuとする


# neko.jsonウォレットを作る

再度キーペア作成
```
solana-keygen new
```
再度作ったid.jsonをneko.jsonに変更
```
/home/AAAAAAA/.config/solana/neko.json
```
上記に変更。inu.jsonと同じ様にPhantomウォレット（テストモード）に追加する

以上で、ウォレットが２つ出来た。
inu.json( CcnjrouQkmLs1TEQt3TSybKcJW8HJY9brAw8zFB8Vwt4
neko.json( 37HiJNqc7oSZeWxTFSBdAHswHr6xv6YhDypR6eCdjndg


https://faucet.solana.com/

Devnet用のSOLを上記サイトでinu.json＆neko.jsonウォレットに貰いにいく（各５sol


```
solana config set --keypair ${HOME}/.config/solana/inu.json
```
上記コマンドでinu.jsonをセットする
（今から各コマンドを打つとinu.jsonに紐づいたウォレットに反映される）

# テストトークン作成

```
spl-token create-token
```

inu.json アカウントで テストトークンを作る
```

Creating token 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku under program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA

Address:  2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku
Decimals:  9

Signature: 5m7EjvPYcKN2WhdXsy43QxfZQcxzyi5k2yb89Brp8nUeWxwPfLdGEE2eChNEvmVP1QfWCz69S4nrf1XcGH2Bpt8v
```

上記で作ったトークンの供給量を表示（コマンドで入力
```
spl-token supply 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku
```
0と表示されるはず
新しいトークンにはトークンを保持するアカウントが必要な為、下記コマンドを入力してアカウントを作成する

```
spl-token create-account 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku
```
上記コマンドを入力後、下記が出力
Creating account 3TA3yZMH16aQk5TZYQ3nAP3UorD5YUTWBm49jnf6rFZS

Signature: 5Abb9jUXWoEK6gmYijCXTMHkrFrQcku96NHEQDhiCHs5khpyzXgcRT2hVK5D34uVPxxt7RsKNQvJs8W4YQ9BKHzv

![スクリーンショット 2024-04-24 101059.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573208/e387e00c-7227-7bf1-8f00-3741dfca284e.png)
inu.jsonのアカウント
CcnjrouQkmLs1TEQt3TSybKcJW8HJY9brAw8zFB8Vwt4
トークンを保持するアカウント（トークンアカウント
3TA3yZMH16aQk5TZYQ3nAP3UorD5YUTWBm49jnf6rFZS
トークンをmintしたアカウント
2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku



```
spl-token mint 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku 1000
```
上記コマンドでmintアカウントからトークンアカウントに1000個発行していう命令

![スクリーンショット 2024-04-24 102408.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573208/1653a463-d1c2-d7a9-3e04-7af4cb38d56d.png)

```
spl-token balance 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku
```
上記アカウントに1000あるよ
Phantomウォレットを確認すると
inu.jsonのウォレットに不明なトークン1000
DevnetのSOLが4.996（トークン発行等で減った


```
spl-token transfer 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku 50 37HiJNqc7oSZeWxTFSBdAHswHr6xv6YhDypR6eCdjndg
```
上記コマンドはinu.jsonで作ったmintアドレス2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku 
から50トークンを
nekoウォレット
37HiJNqc7oSZeWxTFSBdAHswHr6xv6YhDypR6eCdjndg
へ送信するコマンド


良くある謎のSCAMトークンやエアドロップと同じ様なコマンドです

今度は逆にneko.jsonからinu.jsonに謎トークンを50送ります
まずneko.jsonのウォレットをセットします
```
solana config set --keypair ${HOME}/.config/solana/neko.json
```
上記コマンドで以後neko.jsonが使用されます
次のコマンドでneko.jsonからinu.jsonへトークンを送信します
```
spl-token transfer 2o1cJy3jdRYfDGFRuETHSNCjh9QsjJyYgarga7i9Anku 50 CcnjrouQkmLs1TEQt3TSybKcJW8HJY9brAw8zFB8Vwt4
```


Transfer 50 tokens
  Sender: J2aV1ycq5YmtAe9i5gMzT5WFemFetva6z7Fg5XdyGREy
  Recipient: CcnjrouQkmLs1TEQt3TSybKcJW8HJY9brAw8zFB8Vwt4
  Recipient associated token account: 3TA3yZMH16aQk5TZYQ3nAP3UorD5YUTWBm49jnf6rFZS


正しく送信できました。
トークンをコマンドから送信する場合
```
spl-token transfer <トークンのmintアドレス> <数量> <送りたいアドレス>
```

この様な形になります
２つのウォレットの作成
テストトークンの作成
テストトークンの送受信が完了