What is @eth-optimism/core-utils?
@eth-optimism/core-utils is a utility library for working with the Optimism Layer 2 scaling solution for Ethereum. It provides various tools and utilities to facilitate the development and interaction with the Optimism network.
What are @eth-optimism/core-utils's main functionalities?
Merkle Tree Utilities
This feature allows you to create and manipulate Merkle Trees, which are essential for various cryptographic proofs in blockchain technology.
const { MerkleTree } = require('@eth-optimism/core-utils');
const elements = ['a', 'b', 'c'];
const tree = new MerkleTree(elements);
const root = tree.getRoot();
console.log('Merkle Root:', root);
Hexadecimal Utilities
Provides utilities for converting between hexadecimal strings and buffers, which is useful for encoding and decoding data in Ethereum transactions.
const { toHexString, fromHexString } = require('@eth-optimism/core-utils');
const hexString = toHexString(Buffer.from('hello'));
console.log('Hex String:', hexString);
const buffer = fromHexString(hexString);
console.log('Buffer:', buffer.toString());
Address Utilities
Includes functions for validating and formatting Ethereum addresses, ensuring they are correctly checksummed.
const { isAddress, getAddress } = require('@eth-optimism/core-utils');
const address = '0x1234567890abcdef1234567890abcdef12345678';
console.log('Is Address:', isAddress(address));
console.log('Checksummed Address:', getAddress(address));
Other packages similar to @eth-optimism/core-utils
ethereumjs-util
ethereumjs-util is a collection of utility functions for Ethereum, including functions for working with addresses, buffers, and cryptographic operations. It is similar to @eth-optimism/core-utils but is more general-purpose and not specifically tailored for the Optimism network.
web3-utils
web3-utils is part of the Web3.js library and provides a wide range of utility functions for Ethereum development, such as encoding/decoding data, working with addresses, and handling big numbers. It offers broader functionality compared to @eth-optimism/core-utils, which is more focused on Optimism-specific utilities.
ethers
ethers is a complete Ethereum library and includes a variety of utility functions for interacting with the Ethereum blockchain, including address manipulation, data encoding/decoding, and cryptographic operations. It is more comprehensive than @eth-optimism/core-utils and is widely used in the Ethereum development community.
@eth-optimism/core-utils
What is this?
@eth-optimism/core-utils
contains the Optimistic Virtual Machine core utilities.
Getting started
Building and usage
After cloning and switching to the repository, install dependencies:
$ yarn
Use the following commands to build, use, test, and lint:
$ yarn build
$ yarn start
$ yarn test
$ yarn lint
L2 Fees
TxGasLimit
can be used to encode
and decode
the L2 Gas Limit
locally.
import { TxGasLimit } from '@eth-optimism/core-utils'
import { JsonRpcProvider } from 'ethers'
const L2Provider = new JsonRpcProvider('https://mainnet.optimism.io')
const L1Provider = new JsonRpcProvider('http://127.0.0.1:8545')
const l2GasLimit = await L2Provider.send('eth_estimateExecutionGas', [tx])
const l1GasPrice = await L1Provider.getGasPrice()
const encoded = TxGasLimit.encode({
data: '0x',
l1GasPrice,
l2GasLimit,
l2GasPrice: 10000000,
})
const decoded = TxGasLimit.decode(encoded)
assert(decoded.eq(gasLimit))
const estimate = await L2Provider.estimateGas()
assert(estimate.eq(encoded))