Package Exports
- @ethereumjs/tx
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ethereumjs/tx) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@ethereumjs/tx
Implements schema and functions related to Ethereum's transaction. |
---|
Note: this README
reflects the state of the library from v3.0.0
onwards. See README
from the standalone repository for an introduction on the last preceeding release.
INSTALL
npm install @ethereumjs/tx
USAGE
import { Transaction } from '@ethereumjs/tx'
const txParams = {
nonce: '0x00',
gasPrice: '0x09184e72a000',
gasLimit: '0x2710',
to: '0x0000000000000000000000000000000000000000',
value: '0x00',
data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057',
}
const common = new Common({ chain: 'mainnet' })
const tx = Transaction.fromTxData(txParams, { common })
const privateKey = Buffer.from(
'e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109',
'hex',
)
const signedTx = tx.sign(privateKey)
const serializedTx = signedTx.serialize()
Properties of a Transaction
object are frozen with Object.freeze()
which gives you enhanced security and consistency properties when working with the instantiated object. This behavior can be modified using the freeze
option in the constructor if needed.
Fake Transaction
Creating a fake transaction for use in e.g. VM.runTx()
is simple, just overwrite getSenderAddress()
with a custom Address
like so:
import { Address } from 'ethereumjs-util'
import { Transaction } from '@ethereumjs/tx'
_getFakeTransaction(txParams: TxParams): Transaction {
const from = Address.fromString(txParams.from)
delete txParams.from
const opts = { common: this._common }
const tx = Transaction.fromTxData(txParams, opts)
const fakeTx = Object.create(tx)
// override getSenderAddress
fakeTx.getSenderAddress = () => { return from }
return fakeTx
}
SETUP
Chain and Hardfork Support
The Transaction
constructor receives a parameter of an @ethereumjs/common
object that lets you specify the chain and hardfork to be used. By default, mainnet
and istanbul
will be used.
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 to one earlier than spuriousDragon
.
API
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.