eth-fun
v0.9.3
Published
A treeshake-ready, functional library of Ethereum utility functions
Downloads
61
Maintainers
Readme
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-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.
options object
await 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 object
nodes object
async 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
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.