Send Solana via javascript functions

quick guide how you can send transaction to Solana blockchain using Solana JavaScript SDK.

Step 1: Init JavaScript Project

npm init

Step 2: Install modules

npm install -S @solana/web3.js bs58

@solana/web3.js — Solana JavaScript SDK bs58 — encoding library

Step 3: Create JavaScript script file

You can use any text editor. Create an empty file with .js extension. For e.g: test.js

Step 4: Include installed modules

At the beginning of created file we will include required modules:

const web3 = require('@solana/web3.js');
const bs58 = require('bs58');

Step 5: Init connection and create Keypair object

const connection = new web3.Connection('https://api.mainnet-beta.solana.com', 'confirmed');

const privateKey = bs58.decode('619G6W.....XaWz4');
const from = web3.Keypair.fromSecretKey(privateKey)

As an argument for web3.Connection method we will use any Solana RPC. For e.g default mainnet RPC: https://api.mainnet-beta.solana.com

In constant privateKey we will load wallet private key (you can find it in the settings of your wallet)

We will save Keypair object to constant from.

Step 6: Create Trasnaction

(async () => {
    const transaction = new web3.Transaction().add(
        web3.SystemProgram.transfer({
          fromPubkey: from.publicKey,
          toPubkey: '9aq15...NzYHSJdxMa5t',
          lamports: 900000
        }),
      );
    
      const signature = await web3.sendAndConfirmTransaction(
        connection,
        transaction,
        [from],
      );
      
      console.log('SIGNATURE', signature);
})()

At the second string we create transaction constant. We will pass to web3.Transaction().add() method result of calling web3.SystemProgram.transfer() method with following arguments:

  • fromPubkey — publicKey property of Keypair object

  • toPubkey — string with SOL address to where we want to send SOL (lamports)

  • lamports — amount of lamports that we want to send

  • fromPubkey also may be a string * toPubkey also may be a Keypair object (in this case we will use publicKey property) * lamports is a piece of SOL. We can use this converter for better understanding

signature constant contains a result of execution web3.sendAndConfirmTransaction() method where we passed connection constant, transaction data and sender Keypair object.

Expected output of following code is a transaction hash:

SIGNATURE MifLinkmkV.....wEjnDxi25Gcb4HfoU9DM7dfLoCyw3U6tmpznczMivTj

Last updated