96e5ba4ebc | ||
---|---|---|
.. | ||
src | ||
tests | ||
.gitignore | ||
.npmignore | ||
LICENSE | ||
README.md | ||
package-lock.json | ||
package.json | ||
tsconfig.base.json | ||
tsconfig.cjs.json | ||
tsconfig.json |
README.md
Switchboard-v2 API module
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());