![見出し画像](https://assets.st-note.com/production/uploads/images/132299787/rectangle_large_type_2_ad4ccac1a2928dba58b740d79d4f357f.png?width=800)
【完全保存版】solanaでマルチシグアカウントを作成し、ミントをしよう!
こちらの記事は、こちらのドキュメントの中の「Multisig usage」の部分を元に作成しています。
0 始める前に
はじめてsolanaを触る方は、下の記事やその他の記事から学び始めることをお勧めします。
1 テストアカウントの作成
まず、今回作るテスト用のアカウントを3つ作ります。
これは、3つ中、2つの署名があれば実行できる、という状況を作るためです。
こちらのコマンドで実行します。
for i in $(seq 3); do solana-keygen new --no-passphrase -so "signer-${i}.json"; done
![](https://assets.st-note.com/img/1708985554909-ESV2msvi2N.png?width=800)
ちなみに、このコマンドは3つのパートからできています。
まず、この部分で、1から連続した(seq)3つを繰り返しています。
![](https://assets.st-note.com/img/1708985861547-ifclxCkMiB.png?width=800)
こちらで、パスフレーズを用いず、「signer-◯.json」という名前でキーペアを生成しています。
![](https://assets.st-note.com/img/1708985934529-Os9libBRrO.png?width=800)
そして、ここでループが終わることを示しています。
![](https://assets.st-note.com/img/1708985956867-pmTxq1R8pW.png?width=800)
結果として、3つのキーペアができました。
![](https://assets.st-note.com/img/1708986051907-7yb0BR60oL.png?width=800)
2 テストアカウントの公開鍵の取得
では、次のコマンドで、作成したテストアカウントの公開鍵を取得しましょう。
for i in $(seq 3); do SIGNER="signer-${i}.json"; echo "$SIGNER: $(solana-keygen pubkey "$SIGNER")"; done
![](https://assets.st-note.com/img/1708986284090-KSDZzQ5Csp.png?width=800)
こちらで、「SIGNER」にファイル名を入れています。
![](https://assets.st-note.com/img/1708986306071-7LuNOTcMNH.png?width=800)
「solana-keygen pubkey」でファイルの公開鍵を取得しています。
それにより、公開鍵を取得できました。
![](https://assets.st-note.com/img/1709075577486-Mi87nmaY8q.png?width=800)
3 マルチシグアカウントの作成
では、マルチシグアカウントを作ってみましょう。
spl-token create multisig <閾値> <公開鍵①> <公開鍵②> <公開鍵③>
閾値とは、全体(今回は3つ)のうち、幾つ(今回は2)の署名があればトランザクションを行えるかです。
また、「\」はただの改行のために使っています。
![](https://assets.st-note.com/img/1708986457512-SxHRMvuuBo.png?width=800)
これにより、「Dvn…T5S」というマルチシグアカウントが作れました。
![](https://assets.st-note.com/img/1708986492462-OnTHdSPexd.png?width=800)
Solscanを見てもこのようにできています。
![](https://assets.st-note.com/img/1708986526532-7TK01Jvlrs.png?width=800)
4 トークンの作成
では、マルチシグアカウントに権限を与えるトークンを作ってみましょう。
作る時点では、マルチシグは関係ありません。
spl-token create-token
このように、「D1B…cwJ」というアドレスのトークンができました。
![](https://assets.st-note.com/img/1708986542730-BoxxfzG1dD.png?width=800)
Solscanでもこのようになっています。
![](https://assets.st-note.com/img/1708986594390-HArye2n9Dc.png?width=800)
5 関連アカウントの作成
では、トークンに対する、関連アカウントを作りましょう。
まだマルチシグは関係ありません。
spl-token create-account <トークンアドレス>
次のように関連アカウントができました。
![](https://assets.st-note.com/img/1708986634407-quW9oBwhxk.png?width=800)
SolScanでもこのようになりました。
![](https://assets.st-note.com/img/1708986653771-yLntdHQwRR.png?width=800)
6 マルチシグへのミント権限の付与
では、準備ができたので、マルチシグに作成したトークンへのミント権限を与えます。
spl-token authorize <トークンアドレス> mint <マルチシグアドレス>
![](https://assets.st-note.com/img/1708986762507-BaKwHVRy74.png?width=800)
このように、「mintTokens」という権限のタイプに対して、マルチシグアカウントを設定できました。
![](https://assets.st-note.com/img/1709076268821-KiKglayeaM.png?width=800)
7 マルチシグによるミントの実行
では、権限が与えられたので、マルチシグで関連アカウントに対して、100トークンをミントしてみます。
spl-token mint \
<トークンアドレス> \
<ミント量> \
<ミント先アドレス> \
--owner <マルチシグアドレス> \
--multisig-signer <マルチシグファイル①> \
--multisig-signer <マルチシグファイル②>
閾値は2なので、これで実行することができます。
![](https://assets.st-note.com/img/1708986942792-YUHGfWbiZb.png?width=800)
SolScanでも確認することができました。
![](https://assets.st-note.com/img/1708986975328-TssL0KRC35.png?width=800)
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊