caver.wallet
caver.wallet는 인메모리 지갑에서 Keyring 인스턴스를 관리하는 패키지입니다. caver.wallet는 모든 SingleKeyring, MultipleKeyring, RoleBasedKeyring을 받으며, 주소를 기준으로 관리합니다.

Class

KeyringContainer

1
caver.wallet
Copied!
KeyringContainerSingleKeyring, MultipleKeyring, 그리고 RoleBasedKeyring 인스턴스를 관리하는 클래스입니다. Caver가 초기화될 때 caver.wallet 안에 KeyringContainer 인스턴스를 생성합니다. caver.wallet를 통해 인메모리 지갑에 키링 인스턴스를 저장하고 관리할 수 있습니다.
속성
이름
타입
설명
length
number
keyringContainer에 포함된 키링의 수입니다.

caver.wallet.generate

1
caver.wallet.generate(numberOfKeyrings [, entropy])
Copied!
임의적으로 생성된 개인키를 가지고 keyringContainer 안에 SingleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
numberOfKeyrings
number
생성할 SingleKeyring 인스턴스의 수입니다.
entropy
string
(선택 사항) 엔트로피를 증가시키는 임의의 문자열입니다.
리턴값
타입
설명
배열
생성된 인스턴스의 주소를 포함하는 배열입니다.
예시
1
// generate without entropy
2
> caver.wallet.generate(3)
3
[
4
'0xb4b0c3781082cf818bfaf5adfc73fdf59d92c1cd',
5
'0x9957dfd92e4b70f91131c573293343bc5f21f215',
6
'0xed2fe179c18fa528da2392532998560bd1008511'
7
]
8
9
// generate with entropy
10
> caver.wallet.generate(3, caver.utils.randomHex(32))
11
[
12
'0xb4b0c3781082cf818bfaf5adfc73fdf59d92c1cd',
13
'0x9957dfd92e4b70f91131c573293343bc5f21f215',
14
'0xed2fe179c18fa528da2392532998560bd1008511'
15
]
Copied!

caver.wallet.newKeyring

1
caver.wallet.newKeyring(address, key)
Copied!
주어진 파라미터로 키링 인스턴스를 생성하며 caver.wallet에 추가한다.
key가 개인키 문자열인 경우 하나의 개인키를 사용하는 SingleKeyring 인스턴스가 생성됩니다. key가 개인키 문자열들을 포함한 배열인 경우, 다수의 개인키를 사용하는 MultipleKeyring 인스턴스가 생성됩니다. key가 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열인 경우 RoleBasedKeyring가 생성됩니다. 사용할 키링은 caver.wallet에 추가해야 합니다.
매개변수
이름
타입
설명
address
string
주소 문자열입니다.
key
string | Array
개인키 문자열, 개인키들의 배열, 또는 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열입니다.
리턴값
타입
설명
object
caver.wallet에 추가된 키링 인스턴스(SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring)가 반환됩니다.
예시
1
// Create a instance of SingleKeyring and add to caver.wallet
2
> caver.wallet.newKeyring('0x{address in hex}', '0x{private key}')
3
SingleKeyring {
4
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
5
_key: PrivateKey { _privateKey: '0x{private key}' }
6
}
7
8
// Create a instance of MultipleKeyring and add to caver.wallet
9
> caver.wallet.newKeyring('0x{address in hex}', ['0x{private key1}', '0x{private key2}'])
10
MultipleKeyring {
11
_address: '0x17e7531b40ad5d7b5fa7b4ec78df64ce1cb36d24',
12
_keys: [
13
PrivateKey { _privateKey: '0x{private key1}' },
14
PrivateKey { _privateKey: '0x{private key2}' }
15
]
16
}
17
18
// Create a instance of RoleBasedKeyring and add to caver.wallet
19
> const roleBasedKeys = [
20
['0x{private key1}', '0x{private key2}'],
21
['0x{private key3}', '0x{private key4}'],
22
['0x{private key5}', '0x{private key6}'],
23
]
24
> caver.wallet.newKeyring('0x{address in hex}', roleBasedKeys)
25
RoleBasedKeyring {
26
_address: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
27
_keys: [
28
[
29
PrivateKey { _privateKey: '0x{private key1}' },
30
PrivateKey { _privateKey: '0x{private key2}' }
31
],
32
[
33
PrivateKey { _privateKey: '0x{private key3}' },
34
PrivateKey { _privateKey: '0x{private key4}' }
35
],
36
[
37
PrivateKey { _privateKey: '0x{private key5}' },
38
PrivateKey { _privateKey: '0x{private key6}' }
39
]
40
]
41
}
Copied!

caver.wallet.updateKeyring

1
caver.wallet.updateKeyring(keyring)
Copied!
caver.wallet 안에 있는 키링을 업데이트합니다. 새 keyring 인스턴스(SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring)가 파라미터로 전달될 경우, 주어진 keyring 인스턴스의 address 속성에 일치하는, caver.wallet에 저장된 기존의 키링을 대체합니다. 일치하는 키링을 찾을 수 없는 경우 에러가 발생합니다.
매개변수
이름
타입
설명
keyring
object
caver.wallet에 추가될 키링 인스턴스(SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring)입니다.
리턴값
타입
설명
object
caver.wallet에 저장된 업데이트된 키링(SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring)입니다.
예시
1
> caver.wallet.updateKeyring(newKeyring)
2
SingleKeyring {
3
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.getKeyring

1
caver.wallet.getKeyring(address)
Copied!
caver.wallet 주소에 일치하는 키링 인스턴스를 반환합니다.
매개변수
이름
타입
설명
address
string
조회할 키링의 주소입니다.
리턴값
타입
설명
object
caver.wallet에 저장된 업데이트된 키링 인스턴스(SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring)입니다.
예시
1
> caver.wallet.getKeyring('0x386a4bb40abbfaa59cecdc3ced202475895fd569')
2
SingleKeyring {
3
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.isExisted

1
caver.wallet.isExisted(address)
Copied!
Returns true if there is a keyring matching the address.
매개변수
이름
타입
설명
address
string
The address of keyring to check existence.
리턴값
타입
설명
boolean
true means a keyring matching with the address is existed in the caver.wallet.
예시
1
> caver.wallet.isExisted('0x386a4bb40abbfaa59cecdc3ced202475895fd569')
2
true
Copied!

caver.wallet.add

1
caver.wallet.add(keyring)
Copied!
Adds an instance of keyring to the caver.wallet. If the newly given keyring has the same address with one of the keyrings that already exist in caver.wallet, an error is returned. In this case, use updateKeyring to update the existing keyring in caver.wallet.
매개변수
이름
타입
설명
keyring
object
A keyring instance (SingleKeyring, MultipleKeyring or RoleBasedKeyring) to add to caver.wallet.
리턴값
타입
설명
object
The added keyring (SingleKeyring, MultipleKeyring or RoleBasedKeyring) in caver.wallet.
예시
1
> caver.wallet.add(keyring)
2
SingleKeyring {
3
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.remove

1
caver.wallet.remove(address)
Copied!
Deletes the keyring from caver.wallet whose address matches the address of the given keyring.
매개변수
이름
타입
설명
address
string
An address of the keyring to be deleted in caver.wallet.
리턴값
타입
설명
boolean
true if keyring is removed from caver.wallet.
예시
1
> caver.wallet.remove('0x6a3edfad6d1126020d5369e9097db39281876c5d')
2
true
Copied!

caver.wallet.signMessage

1
caver.wallet.signMessage(address, message, role [, index])
Copied!
Signs the message with Klaytn-specific prefix using keyring stored in caver.wallet. 다음 메서드는 Klaytn 고유의 서명을 계산합니다.
1
sign(keccak256("\x19Klaytn Signed Message:\n" + len(message) + message)))
Copied!
If the user has not provided the index parameter, caver.wallet.signMessage signs message using all the private keys used by the role. If the index parameter is given, caver.wallet.signMessage signs message using only one private key at the given index. The role used in caver-js can be found from caver.wallet.keyring.role.
매개변수
이름
타입
설명
address
string
사용될 키링의 주소입니다.
메시지
string
서명할 메시지입니다.
role
number
키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role를 사용할 수 있습니다.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
리턴값
타입
설명
object
서명 결과를 포함하는 객체입니다.
반환된 객체는 다음을 포함합니다.
이름
타입
설명
messageHash
string
Klaytn 고유의 접두사를 가진 메시지의 해시입니다.
signatures
배열
An array of SignatureData.
메시지
string
서명할 메시지입니다.
예시
1
// Sign message with roleTransactionKey which uses two private keys
2
> caver.wallet.signMessage('0x386a4bb40abbfaa59cecdc3ced202475895fd569', 'message to sign', caver.wallet.keyring.role.roleTransactionKey)
3
{
4
messageHash: '0x9c4c1ae0aa1faf7e59eaf6fcf36a34542698197b379a9949b58c92925e74c069',
5
signatures: [
6
SignatureData { _v: '0x1c', _r: '0xb3239...', _s: '0x584d2...' },
7
SignatureData { _v: '0x1b', _r: '0x13c64...', _s: '0x60c61...' }
8
],
9
message: 'message to sign'
10
}
11
12
// Sign message with roleTransactionKey and index
13
> caver.wallet.signMessage('0x386a4bb40abbfaa59cecdc3ced202475895fd569', 'message to sign', caver.wallet.keyring.role.roleTransactionKey, 1)
14
{
15
messageHash: '0x9c4c1ae0aa1faf7e59eaf6fcf36a34542698197b379a9949b58c92925e74c069',
16
signatures: [
17
SignatureData { _v: '0x1b', _r: '0x13c64...', _s: '0x60c61...' }
18
],
19
message: 'message to sign'
20
}
Copied!

caver.wallet.sign

1
caver.wallet.sign(address, transaction [, index] [, hasher])
Copied!
Signs the transaction as a sender of the transaction and appends signatures in the transaction object using the keyring in caver.wallet.
For Account Update transaction, use roleTransactionKey, otherwise, use roleTransactionKey. If the user has not defined an index, caver.wallet.sign signs the transaction using all the private keys used by the role. If index is defined, the caver.wallet.sign signs the transaction using only one private key at the given index.
매개변수
이름
타입
설명
address
string
사용될 키링의 주소입니다.
트랜잭션
object
An instance of Transaction.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
hasher
function
(optional) A hash function to get the transaction hash. If hasher is given as a parameter, it calculates the transaction hash instead of the default method for calculating transaction hash implemented in caver-js. See Basic for details about the default method for transaction hash generation.
리턴값
Promise객체를 반환: 서명된 트랜잭션입니다.
타입
설명
object
서명된 트랜잭션 데이터입니다. The sign(s) is added to the transaction.signatures.
For more information about fields by transaction type, see caver.transaction.
예시
1
// 이 예시는 ValueTransfer 트랜잭션 사용
2
// Please refer to [caver.transaction] for how to use various transaction types.
3
> const transaction = caver.transaction.valueTransfer.create({
4
from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
5
to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
6
value: 1,
7
gas: 30000,
8
})
9
10
> const customHasher = () => { ... }
11
12
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey
13
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction).then(console.log)
14
ValueTransfer {
15
_type: 'TxTypeValueTransfer',
16
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
17
_gas: '0x7530',
18
_signatures: [
19
SignatureData { _v: '0x4e43', _r: '0xd78a2...', _s: '0x379e9...' },
20
SignatureData { _v: '0x4e43', _r: '0x70a58...', _s: '0x2ab28...' }
21
],
22
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
23
_value: '0x1',
24
_chainId: '0x2710',
25
_gasPrice: '0x5d21dba00',
26
_nonce: '0x0'
27
}
28
29
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey and index
30
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 1).then(console.log)
31
ValueTransfer {
32
_type: 'TxTypeValueTransfer',
33
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
34
_gas: '0x7530',
35
_signatures: [
36
SignatureData { _v: '0x4e43', _r: '0x70a58...', _s: '0x2ab28...' }
37
],
38
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
39
_value: '0x1',
40
_chainId: '0x2710',
41
_gasPrice: '0x5d21dba00',
42
_nonce: '0x0'
43
}
44
45
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey and hasher
46
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, customHasher).then(console.log)
47
ValueTransfer {
48
_type: 'TxTypeValueTransfer',
49
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
50
_gas: '0x7530',
51
_signatures: [
52
SignatureData { _v: '0x4e44', _r: '0x7a8b6...', _s: '0x17139...' },
53
SignatureData { _v: '0x4e43', _r: '0x7f978...', _s: '0x1a532...' }
54
],
55
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
56
_value: '0x1',
57
_chainId: '0x2710',
58
_gasPrice: '0x5d21dba00',
59
_nonce: '0x0'
60
}
61
62
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey, index and hasher
63
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0, customHasher).then(console.log)
64
ValueTransfer {
65
_type: 'TxTypeValueTransfer',
66
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
67
_gas: '0x7530',
68
_signatures: [
69
SignatureData { _v: '0x4e44', _r: '0x7a8b6...', _s: '0x17139...' }
70
],
71
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
72
_value: '0x1',
73
_chainId: '0x2710',
74
_gasPrice: '0x5d21dba00',
75
_nonce: '0x0'
76
}
Copied!

caver.wallet.signAsFeePayer

1
caver.wallet.signAsFeePayer(address, transaction [, index] [, hasher])
Copied!
Signs the transaction as fee payer of the transaction and appends feePayerSignatures in the transaction object using the keyring in caver.wallet.
For signing a transaction as a fee payer, use roleFeePayerKey. If the user has not defined an index, caver.wallet.signAsFeePayer signs the transaction using all the private keys used by the role. If index is defined, the caver.wallet.signAsFeePayer signs the transaction using only one private key at the given index.
If the transaction.feePayer is not defined, the address of keyring which is founded from caver.wallet is assigned.
매개변수
이름
타입
설명
address
string
사용될 키링의 주소입니다.
트랜잭션
object
An instance of FeeDelegatedTransaction.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
hasher
function
(optional) A function to get the transaction hash. If hasher is defined as a parameter, this is used to get the transaction hash instead of a default implementation in caver-js.
리턴값
Promise객체를 반환: 서명된 트랜잭션입니다.
타입
설명
object
서명된 트랜잭션 데이터입니다. The signing result is appended to the transaction.feePayerSignatures.
For more information about fields by transaction type, see caver.transaction.
예시
1
// This example uses the FeeDelegatedValueTransfer transaction.
2
// Please refer to [caver.transaction] for how to use various transaction types.
3
> const transaction = caver.transaction.feeDelegatedValueTransfer.create({
4
from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
5
to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
6
value: 1,
7
gas: 30000,
8
})
9
10
> const customHasher = () => { ... }
11
12
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey
13
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction).then(console.log)
14
FeeDelegatedValueTransfer {
15
_type: 'TxTypeFeeDelegatedValueTransfer',
16
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
17
_gas: '0x7530',
18
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
19
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
20
_feePayerSignatures: [
21
SignatureData { _v: '0x4e44', _r: '0x7010e...', _s: '0x65d6b...' },
22
SignatureData { _v: '0x4e43', _r: '0x96ef2...', _s: '0x77f34...' }
23
],
24
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
25
_value: '0x1',
26
_chainId: '0x2710',
27
_gasPrice: '0x5d21dba00',
28
_nonce: '0x0'
29
}
30
31
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey, index
32
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0).then(console.log)
33
FeeDelegatedValueTransfer {
34
_type: 'TxTypeFeeDelegatedValueTransfer',
35
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
36
_gas: '0x7530',
37
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
38
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
39
_feePayerSignatures: [
40
SignatureData { _v: '0x4e44', _r: '0x7010e...', _s: '0x65d6b...' }
41
],
42
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
43
_value: '0x1',
44
_chainId: '0x2710',
45
_gasPrice: '0x5d21dba00',
46
_nonce: '0x0'
47
}
48
49
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey and hasher
50
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, customHasher).then(console.log)
51
FeeDelegatedValueTransfer {
52
_type: 'TxTypeFeeDelegatedValueTransfer',
53
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
54
_gas: '0x7530',
55
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
56
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
57
_feePayerSignatures: [
58
SignatureData { _v: '0x4e43', _r: '0xe48bf...', _s: '0x1cf36...' },
59
SignatureData { _v: '0x4e43', _r: '0x82976...', _s: '0x3c5e0...' }
60
],
61
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
62
_value: '0x1',
63
_chainId: '0x2710',
64
_gasPrice: '0x5d21dba00',
65
_nonce: '0x0'
66
}
67
68
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey, index and hasher
69
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0, customHasher).then(console.log)
70
FeeDelegatedValueTransfer {
71
_type: 'TxTypeFeeDelegatedValueTransfer',
72
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
73
_gas: '0x7530',
74
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
75
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
76
_feePayerSignatures: [
77
SignatureData { _v: '0x4e43', _r: '0x82976...', _s: '0x3c5e0...' }
78
],
79
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
80
_value: '0x1',
81
_chainId: '0x2710',
82
_gasPrice: '0x5d21dba00',
83
_nonce: '0x0'
84
}
Copied!
Last modified 6d ago