npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@quicknode/x402-solana

v0.2.0

Published

Connect to the Solana blockchain using a Solana wallet (no API keys or accounts needed)

Readme

@quicknode/x402-solana

Test

Use Solana Kit with QuickNode's RPC — no account, no API key, no subscription needed. Just a Solana wallet file with some USDC. Payments are made automatically per-request using the x402 protocol.

Installation

npm install @quicknode/x402-solana

Usage

With Solana Kit

import { createSolanaX402Clients } from "@quicknode/x402-solana";
import { address } from "@solana/kit";
import { homedir } from "node:os";

const keyPairFile = `${homedir()}/.config/solana/id.json`;

const { rpc, rpcSubscriptions } = await createSolanaX402Clients(
  "mainnet",
  keyPairFile,
);

const balance = await rpc
  .getBalance(address("dDCQNnDmNbFVi8cQhKAgXhyhXeJ625tvwsunRyRc7c8"))
  .send();
console.log("Balance:", balance.value);

With Solana Kite

Solana Kite wraps Solana Kit with a simpler API:

import { createSolanaX402Clients } from "@quicknode/x402-solana";
import { connect, loadWalletFromFile } from "solana-kite";
import { homedir } from "node:os";

const keyPairFile = `${homedir()}/.config/solana/id.json`;

const { rpc, rpcSubscriptions } = await createSolanaX402Clients(
  "mainnet",
  keyPairFile,
);

const connection = connect(rpc, rpcSubscriptions);
const wallet = await loadWalletFromFile(keyPairFile);

const balance = await connection.getBalance(wallet.address);
console.log("Balance:", balance);

API

createSolanaX402Clients(network, keyPairFile, options?)

Creates Solana RPC and WebSocket subscription clients that pay per-request via x402.

  • network"mainnet" | "testnet" | "devnet" — Solana network to connect to
  • keyPairFilestring — Path to a Solana keypair JSON file
  • options.paymentNetwork"mainnet" | "testnet" | "devnet" — Network used for USDC payments. Defaults to the same network as network.
  • options.paymentModel"credit-drawdown" | "pay-per-request" — Payment model to use. Defaults to "credit-drawdown".

Returns { rpc, rpcSubscriptions }.

Payment models

credit-drawdown (default) — authenticate once via SIWX, buy a bundle of credits with USDC, then consume credits across requests. Mainnet bundles require a minimum of $10 USDC in your wallet. Devnet bundles are available from $0.01. See the Quicknode x402 guide for more details.

pay-per-request — pay individually for each request with no minimum bundle size. Bypasses SIWX/JWT session management entirely.

Example: connect to mainnet, pay with devnet USDC

const { rpc, rpcSubscriptions } = await createSolanaX402Clients(
  "mainnet",
  keyPairFile,
  { paymentNetwork: "devnet" },
);

Example: pay per request instead of using a credit bundle

const { rpc, rpcSubscriptions } = await createSolanaX402Clients(
  "mainnet",
  keyPairFile,
  { paymentModel: "pay-per-request" },
);

See the Quicknode x402 guide for more information on using X402 with Quicknode.

Prerequisites

  • A Solana keypair file (e.g. ~/.config/solana/id.json — the default location used by the Solana CLI)
  • Some USDC in that wallet (at least $10 USDC on mainnet for the default credit-drawdown model; from $0.01 on devnet)

No QuickNode account or API key required. For testing, devnet USDC can pay for mainnet requests by passing { paymentNetwork: "devnet" }.

Tests

npm test

Integration tests (live RPC calls) run automatically when ~/.config/solana/id.json exists with devnet USDC. They are skipped otherwise.

For CI, store your keypair JSON as a SOLANA_KEYPAIR repository secret.

Building

npm run build

Compiles TypeScript to dist/ with declaration files.