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.
$ npm i eth-fun
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.
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 })
- limit-requests - An example to demonstrate concurrency so that the RPC endpoint doesn't get choked
Visit CHANGELOG.md
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.
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.
See LICENSE file.