Skip to content

encodeAbiParameters

Generates ABI encoded data using the ABI specification, given a set of ABI parameters (inputs/outputs) and their corresponding values.

The encodeAbiParameters function is used by the other contract encoding utilities (ie. encodeFunctionData, encodeEventTopics, etc).

Import

import { encodeAbiParameters } from 'viem'

Usage

The encodeAbiParameters function takes in two parameters:

  • a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.
  • a set of values (values) that correspond to the given params.
import { encodeAbiParameters } from 'viem'
 
const encodedData = encodeAbiParameters(
  [
    { name: 'x', type: 'string' },
    { name: 'y', type: 'uint' },
    { name: 'z', type: 'bool' }
  ],
  ['wagmi', 420n, true]
)
// 0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000

Human Readable

You can also pass in Human Readable parameters with the parseAbiParameters utility.

import { encodeAbiParameters, parseAbiParameters } from 'viem'
 
const encodedData = encodeAbiParameters(
  parseAbiParameters('string x, uint y, bool z'),
  ['wagmi', 420n, true]
)
// 0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000

Returns

Hex

The ABI encoded data.

Parameters

params

The set of ABI parameters to encode, in the shape of the inputs or outputs attribute of an ABI event/function.

These parameters must include valid ABI types.

encodeAbiParameters(
  [{ name: 'x', type: 'uint32' }], 
  [69420]
)

values

The set of primitive values that correspond to the ABI types defined in params.

encodeAbiParameters(
  [{ name: 'x', type: 'uint32' }],
  [69420] 
)

More Examples

Simple struct

import { abi } from './abi'
 
const encodedData = encodeAbiParameters(
  abi[0].inputs,
  [{
    x: 420n,
    y: true,
    z: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
  }],
)
// 0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac