GithubHelp home page GithubHelp logo

ziutop / solray Goto Github PK

View Code? Open in Web Editor NEW

This project forked from blockworks-foundation/solray

0.0 0.0 0.0 241 KB

Solana Dapp Application Framework

Shell 0.44% JavaScript 51.37% TypeScript 48.19%

solray's Introduction

solray

DApp Toolkit for Solana.

Connection

Example: Connect to Solana devnet RPC:

const conn = solana.connect("dev")

See: @solana/web3.js Connection

Wallet

Example: Generate a random mnemonic wallet

const conn = solana.connect("dev")
const mnemonic = Wallet.generateMnemonic()
const wallet = await Wallet.fromMnemonic(mnemonic, conn)

Example: Request airdrop into a wallet

const conn = solana.connect("dev")
const mnemonic = "spin canyon tuition upset pioneer celery liquid conduct boy bargain dust seed"
const wallet = await Wallet.fromMnemonic(mnemonic, conn)
console.log(wallet.address)

await conn.requestAirdrop(wallet.pubkey, 1e9)

Visit explorer to see account info:

https://explorer.solana.com/address/4i7YkLD9RiiACd4gbG9HdTUUH2wTfTycuRwB8GcehzMd?cluster=devnet

Example: Derive sub-accounts from a master seed.

const conn = solana.connect("dev")
const mnemonic = "spin canyon tuition upset pioneer celery liquid conduct boy bargain dust seed"
const wallet = await Wallet.fromMnemonic(mnemonic, conn)

for (let i = 0; i < 10; i++) {
  // generate a subwallet on a hardened path
  const subwallet = wallet.derive(`${i}'`)
  console.log(i, subwallet.address)
}

Outputs:

0 GziwkGpdZDhfGiVm6XbhHE7AxqWz3jsFqcj8RgS9vkjp
1 BiZj86nxypouBDuuzv4uzzsdwQHiMGK7v1RA3JqAhwqE
2 vTwNcpSuZ9uKBBm4KzGsF7bNmBTqXCo5KvK88LZVhCX
3 9A6c6CCekFfcMt2uhjhNMoZnHnNMW5sDqEUVPHb8FW1N
4 FDnToGeENVcF6NYAAedGAn8ZoXbf3vDuVzE7GsCyegD9
5 Ef413p9kVUSPmwJbcmHwF8b8YUDiiNCs5F4jQdfv3bzx
6 CFt5muH2K53VFd7Fi5W7s8LhrJnNZZidm9tRNA671k1G
7 GMC8dHpXHnMteKSpiFbD1d6v9Kxx3y2GCXAaFFtfrKoX
8 g3FjgBPctNjhQA5639oR7gk2dpVFkkePBo71rzGJ9u1
9 8dUEQMXWoiWve3xh1Udq1NWY9WynFXhE6o6jUkeF5Y4N

BaseProgram

The BaseProgram is an abstract class that you can extend to build concise API that interacts with programs deployed on Solana.

The BaseProgram constructor requires Wallet and the programID, so that an instance of base program will use the wallet's account to sign transactions, as well as using the specified programID to create instructions.

Example: Faucet Program

// Create an instance of the Faucet program
const faucet = new Faucet(wallet, facuetProgramID)

// Request the faucet to send tokens a receiver
await faucet.request({
  receiver: receiver.pubkey,
  tokenAccount: faucetTokenAccountPubkey,
  tokenOwner: faucetTokenOwner,
})

The Faucet program extends BaseProgram:

import {
  PublicKey,
  BaseProgram,
  ProgramAccount,
  SPLToken,
} from "solray"

interface RequestParams {
  receiver: PublicKey
  tokenAccount: PublicKey
  tokenOwner: ProgramAccount
}

export class Faucet extends BaseProgram {
  public async request(params: RequestParams) {
    return this.sendTx([
      // instructions
      this.requestInstruction(params),
    ], [
      // signers
      this.account,
    ])
  }

  private requestInstruction(params: RequestParams) {
    const data = params.tokenOwner.noncedSeed

    return this.instruction(data, [
      // writable: true, isSigned: false
      { write: params.receiver },
      // writable: false, isSigned: false
      SPLToken.programID,
      // writable: true, isSigned: false
      { write: params.tokenAccount },
      // writable: false, isSigned: false
      params.tokenOwner.pubkey,
    ])
  }
}

Build

If you installed Solray globally, you can build program by running:

$ solary build <program> [path]

The script will auto download or update build sdk.

SDK version is based on your testnetDefaultChannel in package.json

solray's People

Contributors

czl1378 avatar dafyddd avatar defactojob avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.