Skip to main content

Utils

This package provides utility functions for Ethereum dapps and other web3.js packages.

For using Utils functions, first install Web3 package using npm i web3 or yarn add web3. After that, Web3 Utils functions will be available as mentioned below.

import { Web3 } from 'web3';
const web3 = new Web3();

const value = web3.utils.fromWei("1", "ether")

For using individual package install web3-utils package using npm i web3-utils or yarn add web3-utils and only import required functions. This is more efficient approach for building lightweight applications.

import { fromWei, soliditySha3Raw } from 'web3-utils';

console.log(fromWei("1", "ether"));
console.log(soliditySha3Raw({ type: "string", value: "helloworld" }))

Functions

asciiToHex

asciiToHex(str): string

Should be called to get hex representation (prefixed by 0x) of ascii string

Parameters

NameTypeDescription
strstringString to be converted to hex

Returns

string

  • Hex string

Example

console.log(web3.utils.asciiToHex('Hello World'));
> 0x48656c6c6f20576f726c64

bytesToHex

bytesToHex(bytes): string

Convert a byte array to a hex string

Parameters

NameTypeDescription
bytesBytesByte array to be converted

Returns

string

  • The hex string representation of the input byte array

Example

console.log(web3.utils.bytesToHex(new Uint8Array([72, 12])));
> "0x480c"

___

### bytesToUint8Array

**bytesToUint8Array**(`data`): `Uint8Array`

Convert a value from bytes to Uint8Array

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `data` | `Bytes` | Data to be converted |

#### Returns

`Uint8Array`

- The Uint8Array representation of the input data

**`Example`**

```ts
console.log(web3.utils.bytesToUint8Array("0xab")));
> Uint8Array(1) [ 171 ]

checkAddressCheckSum

checkAddressCheckSum(data): boolean

Checks the checksum of a given address. Will also return false on non-checksum addresses.

Parameters

NameType
datastring

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


compareBlockNumbers

compareBlockNumbers(blockA, blockB): 0 | 1 | -1

Compares between block A and block B

Parameters

NameTypeDescription
blockABlockNumberOrTagBlock number or string
blockBBlockNumberOrTagBlock number or string

Returns

0 | 1 | -1

  • Returns -1 if a < b, returns 1 if a > b and returns 0 if a == b

Example

console.log(web3.utils.compareBlockNumbers('latest', 'pending'));
> -1

console.log(web3.utils.compareBlockNumbers(12, 11));
> 1

encodePacked

encodePacked(...values): string

Encode packed arguments to a hexstring

Parameters

NameType
...valuesSha3Input[]

Returns

string


fromAscii

fromAscii(str): string

Parameters

NameType
strstring

Returns

string

Alias

asciiToHex


fromDecimal

fromDecimal(value, hexstrict?): string

Converts value to it's hex representation

Parameters

NameType
valueNumbers
hexstrict?boolean

Returns

string

Alias

numberToHex


fromTwosComplement

fromTwosComplement(value, nibbleWidth?): number | bigint

Converts the twos complement into a decimal number or big int.

Parameters

NameTypeDefault valueDescription
valueNumbersundefinedThe value to be converted.
nibbleWidthnumber64The nibble width of the hex string (default is 64).

Returns

number | bigint

The decimal number or big int.

Example

console.log(web3.utils.fromTwosComplement('0x0000000000000000000000000000000d', 32'));
> 13

console.log(web3.utils.fromTwosComplement('0x00000000000000000020000000000000', 32));
> 9007199254740992n

fromUtf8

fromUtf8(str): string

Parameters

NameType
strstring

Returns

string

Alias

utf8ToHex


fromWei

fromWei(number, unit): string

Takes a number of wei and converts it to any other ether unit.

Parameters

NameTypeDescription
numberNumbersThe value in wei
unit"noether" | "wei" | "kwei" | "Kwei" | "babbage" | "femtoether" | "mwei" | "Mwei" | "lovelace" | "picoether" | "gwei" | "Gwei" | "shannon" | "nanoether" | "nano" | "szabo" | "microether" | "micro" | "finney" | "milliether" | "milli" | "ether" | "kether" | "grand" | "mether" | "gether" | "tether"The unit to convert to

Returns

string

  • Returns the converted value in the given unit

Example

console.log(web3.utils.fromWei("1", "ether"));
> 0.000000000000000001

console.log(web3.utils.fromWei("1", "shannon"));
> 0.000000001

getStorageSlotNumForLongString

getStorageSlotNumForLongString(mainSlotNumber): undefined | string

Get slot number for storage long string in contract. Basically for getStorage method returns slotNumber where will data placed

Parameters

NameTypeDescription
mainSlotNumberstring | numberthe slot number where will be stored hash of long string

Returns

undefined | string

  • the slot number where will be stored long string

hexToAscii

hexToAscii(str): string

Should be called to get ascii from it's hex representation

Parameters

NameTypeDescription
strstringHex string to be converted to ascii

Returns

string

  • Ascii string

Example

console.log(web3.utils.hexToAscii('0x48656c6c6f20576f726c64'));
> Hello World

hexToBytes

hexToBytes(bytes): Uint8Array

Convert a hex string to a byte array

Parameters

NameType
bytesstring

Returns

Uint8Array

  • The byte array representation of the input hex string

Example

console.log(web3.utils.hexToBytes('0x74657374'));
> Uint8Array(4) [ 116, 101, 115, 116 ]

hexToNumber

hexToNumber(value): number | bigint

Converts value to it's number representation

Parameters

NameTypeDescription
valuestringHex string to be converted

Returns

number | bigint

  • The number representation of the input value

Example

conoslle.log(web3.utils.hexToNumber('0xa'));
> 10

hexToNumberString

hexToNumberString(data): string

Converts value to it's decimal representation in string

Parameters

NameType
datastring

Returns

string

  • The decimal representation of the input value

Example

console.log(web3.utils.hexToNumberString('0xa'));
> "10"

hexToString

hexToString(str): string

Parameters

NameType
strstring

Returns

string

Alias

hexToUtf8


hexToUtf8

hexToUtf8(str): string

Should be called to get utf8 from it's hex representation

Parameters

NameTypeDescription
strstringHex string to be converted

Returns

string

  • Utf8 string

Example

console.log(web3.utils.hexToUtf8('0x48656c6c6f20576f726c64'));
> Hello World

isAddress

isAddress(value, checkChecksum?): boolean

Checks if a given string is a valid Ethereum address. It will also check the checksum, if the address has upper and lowercase letters.

Parameters

NameType
valueValidInputTypes
checkChecksum?boolean

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isBloom

isBloom(bloom): boolean

Returns true if the bloom is a valid bloom https://github.com/joshstevens19/ethereum-bloom-filters/blob/fbeb47b70b46243c3963fe1c2988d7461ef17236/src/index.ts#L7

Parameters

NameType
bloomValidInputTypes

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isContractAddressInBloom

isContractAddressInBloom(bloom, contractAddress): boolean

Returns true if the contract address is part of the given bloom. note: false positives are possible.

Parameters

NameType
bloomstring
contractAddressstring

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isHex

isHex(hex): boolean

returns true if input is a hexstring, number or bigint

Parameters

NameType
hexValidInputTypes

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isHexStrict

isHexStrict(hex): boolean

Parameters

NameType
hexValidInputTypes

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isInBloom

isInBloom(bloom, value): boolean

Returns true if the value is part of the given bloom note: false positives are possible.

Parameters

NameType
bloomstring
valuestring | Uint8Array

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isTopic

isTopic(topic): boolean

Checks if its a valid topic

Parameters

NameType
topicstring

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isTopicInBloom

isTopicInBloom(bloom, topic): boolean

Returns true if the topic is part of the given bloom. note: false positives are possible.

Parameters

NameType
bloomstring
topicstring

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


isUserEthereumAddressInBloom

isUserEthereumAddressInBloom(bloom, ethereumAddress): boolean

Returns true if the ethereum users address is part of the given bloom note: false positives are possible.

Parameters

NameType
bloomstring
ethereumAddressstring

Returns

boolean

Deprecated

Will be removed in next release. Please use web3-validator package instead.


keccak256Wrapper

keccak256Wrapper(data): string

A wrapper for ethereum-cryptography/keccak256 to allow hashing a string and a bigint in addition to UInt8Array

Parameters

NameTypeDescription
datastring | number | bigint | Uint8Array | readonly number[]the input to hash

Returns

string

  • the Keccak-256 hash of the input

Example

console.log(web3.utils.keccak256Wrapper('web3.js'));
> 0x63667efb1961039c9bb0d6ea7a5abdd223a3aca7daa5044ad894226e1f83919a

console.log(web3.utils.keccak256Wrapper(1));
> 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6

console.log(web3.utils.keccak256Wrapper(0xaf12fd));
> 0x358640fd4719fa923525d74ab5ae80a594301aba5543e3492b052bf4598b794c

leftPad

leftPad(value, characterAmount, sign?): string

Adds a padding on the left of a string, if value is a integer or bigInt will be converted to a hex string.

Parameters

NameTypeDefault value
valueNumbersundefined
characterAmountnumberundefined
signstring'0'

Returns

string

Alias

padLeft


numberToHex

numberToHex(value, hexstrict?): string

Converts value to it's hex representation

Parameters

NameTypeDescription
valueNumbersValue to be converted
hexstrict?booleanAdd padding to converted value if odd, to make it hexstrict

Returns

string

  • The hex representation of the input value

Example

console.log(web3.utils.numberToHex(10));
> "0xa"

padLeft

padLeft(value, characterAmount, sign?): string

Adds a padding on the left of a string, if value is a integer or bigInt will be converted to a hex string.

Parameters

NameTypeDefault valueDescription
valueNumbersundefinedThe value to be padded.
characterAmountnumberundefinedThe amount of characters the string should have.
signstring'0'The sign to be added (default is 0).

Returns

string

The padded string.

Example


console.log(web3.utils.padLeft('0x123', 10));
>0x0000000123

padRight

padRight(value, characterAmount, sign?): string

Adds a padding on the right of a string, if value is a integer or bigInt will be converted to a hex string.

Parameters

NameTypeDefault valueDescription
valueNumbersundefinedThe value to be padded.
characterAmountnumberundefinedThe amount of characters the string should have.
signstring'0'The sign to be added (default is 0).

Returns

string

The padded string.

Example

console.log(web3.utils.padRight('0x123', 10));
> 0x1230000000

console.log(web3.utils.padRight('0x123', 10, '1'));
> 0x1231111111

processSolidityEncodePackedArgs

processSolidityEncodePackedArgs(arg): string

returns a string of the tightly packed value given based on the type

Parameters

NameTypeDescription
argSha3Inputthe input to return the tightly packed value

Returns

string

  • the tightly packed value

randomBytes

randomBytes(size): Uint8Array

Returns a random byte array by the given bytes size

Parameters

NameTypeDescription
sizenumberThe size of the random byte array returned

Returns

Uint8Array

  • random byte array

Example

console.log(web3.utils.randomBytes(32));
> Uint8Array(32) [
93, 172, 226, 32, 33, 176, 156, 156,
182, 30, 240, 2, 69, 96, 174, 197,
33, 136, 194, 241, 197, 156, 110, 111,
66, 87, 17, 88, 67, 48, 245, 183
]

randomHex

randomHex(byteSize): string

Returns a random hex string by the given bytes size

Parameters

NameTypeDescription
byteSizenumberThe size of the random hex string returned

Returns

string

  • random hex string
console.log(web3.utils.randomHex(32));
> 0x139f5b88b72a25eab053d3b57fe1f8a9dbc62a526b1cb1774d0d7db1c3e7ce9e

rightPad

rightPad(value, characterAmount, sign?): string

Adds a padding on the right of a string, if value is a integer or bigInt will be converted to a hex string.

Parameters

NameTypeDefault value
valueNumbersundefined
characterAmountnumberundefined
signstring'0'

Returns

string

Alias

padRight


sha3

sha3(data): undefined | string

computes the Keccak-256 hash of the input and returns a hexstring

Parameters

NameTypeDescription
dataBytesthe input to hash

Returns

undefined | string

  • the Keccak-256 hash of the input

Example

console.log(web3.utils.sha3('web3.js'));
> 0x63667efb1961039c9bb0d6ea7a5abdd223a3aca7daa5044ad894226e1f83919a

console.log(web3.utils.sha3(''));
> undefined

sha3Raw

sha3Raw(data): string

Will calculate the sha3 of the input but does return the hash value instead of null if for example a empty string is passed.

Parameters

NameTypeDescription
dataBytesthe input to hash

Returns

string

  • the Keccak-256 hash of the input

Example

conosle.log(web3.utils.sha3Raw('web3.js'));
> 0x63667efb1961039c9bb0d6ea7a5abdd223a3aca7daa5044ad894226e1f83919a

console.log(web3.utils.sha3Raw(''));
> 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

soliditySha3

soliditySha3(...values): undefined | string

Will tightly pack values given in the same way solidity would then hash. returns a hash string, or null if input is empty

Parameters

NameTypeDescription
...valuesSha3Input[]the input to return the tightly packed values

Returns

undefined | string

  • the keccack246 of the tightly packed values

Example

console.log(web3.utils.soliditySha3({ type: "string", value: "31323334" }));
> 0xf15f8da2ad27e486d632dc37d24912f634398918d6f9913a0a0ff84e388be62b

soliditySha3Raw

soliditySha3Raw(...values): string

Will tightly pack values given in the same way solidity would then hash. returns a hash string, if input is empty will return 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Parameters

NameTypeDescription
...valuesTypedObject[] | TypedObjectAbbreviated[]the input to return the tightly packed values

Returns

string

  • the keccack246 of the tightly packed values

Example

console.log(web3.utils.soliditySha3Raw({ type: "string", value: "helloworld" }))
> 0xfa26db7ca85ead399216e7c6316bc50ed24393c3122b582735e7f3b0f91b93f0

stringToHex

stringToHex(str): string

Parameters

NameType
strstring

Returns

string

Alias

utf8ToHex


toAscii

toAscii(str): string

Parameters

NameType
strstring

Returns

string

Alias

hexToAscii


toBigInt

toBigInt(value): bigint

Auto converts any given value into it's bigint representation

Parameters

NameTypeDescription
valueunknownThe value to convert

Returns

bigint

  • Returns the value in bigint representation

Example

console.log(web3.utils.toBigInt(1));
> 1n

toChecksumAddress

toChecksumAddress(address): string

Will convert an upper or lowercase Ethereum address to a checksum address.

Parameters

NameTypeDescription
addressstringAn address string

Returns

string

The checksum address

Example

web3.utils.toChecksumAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d');
> "0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d"

toDecimal

toDecimal(value): number | bigint

Converts value to it's number representation

Parameters

NameType
valuestring

Returns

number | bigint

Alias

hexToNumber


toHex

toHex(value, returnType?): string

Auto converts any given value into it's hex representation.

Parameters

NameTypeDescription
valuestring | number | bigint | boolean | object | Uint8ArrayValue to be converted to hex
returnType?booleanIf true, it will return the type of the value

Returns

string

Example

console.log(web3.utils.toHex(10));
> 0xa

console.log(web3.utils.toHex('0x123', true));
> bytes

toNumber

toNumber(value): number | bigint

Converts any given value into it's number representation, if possible, else into it's bigint representation.

Parameters

NameTypeDescription
valueNumbersThe value to convert

Returns

number | bigint

  • Returns the value in number or bigint representation

Example

console.log(web3.utils.toNumber(1));
> 1
console.log(web3.utils.toNumber(Number.MAX_SAFE_INTEGER));
> 9007199254740991

console.log(web3.utils.toNumber(BigInt(Number.MAX_SAFE_INTEGER)));
> 9007199254740991

console.log(web3.utils.toNumber(BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1)));
> 9007199254740992n


toTwosComplement

toTwosComplement(value, nibbleWidth?): string

Converts a negative number into the two’s complement and return a hexstring of 64 nibbles.

Parameters

NameTypeDefault valueDescription
valueNumbersundefinedThe value to be converted.
nibbleWidthnumber64The nibble width of the hex string (default is 64).

Returns

string

The hex string of the two’s complement.

Example

console.log(web3.utils.toTwosComplement(13, 32));
> 0x0000000000000000000000000000000d

console.log(web3.utils.toTwosComplement('-0x1', 32));
> 0xffffffffffffffffffffffffffffffff

console.log(web3.utils.toTwosComplement(BigInt('9007199254740992'), 32));
> 0x00000000000000000020000000000000

toUtf8

toUtf8(input): string

Parameters

NameType
inputstring | Uint8Array

Returns

string

Alias

hexToUtf8


toWei

toWei(number, unit): string

Takes a number of a unit and converts it to wei.

Parameters

NameTypeDescription
numberNumbersThe number to convert.
unit"noether" | "wei" | "kwei" | "Kwei" | "babbage" | "femtoether" | "mwei" | "Mwei" | "lovelace" | "picoether" | "gwei" | "Gwei" | "shannon" | "nanoether" | "nano" | "szabo" | "microether" | "micro" | "finney" | "milliether" | "milli" | "ether" | "kether" | "grand" | "mether" | "gether" | "tether"EtherUnits The unit of the number passed.

Returns

string

The number converted to wei.

Example

console.log(web3.utils.toWei("0.001", "ether"));
> 1000000000000000 //(wei)

utf8ToHex

utf8ToHex(str): string

Should be called to get hex representation (prefixed by 0x) of utf8 string

Parameters

NameTypeDescription
strstringUtf8 string to be converted

Returns

string

  • The hex representation of the input string

Example

console.log(utf8ToHex('web3.js'));
> "0x776562332e6a73"

uuidV4

uuidV4(): string

Generate a version 4 (random) uuid https://github.com/uuidjs/uuid/blob/main/src/v4.js#L5

Returns

string

  • A version 4 uuid of the form xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx

Example

console.log(web3.utils.uuidV4());
> "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"