caver.utils
caver.utils
provides utility functions.
randomHex β
caver.utils.randomHex(size)
The randomHex library to generate cryptographically strong pseudo-random HEX strings from a given byte size.
Parameters
Name | Type | Description |
---|---|---|
size | Number | The byte size for the HEX string, e.g., 32 will result in a 32-byte HEX string with 64 characters preficed with "0x". |
Return Value
Type | Description |
---|---|
String | The generated random HEX string. |
Example
> caver.utils.randomHex(32);"0xa5b9d60f32436310afebcfda832817a68921beb782fabf7915cc0460b443116a"> caver.utils.randomHex(4);"0x6892ffc6"> caver.utils.randomHex(2);"0x99d6"> caver.utils.randomHex(1);"0x9a"> caver.utils.randomHex(0);"0x"
_ (underscore) β
caver.utils._()
The underscore library for many convenience JavaScript functions.
See the underscore API reference for details.
Example
> var _ = caver.utils._;> _.union([1,2],[3]);[1,2,3]> _.each({my: 'object'}, function(value, key){ ... });...
BN β
caver.utils.BN(mixed)
The BN.js library for calculating with big numbers in JavaScript. See the BN.js documentation for details.
Parameters
Name | Type | Description |
---|---|---|
mixed | String | Number | A number, number string or HEX string to convert to a BN object. |
Return Value
Type | Description |
---|---|
Object | The BN.js instance. |
Example
> var BN = caver.utils.BN;> new BN(1234).toString();"1234"> new BN('1234').add(new BN('1')).toString();"1235"> new BN('0xea').toString();"234"
isBN β
caver.utils.isBN(bn)
Checks if a given value is a BN.js instance.
Parameters
Name | Type | Description |
---|---|---|
bn | Object | A BN.js instance. |
Return Value
Type | Description |
---|---|
Boolean | true if a given value is a BN.js instance. |
Example
> var number = new BN(10);> caver.utils.isBN(number);true
isBigNumber β
caver.utils.isBigNumber(bignumber)
Checks if a given value is a BigNumber.js instance.
Parameters
Name | Type | Description |
---|---|---|
bignumber | Object | A BigNumber.js instance. |
Return Value
Type | Description |
---|---|
Boolean | true if a given value is a BigNumber.js instance. |
Example
> var number = new BigNumber(10);> caver.utils.isBigNumber(number);true
sha3 β
caver.utils.sha3(string)caver.utils.keccak256(string) // ALIAS
Calculates the sha3 of the input.
NOTE: To mimic the sha3 behavior of Solidity use caver.utils.soliditySha3.
Parameters
Name | Type | Description |
---|---|---|
string | String | A string to hash. |
Return Value
Type | Description |
---|---|
String | The result hash. |
Example
> caver.utils.sha3('234'); // taken as string"0xc1912fee45d61c87cc5ea59dae311904cd86b84fee17cc96966216f811ce6a79"> caver.utils.sha3(new BN('234')); // utils.sha3 stringify bignumber instance."0xc1912fee45d61c87cc5ea59dae311904cd86b84fee17cc96966216f811ce6a79"> caver.utils.sha3(234);null // can't calculate the has of a number> caver.utils.sha3(0xea); // same as above, just the HEX representation of the numbernull> caver.utils.sha3('0xea'); // will be converted to a byte array first, and then hashed"0x2f20677459120677484f7104c76deb6846a2c071f9b3152c103bb12cd54d1a4a"
soliditySha3 β
caver.utils.soliditySha3(param1 [, param2, ...])
Calculates the sha3 of given input parameters in the same way solidity would. This means arguments will be ABI converted and tightly packed before being hashed.
Parameters
Name | Type | Description |
---|---|---|
paramX | Mixed | Any type, or an object with {type: 'uint', value: '123456'} or {t: 'bytes', v: '0xfff456'} . Basic types are autodetected as follows: - String non numerical UTF-8 string is interpreted as string .- String|Number|BN|HEX positive number is interpreted as uint256 .- String|Number|BN negative number is interpreted as int256 .- Boolean as bool .- String HEX string with leading 0x is interpreted as bytes .- HEX HEX number representation is interpreted as uint256 . |
Return Value
Type | Description |
---|---|
String | The result hash. |
Example
> caver.utils.soliditySha3('234564535', '0xfff23243', true, -10);// auto detects: uint256, bytes, bool, int256"0x3e27a893dc40ef8a7f0841d96639de2f58a132be5ae466d40087a2cfa83b7179"> caver.utils.soliditySha3('Hello!%'); // auto detects: string"0x661136a4267dba9ccdf6bfddb7c00e714de936674c4bdb065a531cf1cb15c7fc"> caver.utils.soliditySha3('234'); // auto detects: uint256"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2"> caver.utils.soliditySha3(0xea); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2"> caver.utils.soliditySha3(new BN('234')); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2"> caver.utils.soliditySha3({type: 'uint256', value: '234'})); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2"> caver.utils.soliditySha3({t: 'uint', v: new BN('234')})); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2"> caver.utils.soliditySha3('0x407D73d8a49eeb85D32Cf465507dd71d507100c1');"0x4e8ebbefa452077428f93c9520d3edd60594ff452a29ac7d2ccc11d47f3ab95b"> caver.utils.soliditySha3({t: 'bytes', v: '0x407D73d8a49eeb85D32Cf465507dd71d507100c1'});"0x4e8ebbefa452077428f93c9520d3edd60594ff452a29ac7d2ccc11d47f3ab95b" // same result as above> caver.utils.soliditySha3({t: 'address', v: '0x407D73d8a49eeb85D32Cf465507dd71d507100c1'});"0x4e8ebbefa452077428f93c9520d3edd60594ff452a29ac7d2ccc11d47f3ab95b" // same as above, but will do a checksum check, if its multi case> caver.utils.soliditySha3({t: 'bytes32', v: '0x407D73d8a49eeb85D32Cf465507dd71d507100c1'});"0x3c69a194aaf415ba5d6afca734660d0a3d45acdc05d54cd1ca89a8988e7625b4" // different result as above> caver.utils.soliditySha3({t: 'string', v: 'Hello!%'}, {t: 'int8', v:-23}, {t: 'address', v: '0x85F43D8a49eeB85d32Cf465507DD71d507100C1d'});"0xa13b31627c1ed7aaded5aecec71baf02fe123797fffd45e662eac8e06fbe4955"
isHex β
caver.utils.isHex(hex)
Checks if a given string is a HEX string.
Parameters
Name | Type | Description |
---|---|---|
hex | String | HEX | The given HEX string. |
Return Value
Type | Description |
---|---|
Boolean | true if a given string is a HEX string. |
Example
> caver.utils.isHex('0xc1912');true> caver.utils.isHex(0xc1912);true> caver.utils.isHex('c1912');true> caver.utils.isHex(345);true // this is tricky, as 345 can be a HEX representation or a number, be careful when not having a 0x in front!> caver.utils.isHex('0xZ1912');false> caver.utils.isHex('Hello');false
isHexStrict β
caver.utils.isHexStrict(hex)
Checks if a given string is a HEX string. Difference to caver.utils.isHex is that it expects HEX to be prefixed with 0x
.
Parameters
Name | Type | Description |
---|---|---|
hex | String | HEX | The given HEX string. |
Return Value
Type | Description |
---|---|
Boolean | true if a given string is a HEX string. |
Example
> caver.utils.isHexStrict('0xc1912');true> caver.utils.isHexStrict(0xc1912);false> caver.utils.isHexStrict('c1912');false> caver.utils.isHexStrict(345);false // this is tricky, as 345 can be a HEX representation or a number, be careful when not having a 0x in front!> caver.utils.isHexStrict('0xZ1912');false> caver.utils.isHex('Hello');false
isAddress β
caver.utils.isAddress(address)
Checks if a given string is a valid Klaytn address. It will also check the checksum, if the address has upper and lowercase letters.
Parameters
Name | Type | Description |
---|---|---|
address | String | An address string. |
Return Value
Type | Description |
---|---|
Boolean | true if a given string is a valid Klaytn address. |
Examples
> caver.utils.isAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d');true> caver.utils.isAddress('c1912fee45d61c87cc5ea59dae31190fffff232d');true> caver.utils.isAddress('0XC1912FEE45D61C87CC5EA59DAE31190FFFFF232D');true // as all is uppercase, no checksum will be checked> caver.utils.isAddress('0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d');true> caver.utils.isAddress('0xC1912fEE45d61C87Cc5EA59DaE31190FFFFf232d');false // wrong checksum
toChecksumAddress β
caver.utils.toChecksumAddress(address)
Converts an upper or lowercase Klaytn address to a checksum address.
Parameters
Name | Type | Description |
---|---|---|
address | String | An address string. |
Return Value
Type | Description |
---|---|
String | The checksum address. |
Examples
> caver.utils.toChecksumAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d');"0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d"> caver.utils.toChecksumAddress('0XC1912FEE45D61C87CC5EA59DAE31190FFFFF232D');"0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d" // same as above
checkAddressChecksum β
caver.utils.checkAddressChecksum(address)
Checks the checksum of a given address. Will also return false
on non-checksum addresses.
Parameters
Name | Type | Description |
---|---|---|
address | String | An address string. |
Return Value
Type | Description |
---|---|
Boolean | true when the checksum of the address is valid, false if it is not a checksum address, or the checksum is invalid. |
Examples
> caver.utils.checkAddressChecksum('0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d');true
toHex β
caver.utils.toHex(mixed)
Converts any given value to HEX. Number strings will interpreted as numbers. Text strings will be interpreted as UTF-8 strings.
Parameters
Name | Type | Description |
---|---|---|
mixed | String | Number | BN | BigNumber | The input to convert to HEX. |
Return Value
Type | Description |
---|---|
String | The resulting HEX string. |
Examples
> caver.utils.toHex('234');"0xea"> caver.utils.toHex(234);"0xea"> caver.utils.toHex(new BN('234'));"0xea"> caver.utils.toHex(new BigNumber('234'));"0xea"> caver.utils.toHex('I have 100β¬');"0x49206861766520313030e282ac"
toBN β
caver.utils.toBN(number)
Safely converts any given value (including BigNumber.js instances) into a BN.js instance, for handling big numbers in JavaScript.
NOTE: For just the BN.js class, use caver.utils.BN.
Parameters
Name | Type | Description |
---|---|---|
number | String | Number | HEX | Number to convert to a big number. |
Return Value
Type | Description |
---|---|
Object | The BN.js instance. |
Examples
> caver.utils.toBN(1234).toString();"1234"> caver.utils.toBN('1234').add(caver.utils.toBN('1')).toString();"1235"> caver.utils.toBN('0xea').toString();"234"
hexToNumberString β
caver.utils.hexToNumberString(hex)
Returns the number representation of a given HEX value as a string.
Parameters
Name | Type | Description |
---|---|---|
hexString | HEX String | A HEX string to be converted. |
Return Value
Type | Description |
---|---|
String | The number as a string. |
Examples
> caver.utils.hexToNumberString('0xea');"234"
hexToNumber β
caver.utils.hexToNumber(hex)
Returns the number representation of a given HEX value.
NOTE: This is not useful for big numbers, rather use caver.utils.toBN.
Parameters
Name | Type | Description |
---|---|---|
hexString | HEX String | A HEX string to be converted. |
Return Value
Type | Description |
---|---|
Number | The number representation of a given HEX value. |
Examples
> caver.utils.hexToNumber('0xea');234
numberToHex β
caver.utils.numberToHex(number)
Returns the HEX representation of a given number value.
Parameters
Name | Type | Description |
---|---|---|
number | String | Number | BN | BigNumber | A number as string or number. |
Return Value
Type | Description |
---|---|
String | The HEX value of the given number. |
Examples
> caver.utils.numberToHex('234');'0xea'
hexToUtf8 β
caver.utils.hexToUtf8(hex)caver.utils.hexToString(hex) // ALIAS
Returns the UTF-8 string representation of a given HEX value.
Parameters
Name | Type | Description |
---|---|---|
hex | String | A HEX string to convert to a UTF-8 string. |
Return Value
Type | Description |
---|---|
String | The UTF-8 string. |
Examples
> caver.utils.hexToUtf8('0x49206861766520313030e282ac');"I have 100β¬"
hexToAscii β
caver.utils.hexToAscii(hex)
Returns the ASCII string representation of a given HEX value.
Parameters
Name | Type | Description |
---|---|---|
hex | String | A HEX string to convert to a ASCII string. |
Return Value
Type | Description |
---|---|
String | The ASCII string. |
Examples
> caver.utils.hexToAscii('0x4920686176652031303021');"I have 100!"
utf8ToHex β
caver.utils.utf8ToHex(string)caver.utils.stringToHex(string) // ALIAS
Returns the HEX representation of a given UTF-8 string.
Parameters
Name | Type | Description |
---|---|---|
string | String | A UTF-8 string to convert to a HEX string. |
Return Value
Type | Description |
---|---|
String | The HEX string. |
Examples
> caver.utils.utf8ToHex('I have 100β¬');"0x49206861766520313030e282ac"
asciiToHex β
caver.utils.asciiToHex(string)
Returns the HEX representation of a given ASCII string.
Parameters
Name | Type | Description |
---|---|---|
string | String | An ASCII string to convert to a HEX string. |
Return Value
Type | Description |
---|---|
String | The HEX string. |
Examples
> caver.utils.asciiToHex('I have 100!');"0x4920686176652031303021"
hexToBytes β
caver.utils.hexToBytes(hex)
Returns a byte array from the given HEX string.
Parameters
Name | Type | Description |
---|---|---|
hex | HEX String | A HEX string to be converted. |
Return Value
Type | Description |
---|---|
Array | The byte array. |
Examples
> caver.utils.hexToBytes('0x000000ea');[ 0, 0, 0, 234 ]
bytesToHex β
caver.utils.bytesToHex(byteArray)
Returns a HEX string from a byte array.
Parameters
Name | Type | Description |
---|---|---|
byteArray | Array | A byte array to convert. |
Return Value
Type | Description |
---|---|
String | The HEX string. |
Examples
> caver.utils.bytesToHex([ 72, 101, 108, 108, 111, 33, 36 ]);"0x48656c6c6f2125"
toPeb β
caver.utils.toPeb(number [, unit])
Converts any KLAY value into peb.
NOTE: "peb" is the smallest KLAY unit, and you should always make calculations in peb and convert only for display reasons.
Parameters
Name | Type | Description |
---|---|---|
number | String | Number | BN | The value. |
unit | String | (optional, defaults to "KLAY" ) KLAY to convert from. Possible units are:- peb : '1' - kpeb : '1000' - Mpeb : '1000000' - Gpeb : '1000000000' - Ston : '1000000000' - uKLAY : '1000000000000' - mKLAY : '1000000000000000' - KLAY : '1000000000000000000' - kKLAY : '1000000000000000000000' - MKLAY : '1000000000000000000000000' - GKLAY : '1000000000000000000000000000' |
Return Value
Type | Description |
---|---|
String | BN | If a number or a string is given, it returns a number string, otherwise a BN.js instance. |
Examples
> caver.utils.toPeb('1', 'KLAY');"1000000000000000000"
fromPeb β
caver.utils.fromPeb(number [, unit])
NOTE: "peb" is the smallest KLAY unit, and you should always make calculations in KLAY and convert only for display reasons.
Parameters
Name | Type | Description |
---|---|---|
number | String | Number | BN | The value in peb. |
unit | String | (optional, defaults to "KLAY" ) KLAY to convert to. Possible units are:- peb : '1' - kpeb : '1000' - Mpeb : '1000000' - Gpeb : '1000000000' - Ston : '1000000000' - uKLAY : '1000000000000' - mKLAY : '1000000000000000' - KLAY : '1000000000000000000' - kKLAY : '1000000000000000000000' - MKLAY : '1000000000000000000000000' - GKLAY : '1000000000000000000000000000' |
Return Value
Type | Description |
---|---|
String | BN | If a number or a string is given, it returns a number string, otherwise a BN.js instance. |
Examples
> caver.utils.fromPeb('1', 'KLAY');"0.000000000000000001"
unitMap β
caver.utils.unitMap
Shows all possible KLAY values and their amount in peb.
Return Value
Type | Description |
---|---|
Object | With the following properties:- peb : '1' - kpeb : '1000' - Mpeb : '1000000' - Gpeb : '1000000000' - Ston : '1000000000' - uKLAY : '1000000000000' - mKLAY : '1000000000000000' - KLAY : '1000000000000000000' - kKLAY : '1000000000000000000000' - MKLAY : '1000000000000000000000000' - GKLAY : '1000000000000000000000000000' |
Examples
> caver.utils.unitMap{ peb: '1', kpeb: '1000', Mpeb: '1000000', Gpeb: '1000000000', Ston: '1000000000', uKLAY: '1000000000000', mKLAY: '1000000000000000', KLAY: '1000000000000000000', kKLAY: '1000000000000000000000', MKLAY: '1000000000000000000000000', GKLAY: '1000000000000000000000000000',}
padLeft β
caver.utils.padLeft(string, characterAmount [, sign])caver.utils.leftPad(string, characterAmount [, sign]) // ALIAS
Adds a padding on the left of a string. Useful for adding paddings to HEX strings.
Parameters
Name | Type | Description |
---|---|---|
string | String | The string to add padding on the left. |
characterAmount | Number | The number of characters the total string should have. |
sign | String | (optional) The character sign to use, defaults to "0" . |
Return Value
Type | Description |
---|---|
String | The padded string. |
Examples
> caver.utils.padLeft('0x3456ff', 20);"0x000000000000003456ff"> caver.utils.padLeft(0x3456ff, 20);"0x000000000000003456ff"> caver.utils.padLeft('Hello', 20, 'x');"xxxxxxxxxxxxxxxHello"
padRight β
caver.utils.padRight(string, characterAmount [, sign])caver.utils.rightPad(string, characterAmount [, sign]) // ALIAS
Adds a padding on the right of a string, Useful for adding paddings to HEX strings.
Parameters
Name | Type | Description |
---|---|---|
string | String | The string to add padding on the right. |
characterAmount | Number | The number of characters the total string should have. |
sign | String | (optional) The character sign to use, defaults to "0" . |
Return Value
Type | Description |
---|---|
String | The padded string. |
Examples
> caver.utils.padRight('0x3456ff', 20);"0x3456ff00000000000000"> caver.utils.padRight(0x3456ff, 20);"0x3456ff00000000000000"> caver.utils.padRight('Hello', 20, 'x');"Helloxxxxxxxxxxxxxxx"
toTwosComplement β
caver.utils.toTwosComplement(number)
Converts a negative number into a two's complement.
Parameters
Name | Type | Description |
---|---|---|
number | Number | String | BigNumber | The number to convert. |
Return Value
Type | Description |
---|---|
String | The converted hex string. |
Examples
> caver.utils.toTwosComplement('-1');"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"> caver.utils.toTwosComplement(-1);"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"> caver.utils.toTwosComplement('0x1');"0x0000000000000000000000000000000000000000000000000000000000000001"> caver.utils.toTwosComplement(-15);"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1"> caver.utils.toTwosComplement('-0x1');"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
isContractDeployment β
caver.utils.isContractDeployment(transactionObject)
Returns true
if the given transaction is a smart contract deploy transaction. It returns false
if the transaction is not a smart contract deploy transaction. The result is determined by the values of the parameters in the transactionObject
. Make sure all the mandatory parameters are set correctly.
NOTE caver.klay.isContractDeployment is supported from v1.0.1-rc.8. To use this feature, please install v1.0.1-rc.8 or higher.
Parameters
Name | Type | Description |
---|---|---|
transactionObject | Object | Transaction object that you want to determine if the transaction is for smart contract deploy. |
Return Value
Type | Description |
---|---|
Boolean | true means the transaction object is for smart contract deploy. |
Examples
> caver.utils.isContractDeployment({ type: 'SMART_CONTRACT_DEPLOY', from: '0x90B3E9A3770481345A7F17f22f16D020Bccfd33e', nonce: '0x8', data: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029', gas: '0x3b9ac9ff', gasPrice: '0x5d21dba00', value: '0x0', chainId: '0x1',})true> caver.utils.isContractDeployment({ type: 'LEGACY', from: '0x90B3E9A3770481345A7F17f22f16D020Bccfd33e', data: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029', gas: '0x3b9ac9ff',})true> caver.utils.isContractDeployment({ from: '0x90B3E9A3770481345A7F17f22f16D020Bccfd33e', data: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029', gas: '0x3b9ac9ff',})true> caver.utils.isContractDeployment({ type: 'ACCOUNT_UPDATE', from: '0x88e245dec96830f012f8fc1806bc623b3774560d', publicKey: '0x4ef27ba4b7d1ae09b166744c5b7ee4a7a0cc5c76b2e5d74523a0a4fb56db319162ff3255302045cd047a27141916d55615a7c1ead06e211e62119e7bc2a40def', nonce: '0x0', gas: '0x3b9ac9ff', chainId: '0x7e3', gasPrice: '0x5d21dba00',})false
xyPointFromPublicKey β
caver.utils.xyPointFromPublicKey(publicKey)
Returns the x and y coordinates of the given publicKey. For more information on key cryptography, see Elliptic-curve cryptography.
NOTE This function does not contain any logic to check whether the public key is valid. The function only split the input publicKey into x and y points by length.
Parameters
Name | Type | Description |
---|---|---|
publicKey | String | The publicKey to get x and y points. |
Return Value
Type | Description |
---|---|
Array | An array storing x and y points. Index 0 has x point, and index 1 has y point. |
Examples
> caver.utils.xyPointFromPublicKey('0xa5862ded55cd9c7e9ff246dbc264ca5d5c605308f59b74e581b4f089d4c8c88cb9f00df6a56493f6029af215d266c907660ea0f7a4111ea025ea9d9be418fa55')[ '0xa5862ded55cd9c7e9ff246dbc264ca5d5c605308f59b74e581b4f089d4c8c88c', '0xb9f00df6a56493f6029af215d266c907660ea0f7a4111ea025ea9d9be418fa55']
isHexPrefixed β
caver.utils.isHexPrefixed(input)
Returns true
if input is a 0x-prefixed hex string, otherwise it returns false
.
NOTE caver.klay.isHexPrefixed is supported from v1.0.1. To use this feature, please install v1.0.1 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | The value to be determined if the parameter is 0x-prefixed hex string or not. |
Return Value
Type | Description |
---|---|
Boolean | true means the input is 0x-prefixed hex string. |
Examples
> caver.utils.isHexPrefixed('0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9')true> caver.utils.isHexPrefixed('0x1')true> caver.utils.isHexPrefixed('0xqwer')false> caver.utils.isHexPrefixed('1')false
addHexPrefix β
caver.utils.addHexPrefix(input)
Returns a 0x-prefixed hex string. If the input is already 0x-prefixed or a non-hex string, the input value is returned as-is.
NOTE caver.klay.addHexPrefix is supported from v1.0.1. To use this feature, please install v1.0.1 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | String value to be prefixed with 0x. |
Return Value
Type | Description |
---|---|
String | 0x-prefixed hex string is returned. |
Examples
> caver.utils.addHexPrefix('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')'0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9'> caver.utils.addHexPrefix('0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9')'0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9'
stripHexPrefix β
caver.utils.stripHexPrefix(input)
Returns the result with 0x prefix stripped from input.
NOTE caver.klay.stripHexPrefix is supported from v1.0.1. To use this feature, please install v1.0.1 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | String to remove 0x prefix. |
Return Value
Type | Description |
---|---|
String | A string stripped of 0x is returned. |
Examples
> caver.utils.stripHexPrefix('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')'a5b0cd8c87e77879d64cc064ee239ed6f71cacf9'> caver.utils.stripHexPrefix('0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9')'a5b0cd8c87e77879d64cc064ee239ed6f71cacf9'
toBuffer β
caver.utils.toBuffer(input)
This function converts the input to a Buffer. To convert an Object into a Buffer using toBuffer
, the Object must implement toArray function. For String type input, this function only works with a 0x-prefixed hex string.
NOTE caver.klay.toBuffer is supported from v1.1.0. To use this feature, please install v1.1.0 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | Buffer | String | Number | Array | BN | Object | The value to be converted to a Buffer. |
Return Value
Type | Description |
---|---|
Buffer | The value converted to Buffer type is returned. |
Examples
// Buffer> caver.utils.toBuffer(Buffer.alloc(0))<Buffer >// 0x-prefixed hex string> caver.utils.toBuffer('0x1234')<Buffer 12 34>// Number> caver.utils.toBuffer(1)<Buffer 01>// Array> caver.utils.toBuffer([1,2,3])<Buffer 01 02 03>// BN> caver.utils.toBuffer(new caver.utils.BN(255))<Buffer ff>// Object that implements toArray function> caver.utils.toBuffer({toArray: function() {return [1,2,3,4]}})<Buffer 01 02 03 04>// null or undefined> caver.utils.toBuffer(null)<Buffer >> caver.utils.toBuffer(undefined)<Buffer >// non 0x-prefixed hex string> caver.utils.toBuffer('0xqwer')Error: Failed to convert string to Buffer. 'toBuffer' function only supports 0x-prefixed hex string// Object that does not implement toArray function> caver.utils.toBuffer({})Error: To convert an object to a buffer, the toArray function must be implemented inside the object
numberToBuffer β
caver.utils.numberToBuffer(input)
This function converts a number to a Buffer. The caver.utils.toBuffer has the same behavior as this function when the input is a number.
NOTE caver.klay.numberToBuffer is supported from v1.1.0. To use this feature, please install v1.1.0 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | Number | BN | A number to be converted to a Buffer. |
Return Value
Type | Description |
---|---|
Buffer | The value converted to Buffer type is returned. |
Examples
> caver.utils.numberToBuffer(1)<Buffer 01>> caver.utils.numberToBuffer('2')<Buffer 02>> caver.utils.numberToBuffer('0x3')<Buffer 03>> caver.utils.numberToBuffer(new caver.utils.BN(4))<Buffer 04>
isTxHash β
caver.utils.isTxHash(input)
Returns true
if input is in transaction hash format, otherwise it returns false
. This function only looks at the input and determines if it is in the format of a transaction hash.
NOTE caver.klay.isTxHash is supported from v1.2.0-rc.1. To use this feature, please install v1.2.0-rc.1 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | The value to be determined if the parameter is in the format of transaction hash or not. |
Return Value
Type | Description |
---|---|
Boolean | true means the input is in format of transaction hash. |
Examples
// with '0x' hex prefix> caver.utils.isTxHash('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')true// without '0x' hex prefix> caver.utils.isTxHash('e9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')true> caver.utils.isTxHash('0x1')false
isTxHashStrict β
caver.utils.isTxHashStrict(input)
Returns true
if input is in transaction hash format, otherwise it returns false
. This function only looks at the input and determines if it is in the format of a transaction hash. Difference to caver.utils.isTxHash is that it expects HEX to be prefixed with 0x
.
NOTE caver.klay.isTxHashStrict is supported from v1.2.0-rc.1. To use this feature, please install v1.2.0-rc.1 or higher.
Parameters
Name | Type | Description |
---|---|---|
input | String | The value to be determined if the parameter is in the format of transaction hash or not. |
Return Value
Type | Description |
---|---|
Boolean | true means the input is in the format of transaction hash. |
Examples
// with '0x' hex prefix> caver.utils.isTxHashStrict('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')true// without '0x' hex prefix> caver.utils.isTxHashStrict('e9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')false> caver.utils.isTxHashStrict('0x1')false
isValidPrivateKey β
caver.utils.isValidPrivateKey(privateKey)
Returns true
if privateKey is valid, otherwise it returns false
.
Parameters
Name | Type | Description |
---|---|---|
privateKey | String | A private key string to validate. |
Return Value
Type | Description |
---|---|
Boolean | true means the privateKey is valid. |
Examples
> caver.utils.isValidPrivateKey('0x{private key}')true> caver.utils.isValidPrivateKey('{private key}')true> caver.utils.isValidPrivateKey('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')false
isValidPublicKey β
caver.utils.isValidPublicKey(publicKey)
Returns true
if publicKey is valid, otherwise it returns false
.
NOTE caver.utils.isValidPublicKey
is supported since caver-js v1.2.0.
Parameters
Name | Type | Description |
---|---|---|
publicKey | String | A public key string to validate. |
Return Value
Type | Description |
---|---|
Boolean | true means the publicKey is valid. |
Examples
// validation with uncompressed public key> caver.utils.isValidPublicKey('0xbd6405a7f14f57ecea4a6ffe774ee26d051f7eed13257c9a574055b20e42bab0e8beba92e2e675101eb2a55ba4693080d0bf14548beae7bc93b18b72d10dd350')true// validation with compressed public key> caver.utils.isValidPublicKey('0x02bd6405a7f14f57ecea4a6ffe774ee26d051f7eed13257c9a574055b20e42bab0')true> caver.utils.isValidPublicKey('{private key}')false> caver.utils.isValidPublicKey('0x{private key}')false> caver.utils.isValidPublicKey('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')false
isValidRole β
caver.utils.isValidRole(role)
Returns true
if role is valid, otherwise it returns false
. Roles that are currently defined for AccountKeyRoleBased are transactionKey
, updateKey
, and feePayerKey
.
NOTE caver.utils.isValidRole
is supported since caver-js v1.2.0.
Parameters
Name | Type | Description |
---|---|---|
role | String | A role string to validate. |
Return Value
Type | Description |
---|---|
Boolean | true means the role is valid. |
Examples
> caver.utils.isValidRole('transactionKey')true> caver.utils.isValidRole('updateKey')true> caver.utils.isValidRole('feePayerKey')true> caver.utils.isValidRole('role')false
isEmptySig β
caver.utils.isEmptySig(sig)
Returns true
if sig is in the format of empty signature ([['0x01', '0x', '0x']]
or ['0x01', '0x', '0x']
), otherwise it returns false
.
When RLP-encoding a transaction in caver-js, if signatures or feePayerSignatures is empty, the value representing an empty signature, [['0x01', '0x', '0x']]
, is returned for the property. This function is used to check whether the given signature is [['0x01', '0x', '0x']]
(or ['0x01', '0x', '0x']
in the 'LEGACY' transaction).
NOTE caver.utils.isEmptySig
is supported since caver-js v1.2.0.
Parameters
Name | Type | Description |
---|---|---|
sig | Array | An array of signatures to check empty or not. |
Return Value
Type | Description |
---|---|
Boolean | true means the sig is [['0x01', '0x', '0x']] or ['0x01', '0x', '0x'] . |
Examples
> caver.utils.isEmptySig([['0x01', '0x', '0x']])true> caver.utils.isEmptySig(['0x01', '0x', '0x'])true> caver.utils.isValidRole([['0x25', '0xf3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29a', '0x6748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc']])false
isKlaytnWalletKey β
caver.utils.isKlaytnWalletKey(key)
Returns true
if key is in KlaytnWalletKey format, otherwise it returns false
.
NOTE caver.utils.isKlaytnWalletKey
has been updated with the additional logic for a more accurate result since caver-js v1.3.2-rc.3.
Parameters
Name | Type | Description |
---|---|---|
key | String | A key string to check in the format of KlaytnWalletKey or not. |
Return Value
Type | Description |
---|---|
Boolean | true means the key is 0x{private key}0x{type}0x{address in hex} or {private key}0x{type}0x{address in hex} . |
Examples
> caver.utils.isKlaytnWalletKey('0x{private key}0x{type}0x{address in hex}')true> caver.utils.isKlaytnWalletKey('{private key}0x{type}0x{address in hex}')true> caver.utils.isKlaytnWalletKey('0x{private key}')false
bufferToHex β
caver.utils.bufferToHex(buffer)
Converts buffer to 0x-prefixed hex string.
NOTE caver.utils.bufferToHex
is supported since caver-js v1.3.2-rc.1.
Parameters
Name | Type | Description |
---|---|---|
buffer | Buffer | A buffer to convert to hex string. |
Return Value
Type | Description |
---|---|
String | The 0x-prefixed hex string. |
Examples
> caver.utils.bufferToHex(Buffer.from('5b9ac8', 'hex'))'0x5b9ac8'> caver.utils.bufferToHex(Buffer.alloc(0))'0x'