Version: 21.0.0
This documentation is for Taquito version 21.0.0 and is no longer being updated. Some information may be outdated. View the latest version .
Validation functions
Written by Roxane Letourneau
Taquito provides functions that allow us to see if an address, a chain, a key hash, a contract address, a public key, or a signature is valid. Note that these validations do not rely on a node but are done based on checksums. Thus, they allow us to check if a value is valid and not if it exists on a chain. The ValidationResult returned by these functions is an enum that can take the following values:
0 = NO_PREFIX_MATCHED,
1 = INVALID_CHECKSUM,
2 = INVALID_LENGTH,
3 = VALID
Validate an address
The validateAddress function
This function can be used to validate implicit addresses (tz1, tz2, tz3) and originated addresses (KT1).
In the following example, the function is first called with a valid public key hash (pkh). It is then called with the same pkh where one character differs (e.g. āpā instead of āPā), which results in an invalid checksum.
import { validateAddress } from '@taquito/utils';
//valid
const pkh = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx';
const validation = validateAddress(pkh);
console.log(`Calling the validateAddress function with ${pkh} returns ${validation}.`);
//invalid checksum
const invalidPkh = 'tz1L9r8mWmRpndRhuvMCWESLGSVeFzQ9NAWx';
const invalidValidation = validateAddress(invalidPkh);
console.log(`Calling the validateAddress function with ${invalidPkh} returns ${invalidValidation}.`);
The validateKeyHash function
This function is used to validate implicit addresses (tz1, tz2, tz3).
Here is a valid example with a pkh and an invalid one where the prefix is missing :
import { validateKeyHash } from '@taquito/utils';
//valid
const keyHash = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx';
const validation = validateKeyHash(keyHash);
console.log(`Calling the validateKeyHash function with ${keyHash} returns ${validation}.`);
//invalid prefix
const keyHashWithoutPrefix = 'L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx';
const invalidValidation = validateKeyHash(keyHashWithoutPrefix);
console.log(`Calling the validateKeyHash function with ${keyHash} returns ${invalidValidation}.`);
The validateContractAddress function
This function is used to validate originated addresses (KT1).
Here is a valid example with the address of an existing contract :
import { validateContractAddress } from '@taquito/utils';
//valid
const contractAddress = 'KT1AfxAKKLnEg6rQ6kHdvCWwagjSaxEwURSJ';
const validation = validateContractAddress(contractAddress);
console.log(`Calling the validateContractAddress function with ${contractAddress} returns ${validation}.`);
Validate a chain
The validateChain function is used to validate a chain id.
The following example shows a valid result when using the mainnet chain id and an invalid result if the prefix is missing :
import { validateChain } from '@taquito/utils';
//valid
const chainId = 'NetXdQprcVkpaWU';
const validation = validateChain(chainId);
console.log(`Calling the validateChain function with ${chainId} returns ${validation}.`);
//invalid prefix
const chainIdWithoutPrefix = 'XdQprcVkpaWU';
const invalidValidation = validateChain(chainIdWithoutPrefix);
console.log(`Calling the validateChain function with ${chainIdWithoutPrefix} returns ${invalidValidation}.`);
Validate a public key
The validatePublicKey is used to check if a public key is valid.
import { validatePublicKey } from '@taquito/utils';
//valid
const publicKey = 'edpkvS5QFv7KRGfa3b87gg9DBpxSm3NpSwnjhUjNBQrRUUR66F7C9g';
const validation = validatePublicKey(publicKey);
console.log(`Calling the validatePublicKey function with ${publicKey} returns ${validation}.`);
//invalid prefix
const value = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx';
const invalidValidation = validatePublicKey(value);
console.log(`Calling the validatePublicKey function with ${value} returns ${invalidValidation}.`);
Validate a signature
The validateSignature function is used to check if a signature is valid.
import { validateSignature } from '@taquito/utils';
//valid
const signature = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg';
const validation = validateSignature(signature);
console.log(`Calling the validateSignature function with ${signature} returns ${validation}.`);
//invalid checksum
const invalidSignature = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuM';
const invalidValidation = validateSignature(invalidSignature);
console.log(`Calling the validateSignature function with ${invalidSignature} returns ${invalidValidation}.`);
Validate a Block Hash
The validateBlock function is used to check whether a block hash is valid.
import { validateBlock } from '@taquito/utils';
//valid
const block ='BLJjnzaPtSsxykZ9pLTFLSfsKuiN3z7SjSPDPWwbE4Q68u5EpBw';
const validation = validateBlock(block);
console.log(`Calling the validateBlock function with ${block} returns ${validation}.`);
//invalid checksum
const invalidBlock ='BMEdgRZbJJrtByoA5Jyuvy8mzp8mefbcrno82nQCAEbBCUhog';
const invalidValidation = validateBlock(invalidBlock);
console.log(`Calling the validateBlock function with ${invalidBlock} returns ${invalidValidation}.`);
Validate an Operation Hash
The validateOperation function is used to check whether an operation hash is valid.
import { validateOperation } from '@taquito/utils';
//valid
const operation ='ood2Y1FLHH9izvYghVcDGGAkvJFo1CgSEjPfWvGsaz3qypCmeUj';
const validation = validateOperation(operation);
console.log(`Calling the validateOperation function with ${operation} returns ${validation}.`);
//invalid checksum
const invalidOperation ='ont3n75kMA2xeoTdxkGM23h5XhWgyP51WEznc4zCDtGNz1TWSz';
const invalidValidation = validateOperation(invalidOperation);
console.log(`Calling the validateOperation function with ${invalidOperation} returns ${invalidValidation}.`);
Validate a Protocol Hash
The validateProtocol function is used to check whether a protocol hash is valid.
import { validateProtocol } from '@taquito/utils';
//valid
const protocol ='PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx';
const validation = validateProtocol(protocol);
console.log(`Calling the validateProtocol function with ${protocol} returns ${validation}.`);
//invalid checksum
const invalidProtocol ='PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95b3m53QJiXGmrbU';
const invalidValidation = validateProtocol(invalidProtocol);
console.log(`Calling the validateProtocol function with ${invalidProtocol} returns ${invalidValidation}.`);
Verification of a signature
Taquito provides a function named verifySignature that allows verifying signatures of payloads. The function takes a message, a public key, and a signature as parameters and returns a boolean indicating if the signature matches.
Here is an example of a successful verification:
import { verifySignature } from '@taquito/utils';
const message = '03d0c10e3ed11d7c6e3357f6ef335bab9e8f2bd54d0ce20c482e241191a6e4b8ce6c01be917311d9ac46959750e405d57e268e2ed9e174a80794fbd504e12a4a000141eb3781afed2f69679ff2bbe1c5375950b0e40d00ff000000005e05050505050507070100000024747a32526773486e74516b72794670707352466261313652546656503539684b72654a4d07070100000024747a315a6672455263414c42776d4171776f6e525859565142445439426a4e6a42484a750001';
const pk = 'sppk7c7hkPj47yjYFEHX85q46sFJGw6RBrqoVSHwAJAT4e14KJwzoey';
const sig = 'spsig1cdLkp1RLgUHAp13aRFkZ6MQDPp7xCnjAExGL3MBSdMDmT6JgQSX8cufyDgJRM3sinFtiCzLbsyP6d365EHoNevxhT47nx'
const isValid = verifySignature(message, pk, sig);
console.log(isValid);