@rainblock/ethereum-block
v2.1.3
Published
An implementation of the Ethereum schema for typescript
Downloads
37
Readme
☔️📦 RainBlock's Ethereum Block Decoder
@rainblock/ethereum-block is a decoder for the Ethereum block format. It uses native bindings to improve the performance of transaction verification. A fallback is provided when bindings cannot be used. Native bindings provide about a 30-50% speedup over pure javascript. Unlike the EthereumJS library the API exports BigInts. Typescript definitions are provided.
Install
Add @rainblock/ethereum-block to your project with:
npm install @rainblock/ethereum-block
Usage
Basic API documentation can be found here, but the following example shows basic use:
import {decodeBlock} from '@rainblock/ethereum-block';
// Block decoded to RLP format by RLP-Stream
const rlpBlock : RlpList = RlpDecode(raw);
const block : EthereumBlock = decodeBlock(rlpBlock);
Benchmarks
Benchmarks can be run by executing npm run benchmark
from the package directory.
An example run on a 2016 15-inch Macbook:
no-op: 795262551±0.22% ops/s 1.26±0.013 ns/op (91 runs)
decodeBlock: 159±0.95% ops/s 6304084.39±271699.554 ns/op (79 runs)
decodeHeader: 305267±5.32% ops/s 3275.82±799.828 ns/op (81 runs)
decodeTx (js): 8450±1.97% ops/s 118344.55±11168.747 ns/op (88 runs)
decodeTx (native): 12455±1.08% ops/s 80287.49±4157.742 ns/op (89 runs)
Native is about 30-50% faster than the pure js version.