見出し画像

【完全保存版】SolanaのAnchorを使ってプログラムをデプロイしよう!

今回は、Solana Playgroundの「Hello Anchor」チュートリアルを実行していきます。

環境構築が不要なので、ご興味のある方はぜひやってみてください

1 Hello Anchorを始める

まずは、solana プレイグラウンドから、「Hello Anchor」を選択します。

あとは、こちらのチュートリアルに沿って進めるだけです。

2 anchor_langのインポート

まずは、インポートを行うため、下のように貼り付けます。

「anchor_lang」の中の「prelude」モジュールの全てをインポートしています。

「prelude」には、よく使われる型や関数などが入っています。

3 プログラムIDの宣言

プログラムのセキュリティを高めるために、プログラムIDを指定します。

イーサリアムで言うところのコントラクトアドレスです。

現在、中身が空欄ですが、ビルド時に、自動で入力されます。

4 プログラムの作成

では、実際にプログラム(イーサリアムで言うところのコントラクト)を作っていきましょう。

1 #[program]マクロについて

プログラムは、#[program]マクロ直下に書き始めます。

2 modについて

スコープを区切るために、「mod」を指定します。

これにより、その外のスコープにアクセスできないようにしています。

3 use super::*について

mod でスコープを区切りましたが、「use super::*」により、外のスコープの全てにアクセスできるようになります。

具体的には、「anchor_lang::prelude::*」にアクセスできるようになります。

4 Ok(())について

プログラム呼び出しが成功したことを示すため、「Ok(())」を入れます。

5 msg!マクロについて

ログにメッセージを残すため、「msg!」マクロを用いています。

Solanaでは「println!」マクロではなく「msg!」を使うようです。

6 Contextについて

Anchorインストラクション(関数)は全て「Context」を取ります。

インストラクションに渡されたアカウントは、「ctx」パラメータを通じてアクセスすることができます。

では、Contextで指定されている「Hello」という型を定義しましょう。

#derive[(Accounts)]の直下で、構造体で定義します。

このインストラクションではアカウントを必要としていないため、構造体の中が空になっています。

5 ビルド&デプロイ

1 ビルドについて

コードが確認できたので、ビルドを行いましょう。

「Build」ボタンを押すか、「build」コマンドで実行できます。

「unused_variable」と言う警告が出ているのは、「ctx」という引数を、インストラクション内で使用していないためです。

2 ウォレット接続について

デプロイ前にウォレット接続を行います。

左下を選択し、下のように、ウォレット接続状態にしましょう。

トークンが「0 SOL」の場合は、事前に取得しましょう。

solana airdrop <トークン量>

で取得ができます。

3 デプロイについて

「Deploy」ボタン「deploy」コマンドで、下のようにデプロイができます。

6 プログラムとのやり取りについて

1 @coral-xyz/anchorライブラリについて

プラログラムとのやりとりは、@coral-xyz/ahchorライブラリを用います。

こちらになります。

https://www.npmjs.com/package/@coral-xyz/anchor

2 pgネームスペースについて

プログラムとのやり取りは、pg(PlayGround)ネームスペースなどが使われます。

えば、pg.PROGRAM_ID. toString()で、プログラムIDが取得できます。

3 Runの実行

「client.ts」に下のようにコードを貼り付けて「Run」コマンドで、下のように実行されます。

pg.program.methods.hello().rpc()の部分で、今回作成したプログラムの「hello」インストラクションを実行しています。

solscanで確認すると、このように実行できたことが確認できました。

このように、「Hello, World!」も確認できました。

4 コマンドによる実行確認

solana confirm -v によるコマンドでも結果を確認することができます。

下のように、結果が確認できました。

7 テストの実行について

テストUIを実施していきましょう。

イーサリアムなどでは、テストコードを作るのですが、説明欄には、自動で作られると書かれています。

テストコードがどこにあるのかわからず、自分の理解が不足している可能性があるので、修正等ありましたら追記します。

左の「Test」ボタンを押すことで、テストを実行できました。

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊