What is ethereumjs-tx?
The ethereumjs-tx package is a JavaScript library for creating, signing, and serializing Ethereum transactions. It is part of the ethereumjs suite of tools and is widely used for interacting with the Ethereum blockchain at a low level.
What are ethereumjs-tx's main functionalities?
Creating a Transaction
This feature allows you to create a new Ethereum transaction by specifying parameters such as nonce, gas price, gas limit, recipient address, value, and data.
const Tx = require('ethereumjs-tx').Transaction;
const txParams = {
nonce: '0x00',
gasPrice: '0x09184e72a000',
gasLimit: '0x2710',
to: '0x0000000000000000000000000000000000000000',
value: '0x00',
data: '0x00',
};
const tx = new Tx(txParams);
Signing a Transaction
This feature allows you to sign a transaction using a private key. The transaction must be signed before it can be sent to the Ethereum network.
const privateKey = Buffer.from('your_private_key', 'hex');
tx.sign(privateKey);
Serializing a Transaction
This feature allows you to serialize a signed transaction into a format that can be sent over the network. The serialized transaction is typically represented as a hexadecimal string.
const serializedTx = tx.serialize();
console.log(serializedTx.toString('hex'));
Other packages similar to ethereumjs-tx
web3
Web3.js is a comprehensive library for interacting with the Ethereum blockchain. It provides higher-level abstractions for sending transactions, interacting with smart contracts, and querying blockchain data. Unlike ethereumjs-tx, which focuses on low-level transaction creation and signing, Web3.js offers a broader range of functionalities.
ethers
Ethers.js is a lightweight library for interacting with the Ethereum blockchain. It provides utilities for creating and signing transactions, interacting with smart contracts, and querying blockchain data. Ethers.js is known for its simplicity and ease of use, making it a popular alternative to ethereumjs-tx for developers who prefer a more streamlined API.
eth-lib
Eth-lib is a low-level library for Ethereum that provides utilities for creating and signing transactions, encoding and decoding data, and working with cryptographic primitives. It is similar to ethereumjs-tx in that it focuses on low-level operations, but it also includes additional utilities for working with Ethereum data structures.
SYNOPSIS
or #ethereumjs on freenode
INSTALL
npm install ethereumjs-tx
USAGE
const EthereumTx = require('ethereumjs-tx').Transaction
const privateKey = Buffer.from(
'e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109',
'hex',
)
const txParams = {
nonce: '0x00',
gasPrice: '0x09184e72a000',
gasLimit: '0x2710',
to: '0x0000000000000000000000000000000000000000',
value: '0x00',
data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057',
}
const tx = new EthereumTx(txParams, { chain: 'mainnet', hardfork: 'petersburg' })
tx.sign(privateKey)
const serializedTx = tx.serialize()
Chain and Hardfork Support
The Transaction
and FakeTransaction
constructors receives a second parameter that lets you specify the chain and hardfork
to be used. By default, mainnet
and petersburg
will be used.
There are two ways of customizing these. The first one, as shown in the previous section, is by
using an object with chain
and hardfork
names. You can see en example of this in ./examples/ropsten-tx.ts.
The second option is by passing the option common
set to an instance of ethereumjs-common' Common. This is specially useful for custom networks or chains/hardforks not yet supported by ethereumjs-common
. You can see en example of this in ./examples/custom-chain-tx.ts.
MuirGlacier Support
The MuirGlacier
hardfork is supported by the library since the v2.1.2
release.
Istanbul Support
Support for reduced non-zero call data gas prices from the Istanbul
hardfork
(EIP-2028) has been added to the library
along with the v2.1.1
release.
EIP-155 support
EIP-155
replay protection is activated since the spuriousDragon
hardfork. To disable it, set the
hardfork in the Transaction
's constructor.
API
./docs/
EthereumJS
See our organizational documentation for an introduction to EthereumJS
as well as information on current standards and best practices.
If you want to join for work or do improvements on the libraries have a look at our contribution guidelines.
LICENSE
MPL-2.0