Skip to content

Latest commit

 

History

History
67 lines (58 loc) · 3.25 KB

File metadata and controls

67 lines (58 loc) · 3.25 KB

TypeScript Solana staking with Builder Vault wallet

sequenceDiagram
    autonumber
    participant StakeClient as Sample stake<br> client application
    participant StakeAPI as Stake Intent API
    participant Blockchain as Solana RPC
    box Builder Vault
      participant TSM1 as MPC Wallet <br>(private key share 1)
      participant TSM2 as MPC Wallet <br>(private key share 2)
    end

    StakeClient ->> StakeAPI: get StakeIntent unsigned tx data <br>(amount, validator vote account, delegator)
    StakeClient ->> StakeClient: construct unsigned tx
    StakeClient ->> Blockchain: get blockchain inputs (gas fee) for new tx<br>(sender wallet)
    StakeClient ->> Blockchain: check delegator account balance for stake<br>(sender wallet)
    StakeClient ->> TSM1: request signature (unsigned tx hash)
    TSM1 -->> StakeClient: return partial signature
    StakeClient ->> TSM2: request signature (unsigned tx hash)
    TSM2 -->> StakeClient: return partial signature
    StakeClient ->> StakeClient: combine partial signatures <br> add signature to tx <br> verify tx signatures
    StakeClient ->> Blockchain: broadcast full signed tx<br>(signed tx)
Loading

Prerequisites

Step 1. Set environment variables in .env

cd solana-staking/buildervault/nodejs/
cp .env.example .env
  • update .env with API keys

Step 2. Install package dependancies

  • set the public NPM repository for the BuilderVault Node.js SDK
npm config set @sepior:registry=https://gitlab.com/api/v4/projects/56306653/packages/npm/
npm install

Step 3. Launch solana-stake-bv.ts to auto-create the Builder Vault wallet address on first run

npm run start solana-stake-bv.ts
  • note, on first run this step will fail as the wallet address has no funds
  • copy the new Solana wallet address and fund the account

Step 4. Fund the new Solana wallet address with 2 SOL using faucets below

Step 5. Launch solana-stake-bv.ts to generate the Stake Intent request, sign the request with BuilderVault and broadcast the transaction

npm run start solana-stake-bv.ts