はじめに
今回はSOL(solana)!!
最近、物凄く上がってきていて、日本の中でもsolanaに関する文献も増えてきたな〜とおもっているところです。solanaに思い入れはないんですが、今回は、ちょっとテストネットでいろいろ試してみたいなと思い、書いてみました。実際に、メインネットでも自分はPhantomウォレットを通じてステーキングまでしているのですが、開発レベルで試したのことないので、これを機にやってみようかと思って始めました〜
solanaの概要
何かいろいろ書いてあるので、読んでください。あとqiitaでも書いている人たちいるのでぜひ〜
node package
npmの場合:
$ npm install @solana/web3.js
yarnの場合:
$ yarn add @solana/web3.js
nodeのバージョンでインストールできないよ!って言われることがあるかもしれないので、バージョンは合わせておいてください!
実装
何をするのか
-
Keypair.generate()
: アカウントの作成(公開鍵, 秘密鍵ができる) -
requestAirdrop()
: フォーセットリクエスト -
confirmTransaction()
: トランザクションの確認 -
getBalance()
: 残高の取得
※ 何回もフォーセットのリクエストをしていると上限がきます。
その時には以下のようなものが出てきます。serverなのかな?と思わず、上限が来たんだな〜と思ってください。ちなみに、違う場面では本当にtoo many requestの時もあります笑
Server responded with 429 Too Many Requests. Retrying after 500ms delay...
コードを書いてみた〜
import {Keypair, Connection, clusterApiUrl, LAMPORTS_PER_SOL, PublicKey} from "@solana/web3.js";
async function createAddress(network: Connection) {
// アドレスの情報の格納先を設定(初期化)
// アカウント情報を格納するためのインターフェース
interface AccountInfo {
publicKey: string;
secretKey: string;
balance: number;
}
const accountInfo: Array<AccountInfo> = [];
// 新しいウォレット(キーペア)を生成
const account = await Keypair.generate();
// フォーセットの受け取り
const airdrop = await network.requestAirdrop(
account.publicKey,
LAMPORTS_PER_SOL, // 1 SOLをリクエスト(max)
);
// トランザクションの確認
await network.confirmTransaction(airdrop);
// 残高を取得
const balance = await network.getBalance(account.publicKey);
// アカウント情報としてプッシュ
await accountInfo.push({
publicKey: account.publicKey.toBase58(),
secretKey: account.secretKey.toString(),
balance: balance
});
console.log(accountInfo);
}
function main() {
// ネットワークの設定(テストネット)
const network = new Connection(clusterApiUrl('testnet'), 'confirmed');
// アカウント作成の実行
createAddress(network);
}
main();
無駄にインターフェースやらなんやら使ってますが、それぞれconsole.log
で出せばいいです!(ts初心者なので、ちょっと配列やらインターフェースの勉強がてら、書いてみただけなので、そこは目を瞑ってください笑)
今回はここまで!