@pythnetwork/pyth-evm-js
TypeScript icon, indicating that this package has built-in type declarations

2.0.0-alpha • Public • Published

Pyth EVM JS

Pyth provides real-time pricing data in a variety of asset classes, including cryptocurrency, equities, FX and commodities. This library allows you to use these real-time prices on EVM-based networks.

Installation

npm

$ npm install --save @pythnetwork/pyth-evm-js

Yarn

$ yarn add @pythnetwork/pyth-evm-js

Quickstart

Filling Pyth Data for Transactions

The fillPythUpdate function helps you automatically determine what Pyth price updates are needed for a transaction and creates the necessary update call. This function uses the trace_callMany method by default but can be used with debug_traceCall and a bundler as well. See the example below for more information.

import { fillPythUpdate, multicall3Bundler } from "@pythnetwork/pyth-evm-js";
import { createPublicClient, http } from "viem";
import { optimismSepolia } from "viem/chains";

async function example() {
    const client = createPublicClient({
        chain: optimismSepolia,
        transport: http("YOUR_RPC_ENDPOINT"),
    });

    // Fill Pyth update data using "trace_callMany"
    const pythUpdate = await fillPythUpdate(
        client,
        {
            to: "0x3252c2F7962689fA17f892C52555613f36056f22",
            data: "0xd09de08a", // Your transaction calldata
            from: "0x78357316239040e19fC823372cC179ca75e64b81",
        },
        "0x0708325268df9f66270f1401206434524814508b", // Pyth contract address
        "https://hermes.pyth.network", // Hermes endpoint
        {
            method: "trace_callMany"
            maxIter: 5,
        },
    );

    // Fill Pyth update data using "debug_traceCall"
    const pythUpdateWithDebugTrace = await fillPythUpdate(
        client,
        {
            to: "0x3252c2F7962689fA17f892C52555613f36056f22",
            data: "0xd09de08a", // Your transaction calldata
            from: "0x78357316239040e19fC823372cC179ca75e64b81",
        },
        "0x0708325268df9f66270f1401206434524814508b", // Pyth contract address
        "https://hermes.pyth.network", // Hermes endpoint
        {
            method: "debug_traceCall",
            bundler: multicall3Bundler // or any function that takes a PythUpdate and a CallRequest and produces a CallRequest
            maxIter: 5,
        },
    );

    if (pythUpdate) {
        console.log("Pyth update needed:", pythUpdate);
        // Bundle the calls together, or pass the pythUpdate.updateData to your contract.
    } else {
        console.log("No Pyth data needed for this transaction");
    }
}

Readme

Keywords

Package Sidebar

Install

npm i @pythnetwork/pyth-evm-js

Homepage

pyth.network

Weekly Downloads

5,138

Version

2.0.0-alpha

License

Apache-2.0

Unpacked Size

82.9 kB

Total Files

21

Last publish

Collaborators

  • marc.pyth
  • jayantk2
  • pythrelease
  • cprussin