Skip to content

damartripamungkas/simple-client-eth-rpc

Repository files navigation

SIMPLE-CLIENT-ETH-RPC

GitHub top language Made by Repository size GitHub last commit


πŸ“– Description :

This very light package was created for those of you who want to interact directly with the EVM Ethereum blockchain according to the documentation.

  • support network http
  • support network websocket
  • support network ipc

πŸ’» Step to install :

npm install --production simple-client-eth-rpc

✏️ Example :

Typescript

import { Provider } from "simple-client-eth-rpc";
const provider = new Provider("https://bscrpc.com");

ESM (import)

import { Provider } from "simple-client-eth-rpc";
const provider = new Provider("https://bscrpc.com");

CommonJs (require)

const { Provider } = require("simple-client-eth-rpc");
const provider = new Provider("https://bscrpc.com");

Usage

const { Provider } = require("..");

/**
 * @args_1 url rpc http/ws/ipc
 * @args_2 socket optional for ws/ipc
 * @args_3 reconnect optional for ws/ipc
 * @args_4 override formatReturn eth method
 * @returns object
 */
const provider = new Provider("https://bscrpc.com", null, null, [
  { method: "eth_chainId", formatReturn: BigInt },
  { method: "eth_blockNumber", formatReturn: BigInt },
]);

(async () => {
  /**
   * @info [require] first run function isReady before send request
   * @returns bool
   */
  await provider.isReady();

  /**
   * @test test 1 request
   * @info run eth_chainId
   * @returns BigInt
   */
  const getChainId = await provider.ethSend.eth_chainId();
  console.log(`INFO: result eth_chainId:`, getChainId);

  /**
   * @test test multi request
   * @info run eth_chainId, eth_blockNumber
   * @returns Array[BigInt, BigInt]
   */
  const getBlockNumberAndChainId = await provider.sendBatch(
    provider.ethBuild.eth_chainId(),
    provider.ethBuild.eth_blockNumber()
  );
  console.log(
    `INFO: result eth_chainId, eth_blockNumber:`,
    getBlockNumberAndChainId
  );

  /**
   * @test custom send eth
   * @info get gasPriceLevel in spesific block
   * @returns Object{ all, top, mid, bottom }
   */
  const getGasPriceLevel = await provider.customSend.getGasPriceLevel();
  console.log(`INFO: result gasprice level top: ${getGasPriceLevel.top}`);
})();

full example see here

🧾 Pre-Requisistes :

node.js >= 18

πŸ“ License :

Licensed under the MIT License.