Взаимодействие со смарт-контрактом стейкинга через Solana Web3.js, добавим клиентский код.

Для взаимодействия со смарт-контрактом стейкинга через Solana Web3.js, добавим клиентский код.

  1. Установите зависимости:

npm install @solana/web3.js @project-serum/anchor
  1. Клиент для стейкинга (Node.js):

const anchor = require("@project-serum/anchor");
const { Connection, PublicKey, Keypair, SystemProgram } = require("@solana/web3.js");

const provider = anchor.AnchorProvider.local("https://api.devnet.solana.com");
anchor.setProvider(provider);

const programId = new PublicKey("9HhvqA...pXr");  // Замените на ваш ID
const program = new anchor.Program(idl, programId, provider);

async function stakeTokens(amount) {
    const user = Keypair.generate();
    const stakingAccount = Keypair.generate();

    await program.rpc.stake(new anchor.BN(amount), {
        accounts: {
            stakingAccount: stakingAccount.publicKey,
            userStaking: user.publicKey,
            userTokenAccount: user.publicKey, 
            tokenProgram: anchor.web3.TOKEN_PROGRAM_ID,
        },
        signers: [user],
    });

    console.log(`Staked ${amount} tokens!`);
}

async function unstakeTokens() {
    const user = Keypair.generate();
    await program.rpc.unstake({
        accounts: {
            stakingAccount: programId,
            userStaking: user.publicKey,
            userTokenAccount: user.publicKey,
            tokenProgram: anchor.web3.TOKEN_PROGRAM_ID,
        },
    });

    console.log("Unstaked successfully!");
}

// Вызываем функции
stakeTokens(100);

Этот код позволяет отправлять транзакции стейкинга и анстейкинга в Solana Devnet.

Last updated