![見出し画像](https://assets.st-note.com/production/uploads/images/151442439/rectangle_large_type_2_bb191ac8ddc90026b44561a9164674ee.png?width=1200)
【完全保存版】Anchorを使わずにSolanaのプログラムを作ろう(Hello Solana)
この記事では、Solana Playground の「Hello Solana」を用いて、簡単なプログラムを作っています。
Solana Playgroundの最初の立ち上げやテストトークンについて不明な場合は、こちらもご確認ください。
1 プログラムの作成
1 Hello Solanaを開こう
まずは、こちらのSolana Playgroundのチュートリアルから、「Hello Solana」を選択します。
![](https://assets.st-note.com/img/1724195040653-cPUgvDqrQG.png?width=1200)
「START」から進めていきます。
![](https://assets.st-note.com/img/1724195045761-42TnGvQLgB.png?width=1200)
すると、このような画面になりました。
2 use キーワード
まずこちらで、「use」キーワードを使うことで、インポートを行っていることがわかります。
![](https://assets.st-note.com/img/1724195065918-1cOhGaQRoK.png?width=1200)
次に、下のように貼り付けます。
3 関数の作成
ここでは「process_instruction」という関数を宣言しています。
引数として、「プログラムID」「アカウント」「指示のためのデータ」を指定しています。(結局、後者2つはこの関数では使わないですが。)
![](https://assets.st-note.com/img/1724195091717-wDTPj3rf82.png?width=1200)
そして、下のようにして、「msg」マクロを貼り付けます。
これで、この関数で、「Hello World」の表示が行われるようになります。
![](https://assets.st-note.com/img/1724195548632-COn4oZQHmL.png?width=1200)
4 エントリーポイントの設定
次に、下のようにして、「エントリーポイント」を設定します。
一番最初に実行する関数を設定しており、このプログラムでは、唯一の関数である「process_instruction」を設定しています。
![](https://assets.st-note.com/img/1724195751778-9lFzPB4mIL.png?width=1200)
5 デプロイの実行
これで準備ができましたので、「Build」を行います。
![](https://assets.st-note.com/img/1724195789404-4iKoZ7ugqT.png?width=1200)
できましたら、「デプロイ」を行います。
これで完了です。
![](https://assets.st-note.com/img/1724195809494-dW3T5S2Q9I.png?width=1200)
2 clientからの実行
1 clientを開こう
次に、「client」を作り、このプログラムの関数を実行してみましょう。
「client」に移動します。
![](https://assets.st-note.com/img/1724195850240-h6LViVdBYS.png?width=1200)
2 プログラムIDの表示
まずは、下のように貼り付けました。
これによって、プログラムIDを表示することができます。
![](https://assets.st-note.com/img/1724195875608-A7oHoyhztG.png?width=1200)
3 最新のブロックハッシュの取得
次はこちらです。
「getLatestBlockhash」関数を用いて、最新のブロックハッシュを取得しています。
これはトランザクションの作成に必要です。
![](https://assets.st-note.com/img/1724195906381-5QBGXbPuvO.png?width=1200)
4 トランザクションの作成
次は、こちらでトランザクションを作成しています。
スプレッド構文(…)を使って、「blockhashInfo」の中身を設定しています。
![](https://assets.st-note.com/img/1724195933862-3B7kt8er7u.png?width=1200)
なお、スプレッド構文を使っているのは、このように、「blockhash」と「lastValidBlockHeight」という2つの情報があるためです。
![](https://assets.st-note.com/img/1724198098151-zqQKRSbkud.png?width=1200)
5 Instruction(命令)の追加
そして、下のようにして、今回実行する、Instruction(命令)を設定しています。
とはいえ、今回はアカウントも使わず、追加データも必要ないので、「keys」と「data」は空白になっています。
![](https://assets.st-note.com/img/1724195956792-XtaBosic73.png?width=1200)
6 署名の作成
そして、下のようにして、署名を行なっています。
このプレイグラウンドのウォレットによって署名しています。
![](https://assets.st-note.com/img/1724195980172-wZrzA5daZg.png?width=1200)
7 トランザクションの実行
最後に、トランザクションを実行しています。
ちなみに、「serialize」関数でバイナリ形式に変換しているので、「sendRawTransaction」を実行しています。
![](https://assets.st-note.com/img/1724196008415-t65byBpNqW.png?width=1200)
8 clientの実行
こちらの「Run」で実行することができます。
![](https://assets.st-note.com/img/1724196038738-at4zjYO2aO.png?width=1200)
9 トランザクションの確認
最後に、下のようにして、トランザクションを確認することができます。(エクスプローラによる確認でも大丈夫です。)
solana confirm -v <transactionのシグネチャ>
![](https://assets.st-note.com/img/1724196129850-EDqgeqA5EL.png?width=1200)
いいなと思ったら応援しよう!
![ユウキ](https://assets.st-note.com/production/uploads/images/52347520/profile_e7d36b385c74618d7fec56da47f68a35.jpeg?width=600&crop=1:1,smart)