0.0.1 • Published 11 months ago

stateless-viem-transport v0.0.1

Weekly downloads
-
License
-
Repository
-
Last release
11 months ago

Stateless Viem Transport

This is a custom transport for viem that allows you to use Stateless' verifiable RPC endpoints.

Installation

npm install stateless-viem-transport

Usage

import { createPublicClient, custom } from "viem";
import { mainnet } from "viem/chains";
import { createStatelessTransport } from "stateless-viem-transport";

const statelessTransport = createStatelessTransport({
  rpcUrl: "https://api.stateless.solutions/ethereum/v1/<YOUR_BUCKET_ID>",
  identities: ["https://<PROVIDER_IDENTITY>"],
});

const statelessClient = createPublicClient({
  chain: mainnet,
  transport: custom(statelessTransport),
});

console.log("Block Number:", await statelessClient.getBlockNumber());

Light Clients

To use Stateless' light client mode, you can add an additional proverUrl parameter. This will enable the light client mode, which will verify the stateless proofs on the prover node.

Read more about the light client mode in the Stateless docs.

import { createStatelessTransport } from "stateless-viem-transport";

const statelessTransport = createStatelessTransport({
  rpcUrl: "https://<PROVIDER_RPC_URL>",
  identities: ["https://<PROVIDER_IDENTITY>"],
  proverUrl: "https://<PROVER_RPC_URL>", // enables light client mode
});

const statelessClient = createPublicClient({
  chain: mainnet,
  transport: custom(statelessTransport),
});

const contractAbi = [
  {
    inputs: [],
    name: "totalSupply",
    outputs: [{ type: "uint256" }],
    stateMutability: "view",
    type: "function",
  },
] as const;

const contract = getContract({
  address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  abi: contractAbi,
  client: statelessClient,
});

console.log("USDC Total supply:", await contract.read.totalSupply());
0.0.1

11 months ago