Skip to content

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

License

Notifications You must be signed in to change notification settings

attestate/eth-fun

Repository files navigation

eth-fun

Node.js CI

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

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). Today, eth-fun can't sign payloads. It works best in on-chain data extractors like https://rugpullindex.com and https://neume.network. eth-fun is a work-in-progress.

Installation

$ npm i eth-fun

Example

Get the latest block number and fetch information about it

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

// URL of an Ethereum node
const options = {
  url: "https://cloudflare-eth.com",
};

(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.

API

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

Examples

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

Changelog

Visit CHANGELOG.md

Tests

You can run the library's tests with npm run test, however, do make sure that you're on node v14 as this is what the esmock setup sadly still depends on. Otherwise, for anything but testing, we're using this library in production with node v18.

Contributing

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.

References

License

See LICENSE file.