sbv2-solana/libraries/ts
Conner Gallagher a09a20b5b7 refactored documentation
- updated IDL and API docs
- refactored doc pages to be centered around resource
- each resource gets its own top level heading with implementation details and examples
wip


idl updates


fixed permissions


idl cleanup


wip


oracle arch


wip


wip


wip


wip


fixed metrics command


wip


fixed README paths


fixed broken links


cleanup


updated docker version


cleanup dev resource tables


cleanup


fixed broken pages
2022-05-24 16:18:05 -06:00
..
src refactored documentation 2022-05-24 16:18:05 -06:00
tests init 2022-05-17 10:42:04 -06:00
.gitignore init 2022-05-17 10:42:04 -06:00
LICENSE init 2022-05-17 10:42:04 -06:00
README.md init 2022-05-17 10:42:04 -06:00
package.json docs 2022-05-20 12:44:41 -06:00
tsconfig-cjs.json init 2022-05-17 10:42:04 -06:00
tsconfig-esm.json init 2022-05-17 10:42:04 -06:00
tsconfig.json init 2022-05-17 10:42:04 -06:00

README.md

Switchboard-v2 API module

GitHub   npm   twitter  

A library of utility functions to interact with the Switchboardv2 program

Install

npm i @switchboard-xyz/switchboard-v2

Creating Feeds

import * as anchor from "@project-serum/anchor";
import { clusterApiUrl, Connection, Keypair, PublicKey } from "@solana/web3.js";
import {
  AggregatorAccount,
  OracleQueueAccount,
  loadSwitchboardProgram,
} from "@switchboard-xyz/switchboard-v2";

const payerKeypair = Keypair.fromSecretKey(
  JSON.parse(fs.readFileSync("../keypair-path.json", "utf-8"))
);
const program = await loadSwitchboardProgram(
  "devnet",
  new Connection(clusterApiUrl("devnet")),
  payerKeypair
);
const queueAccount = new OracleQueueAccount({
  program: program,
  // devnet permissionless queue
  publicKey: new PublicKey("F8ce7MsckeZAbAGmxjJNetxYXQa9mKr9nnrC3qKubyYy"),
});

const aggregatorAccount = await AggregatorAccount.create(program, {
  name: Buffer.from("FeedName"),
  batchSize: 6,
  minRequiredJobResults: 1,
  minRequiredOracleResults: 1,
  minUpdateDelaySeconds: 30,
  queueAccount,
});

Updating Feeds

import * as anchor from "@project-serum/anchor";
import {
  AggregatorAccount,
  OracleQueueAccount,
} from "@switchboard-xyz/switchboard-v2";

const program: anchor.Program;
const queueAccount: OracleQueueAccount;

await aggregatorAccount.openRound({
  oracleQueueAccount: queueAccount,
  payoutWallet: tokenAccount,
});

Reading Feeds

import { AggregatorAccount } from "@switchboard-xyz/switchboard-v2";
import { Big } from "big.js";

const aggregatorAccount: AggregatorAccount;
const result: Big = await aggregatorAccount.getLatestValue();

console.log(result.toNumber());