Node.js CI

A collection of independent utility functions for Ethereum. Build with functional approach in mind.

API Documentation | Changelog | Contributing

Why Use eth-fun?

You should use eth-fun when you want to have fun. We try to build our code according to the properties below.

  • Functional in nature
  • Modular and as loosely coupled as possible.
  • Stateless; such that we come as close as possible towards atomic, safely-failable (and catchable) actions.
  • Built with a modern front end's needs in mind. Ideally, the whole lib is tree-shakeable and produces the smallest footprint possible when being sent to a client's browser.

eth-fun is an attempt at developing Ethereum in a one-way-dataflow fashion (similar to react.js). eth-fun is a work-in-progress.


$ npm i eth-fun


Get the latest block number and fetch information about it

import { blockNumber, getBlockByNumber } from "eth-fun";

// URL of an Ethereum node
const options = {
  url: "", 

(async () => {
  const currentNumber = await blockNumber(options); // latest block
  const includeTxBodies = false;
  const block = await getBlockByNumber(options, currentNumber, includeTxBodies);
  console.log(block); // information about the block

Similar to the above used functions i.e. blockNumber and getBlockByNumber eth-fun implements more utility functions to talk with an Ethereum node using JSON RPC.


Visit API documentation for a complete list of functions and their examples.

  • options object
  • await getBlockByNumber(options, blockNumber, includeTxBodies)
  • toHex(number)
  • encodeCallSignature(selector, types, values)
  • decodeCallOutput(types, output)
  • async call(options, from, to, data, blockNumber)
  • errors object
  • nodes object
  • async blockNumber(options)
  • async getStorageAt(options, addr, index, blockNumber)
  • compile(code, [options])
  • getStorageLocation(contract, label)
  • allFunctions(compiledCode)
  • async getLogs(options, {fromBlock, toBlock, address, topics, limit })


  • limit-requests - An example to demonstrate concurrency so that the RPC endpoint doesn't get choked




  • Currently we're pinning [email protected]. For future versions, it'd be awesome if the version could be specified by the user.


We love contributions from the community. Find a good first issue.

Want to suggest a feature or even better raise a PR for it? Head over to the issues section or join our discord.

You can also get paid for a PR. For more information read our handbook.



See LICENSE file.

Eth Fun

A functional and state-less library for the Ethereum JSON-RPC.

Eth Fun Info

⭐ Stars 12
🔗 Source Code
🕒 Last Update 7 months ago
🕒 Created a year ago
🐞 Open Issues 7
➗ Star-Issue Ratio 2
😎 Author rugpullindex