Nhảy tới nội dung

caver.utils

caver.utils cung cấp các chức năng tiện ích.

randomHex


caver.utils.randomHex(size)

Thư viện randomHex để tạo các chuỗi số HEX giả ngẫu nhiên được mã hóa mạnh mẽ từ một kích thước byte nhất định.

Tham số

TêntypeMô tả
sizesốKích thước byte cho chuỗi số HEX, ví dụ:: 32 sẽ dẫn đến chuỗi số HEX 32 byte có 64 ký tự bắt đầu bằng "0x".

Giá trị trả về

typeMô tả
chuỗiChuỗi số HEX ngẫu nhiên được tạo.

Ví dụ


> 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._()

Thư viện underscore dành cho nhiều hàm JavaScript thuận tiện.

Xem tham chiếu API underscore để biết chi tiết.

Ví dụ


> var _ = caver.utils._
> _.union([1,2],[3])
[1,2,3]
> _.each({my: 'object'}, function(value, key){ ... })
...

toBN


caver.utils.toBN(number)

Chuyển đổi một cách an toàn mọi giá trị đã cho (bao gồm đối tượng BigNumber.js) thành BN.js để xử lý các số lớn trong JavaScript.

Tham số

TêntypeMô tả
numberchuỗi | sốsố để chuyển đổi thành một số lớn.

Giá trị trả về

LoạiMô tả
Đối tượngPhiên bản BN.js.

Ví dụ


> caver.utils.toBN(1234).toString()
'1234'
> caver.utils.toBN('1234').add(caver.utils.toBN('1')).toString()
'1235'
> caver.utils.toBN('0xea').toString()
'234'

isBN


caver.utils.isBN(bn)

Kiểm tra xem một giá trị đã cho có phải là phiên bản BN.js hay không.

Tham số

TênLoạiMô tả
bnđối tượngMột phiên bản BN.js.

Giá trị trả về

LoạiMô tả
booleantrue nếu giá trị đã cho là phiên bản BN.js.

Ví dụ


> var number = new caver.utils.BN(10)
> caver.utils.isBN(number)
true

isBigNumber


caver.utils.isBigNumber(bignumber)

Kiểm tra xem một giá trị đã cho có phải là phiên bản BigNumber.js hay không..

Tham số

TênLoạiMô tả
bignumberđối tượngMột phiên bản BigNumber.js.

Giá trị trả về

LoạiMô tả
booleantrue nếu giá trị đã cho là đối tượng BigNumber.js.

Ví dụ


> var number = new caver.utils.BigNumber(10)
> caver.utils.isBigNumber(number)
true

sha3


caver.utils.sha3(str)
caver.utils.keccak256(str) // ALIAS

Tính toán sha3 của giá trị đầu vào.

LƯU Ý: Để bắt chước hành vi sha3 của việc sử dụng Solidity caver.utils.soliditySha3.

Tham số

TênLoạiMô tả
strchuỗiMột chuỗi thành hàm băm.

Giá trị trả về

LoạiMô tả
chuỗiHàm băm kết quả.

Ví dụ


> 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'

soliditySha3


caver.utils.soliditySha3(param1 [, param2, ...])

Tính toán sha3 của các tham số đầu vào đã cho theo cách tương tự như solidity. Điều này có nghĩa các đối số sẽ được chuyển đổi thành ABI và đóng gói chặt chẽ trước khi đưa vào hàm băm.

Tham số

TênLoạiMô tả
paramXHỗn hợp

Bất kỳ loại hoặc đối tượng nào có {type: 'uint', value: '123456'} hoặc {t: 'bytes', v: '0xfff456'}. Các loại cơ bản được tự động phát hiện như sau:
- string chuỗi UTF-8 không phải là số được hiểu là string.
- `string

Giá trị trả về

LoạiMô tả
chuỗiHàm băm kết quả.

Ví dụ


> 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'

isHex


caver.utils.isHex(hex)

Kiểm tra xem một chuỗi đã cho có phải là chuỗi số HEX hay không.

Tham số

TênLoạiMô tả
hexchuỗiChuỗi số HEX đã cho.

Giá trị trả về

LoạiMô tả
booleantrue nếu tham số đã cho là chuỗi số HEX.

Ví dụ


> caver.utils.isHex('0xc1912')
true
> caver.utils.isHex('c1912')
true
> caver.utils.isHex('0xZ1912')
false
> caver.utils.isHex('Hello')
false

isHexStrict


caver.utils.isHexStrict(hex)

Kiểm tra xem một chuỗi đã cho có phải là chuỗi số HEX hay không. Sự khác biệt đối với caver.utils.isHex là nó cho là HEX có tiền tố là 0x.

Tham số

TênLoạiMô tả
hexchuỗiChuỗi số HEX đã cho.

Giá trị trả về

LoạiMô tả
booleantrue nếu một chuỗi đã cho là một chuỗi số HEX.

Ví dụ


> caver.utils.isHexStrict('0xc1912')
true
> caver.utils.isHexStrict('c1912')
false
> caver.utils.isHexStrict('0xZ1912')
false
> caver.utils.isHex('Hello')
false

isAddress


caver.utils.isAddress(address)

Kiểm tra xem chuỗi đã cho có phải là địa chỉ Klaytn hợp lệ hay không. Nó cũng sẽ kiểm tra giá trị tổng kiểm nếu địa chỉ có chữ hoa và chữ thường.

Tham số

TêntypeMô tả
addresschuỗiMột chuỗi địa chỉ.

Giá trị trả về

LoạiMô tả
booleantrue nếu chuỗi đã cho là địa chỉ Klaytn hợp lệ.

Ví dụ


> 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)

Chuyển đổi địa chỉ Klaytn viết hoa hoặc viết thường thành địa chỉ giá trị tổng kiểm.

Tham số

TênLoạiMô tả
addresschuỗiMột chuỗi địa chỉ.

Giá trị trả về

LoạiMô tả
chuỗiĐịa chỉ giá trị tổng kiểm.

Ví dụ


> caver.utils.toChecksumAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d')
'0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d'
> caver.utils.toChecksumAddress('0XC1912FEE45D61C87CC5EA59DAE31190FFFFF232D')
'0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d' // same as above

checkAddressChecksum


caver.utils.checkAddressChecksum(address)

Kiểm tra giá trị tổng kiểm của một địa chỉ đã cho. Trả về false trên các địa chỉ không phải là giá trị tổng kiểm.

Tham số

TênLoạiMô tả
addresschuỗiMột chuỗi địa chỉ.

Giá trị trả về

typeMô tả
booleantrue khi giá trị tổng kiểm của địa chỉ hợp lệ, false nếu đó không phải là địa chỉ giá trị tổng kiểm hoặc giá trị tổng kiểm không hợp lệ.

Ví dụ


> caver.utils.checkAddressChecksum('0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d')
true

toHex


caver.utils.toHex(mixed)

Chuyển đổi giá trị đã cho bất kỳ thành HEX. Các chuỗi số sẽ được hiểu là số. Chuỗi văn bản sẽ được hiểu là chuỗi UTF-8.

Tham số

TênLoạiMô tả
mixedchuỗi | số | BN | BigNumberĐầu vào để chuyển đổi sang HEX.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi số HEX kết quả.

Ví dụ


> 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'

hexToNumberString


caver.utils.hexToNumberString(hex)

Trả về biểu diễn số của một giá trị HEX nhất định dưới dạng chuỗi.

Tham số

TêntypeMô tả
hexstringchuỗiMột chuỗi số HEX được chuyển đổi.

Giá trị trả về

LoạiMô tả
chuỗiSố dưới dạng chuỗi.

Ví dụ


> caver.utils.hexToNumberString('0xea')
"234"

hexToNumber


caver.utils.hexToNumber(hex)

Trả về biểu diễn số của một giá trị HEX đã cho.

LƯU Ý: Hàm này không hiệu quả với các số lớn, thay vào đó hãy sử dụng caver.utils.toBN.

Tham số

TênLoạiMô tả
hexstringchuỗiMột chuỗi số HEX được chuyển đổi.

Giá trị trả về

LoạiMô tả
sốBiểu diễn số của một giá trị HEX đã cho.

Ví dụ


> caver.utils.hexToNumber('0xea')
234

numberToHex


caver.utils.numberToHex(number)

Trả về biểu diễn HEX của một giá trị số đã cho.

Tham số

TênLoạiMô tả
numberchuỗi | số | BN | BigNumberMột số dưới dạng chuỗi hoặc số.

Giá trị trả về

LoạiMô tả
chuỗiGiá trị HEX của số đã cho.

Ví dụ


> caver.utils.numberToHex('234')
'0xea'

hexToUtf8


caver.utils.hexToUtf8(hex)
caver.utils.hexToString(hex) // ALIAS

Trả về biểu diễn chuỗi UTF-8 của một giá trị HEX đã cho.

Tham số

TênLoạiMô tả
hexchuỗiChuỗi số HEX để chuyển đổi thành chuỗi UTF-8.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi UTF-8.

Ví dụ


> caver.utils.hexToUtf8('0x49206861766520313030e282ac')
'I have 100€'

hexToAscii


caver.utils.hexToAscii(hex)

Trả về biểu diễn chuỗi ASCII của một giá trị HEX đã cho.

Tham số

TênLoạiMô tả
hexchuỗiMột chuỗi số HEX để chuyển đổi thành một chuỗi ASCII.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi ASCII.

Ví dụ


> caver.utils.hexToAscii('0x4920686176652031303021')
'I have 100!'

utf8ToHex


caver.utils.utf8ToHex(str)
caver.utils.stringToHex(str) // ALIAS

Trả về biểu diễn HEX của một chuỗi UTF-8 đã cho.

Tham số

TênLoạiMô tả
strchuỗiChuỗi UTF-8 để chuyển đổi thành chuỗi số HEX.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi số HEX.

Ví dụ


> caver.utils.utf8ToHex('I have 100€')
'0x49206861766520313030e282ac'

asciiToHex


caver.utils.asciiToHex(str)

Trả về biểu diễn HEX của một chuỗi ASCII đã cho.

Tham số

TênLoạiMô tả
strchuỗiMột chuỗi ASCII để chuyển đổi thành chuỗi số HEX.

Giá trị trả về

typeMô tả
chuỗiChuỗi số HEX.

Ví dụ


> caver.utils.asciiToHex('I have 100!')
'0x4920686176652031303021'

hexToBytes


caver.utils.hexToBytes(hex)

Trả về một mảng byte từ chuỗi số HEX đã cho.

Tham số

TênLoạiMô tả
hexchuỗiMột chuỗi số HEX được chuyển đổi.

Giá trị trả về

LoạiMô tả
MảngMảng byte.

Ví dụ


> caver.utils.hexToBytes('0x000000ea')
[ 0, 0, 0, 234 ]

bytesToHex


caver.utils.bytesToHex(byteArray)

Trả về một chuỗi số HEX từ một mảng byte.

Tham số

TêntypeMô tả
byteArrayMảngMột mảng byte để chuyển đổi.

Giá trị trả về

typeMô tả
chuỗiChuỗi số HEX.

Ví dụ


> caver.utils.bytesToHex([ 72, 101, 108, 108, 111, 33, 36 ])
'0x48656c6c6f2124'

convertToPeb


caver.utils.convertToPeb(number [, unit])

Chuyển đổi giá trị KLAY bất kỳ thành peb.

LƯU Ý: "peb" là đơn vị KLAY nhỏ nhất và bạn phải luôn sử dụng "peb" làm đơn vị của KLAY. Chỉ chuyển đổi thành "KLAY" phục vụ mục đích hiển thị.

Tham số

TênLoạiMô tả
numberchuỗi | số | BNGiá trị.
đơn vịchuỗi

(tùy chọn, mặc định là "KLAY") Đơn vị KLAY để chuyển đổi. number sẽ được nhân với một trong các hệ số sau cho đơn vị được cung cấp:
- peb: '1'
- kpeb: '1000'
- Mpeb: '1000000'
- Gpeb: '1000000000'
- Ston: '1000000000'
- uKLAY: '1000000000000'
- mKLAY: '1000000000000000'
- KLAY: '1000000000000000000'
- kKLAY: '1000000000000000000000'
- MKLAY: '1000000000000000000000000'
- GKLAY: '1000000000000000000000000000'

Giá trị trả về

LoạiMô tả
chuỗi | BNNếu tham số số là một đối tượng BN thì nó trả về một đối tượng BN, nếu không thì sẽ trả về một chuỗi.

Ví dụ


> caver.utils.convertToPeb('1', 'KLAY')
'1000000000000000000'
> caver.utils.convertToPeb(caver.utils.toBN(1), 'KLAY')
<BN: de0b6b3a7640000>

convertFromPeb


caver.utils.convertFromPeb(number [, unit])

LƯU Ý: "peb" là đơn vị KLAY nhỏ nhất và bạn phải luôn sử dụng "peb" làm đơn vị của KLAY. Chỉ chuyển đổi thành "KLAY" phục vụ mục đích hiển thị.

Tham số

TênLoạiMô tả
numberchuỗi | số | BN | BigNumberGiá trị tính bằng peb.
đơn vịchuỗi

(tùy chọn, mặc định là "KLAY") Đơn vị KLAY để chuyển đổi "peb" của bạn thành. number sẽ được chia cho một trong các mẫu số sau cho đơn vị được cung cấp:
- peb: '1'
- kpeb: '1000'
- Mpeb: '1000000'
- Gpeb: '1000000000'
- Ston: '1000000000'
- uKLAY: '1000000000000'
- mKLAY: '1000000000000000'
- KLAY: '1000000000000000000'
- kKLAY: '1000000000000000000000'
- MKLAY: '1000000000000000000000000'
- GKLAY: '1000000000000000000000000000'

Giá trị trả về

LoạiMô tả
chuỗiSố chuỗi.

Ví dụ


> caver.utils.convertFromPeb('1', 'KLAY')
'0.000000000000000001'

unitMap


caver.utils.unitMap

Hiển thị tất cả các giá trị KLAY có thể có và số lượng của chúng tính bằng peb.

Giá trị trả về

LoạiMô tả
Đối tượng

Với các thuộc tính sau:
- peb: '1'
- kpeb: '1000'
- Mpeb: '1000000'
- Gpeb: '1000000000'
- Ston: '1000000000'
- uKLAY: '1000000000000'
- mKLAY: '1000000000000000'
- KLAY: '1000000000000000000'
- kKLAY: '1000000000000000000000'
- MKLAY: '1000000000000000000000000'
- GKLAY: '1000000000000000000000000000'
- TKLAY: '1000000000000000000000000000000'

Ví dụ


> 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',
TKLAY: '1000000000000000000000000000000'
}

klayUnit


caver.utils.klayUnit

Hiển thị tất cả các đơn vị KLAY.

Giá trị trả về

LoạiMô tả
Đối tượngMột đối tượng trong đó các đơn vị của KLAY được sử dụng trong Klaytn được xác định. Mỗi đơn vị có tên và pebFactor riêng. pebFactor được sử dụng khi chuyển đổi KLAY hiện được chuyển trong mỗi đơn vị thành 'peb'.

Ví dụ


> caver.utils.klayUnit
{
peb: { unit: 'peb', pebFactor: 0 },
kpeb: { unit: 'kpeb', pebFactor: 3 },
Mpeb: { unit: 'Mpeb', pebFactor: 6 },
Gpeb: { unit: 'Gpeb', pebFactor: 9 },
ston: { unit: 'ston', pebFactor: 9 },
uKLAY: { unit: 'uKLAY', pebFactor: 12 },
mKLAY: { unit: 'mKLAY', pebFactor: 15 },
KLAY: { unit: 'KLAY', pebFactor: 18 },
kKLAY: { unit: 'kKLAY', pebFactor: 21 },
MKLAY: { unit: 'MKLAY', pebFactor: 24 },
GKLAY: { unit: 'GKLAY', pebFactor: 27 },
TKLAY: { unit: 'TKLAY', pebFactor: 30 }
}

padLeft


caver.utils.padLeft(string, characterAmount [, sign])
caver.utils.leftPad(string, characterAmount [, sign]) // ALIAS

Thêm khoảng trống vào bên trái của một chuỗi. Hữu ích khi thêm phần đệm vào chuỗi số HEX.

Tham số

TênLoạiMô tả
stringchuỗiChuỗi để thêm phần đệm vào bên trái.
characterAmountsốSố lượng ký tự mà tổng chuỗi phải có.
signchuỗi(tùy chọn) Dấu hiệu ký tự để sử dụng, mặc định là 0.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi đệm.

Ví dụ


> caver.utils.padLeft('0x3456ff', 20)
'0x000000000000003456ff'
> caver.utils.padLeft(0x3456ff, 20)
'0x000000000000003456ff'
> caver.utils.padLeft('Hello', 20, 'x')
'xxxxxxxxxxxxxxxHello'

padRight


caver.utils.padRight(str, characterAmount [, sign])
caver.utils.rightPad(str, characterAmount [, sign]) // ALIAS

Thêm khoảng trống vào bên phải của chuỗi, Hữu ích khi thêm phần đệm vào chuỗi số HEX.

Tham số

TênLoạiMô tả
strchuỗiChuỗi để thêm phần đệm vào bên phải.
characterAmountsốSố lượng ký tự mà tổng chuỗi phải có.
signchuỗi(tùy chọn) Dấu hiệu ký tự để sử dụng, mặc định là 0.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi đệm.

Ví dụ


> caver.utils.padRight('0x3456ff', 20)
'0x3456ff00000000000000'
> caver.utils.padRight(0x3456ff, 20)
'0x3456ff00000000000000'
> caver.utils.padRight('Hello', 20, 'x')
'Helloxxxxxxxxxxxxxxx'

trimLeadingZero


caver.utils.trimLeadingZero(hexString)

Xóa số 0 đứng đầu khỏi chuỗi số hex có tiền tố 0x.

Tham số

TênLoạiMô tả
hexStringchuỗiMột chuỗi số hex để cắt.

Giá trị trả về

LoạiMô tả
chuỗiMột chuỗi số hex không có số 0 đứng đầu.

Ví dụ


> caver.utils.trimLeadingZero('0x000011')
0x11

makeEven


caver.utils.makeEven(hexString)

Trả về một chuỗi có độ dài chẵn.

Tham số

TênLoạiMô tả
hexStringchuỗiMột chuỗi số hex để tạo số chẵn.

Giá trị trả về

LoạiMô tả
chuỗiMột chuỗi có độ dài chẵn.

Ví dụ


> caver.utils.makeEven('0x011')
0x0011

toTwosComplement


caver.utils.toTwosComplement(num)

Chuyển đổi một số âm thành phần bù hai.

Tham số

TênLoạiMô tả
numsố | chuỗi | BigNumberSố để chuyển đổi.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi số hex đã chuyển đổi.

Ví dụ


> 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)

Trả về true nếu giao dịch đã cho là giao dịch triển khai hợp đồng thông minh. Trả về false nếu giao dịch không phải là giao dịch triển khai hợp đồng thông minh. Kết quả được xác định bởi giá trị của các tham số trong transactionObject. Đảm bảo tất cả các tham số bắt buộc được đặt chính xác.

Tham số

TênLoạiMô tả
transactionObjectđối tượngĐối tượng Giao dịch để kiểm tra giao dịch triển khai hợp đồng hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là đối tượng giao dịch dùng cho việc triển khai hợp đồng thông minh.

Ví dụ


> caver.utils.isContractDeployment(caver.transaction.legacyTransaction.create({
to: '0x9957dfd92e4b70f91131c573293343bc5f21f215',
value: caver.utils.toPeb(1, 'KLAY'),
gas: 25000,
}))
false
> caver.utils.isContractDeployment(caver.transaction.legacyTransaction.create({
input: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029',
gas: 200000,
}))
true
> caver.utils.isContractDeployment(caver.transaction.smartContractDeploy.create({
from: '0x88e245dec96830f012f8fc1806bc623b3774560d',
input: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029',
gas: 100000,
}))
true
> caver.utils.isContractDeployment(caver.transaction.feeDelegatedSmartContractDeploy.create({
from: '0x88e245dec96830f012f8fc1806bc623b3774560d',
input: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029',
gas: 100000,
}))
true
> caver.utils.isContractDeployment(caver.transaction.feeDelegatedSmartContractDeployWithRatio.create({
from: '0x88e245dec96830f012f8fc1806bc623b3774560d',
input: '0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029',
gas: 100000,
feeRatio: 30,
}))
true

xyPointFromPublicKey


caver.utils.xyPointFromPublicKey(publicKey)

Trả về tọa độ x và y của publicKey đã cho. Để biết thêm thông tin về mật mã khóa, xem Mật mã đường cong Elliptic.

LƯU Ý Hàm này không chứa bất kỳ logic nào để kiểm tra xem khóa công khai có hợp lệ hay không. Hàm chỉ chia publicKey đầu vào thành các điểm x và y theo độ dài. Để xác thực khóa công khai, vui lòng sử dụng isValidPublicKey.

Tham số

TênLoạiMô tả
publicKeychuỗiPublicKey để nhận điểm x và y.

Giá trị trả về

LoạiMô tả
MảngMột mảng lưu trữ các điểm x và y. Chỉ mục 0 có điểm x và chỉ mục 1 có điểm y.

Ví dụ


> caver.utils.xyPointFromPublicKey('0xa5862ded55cd9c7e9ff246dbc264ca5d5c605308f59b74e581b4f089d4c8c88cb9f00df6a56493f6029af215d266c907660ea0f7a4111ea025ea9d9be418fa55')
[
'0xa5862ded55cd9c7e9ff246dbc264ca5d5c605308f59b74e581b4f089d4c8c88c',
'0xb9f00df6a56493f6029af215d266c907660ea0f7a4111ea025ea9d9be418fa55'
]

isHexPrefixed


caver.utils.isHexPrefixed(input)

Trả về true nếu đầu vào là chuỗi số hex có tiền tố 0x, nếu không nó sẽ trả về false.

Tham số

TênLoạiMô tả
nhậpchuỗiGiá trị được xác định xem tham số có phải là chuỗi số hex có tiền tố 0x hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là đầu vào là chuỗi số hex có tiền tố 0x.

Ví dụ


> 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)

Trả về một chuỗi số hex có tiền tố là 0x. Nếu đầu vào đã có tiền tố 0x hoặc một chuỗi không phải hex thì giá trị đầu vào được trả về nguyên trạng.

Tham số

TênLoạiMô tả
nhậpchuỗigiá trị chuỗi có tiền tố là 0x.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi hex có tiền tố 0x sẽ được trả về.

Ví dụ


> caver.utils.addHexPrefix('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')
'0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9'
> caver.utils.addHexPrefix('0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9')
'0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9'

stripHexPrefix


caver.utils.stripHexPrefix(input)

Trả về kết quả với tiền tố 0x bị loại bỏ khỏi đầu vào.

LƯU Ý caver.klay.stripHexPrefix được hỗ trợ từ phiên bản v1.0.1. Để sử dụng tính năng này, vui lòng cài đặt phiên bản v1.0.1 trở lên.

Tham số

TênLoạiMô tả
nhậpchuỗichuỗi để xóa tiền tố 0x.

Giá trị trả về

LoạiMô tả
chuỗiMột chuỗi bị loại bỏ 0x được trả về.

Ví dụ


> caver.utils.stripHexPrefix('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')
'a5b0cd8c87e77879d64cc064ee239ed6f71cacf9'
> caver.utils.stripHexPrefix('0xa5b0cd8c87e77879d64cc064ee239ed6f71cacf9')
'a5b0cd8c87e77879d64cc064ee239ed6f71cacf9'

toBuffer


caver.utils.toBuffer(input)

Hàm này chuyển đổi đầu vào thành Bộ đệm. Để chuyển đổi một đối tượng thành Bộ đệm bằng toBuffer, đối tượng đó phải triển khai hàm toArray. Đối với đầu vào loại chuỗi, hàm này chỉ hoạt động với chuỗi hex có tiền tố 0x.

Tham số

TênLoạiMô tả
nhậpBộ đệm | chuỗi | số | Mảng | BN | BigNumber | đối tượngGiá trị được chuyển đổi thành Bộ đệm.

LƯU Ý Loại BigNumber được hỗ trợ kể từ caver-js phiên bản v1.6.4.

Giá trị trả về

LoạiMô tả
Bộ đệmGiá trị được chuyển đổi thành loại Bộ đệm được trả về.

Ví dụ


// 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)

Hàm này chuyển đổi một số thành Bộ đệm. caver.utils.toBuffer ó hành vi tương tự như hàm này khi đầu vào là một số.

Tham số

TênLoạiMô tả
nhậpchuỗi | số | BN | BigNumberMột số được chuyển đổi thành Bộ đệm.

Giá trị trả về

LoạiMô tả
Bộ đệmGiá trị được chuyển đổi thành loại Bộ đệm được trả về.

Ví dụ


> 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>

isValidHash


caver.utils.isValidHash(input)

Trả về true nếu đầu vào ở định dạng hàm băm 32 byte nếu không nó sẽ trả về false.

Tham số

TênLoạiMô tả
nhậpchuỗiGiá trị được kiểm tra xem nó có ở định dạng hàm băm 32 byte hay không.

Giá trị trả về

LoạiMô tả
booleantrue có nghĩa là đầu vào ở định dạng hàm băm 32 byte.

Ví dụ


// with '0x' hex prefix
> caver.utils.isValidHash('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')
true
// without '0x' hex prefix
> caver.utils.isValidHash('e9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')
true
> caver.utils.isValidHash('0x1')
false

isValidHashStrict


caver.utils.isValidHashStrict(input)

Trả về true nếu đầu vào ở định dạng hàm băm 32 byte có tiền tố 0x, nếu không nó sẽ trả về false. Hàm này chỉ xem xét đầu vào và xác định xem nó có ở định dạng hàm băm 32 byte có tiền tố 0x hay không. Sự khác biệt đối với caver.utils.isValidHash là nó cho là HEX có tiền tố là 0x.

Tham số

TênLoạiMô tả
nhậpchuỗiGiá trị được xem xét xem nó có ở định dạng hàm băm 32 byte có tiền tố 0x hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là đầu vào ở định dạng hàm băm 32 byte có tiền tố 0x.

Ví dụ


// with '0x' hex prefix
> caver.utils.isValidHashStrict('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')
true
// without '0x' hex prefix
> caver.utils.isValidHashStrict('e9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550')
false
> caver.utils.isValidHashStrict('0x1')
false

isTxHash


caver.utils.isTxHash(input)

Trả về true nếu đầu vào ở định dạng hàm băm giao dịch, nếu không nó sẽ trả về false. Hàm này chỉ xem xét đầu vào và xác định xem nó có ở định dạng hàm băm giao dịch hay không.

LƯU Ý Hàm này không được dùng nữa. Sử dụng isValidHash để xác định xemt hàm băm hợp lệ có dài 32 byte hay không.

Tham số

TênLoạiMô tả
nhậpchuỗiGiá trị được xác định xem tham số có ở định dạng hàm băm giao dịch hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là đầu vào ở định dạng hàm băm giao dịch.

Ví dụ


// 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)

Trả về true nếu đầu vào ở định dạng hàm băm giao dịch, nếu không nó sẽ trả về false. Hàm này chỉ xem xét đầu vào và xác định xem nó có ở định dạng hàm băm giao dịch hay không. Sự khác biệt đối với caver.utils.isTxHash là nó cho là HEX có tiền tố là 0x.

LƯU Ý Hàm này không được dùng nữa. Sử dụng isValidHashStrict để xác định xem một hàm băm hợp lệ có dài 32 byte hay không.

Tham số

TênLoạiMô tả
nhậpchuỗiGiá trị được xác định xem tham số có ở định dạng hàm băm giao dịch hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là đầu vào ở định dạng hàm băm giao dịch.

Ví dụ


// 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)

Trả về true nếu privateKey hợp lệ, nếu không nó sẽ trả về false.

Tham số

TênLoạiMô tả
privateKeychuỗiChuỗi khóa riêng để xác thực.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là privateKey hợp lệ.

Ví dụ


> caver.utils.isValidPrivateKey('0x{private key}')
true
> caver.utils.isValidPrivateKey('{private key}')
true
> caver.utils.isValidPrivateKey('a5b0cd8c87e77879d64cc064ee239ed6f71cacf9')
false

isValidPublicKey


caver.utils.isValidPublicKey(publicKey)

Trả về true nếu publicKey hợp lệ, nếu không sẽ trả về false.

Tham số

TênLoạiMô tả
publicKeychuỗiChuỗi khóa công khai để xác thực.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là publicKey hợp lệ.

Ví dụ


// 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)

Trả về true nếu vai trò hợp lệ, nếu không nó sẽ trả về false. Bạn có thể kiểm tra các vai trò được caver-js hỗ trợ thông qua caver.wallet.keyring.role.

Tham số

TênLoạiMô tả
vai tròchuỗiMột chuỗi vai trò để xác thực.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là vai trò hợp lệ.

Ví dụ


> caver.utils.isValidRole('roleTransactionKey')
true
> caver.utils.isValidRole('role')
false

isValidBlockNumberCandidate


caver.utils.isValidBlockNumberCandidate(input)

Xác thực số khối (hoặc chuỗi thẻ khối).

Số khối phải là một trong các loại dưới đây:

  • số khối được xác định trước, ví dụ:) 'mới nhất', 'cũ nhất', 'đang chờ xử lý', 'khởi nguyên'
  • hex
  • số giới hạn

Tham số

TênLoạiMô tả
blockNumberchuỗi | sốSố khối để xác thực. Đây có thể là số khối ở dạng số hoặc thẻ khối (latest, pending, earliest, genesis).

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là blockNumber hợp lệ.

Ví dụ


> caver.utils.isValidBlockNumberCandidate('latest')
true
> caver.utils.isValidBlockNumberCandidate('0x1')
true
> caver.utils.isValidBlockNumberCandidate(1)
true

isPredefinedBlockNumber


caver.utils.isPredefinedBlockNumber(input)

Trả về true nếu tham số là thẻ khối được xác định trước.

Tham số

TênLoạiMô tả
predefinedBlockchuỗiCác khối được xác định trước.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là predefinedBlock là thẻ khối được xác định trước hợp lệ.

Ví dụ


> caver.utils.isPredefinedBlockNumber('latest')
true
> caver.utils.isPredefinedBlockNumber('0x1')
false

isEmptySig


caver.utils.isEmptySig(sig)

Trả về true nếu sig ở định dạng chữ ký trống (SignatureData { _v: '0x01', _r: '0x', _s: '0x' } hoặc [SignatureData { _v: '0x01', _r: '0x', _s: '0x' }]) còn không nó sẽ trả về false.

Trong caver-js, nếu signatures hoặc feePayerSignatures trống thì giá trị đại diện cho chữ ký trống, [SignatureData { _v: '0x01', _r: '0x', _s: '0x' }], được trả về cho thuộc tính. Hàm này dùng để kiểm tra xem chữ ký đã cho có phải là [SignatureData { _v: '0x01', _r: '0x', _s: '0x' }] (hoặc SignatureData { _v: '0x01', _r: '0x', _s: '0x' } trong giao dịch 'LEGACY').

Tham số

TênLoạiMô tả
sigđối tượng | MảngMột đối tượng SignatureData hoặc mảng SignatureData để kiểm tra trống hay không.

Giá trị trả về

LoạiMô tả
booleantrue nghĩa là sig trống.

Ví dụ


> caver.utils.isEmptySig(caver.wallet.keyring.signatureData.emtpySig)
true
> caver.utils.isEmptySig([caver.wallet.keyring.signatureData.emtpySig])
true

isKlaytnWalletKey


caver.utils.isKlaytnWalletKey(key)

Trả về true nếu khóa nằm trong định dạng KlaytnWalletKey, nếu không nó sẽ trả về false.

Tham số

TênLoạiMô tả
khóachuỗiMột chuỗi khóa để kiểm tra có định dạng KlaytnWalletKey hay không.

Giá trị trả về

LoạiMô tả
booleantrue có nghĩa là khóa là 0x{private key}0x{type}0x{address in hex} hoặc {private key}0x{type}0x{address in hex}.

Ví dụ


> 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)

Chuyển đổi bộ đệm thành chuỗi số hex có tiền tố 0x.

Tham số

TênLoạiMô tả
bufferBộ đệmMột bộ đệm để chuyển đổi sang chuỗi số hex.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi số hex có tiền tố 0x.

Ví dụ


> caver.utils.bufferToHex(Buffer.from('5b9ac8', 'hex'))
'0x5b9ac8'
> caver.utils.bufferToHex(Buffer.alloc(0))
'0x'

parseKlaytnWalletKey


caver.utils.parseKlaytnWalletKey(key)

Phân tích chuỗi KlaytnWalletKey thành một mảng bao gồm "khóa riêng tư", "loại", "địa chỉ".

Tham số

TênLoạiMô tả
khóachuỗiMột chuỗi KlaytnWalletKey.

Giá trị trả về

LoạiMô tả
MảngKlaytnWalletKey được phân tích cú pháp.

Ví dụ


> caver.utils.parseKlaytnWalletKey('0x{private key}0x{type}0x{address in hex}')
[
'0x{private key}',
'0x00',
'0x885ebdb17c221ef695936b18a0263d6399e14d60'
]

hashMessage


caver.utils.hashMessage(message)

Tin nhắn hàm băm với tiền tố dành riêng cho Klaytn: keccak256("\x19Klaytn Signed Message:\n" + len(message) + message))

Tham số

TênLoạiMô tả
thông báochuỗiTin nhắn hàm băm. Nếu là chuỗi HEX, nó sẽ được giải mã UTF-8 trước.

Giá trị trả về

LoạiMô tả
chuỗiTin nhắn hàm băm với tiền tố dành riêng cho Klaytn.

Ví dụ


> caver.utils.hashMessage('Hello')
'0x640bfab59b6e27468abd367888f4ab1a1c77aa2b45e76a1d3adcbd039c305917'

recover


caver.utils.recover(message, signature [, isHashed])

Khôi phục địa chỉ Klaytn dùng để ký dữ liệu đã cho.

Tham số

TênLoạiMô tả
thông báochuỗiTin nhắn hoặc tin nhắn băm.
chữ kýđối tượng | MảngMột đối tượng SignatureData.
isHashedboolean(tùy chọn, mặc định: false) Nếu tham số cuối cùng là true thì message đã cho sẽ KHÔNG tự động có tiền tố là "\x19Klaytn Signed Message:\n" + message.length + message và sẽ được coi là đã có tiền tố.

Giá trị trả về

LoạiMô tả
chuỗiĐịa chỉ Klaytn dùng để ký dữ liệu này.

Ví dụ


> caver.utils.recover('message', new caver.wallet.keyring.signatureData(['0x1b', '0x50a80...', '0x021de...']))
'0xe8b3a6ef12f9506e1df9fd445f9bb4488a482122'
> caver.utils.recover('message', ['0x1b', '0x50a80...', '0x021de...'])
'0xe8b3a6ef12f9506e1df9fd445f9bb4488a482122'
> caver.utils.recover('message', { v: '0x1b', r: '0x50a80...', s: '0x021de...' })
'0xe8b3a6ef12f9506e1df9fd445f9bb4488a482122'
> caver.utils.recover('0xe960248437f2134a77a9aa0ebcbb6523aec095f23b02e25f16fd95e99b099daa', sig, true)
'0xe8b3a6ef12f9506e1df9fd445f9bb4488a482122'

recoverPublicKey


caver.utils.recoverPublicKey(message, signature [, isHashed])

Khôi phục khóa công khai dùng để ký dữ liệu đã cho.

LƯU Ý caver.utils.recoverPublicKey được hỗ trợ kể từ caver-js phiên bản v1.6.3.

Tham số

TênLoạiMô tả
thông báochuỗiTin nhắn hoặc tin nhắn băm.
chữ kýđối tượng | MảngMột đối tượng SignatureData.
isHashedboolean(tùy chọn, mặc định: false) Liệu tin nhắn được truyền làm tham số có ở dạng băm với tiền tố "\x19Klaytn Signed Message:\n" + message.length + message hay không.

Giá trị trả về

LoạiMô tả
chuỗiKhóa công khai dùng để ký dữ liệu này.

Ví dụ


> caver.utils.recoverPublicKey('Some Message', new caver.wallet.keyring.signatureData([
'0x1b',
'0x8213e560e7bbe1f2e28fd69cbbb41c9108b84c98cd7c2c88d3c8e3549fd6ab10',
'0x3ca40c9e20c1525348d734a6724db152b9244bff6e0ff0c2b811d61d8f874f00',
]))
'0xb5df4d5e6b4ee7a136460b911a69030fdd42c18ed067bcc2e25eda1b851314fad994c5fe946aad01ca2e348d4ff3094960661a8bc095f358538af54aeea48ff3'
> caver.utils.recoverPublicKey('Some Message', [
'0x1b',
'0x8213e560e7bbe1f2e28fd69cbbb41c9108b84c98cd7c2c88d3c8e3549fd6ab10',
'0x3ca40c9e20c1525348d734a6724db152b9244bff6e0ff0c2b811d61d8f874f00',
])
'0xb5df4d5e6b4ee7a136460b911a69030fdd42c18ed067bcc2e25eda1b851314fad994c5fe946aad01ca2e348d4ff3094960661a8bc095f358538af54aeea48ff3'
> caver.utils.recoverPublicKey('0x8ed2036502ed7f485b81feaec1c581d236a8b711e55a24077724879c8a263c2a', {
v: '0x1b',
r: '0x3acab5ba6f884eccfb9642018aa6debab1310d99b7a84ae9acb8f52f567cf16a',
s: '0x3501ae03809bf93222c4683642fa8fdc36385709c70ed8e7b883b34d66a5b8a4',
}, true)
'0xdd352dbe1c49aa9addaa3ca762de476a1b4deca3ac15fbb7fac153737b3ddb1e3249e1c2d86d5cbeaf6d30d366a211532683b59cb5f402bf3fe14989a378d45d'

publicKeyToAddress


caver.utils.publicKeyToAddress('0x{public key}')

Trả về một địa chỉ bắt nguồn từ khóa công khai. Hàm này chỉ đơn giản là chuyển đổi chuỗi khóa công khai thành một dạng địa chỉ bằng cách đưa nó về dạng băm. Nó không liên quan gì đến tài khoản thực trên Klaytn.

LƯU Ý caver.utils.publicKeyToAddress được hỗ trợ kể từ caver-js phiên bản v1.6.3.

Tham số

TênLoạiMô tả
publicKeychuỗiChuỗi khóa công khai để lấy địa chỉ.

Giá trị trả về

LoạiMô tả
chuỗiChuỗi địa chỉ bắt nguồn từ khóa công khai.

Ví dụ


> caver.utils.publicKeyToAddress('0xb5df4d5e6b4ee7a136460b911a69030fdd42c18ed067bcc2e25eda1b851314fad994c5fe946aad01ca2e348d4ff3094960661a8bc095f358538af54aeea48ff3')
'0xA84A1CE657e9d5b383cECE6f4bA365e23Fa234Dd'

compressPublicKey


caver.utils.compressPublicKey(uncompressedPublicKey)

Nén khóa công khai không nén.

Tham số

TênLoạiMô tả
uncompressedPublicKeychuỗiKhóa công khai không nén.

Giá trị trả về

LoạiMô tả
chuỗiKhóa công khai được nén.

Ví dụ


> caver.utils.compressPublicKey('0x62cef87819b82f62e9c0a38c1fa7dfa089084959df86aca19ff2f6c903db2248b45dc23220ee6bcd8753bb9df8ce7d58e56eabebb14479f3a0ca5ccd4bdea632')
'0x0262cef87819b82f62e9c0a38c1fa7dfa089084959df86aca19ff2f6c903db2248'

decompressPublicKey


caver.utils.decompressPublicKey(compressedPublicKey)

Giải nén khóa công khai đã nén.

Tham số

TênLoạiMô tả
compressedPublicKeychuỗiKhóa công khai được nén.

Giá trị trả về

LoạiMô tả
chuỗiKhóa công khai không nén.

Ví dụ


> caver.utils.decompressPublicKey('0x0262cef87819b82f62e9c0a38c1fa7dfa089084959df86aca19ff2f6c903db2248')
'0x62cef87819b82f62e9c0a38c1fa7dfa089084959df86aca19ff2f6c903db2248b45dc23220ee6bcd8753bb9df8ce7d58e56eabebb14479f3a0ca5ccd4bdea632'

isCompressedPublicKey


caver.utils.isCompressedPublicKey(publicKey)

Trả về true nếu khóa chung được nén, nếu không sẽ trả về false.

Tham số

TênLoạiMô tả
publicKeychuỗiKhóa công khai.

Giá trị trả về

LoạiMô tả
booleantrue có nghĩa là được nén.

Ví dụ


> caver.utils.isCompressedPublicKey('0x0262cef87819b82f62e9c0a38c1fa7dfa089084959df86aca19ff2f6c903db2248')
true

decodeSignature


caver.utils.decodeSignature('0x{signature}')

Giải mã dữ liệu chữ ký thô bao gồm 'R(32 byte) + S(32 byte) + V(1byte)'.

LƯU Ý caver.utils.decodeSignature được hỗ trợ kể từ caver-js phiên bản v1.6.3.

Tham số

TênLoạiMô tả
chữ kýchuỗiChuỗi chữ ký để giải mã. Nó bao gồm R(32bytes) + S(32bytes) + V(1byte).

Giá trị trả về

LoạiMô tả
đối tượngĐối tượng SignatureData bao gồm v, rs.

Ví dụ


> caver.utils.decodeSignature('0xc69018da9396c4b87947e0784625af7475caf46e2af9cf57a44673ff0f625258642d8993751ae67271bcc131aa065adccf9f16fc4953f9c48f4a80d675c09ae81b')
SignatureData {
_v: '0x1b',
_r: '0xc69018da9396c4b87947e0784625af7475caf46e2af9cf57a44673ff0f625258',
_s: '0x642d8993751ae67271bcc131aa065adccf9f16fc4953f9c48f4a80d675c09ae8'
}

Make this page better