>caver.utils.sha3('234'); // taken as string"0xc1912fee45d61c87cc5ea59dae311904cd86b84fee17cc96966216f811ce6a79">caver.utils.sha3(newBN('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
HEXpositive number is interpreted asuint256.<br> -String
Number
BNnegative number is interpreted asint256.<br> -Booleanasbool.<br> -StringHEX string with leading0xis interpreted asbytes.<br> -HEXHEX number representation is interpreted asuint256``.
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(newBN('234')); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2">caver.utils.soliditySha3({type:'uint256', value:'234'})); // same as above"0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2">caver.utils.soliditySha3({t:'uint', v:newBN('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.
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(newBN('234'));"0xea">caver.utils.toHex(newBigNumber('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.
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.
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.
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.
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.
Returns true if publicKey is valid, otherwise it returns false.
NOTEcaver.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.
NOTEcaver.utils.isValidRole is supported since caver-js v1.2.0.
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