新着:HeliusがLight Protocolを買収
Solanaトランザクションの作成方法
ブログ/開発

Solana Dev 101 - Solanaトランザクションの作成方法

開発者体験エンジニアXのOwen VenterLinkedInのOwen Venter
読了時間:5分

はじめに

GM!このブログでは、Solana Dev 101シリーズの一環として、JavaScriptを使用してSolana上でトランザクションを作成し、送信する方法を説明します。初心者向けのガイドなので、Solanaやブロックチェーン技術が初めてでも心配ありません。

ご質問がある場合は、Helius Discordに参加するか、XでHeliusをタグ付けしてお気軽にお問い合わせください。‍

前提条件

まず、マシンにNode.jsとnpmをインストールする必要があります。必要な場合は、こちらからダウンロードできます。

また、Solanaブロックチェーンとやり取りするためのJavaScriptツールおよびライブラリ群であるSolana web3.jsライブラリもインストールする必要があります。

ターミナルで次のコードを実行すると、npmでインストールできます。

コード
npm install @solana/web3.js

‍ステップ1:接続の設定

まず、Solanaクラスターへの接続を作成します。Heliusを使用してdevnetクラスターに接続します。Heliusアカウントを作成し、APIキーを取得する必要があります。どちらもダッシュボードから無料で用意できます。

コード
const solanaWeb3 = require('@solana/web3.js');
const connection = new solanaWeb3.Connection('<https://rpc-devnet.helius.xyz/?api-key=><api_key>','confirmed',);

ステップ2:新しいウォレットの作成

次に、トランザクションの送信元となるウォレットが必要です。ウォレットは公開鍵と秘密鍵のペアで、簡単に作成できます。公開鍵はウォレットのアドレスであり、秘密鍵はトランザクションへの署名に使用します。公開鍵暗号方式について詳しくはこちらをご覧ください。

新しいファイルシステムウォレットを作成できます。このウォレットのキーペアはローカルマシンに保存されます。Solana CLIツールをすでにインストールしている場合は、ターミナルで次のコマンドを実行して新しいウォレットを取得できます。

コード
solana-keygen new

まだインストールしていない場合は、Solana CLIツールスイートをインストールする必要があります。インストール方法について詳しくは、こちらのSolanaドキュメントをご覧ください:https://docs.solana.com/cli/install-solana-cli-tools

続いて、このウォレットをコードに読み込みます。

コード
const sender=solanaWeb3.Keypair.fromSecretKey(new Uint8Array([61,23,....,60,49]));

前のステップで作成したJSONファイルシステムウォレットから秘密鍵をコピーして使用できます。

ステップ3:ウォレットへの入金

トランザクションを送信するには、ウォレットにSOLが必要です。Solana上のすべてのトランザクションでは、処理のために少額の手数料が必要です。

テストでは、Devnet faucetを使用してウォレットに入金します。ダッシュボードのHelius faucetを使用するか、こちらの手順に従ってCLIからDevnet SOLをリクエストしてください。先ほど作成したウォレットの公開鍵を入力し、SOLをリクエストします。

ステップ4:トランザクションの作成

ウォレットへの入金が完了したので、トランザクションを作成できます。この例では、トランザクションを作成し、送金命令を追加します。これを使用して、任意のウォレットに0.1 SOLを送金します。

トランザクションでは、指定する命令に応じてさまざまな処理を実行できます。この例では、送金命令を使用してSOLを送信します。

コード
// Set up the address to send to
const receiver = new solanaWeb3.PublicKey("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");

// Create a transaction    
const transaction = new solanaWeb3.Transaction().add(solanaWeb3.SystemProgram.transfer({
fromPubkey: sender.publicKey,toPubkey: receiver,
lamports: solanaWeb3.LAMPORTS_PER_SOL * 0.01,}),);

‍上記のコードでは、任意のウォレットを指定して新しいPublicKeyオブジェクトを作成しています。トランザクションの作成には、単なるアドレスではなくPublicKeyオブジェクトが必要です。また、送金命令は次の3つのパラメータを受け取ります。

  1. fromPubkey:送信者アカウントの公開鍵です。
  2. toPubkey:受信者アカウントの公開鍵です。
  3. lamports:送金するlamports(Solanaにおける最小通貨単位)の量です。solanaWeb3.LAMPORTS_PER_SOLは1 SOLを表します。

ステップ5:トランザクションへの署名と送信

トランザクションを作成したら、そのトランザクションに署名してネットワークへ送信する必要があります。

Solana Web3ライブラリには、これらすべてを簡単に実行できるsendAndConfirmTransaction()という関数があります。

sendAndConfirmTransactionメソッドはトランザクションをネットワークに送信し、確認を待ってから、トランザクションの署名を返します。

コード
// Sign and confirm the transaction      
const signature = await solanaWeb3.sendAndConfirmTransaction(connection,transaction,[sender],);      
console.log('Transaction: ', signature);

sendAndConfrimTransactionメソッドは、次の3つのパラメータを受け取ります。

  1. connection:Helius RPC接続を使用して作成したSolanaネットワーク接続オブジェクトです。このパラメータでは、トランザクションの送信と確認に使用する接続を指定します。
  2. transaction:先ほど作成した、送金命令を含むトランザクションオブジェクトです。
  3. [sender]:トランザクションのすべての署名者アカウントを含む配列です。この例では、トランザクションに署名して承認するアカウントを表すsenderという1つの要素が含まれます。

これで完了です!

JavaScriptを使用してSolana上でトランザクションを作成し、送信できました。

node sendTransaction.jsを使用してスクリプトを実行できます。

まとめ

Solanaの充実したJavaScriptライブラリにより、JavaScriptを使用してSolana上でトランザクションを作成し、送信するプロセスはシンプルです。わずか数行のコードでSolanaブロックチェーンとやり取りでき、さまざまな可能性が広がります。

これは基本的な例であり、トランザクションを作成して送信する際の構造と流れを示しています。実際のアプリケーションでは、より複雑なトランザクションや追加のセキュリティ対策が必要になる場合があります。

このガイドがお役に立てば幸いです。コーディングを楽しんでください!

完全なコードはこちらで確認できます。

リソース

‍

Heliusを購読

Solana開発の最新情報や新しい記事の公開通知を受け取れます