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

2.0.0-alpha2 • 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, CallRequest } from "@pythnetwork/pyth-evm-js";
import { createPublicClient, http } from "viem";
import { optimismSepolia } from "viem/chains";

const PYTH_CONTRACT_OP_SEPOLIA = "0x0708325268df9f66270f1401206434524814508b"
const HERMES_ENDPOINT = "https://hermes.pyth.network"

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

const call: CallRequest = {
    to: "0x3252c2F7962689fA17f892C52555613f36056f22",
    data: "0xd09de08a", // Your transaction calldata
    from: "0x78357316239040e19fC823372cC179ca75e64b81",
};

// Fill Pyth update data using "trace_callMany"
const pythUpdate = await fillPythUpdate(
    client,
    call,
    PYTH_CONTRACT_OP_SEPOLIA,
    HERMES_ENDPOINT,
    {
        method: "trace_callMany",
        maxIter: 5,
    },
);

// Fill Pyth update data using "debug_traceCall"
const _pythUpdateWithDebugTraceCall = await fillPythUpdate(
    client,
    call,
    PYTH_CONTRACT_OP_SEPOLIA,
    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");
}

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
2.0.0-alpha25latest

Version History

VersionDownloads (Last 7 Days)Published
2.0.0-alpha25
2.0.0-alpha0
1.83.0560
1.82.01,174
1.76.01
1.73.029
1.71.03
1.68.0101
1.67.02
1.66.02
1.65.00
1.63.035
1.61.020
1.56.137
1.56.00
1.55.00
1.53.00
1.52.00
1.51.00
1.48.00
1.47.00
1.46.0341
1.44.020
1.42.04
1.41.00
1.40.00
1.39.01
1.38.03
1.36.01
1.35.00
1.33.08
1.32.00
1.30.07
1.29.40
1.29.35
1.29.2379
1.29.10
1.29.06
1.28.00
1.25.02
1.20.10
1.19.00
1.17.067
1.16.130
1.10.03
1.1.027
1.0.10
1.0.00
0.6.00
0.5.00
0.4.00
0.3.00
0.2.00

Package Sidebar

Install

npm i @pythnetwork/pyth-evm-js

Homepage

pyth.network

Weekly Downloads

2,873

Version

2.0.0-alpha2

License

Apache-2.0

Unpacked Size

83.2 kB

Total Files

21

Last publish

Collaborators

  • marc.pyth
  • jayantk2
  • pythrelease
  • cprussin