Skip to main content
Version: 8.6.0

Namespace: hash

Namespaces

Variables

COMPILED_CLASS_VERSION

Const COMPILED_CLASS_VERSION: "COMPILED_CLASS_V1"

Compiled class version constant used in Cairo 1 compiled class hashing

Defined in

src/utils/hash/classHash/util.ts:10

Functions

keccakBn

keccakBn(value): string

Calculate the hex-string Starknet Keccak hash for a given BigNumberish

Parameters

NameTypeDescription
valueBigNumberishvalue to hash

Returns

string

hex-string Keccak hash

Example

const result = keccakBn('0xabc');
// result = '0x11cf08aac85935e32397f410e48217a127b6855d41b1e3877eb4179c0904b77'

Defined in

src/utils/hash/selector.ts:21


starknetKeccak

starknetKeccak(str): bigint

Calculate the BigInt Starknet Keccak hash for a given string Reference

Parameters

NameTypeDescription
strstringvalue to hash

Returns

bigint

BigInt Keccak hash

Example

const result = starknetKeccak('test').toString();
// result = '61835310290161785288773114225739080147441215596947647498723774891619563096'

Defined in

src/utils/hash/selector.ts:50


getSelectorFromName

getSelectorFromName(funcName): string

Calculate the hex-string selector for a given abi function name Reference

Parameters

NameTypeDescription
funcNamestringabi function name

Returns

string

hex-string selector

Example

const result = getSelectorFromName('myFunction');
// result = '0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8'

Defined in

src/utils/hash/selector.ts:68


getSelector

getSelector(value): string

Calculate the hex-string selector from a given abi function name or of any representation of number.

Parameters

NameTypeDescription
valueBigNumberishascii-string | hex-string | dec-string | number | BigInt

Returns

string

hex-string selector

Example

const selector1: string = getSelector('myFunction');
// selector1 = "0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8"

const selector2: string = getSelector('0x123abc');
// selector2 = "0x123abc"

const selector3: string = getSelector('123456');
// selector3 = "0x1e240"

const selector4: string = getSelector(123456n);
// selector4 = "0x1e240"

Defined in

src/utils/hash/selector.ts:93


solidityUint256PackedKeccak256

solidityUint256PackedKeccak256(params): string

Solidity hash of an array of uint256

Parameters

NameTypeDescription
paramsBigNumberish[]an array of uint256 numbers

Returns

string

the hash of the array of Solidity uint256

Example

const result = hash.solidityUint256PackedKeccak256(['0x100', '200', 300, 400n]);
// result = '0xd1e6cb422b65269603c491b0c85463295edabebfb2a6844e4fdc389ff1dcdd97'

Defined in

src/utils/hash/selector.ts:110


getL2MessageHash

getL2MessageHash(l1FromAddress, l2ToAddress, l2Selector, l2Calldata, l1Nonce): string

Calculate the message hash related by a message L1->L2

Parameters

NameTypeDescription
l1FromAddressBigNumberishL1 account address that paid the message.
l2ToAddressBigNumberishL2 contract address to execute.
l2SelectorBigNumberishcan be a function name ("bridge_withdraw") or a number (BigNumberish).
l2CalldataBigNumberish[]an array of BigNumberish of the raw parameters passed to the above function.
l1NonceBigNumberishThe nonce of the L1 account.

Returns

string

hex-string of the L2 transaction hash

Example

const l1FromAddress = '0x0000000000000000000000008453fc6cd1bcfe8d4dfc069c400b433054d47bdc';
const l2ToAddress = 2158142789748719025684046545159279785659305214176670733242887773692203401023n;
const l2Selector = 774397379524139446221206168840917193112228400237242521560346153613428128537n;
const payload = [
4543560n,
829565602143178078434185452406102222830667255948n,
3461886633118033953192540141609307739580461579986333346825796013261542798665n,
9000000000000000n,
0n,
];
const l1Nonce = 8288n;
const result = hash.getL2MessageHash(l1FromAddress, l2ToAddress, l2Selector, payload, l1Nonce);
// result = "0x2e350fa9d830482605cb68be4fdb9f0cb3e1f95a0c51623ac1a5d1bd997c2090"

Defined in

src/utils/hash/selector.ts:145


getL1MessageHash

getL1MessageHash(fromL2Address, toL1Address, payload): string

Calculate the message hash related by a message L2->L1.

Parameters

NameTypeDescription
fromL2AddressBigNumberishL2 contract address that send the message.
toL1AddressBigNumberishRecipient L1 account address.
payloadBigNumberish[]an array of BigNumberish of the raw parameters passed to the message.

Returns

string

hex-string of the message hash.

Example

const fromL2Address = '0x04c5772d1914fe6ce891b64eb35bf3522aeae1315647314aac58b01137607f3f';
const toL1Address = '0x8453fc6cd1bcfe8d4dfc069c400b433054d47bdc';
const payload = [
0n,
1270393329865452722422775477982592488490549769359n,
4543560n,
200000000000000,
0n,
];
const result = hash.getL1MessageHash(fromL2Address, toL1Address, payload);
// result = "0x2eace1d0ab5dbe354a93fb0a59c6b98f26e6a0fe7c33f87329f8fc9829058b8b"

Defined in

src/utils/hash/selector.ts:183


calculateInvokeTransactionHash

calculateInvokeTransactionHash(args): string

Parameters

NameType
argsCalcV3InvokeTxHashArgs

Returns

string

Defined in

src/utils/hash/transactionHash/index.ts:42


calculateDeclareTransactionHash

calculateDeclareTransactionHash(args): string

Parameters

NameType
argsCalcV3DeclareTxHashArgs

Returns

string

Defined in

src/utils/hash/transactionHash/index.ts:86


calculateDeployAccountTransactionHash

calculateDeployAccountTransactionHash(args): string

Parameters

NameType
argsCalcV3DeployAccountTxHashArgs

Returns

string

Defined in

src/utils/hash/transactionHash/index.ts:134


calculateL2MessageTxHash

calculateL2MessageTxHash(l1FromAddress, l2ToAddress, l2Selector, l2Calldata, l2ChainId, l1Nonce): string

Calculate the L2 transaction hash generated by a message L1->L2

Parameters

NameTypeDescription
l1FromAddressBigNumberishL1 account address that paid the message.
l2ToAddressBigNumberishL2 contract address to execute.
l2SelectorBigNumberishcan be a function name ("bridge_withdraw") or a number (BigNumberish).
l2CalldataRawCalldataan array of BigNumberish of the raw parameters passed to the above function.
l2ChainId"0x534e5f4d41494e" | "0x534e5f5345504f4c4941"L2 chain ID : from constants.StarknetChainId.xxx
l1NonceBigNumberishThe nonce of the L1 account.

Returns

string

hex-string of the L2 transaction hash

Example

const l1FromAddress = '0x0000000000000000000000008453fc6cd1bcfe8d4dfc069c400b433054d47bdc';
const l2ToAddress = 2158142789748719025684046545159279785659305214176670733242887773692203401023n;
const l2Selector = 774397379524139446221206168840917193112228400237242521560346153613428128537n;
const payload = [
4543560n,
829565602143178078434185452406102222830667255948n,
3461886633118033953192540141609307739580461579986333346825796013261542798665n,
9000000000000000n,
0n,
];
const l1Nonce = 8288n;
const result = hash.calculateL2MessageTxHash(
l1FromAddress,
l2ToAddress,
l2Selector,
payload,
constants.StarknetChainId.SN_SEPOLIA,
l1Nonce
);
// result = "0x67d959200d65d4ad293aa4b0da21bb050a1f669bce37d215c6edbf041269c07"

Defined in

src/utils/hash/transactionHash/v2.ts:158


computeContractClassHash

computeContractClassHash(contract): string

Compute ClassHash (sierra or legacy) based on provided contract

Parameters

NameTypeDescription
contractstring | CompiledContractCairo 1 contract content

Returns

string

hex-string of class hash

Example

const compiledSierra = json.parse(fs.readFileSync('./cairo260.sierra.json').toString('ascii'));
const result = hash.computeContractClassHash(compiledSierra);
// result = "0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba"

Defined in

src/utils/hash/classHash/index.ts:33


computeCompiledClassHash

computeCompiledClassHash(casm, specVersion?): string

Parameters

NameTypeDescription
casmCairoAssembly-
specVersion?"0.8.1" | "0.9.0"Used to determine which hashing algorithm to use

Returns

string

Defined in

src/utils/hash/classHash/index.ts:43


computePedersenHash

computePedersenHash(a, b): string

Parameters

NameType
aBigNumberish
bBigNumberish

Returns

string

Defined in

src/utils/hash/classHash/pedersen.ts:17


computeHashOnElements

computeHashOnElements(data): string

Compute Pedersen hash from data

Parameters

NameTypeDescription
dataBigNumberish[]Array of data to compute Pedersen hash on

Returns

string

hex-string of Pedersen hash

Example

const result = hash.computeHashOnElements(['0xabc', '0x123', '0xabc123']);
// result = 0x148141e8f7db29d005a0187669a56f0790d7e8c2c5b2d780e4d8b9e436a5521

Defined in

src/utils/hash/classHash/pedersen.ts:33


calculateContractAddressFromHash

calculateContractAddressFromHash(salt, classHash, constructorCalldata, deployerAddress): string

Calculate contract address from class hash

Parameters

NameTypeDescription
saltBigNumberishSalt to be used for hashing
classHashBigNumberishClass hash of contract to generate address for
constructorCalldataRawArgsCall data for contract constructor
deployerAddressBigNumberishAddress of contract deployer

Returns

string

hex-string

Example

const result = hash.calculateContractAddressFromHash(
1234,
0x1cf4fe5d37868d25524cdacb89518d88bf217a9240a1e6fde71cc22c429e0e3,
[1234, true, false],
0x052fb1a9ab0db3c4f81d70fea6a2f6e55f57c709a46089b25eeec0e959db3695
);
// result = 0x5fb03d3a88d8e474976932f927ff6a9e332e06ed36642ea3e8c7e38bf010f76

Defined in

src/utils/hash/classHash/pedersen.ts:55


computeHintedClassHash

computeHintedClassHash(compiledContract): string

Compute hinted class hash for legacy compiled contract (Cairo 0)

Parameters

NameType
compiledContractLegacyCompiledContract

Returns

string

hex-string

Example

const compiledCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii'));
const result = hash.computeHintedClassHash(compiledCairo0);
// result = "0x293eabb06955c0a1e55557014675aa4e7a1fd69896147382b29b2b6b166a2ac"

Defined in

src/utils/hash/classHash/pedersen.ts:86


computeLegacyContractClassHash

computeLegacyContractClassHash(contract): string

Computes the class hash for legacy compiled contract (Cairo 0)

Parameters

NameTypeDescription
contractstring | LegacyCompiledContractlegacy compiled contract content

Returns

string

hex-string of class hash

Example

const compiledCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii'));
const result = hash.computeLegacyContractClassHash(compiledCairo0);
// result = "0x4a5cae61fa8312b0a3d0c44658b403d3e4197be80027fd5020ffcdf0c803331"

Defined in

src/utils/hash/classHash/pedersen.ts:104


computePedersenHashOnElements

computePedersenHashOnElements(data): string

Compute Pedersen hash from data

Parameters

NameTypeDescription
dataBigNumberish[]Array of data to compute Pedersen hash on

Returns

string

hex-string of Pedersen hash

Example

const result = hash.computeHashOnElements(['0xabc', '0x123', '0xabc123']);
// result = 0x148141e8f7db29d005a0187669a56f0790d7e8c2c5b2d780e4d8b9e436a5521

Defined in

src/utils/hash/classHash/pedersen.ts:39


computePoseidonHash

computePoseidonHash(a, b): string

Parameters

NameType
aBigNumberish
bBigNumberish

Returns

string

Defined in

src/utils/hash/classHash/poseidon.ts:21


computePoseidonHashOnElements

computePoseidonHashOnElements(data): string

Parameters

NameType
dataBigNumberish[]

Returns

string

Defined in

src/utils/hash/classHash/poseidon.ts:25


hashByteCodeSegments

hashByteCodeSegments(casm): bigint

Compute hash of the bytecode for Sierra v1.5.0 onwards (Cairo 2.6.0) Each segment is Poseidon hashed. The global hash is : 1 + PoseidonHash(len0, h0, len1, h1, ...)

Parameters

NameTypeDescription
casmCairoAssemblycompiled Sierra CASM file content.

Returns

bigint

the bytecode hash as bigint.

Example

const compiledCasm = json.parse(fs.readFileSync('./contractC260.casm.json').toString('ascii'));
const result = hash.hashByteCodeSegments(compiledCasm);
// result = 80499149343908132326491548897246987792410240503053732367044713070598981699n

Defined in

src/utils/hash/classHash/poseidon.ts:53


computeCompiledClassHashPoseidon

computeCompiledClassHashPoseidon(casm): string

Compute compiled class hash for contract (Cairo 1)

Parameters

NameTypeDescription
casmCairoAssemblyCairo 1 compiled contract content

Returns

string

hex-string of class hash

Example

const compiledCasm = json.parse(fs.readFileSync('./cairo260.casm.json').toString('ascii'));
const result = hash.computeCompiledClassHash(compiledCasm);
// result = "0x4087905743b4fa2b3affc1fc71333f1390c8c5d1e8ea47d6ba70786de3fc01a"

Defined in

src/utils/hash/classHash/poseidon.ts:75


computeSierraContractClassHash

computeSierraContractClassHash(sierra): string

Compute sierra contract class hash (Cairo 1)

Parameters

NameTypeDescription
sierraCompiledSierraCairo 1 Sierra contract content

Returns

string

hex-string of class hash

Example

const compiledSierra = json.parse(fs.readFileSync('./cairo260.sierra.json').toString('ascii'));
const result = hash.computeSierraContractClassHash(compiledSierra);
// result = "0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba"

Defined in

src/utils/hash/classHash/poseidon.ts:127


blake2sHashMany

blake2sHashMany(data): bigint

Blake2s hash function for Starknet that produces a field element. Matches the Blake2Felt252 implementation from Rust.

The implementation:

  1. Encodes each Felt into u32 words (small: 2 words, large: 8 words)
  2. Serializes u32 words as little-endian bytes
  3. Computes Blake2s hash (32-byte output)
  4. Interprets hash as little-endian Felt

Parameters

NameType
databigint[]

Returns

bigint

Defined in

src/utils/hash/classHash/blake.ts:22


hashByteCodeSegmentsBlake

hashByteCodeSegmentsBlake(casm): bigint

Compute hash of the bytecode using Blake2s for nested segments. Each segment is Blake2s hashed according to the segment structure. For non-leaf nodes: 1 + Blake2sHash(len0, h0, len1, h1, ...)

Parameters

NameTypeDescription
casmCairoAssemblycompiled Sierra CASM file content.

Returns

bigint

the bytecode hash as bigint.

Example

const compiledCasm = json.parse(fs.readFileSync('./contractC260.casm.json').toString('ascii'));
const result = hash.hashByteCodeSegmentsBlake(compiledCasm);

Defined in

src/utils/hash/classHash/blake.ts:123


computeCompiledClassHashBlake

computeCompiledClassHashBlake(casm): string

Compute compiled class hash for contract (Cairo 1) using Blake2s hashing (V2). This implements the V2 hash version as specified in Starknet.

Parameters

NameTypeDescription
casmCairoAssemblyCairo 1 compiled contract content

Returns

string

hex-string of compiled class hash

Example

const compiledCasm = json.parse(fs.readFileSync('./cairo260.casm.json').toString('ascii'));
const result = hash.computeCompiledClassHashBlake(compiledCasm);

Defined in

src/utils/hash/classHash/blake.ts:155


formatSpaces

formatSpaces(json): string

Format json-string without spaces to conform starknet json-string

Parameters

NameTypeDescription
jsonstringjson-string without spaces

Returns

string

json-string with additional spaces after : and ,

Example

const result = hash.formatSpaces("{'onchain':true,'isStarknet':true}");
// result = "{'onchain': true, 'isStarknet': true}"

Defined in

src/utils/hash/classHash/util.ts:22


nullSkipReplacer

nullSkipReplacer(key, value): any

JSON replacer function that skips null values and empty arrays for specific keys Used in legacy contract class serialization

Parameters

NameType
keystring
valueany

Returns

any

Defined in

src/utils/hash/classHash/util.ts:44


encodeBuiltins

encodeBuiltins(builtins): bigint[]

Convert builtins array to encoded BigInt array Common pattern used in both Poseidon and Blake2s hashing

Parameters

NameType
builtinsBuiltins

Returns

bigint[]

Defined in

src/utils/hash/classHash/util.ts:60


flattenEntryPointData

flattenEntryPointData(data, encodedBuiltinsArray): bigint[]

Extract entry point data for hashing Returns flattened array of [selector, offset, ...builtins] for each entry point

Parameters

NameType
dataContractEntryPointFields[]
encodedBuiltinsArraybigint[][]

Returns

bigint[]

Defined in

src/utils/hash/classHash/util.ts:68