caver.utils
caver-js utility APIs.
caver.utils
provides utility functions.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 prefixed with "0x". |
Return Value
Type | Description |
---|---|
string | The generated random HEX string. |
Example
> caver.utils.randomHex(32)
'0x861b56754dba7769f9740c3ad70b4694aa24d604c1dba3bac7ec45978927b8de'
> caver.utils.randomHex(4)
'0x5641d6ce'
> caver.utils.randomHex(2)
'0xf058'
> caver.utils.randomHex(1)
'0x7c'
> caver.utils.randomHex(0)
'0x'
caver.utils._()
Example
> var _ = caver.utils._
> _.union([1,2],[3])
[1,2,3]
> _.each({my: 'object'}, function(value, key){ ... })
...
caver.utils.toBN(number)
Safely converts any given value (including BigNumber.js instances) into a BN.js instance, for handling big numbers in JavaScript.
Parameters
Name | Type | Description |
---|---|---|
number | string | number | number to convert to a big number. |
Return Value
Type | Description |
---|---|
Object |
Examples
> caver.utils.toBN(1234).toString()
'1234'
> caver.utils.toBN('1234').add(caver.utils.toBN('1')).toString()
'1235'
> caver.utils.toBN('0xea').toString()
'234'
caver.utils.isBN(bn)
Parameters
Name | Type | Description |
---|---|---|
bn | object |
Return Value
Type | Description |
---|---|
boolean |
Example
> var number = new caver.utils.BN(10)
> caver.utils.isBN(number)
true
caver.utils.isBigNumber(bignumber)
Parameters
Name | Type | Description |
---|---|---|
bignumber | object |
Return Value
Type | Description |
---|---|
boolean | true if a given value is a BigNumber.js instance. |
Example
> var number = new caver.utils.BigNumber(10)
> caver.utils.isBigNumber(number)
true
caver.utils.sha3(str)
caver.utils.keccak256(str) // ALIAS
Calculates the sha3 of the input.
Parameters
Name | Type | Description |
---|---|---|
str | 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 caver.utils.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 number
null
> caver.utils.sha3('0xea') // will be converted to a byte array first, and then hashed
'0x2f20677459120677484f7104c76deb6846a2c071f9b3152c103bb12cd54d1a4a'
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 |
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 caver.utils.BN('234')) // same as above
'0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2'
> caver.utils.soliditySha3({type: 'uint256', value: '234'})) // same as above
'0x61c831beab28d67d1bb40b5ae1a11e2757fa842f031a2d0bc94a7867bc5d26c2'
> caver.utils.soliditySha3({t: 'uint', v: new caver.utils.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'
caver.utils.isHex(hex)
Checks if a given string is a HEX string.
Parameters
Name | Type | Description |
---|---|---|
hex | string | The given HEX string. |
Return Value
Type | Description |
---|---|
boolean | true if a given parameter is a HEX string. |
Example
> caver.utils.isHex('0xc1912')
true
> caver.utils.isHex('c1912')
true
> caver.utils.isHex('0xZ1912')
false
> caver.utils.isHex('Hello')
false
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 | 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('c1912')
false
> caver.utils.isHexStrict('0xZ1912')
false
> caver.utils.isHex('Hello')
false
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
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
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
caver.utils.toHex(mixed)
Converts any given value to HEX. The numeric strings will be 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 caver.utils.BN('234'))
'0xea'
> caver.utils.toHex(new caver.utils.BigNumber('234'))
'0xea'
> caver.utils.toHex('I have 100€')
'0x49206861766520313030e282ac'
caver.utils.hexToNumberString(hex)
Returns the number representation of a given HEX value as a string.
Parameters
Name | Type | Description |
---|---|---|
hexstring | string | A HEX string to be converted. |
Return Value
Type | Description |
---|---|
string | The number as a string. |
Examples
> caver.utils.hexToNumberString('0xea')
"234"
caver.utils.hexToNumber(hex)
Returns the number representation of a given HEX value.
Parameters
Name | Type | Description |
---|---|---|
hexstring | 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
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'
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€'
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 an ASCII string. |
Return Value
Type | Description |
---|---|
string | The ASCII string. |
Examples
> caver.utils.hexToAscii('0x4920686176652031303021')
'I have 100!'
caver.utils.utf8ToHex(str)
caver.utils.stringToHex(str) // ALIAS
Returns the HEX representation of a given UTF-8 string.
Parameters
Name | Type | Description |
---|---|---|
str | 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'
caver.utils.asciiToHex(str)
Returns the HEX representation of a given ASCII string.
Parameters
Name | Type | Description |
---|---|---|
str | 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'
caver.utils.hexToBytes(hex)
Returns a byte array from the given HEX string.
Parameters
Name | Type | Description |
---|---|---|
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 ]
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 ])
'0x48656c6c6f2124'
caver.utils.convertToPeb(number [, unit])
Converts any KLAY value into peb.
NOTE: "peb" is the smallest KLAY unit, and you should always use "peb" as the unit of KLAY. Convert to "KLAY" only for display reasons.
Parameters
Name | Type | Description |
---|---|---|
number | string | number | BN | The value. |
unit | string | (optional, defaults to "KLAY" ) The unit of KLAY to convert from. number will be multiplied by one of the following multipliers for the unit provided:
- 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 |
Examples
> caver.utils.convertToPeb('1', 'KLAY')
'1000000000000000000'
> caver.utils.convertToPeb(caver.utils.toBN(1), 'KLAY')
<BN: de0b6b3a7640000>
caver.utils.convertFromPeb(number [, unit])
NOTE: "peb" is the smallest KLAY unit, and you should always use "peb" as the unit of KLAY. Convert to "KLAY" only for display reasons.
Parameters
Name | Type | Description |
---|---|---|
number | string | number | BN | BigNumber | The value in peb. |
unit | string | (optional, defaults to "KLAY" ) The unit of KLAY to convert your "peb" into. number will be divided by one of the following denominators for the unit provided:
- 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 | The string number. |
Examples
> caver.utils.convertFromPeb('1', 'KLAY')
'0.000000000000000001'
caver.utils.unitMap
Shows all possible KLAY values and their amount in peb.