LoginSignup
0
0

[Typescript] solanaのアカウント作成(テストネット) + フォーセット

Last updated at Posted at 2024-02-04

はじめに

今回はSOL(solana)!!
最近、物凄く上がってきていて、日本の中でもsolanaに関する文献も増えてきたな〜とおもっているところです。solanaに思い入れはないんですが、今回は、ちょっとテストネットでいろいろ試してみたいなと思い、書いてみました。実際に、メインネットでも自分はPhantomウォレットを通じてステーキングまでしているのですが、開発レベルで試したのことないので、これを機にやってみようかと思って始めました〜

solanaの概要

何かいろいろ書いてあるので、読んでください。あとqiitaでも書いている人たちいるのでぜひ〜

node package

npmの場合:

$ npm install @solana/web3.js

yarnの場合:

$ yarn add @solana/web3.js

nodeのバージョンでインストールできないよ!って言われることがあるかもしれないので、バージョンは合わせておいてください!

実装

何をするのか

  1. Keypair.generate(): アカウントの作成(公開鍵, 秘密鍵ができる)
  2. requestAirdrop(): フォーセットリクエスト
  3. confirmTransaction(): トランザクションの確認
  4. 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初心者なので、ちょっと配列やらインターフェースの勉強がてら、書いてみただけなので、そこは目を瞑ってください笑)

今回はここまで!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0