beautyfree / pyth-client-js

javascript API for on-chain pyth account structure

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@pythnetwork/client

A library for parsing on-chain Pyth oracle data

Pyth is building a way to deliver a decentralized, cross-chain market of verifiable data from high-quality nodes to any smart contract, anywhere.

This library consumes on-chain Pyth accountInfo.data from @solana/web3.js and returns JavaScript-friendly objects.

See our examples repo for real-world usage examples.

Installation

npm

$ npm install --save @pythnetwork/client

Yarn

$ yarn add @pythnetwork/client

Example Usage

import { Connection, PublicKey } from '@solana/web3.js'
import { parseMappingData, parsePriceData, parseProductData } from '@pythnetwork/client'

const connection = new Connection(SOLANA_CLUSTER_URL)
const publicKey = new PublicKey(ORACLE_MAPPING_PUBLIC_KEY)

connection.getAccountInfo(publicKey).then((accountInfo) => {
  const { productAccountKeys } = parseMappingData(accountInfo.data)
  connection.getAccountInfo(productAccountKeys[productAccountKeys.length - 1]).then((accountInfo) => {
    const { product, priceAccountKey } = parseProductData(accountInfo.data)
    connection.getAccountInfo(priceAccountKey).then((accountInfo) => {
      const { price, confidence } = parsePriceData(accountInfo.data)
      console.log(`${product.symbol}: $${price} \xB1$${confidence}`)
      // SRM/USD: $8.68725 ±$0.0131
    })
  })
})

To get streaming price updates, you may want to use connection.onAccountChange

About

javascript API for on-chain pyth account structure

License:Apache License 2.0


Languages

Language:TypeScript 100.0%