🗂

Solana, Anchorフレームワークのチュートリアルをやってみる

2022/07/06に公開

Solanaのスマートコントラクト開発フレームワークのAnchorのチュートリアルのやり方を解説します

手順

最初にAnchorのrepoをクローンします。https://github.com/coral-xyz/anchor

まずはnode moduleをインストールします。

  1. tsフォルダに行って、yarn, yarn buildする
  2. examples/tutorialにいってyarnする

tsフォルダでbuildしないと、node moduleがnot foundになるエラーが出るので注意してください。

つぎに一番簡単なbasic-0フォルダのサンプルを動かしていきます。examples/tutorial/basic-0に移動して、anchor testすると、tsのテストファイルが動きます。せっかくなので、devnetにdeployまでやってみます。

  1. anchor build
  2. anchor keys listで表示されるprogram idをコピーする
  3. lib.rsのdeclare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");のidをコピーしたidで置き換える
  4. Anchor.tomlのbasic_0 = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"のidもコピーしたidで置き換える
  5. lib.rsを変更したので、もう一度anchor build
  6. anchor deploy --provider.cluster devnet

ここまでで、deployが完了します。deployでSolが足りないと言われたら、devnetのSolをairdropしてください。

deployできたらclient.jsを実行し、deployしたprogramのinitializeメソッドを実行してみましょう。

  1. client.jsのanchor.setProvider(anchor.AnchorProvider.local());となっているところを、次のように変更。 anchor.setProvider(anchor.AnchorProvider.env());
  2. client.jsの const programId = new anchor.web3.PublicKey("<YOUR-PROGRAM-ID>"); のIDをdeployしたprogram idで置き換え
  3. ANCHOR_PROVIDER_URL=https://api.devnet.solana.com ANCHOR_WALLET=~/.config/solana/id.json node client.js

最後のコマンドは、環境変数を指定して、node client.jsしているだけです。

成功すると、explorerに以下のように表示されます。logで、initializeというメソッドが実行され、successが返っていることが確認できます。今回のinitialize()は、ただOk()を返すだけの空っぽのメソッドです。

basic-0はなにも処理がないメソッドでしたが、他にもbasic-1からbasic-4のチュートリアルがあるので、段階的にAnchorの使い方を学習していけます。

まとめ

Anchorで書かれたprogramをdevnetにdeployし、clientからトランザクションの実行ができた

Discussion