eth-fun
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). 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-funExample
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.
options objectawait getBlockByNumber(options, blockNumber, includeTxBodiesw)await getTransactionReceipt(options, txId)toHex(number)fromHex(number)encodeFunctionSignature(selector)encodeEventSignature(selector)encodeParameters(typesArray, parameters)encodeFunctionCall(jsonInterface, parameters)decodeLog(inputs, data, topics)decodeParameters(typesArray, parameters)async call(options, from, to, data, blockNumber)errors objectnodes objectasync blockNumber(options)async getStorageAt(options, addr, index, blockNumber)getStorageLocation(contract, label)allFunctions(compiledCode)async getLogs(options, {fromBlock, toBlock, address, topics, limit })
Examples
- limit-requests - An example to demonstrate concurrency so that the RPC endpoint doesn't get choked
Changelog
Visit CHANGELOG.md
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.