Solana, Anchorフレームワークのチュートリアルをやってみる
Solanaのスマートコントラクト開発フレームワークのAnchorのチュートリアルのやり方を解説します
手順
最初にAnchorのrepoをクローンします。https://github.com/coral-xyz/anchor
まずはnode moduleをインストールします。
- tsフォルダに行って、
yarn
,yarn build
する - examples/tutorialにいって
yarn
する
tsフォルダでbuildしないと、node moduleがnot foundになるエラーが出るので注意してください。
つぎに一番簡単なbasic-0フォルダのサンプルを動かしていきます。examples/tutorial/basic-0に移動して、anchor test
すると、tsのテストファイルが動きます。せっかくなので、devnetにdeployまでやってみます。
anchor build
-
anchor keys list
で表示されるprogram idをコピーする - lib.rsの
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
のidをコピーしたidで置き換える - Anchor.tomlの
basic_0 = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"
のidもコピーしたidで置き換える - lib.rsを変更したので、もう一度
anchor build
anchor deploy --provider.cluster devnet
ここまでで、deployが完了します。deployでSolが足りないと言われたら、devnetのSolをairdropしてください。
deployできたらclient.jsを実行し、deployしたprogramのinitializeメソッドを実行してみましょう。
- client.jsの
anchor.setProvider(anchor.AnchorProvider.local());
となっているところを、次のように変更。anchor.setProvider(anchor.AnchorProvider.env());
- client.jsの
const programId = new anchor.web3.PublicKey("<YOUR-PROGRAM-ID>");
のIDをdeployしたprogram idで置き換え 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