Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@nomicfoundation/ethereumjs-rlp

Package Overview
Dependencies
Maintainers
2
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nomicfoundation/ethereumjs-rlp

Recursive Length Prefix Encoding Module

  • 4.0.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
177K
increased by11.74%
Maintainers
2
Weekly downloads
 
Created
Source

@ethereumjs/rlp

NPM Package GitHub Issues Actions Status Code Coverage Discord

Recursive Length Prefix encoding for Node.js and the browser.

Installation

To obtain the latest version, simply require the project using npm:

npm install @ethereumjs/rlp

Install with -g if you want to use the CLI.

Usage

import assert from 'assert'
import { RLP } from '@ethereumjs/rlp'

const nestedList = [[], [[]], [[], [[]]]]
const encoded = RLP.encode(nestedList)
const decoded = RLP.decode(encoded)
assert.deepEqual(nestedList, decoded)

API

RLP.encode(plain) - RLP encodes an Array, Uint8Array or String and returns a Uint8Array.

RLP.decode(encoded, [stream=false]) - Decodes an RLP encoded Uint8Array, Array or String and returns a Uint8Array or NestedUint8Array. If stream is enabled, it will just decode the first rlp sequence in the Uint8Array. By default, it would throw an error if there are more bytes in Uint8Array than used by the rlp sequence.

Buffer compatibility

If you would like to continue using Buffers like in rlp v2, you can use:

import assert from 'assert'
import { arrToBufArr, bufArrToArr } from '@ethereumjs/util'
import { RLP } from '@ethereumjs/rlp'

const bufferList = [Buffer.from('123', 'hex'), Buffer.from('456', 'hex')]
const encoded = RLP.encode(bufArrToArr(bufferList))
const encodedAsBuffer = Buffer.from(encoded)
const decoded = RLP.decode(Uint8Array.from(encodedAsBuffer)) // or RLP.decode(encoded)
const decodedAsBuffers = arrToBufArr(decoded)
assert.deepEqual(bufferList, decodedAsBuffers)

BigInt Support

Starting with v4 the usage of BN.js for big numbers has been removed from the library and replaced with the usage of the native JS BigInt data type (introduced in ES2020).

Please note that number-related API signatures have changed along with this version update and the minimal build target has been updated to ES2020.

CLI

rlp encode <JSON string>
rlp decode <0x-prefixed hex string>

Examples

  • rlp encode '5' -> 0x05
  • rlp encode '[5]' -> 0xc105
  • rlp encode '["cat", "dog"]' -> 0xc88363617483646f67
  • rlp decode 0xc88363617483646f67 -> ["cat","dog"]

Tests

Tests use mocha.

To run tests and linting: npm test

To auto-fix linting problems run: npm run lint:fix

Code Coverage

Install dev dependencies: npm install

Run coverage: npm run coverage

The results will be at: coverage/lcov-report/index.html

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 carry out improvements on the libraries, please review our contribution guidelines first.

License

MPL-2.0

Keywords

FAQs

Package last updated on 16 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc