Socket
Socket
Sign inDemoInstall

abi-coder

Package Overview
Dependencies
11
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

abi-coder

ABI function, event, and contrustor encoder/decoder


Version published
Maintainers
1
Weekly downloads
2,857
decreased by-17.5%
Bundle size
1.3 kB
Minified + gzipped

Weekly downloads

Readme

Source

ABI Coder

A set of high-level ABI encoding and decoding utils.

Motivation

There are several packages that provide ABI coding utils. However, there is no a high-level solution in the Ethers ecosystem. web3-eth-abi and abi-decoder depend on web3.js. @ethersproject/abi is pretty low-level. ethereumjs-abi works only with functions. Many other packages provide encoding or decoding only.

Features

  • Function coding
  • Event coding
  • Constructor coding
  • TS support

Installation

npm install abi-coder

This package requires ethers V6. If you use ethers V5, you need to install abi-coder V4.

This package is a pure ESM package. Follow this guide for more info.

Example

import { Coder } from 'abi-coder';

import * as erc20Abi from './abi/erc20.json';

const erc20Coder = new Coder(erc20Abi);

erc20Coder.getFunctionSelector('totalSupply');
// 0x18160ddd

erc20Coder.decodeEvent(
  [
    '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
    '0x000000000000000000000000b5cfcb4d4745cbbd252945856e1b6eaadcf2fc4e',
    '0x000000000000000000000000694c6aea9444876d4fa9375fc9089c370f8e9eda',
  ],
  '0x0000000000000000000000000000000000000000000000370c9b5ef669c35300',
);
/*
{
	name: 'Transfer',
	inputs: [...],
	values: [
		'0xb5CFcb4D4745cBBD252945856E1B6eaadCf2fC4E',
		'0x694c6aea9444876d4fA9375fC9089C370F8E9edA',
		BigNumber('1015479348216300000000'),
	],
}
*/

erc20Coder.encodeFunction({
  name: 'transfer',
  inputs: [
    {
      name: 'from',
      type: 'address',
    },
    {
      name: 'amount',
      type: 'uint256',
    },
  ],
  values: [
    '0x694c6aea9444876d4fA9375fC9089C370F8E9edA',
    '1015479348216300000000',
  ],
});
// '0xa9059cbb000000000000000000000000694c6aea9444876d4fa9375fc9089c370f8e9eda0000000000000000000000000000000000000000000000370c9b5ef669c35300'

API

  • Coder(abi)
    • utils
      • getFunctionSelector(name: string): string
      • getEventTopic(name: string): string
    • decoding
      • decodeConstructor(data: string): Constructor
      • decodeEvent(topics: string[], data: string): Event
      • decodeFunction(data: string): FunctionData
      • decodeFunctionOutput(name: string, data: string): FunctionOutputData
    • encoding
      • encodeConstructor(constructorData: Constructor): string
      • encodeEvent(eventData: Event): EventEncoding
      • encodeFunction(functionData: FunctionData): string
      • encodeFunctionOutput(functionData: FunctionOutputData): string

Keywords

FAQs

Last updated on 21 Feb 2023

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc