3.2.5 • Published 3 months ago

@switchboard-xyz/solana.js v3.2.5

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

Switchboard Logo

@switchboard-xyz/solana.js

A Typescript client to interact with Switchboard V2 on Solana.

Test Status Anchor Test Status

NPM Badge Types Badge

Install

npm i --save @switchboard-xyz/solana.js

Usage

Directory

Load Switchboard Program

import { Connection } from "@solana/web3.js";
import {
  SwitchboardProgram,
  TransactionObject,
} from "@switchboard-xyz/solana.js";

const program = await SwitchboardProgram.load(
  "mainnet-beta",
  new Connection("https://api.mainnet-beta.solana.com"),
  payerKeypair /** Optional, READ-ONLY if not provided */
);

Create a Queue

import { QueueAccount } from "@switchboard-xyz/solana.js";

const [queueAccount, txnSignature] = await QueueAccount.create(program, {
  name: "My Queue",
  metadata: "Top Secret",
  queueSize: 100,
  reward: 0.00001337,
  minStake: 10,
  oracleTimeout: 60,
  slashingEnabled: false,
  unpermissionedFeeds: true,
  unpermissionedVrf: true,
  enableBufferRelayers: false,
});
const queue = await queueAccount.loadData();

Add an Oracle

import { QueueAccount } from "@switchboard-xyz/solana.js";

const queueAccount = new QueueAccount(program, queuePubkey);

const [oracleAccount, oracleInitSignature] = await queueAccount.createOracle({
  name: "My Oracle",
  metadata: "Oracle #1",
  stakeAmount: 10,
});
const oracle = await oracleAccount.loadData();

await oracleAccount.heartbeat();

Create a Data Feed

import { QueueAccount } from "@switchboard-xyz/solana.js";
import { OracleJob } from "@switchboard-xyz/common";

const queueAccount = new QueueAccount(program, queuePubkey);

const [aggregatorAccount, aggregatorInitSignatures] =
  await queueAccount.createFeed({
    batchSize: 1,
    minRequiredOracleResults: 1,
    minRequiredJobResults: 1,
    minUpdateDelaySeconds: 60,
    fundAmount: 2.5, // deposit 2.5 wSOL into the leaseAccount escrow
    jobs: [
      { pubkey: jobAccount.publicKey },
      {
        weight: 2,
        data: OracleJob.encodeDelimited(
          OracleJob.fromObject({
            tasks: [
              {
                valueTask: {
                  value: 1,
                },
              },
            ],
          })
        ).finish(),
      },
    ],
  });
const aggregator = await aggregatorAccount.loadData();

Request a New Value

import { AggregatorAccount } from "@switchboard-xyz/solana.js";

const aggregatorAccount = new AggregatorAccount(program, aggregatorPubkey);

await aggregatorAccount.openRound();

Read a Data Feed

After the oracles respond, read the feed result

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

const aggregatorAccount = new AggregatorAccount(program, aggregatorPubkey);

const result: Big | null = await aggregatorAccount.fetchLatestValue();
if (result === null) {
  throw new Error("Aggregator holds no value");
}
console.log(result.toString());

Add a History Buffer

Optionally, add a history buffer to your feed to store the last N historical samples

import {
  AggregatorAccount,
  AggregatorHistoryBuffer,
} from "@switchboard-xyz/solana.js";

const aggregatorAccount = new AggregatorAccount(program, aggregatorPubkey);
const aggregator = await aggregatorAccount.loadData();

const [historyBuffer, addHistorySignature] =
  await AggregatorHistoryBuffer.create(program, {
    aggregatorAccount,
    maxSamples: 10000,
  });
const history = await historyBuffer.loadData();

Watch Data Feed

Setup a websocket listener to invoke a callback whenever an aggregator is updated

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

const aggregatorAccount = new AggregatorAccount(program, aggregatorPubkey);

const ws = aggregatorAccount.onChange((aggregator) => {
  const result = AggregatorAccount.decodeLatestValue(aggregator);
  if (result !== null) {
    console.log(result.toString());
  }
});
3.2.5

3 months ago

3.2.4

3 months ago

3.2.3

4 months ago

3.2.2

4 months ago

3.2.1

4 months ago

3.2.0

4 months ago

3.2.0-beta.6

4 months ago

3.2.0-beta.7

4 months ago

3.2.0-beta.4

4 months ago

3.2.0-beta.5

4 months ago

3.2.0-beta.2

4 months ago

3.2.0-beta.3

4 months ago

3.2.0-beta.0

4 months ago

3.2.0-beta.1

4 months ago

3.1.6

5 months ago

3.1.3

6 months ago

3.1.5

5 months ago

3.1.4

5 months ago

2.8.0-beta.6

8 months ago

2.8.0-beta.5

8 months ago

2.8.0-beta.4

8 months ago

2.8.0-beta.3

8 months ago

2.8.0-beta.2

8 months ago

2.8.0-beta.1

8 months ago

2.8.0-beta.0

8 months ago

2.4.1

10 months ago

2.4.0

10 months ago

2.4.3

10 months ago

2.4.2

10 months ago

2.4.5

10 months ago

2.4.4

10 months ago

2.5.6

9 months ago

2.5.5

9 months ago

3.0.0-beta.1

8 months ago

3.0.0-beta.0

8 months ago

3.0.0-beta.2

8 months ago

3.0.0-beta.5

8 months ago

3.0.0-beta.4

8 months ago

3.0.0-beta.7

8 months ago

3.0.0-beta.6

8 months ago

3.0.0-beta.9

7 months ago

2.3.0

10 months ago

3.0.0-beta.8

8 months ago

2.3.2

10 months ago

2.3.1

10 months ago

2.3.3

10 months ago

3.1.2

6 months ago

3.1.1

6 months ago

2.4.7

10 months ago

2.4.6

10 months ago

2.4.8

9 months ago

3.0.4

6 months ago

3.0.3

6 months ago

3.0.2

6 months ago

3.0.1

6 months ago

3.0.8

6 months ago

3.0.7

6 months ago

3.0.6

6 months ago

3.0.5

6 months ago

3.0.0

6 months ago

3.0.9

6 months ago

2.4.0-beta.0

10 months ago

2.8.1

7 months ago

2.8.0

7 months ago

2.3.0-beta.9

11 months ago

2.7.0

8 months ago

2.7.1

8 months ago

2.8.3

7 months ago

2.8.2

7 months ago

2.8.4

7 months ago

2.6.1

8 months ago

2.6.0

8 months ago

2.6.3

8 months ago

2.6.2

8 months ago

3.0.0-beta.10

7 months ago

2.3.0-beta.10

11 months ago

2.3.0-beta.12

11 months ago

2.3.0-beta.11

11 months ago

3.1.0-beta.1

6 months ago

3.1.0-beta.2

6 months ago

2.5.0

9 months ago

2.5.2

9 months ago

2.5.1

9 months ago

2.5.4

9 months ago

2.5.3

9 months ago

3.1.0-beta.0

7 months ago

2.3.0-beta.8

11 months ago

2.3.0-beta.6

11 months ago

2.3.0-beta.7

11 months ago

2.3.0-beta.5

11 months ago

2.3.0-beta.0

12 months ago

2.3.0-beta.1

12 months ago

2.3.0-beta.4

11 months ago

2.3.0-beta.2

12 months ago

2.3.0-beta.3

11 months ago

2.1.16

12 months ago

2.1.17

12 months ago

2.1.14

12 months ago

2.1.15

12 months ago

2.1.13

1 year ago

2.1.18

12 months ago

2.2.0-beta.0

12 months ago

2.2.0

12 months ago

2.0.139

1 year ago

2.0.138

1 year ago

2.0.136

1 year ago

2.0.135

1 year ago

2.0.134

1 year ago

2.0.133

1 year ago

2.0.132

1 year ago

2.1.9

1 year ago

2.1.12

1 year ago

2.1.10

1 year ago

2.1.11

1 year ago

2.0.140

1 year ago

2.1.2-beta.0

1 year ago

2.1.3-beta.0

1 year ago

2.1.2

1 year ago

2.1.1

1 year ago

2.1.4

1 year ago

2.0.135-beta.0

1 year ago

2.1.3

1 year ago

2.1.6

1 year ago

2.1.5

1 year ago

2.1.8

1 year ago

2.1.7

1 year ago

2.1.0

1 year ago

2.0.131

1 year ago

2.0.130

1 year ago

2.0.129

1 year ago

2.0.128

1 year ago

2.0.127

1 year ago

2.0.126

1 year ago

2.0.125

1 year ago

2.0.124

1 year ago

2.0.123

1 year ago

2.0.122

1 year ago

2.0.121

1 year ago

2.0.120

1 year ago

2.0.28

1 year ago

2.0.29

1 year ago

2.0.37

1 year ago

2.0.38

1 year ago

2.0.35

1 year ago

2.0.36

1 year ago

2.0.33

1 year ago

2.0.34

1 year ago

2.0.31

1 year ago

2.0.32

1 year ago

2.0.30

1 year ago

2.0.39

1 year ago

2.0.49

1 year ago

2.0.46

1 year ago

2.0.47

1 year ago

2.0.44

1 year ago

2.0.45

1 year ago

2.0.43

1 year ago

2.0.40

1 year ago

2.0.41

1 year ago

2.0.109

1 year ago

2.0.119

1 year ago

2.0.59

1 year ago

2.0.118

1 year ago

2.0.117

1 year ago

2.0.57

1 year ago

2.0.116

1 year ago

2.0.58

1 year ago

2.0.115

1 year ago

2.0.55

1 year ago

2.0.114

1 year ago

2.0.56

1 year ago

2.0.113

1 year ago

2.0.53

1 year ago

2.0.112

1 year ago

2.0.54

1 year ago

2.0.111

1 year ago

2.0.51

1 year ago

2.0.110

1 year ago

2.0.52

1 year ago

2.0.50

1 year ago

2.0.68

1 year ago

2.0.69

1 year ago

2.0.66

1 year ago

2.0.67

1 year ago

2.0.64

1 year ago

2.0.65

1 year ago

2.0.62

1 year ago

2.0.63

1 year ago

2.0.60

1 year ago

2.0.61

1 year ago

2.0.79

1 year ago

2.0.77

1 year ago

2.0.75

1 year ago

2.0.76

1 year ago

2.0.73

1 year ago

2.0.74

1 year ago

2.0.71

1 year ago

2.0.72

1 year ago

2.0.70

1 year ago

2.0.108

1 year ago

2.0.107

1 year ago

2.0.106

1 year ago

2.0.105

1 year ago

2.0.104

1 year ago

2.0.88

1 year ago

2.0.103

1 year ago

2.0.89

1 year ago

2.0.102

1 year ago

2.0.86

1 year ago

2.0.101

1 year ago

2.0.87

1 year ago

2.0.100

1 year ago

2.0.84

1 year ago

2.0.85

1 year ago

2.0.82

1 year ago

2.0.83

1 year ago

2.0.80

1 year ago

2.0.81

1 year ago

2.0.16

1 year ago

2.0.99

1 year ago

2.0.97

1 year ago

2.0.98

1 year ago

2.0.95

1 year ago

2.0.96

1 year ago

2.0.93

1 year ago

2.0.94

1 year ago

2.0.91

1 year ago

2.0.92

1 year ago

2.0.90

1 year ago

2.0.19

1 year ago

2.0.17

1 year ago

2.0.18

1 year ago

2.0.26

1 year ago

2.0.27

1 year ago

2.0.24

1 year ago

2.0.25

1 year ago

2.0.22

1 year ago

2.0.23

1 year ago

2.0.20

1 year ago

2.0.21

1 year ago

2.0.15

1 year ago

2.0.14

1 year ago

2.0.13

1 year ago

2.0.12

1 year ago

2.0.11

1 year ago

2.0.10

1 year ago

2.0.9

1 year ago

2.0.8

1 year ago

2.0.7

1 year ago

2.0.6

1 year ago

2.0.5

1 year ago

2.0.4

1 year ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago