caver.wallet.keyring
caver.wallet.keyring은 주소와 개인키를 포함하는 키링 관련 기능을 제공하는 패키지입니다.

Class

Keyring은 계정 주소와 개인키를 포함하는 구조입니다. 사용자들이 클레이튼 계정을 사용해 서명을 할 수 있게 해주는 caver-js 클래스입니다.
Keyring은 저장하는 키의 종류에 따라 세 가지로 분류될 수 있습니다. 주소와 개인키를 하나씩 저장하는 SingleKeyring, 주소 하나와 다수의 개인키를 저장하는 MultipleKeyring, 그리고 주소 하나와 각 역할에 대한 개인키(들)을 저장하기 위한 RoleBasedKeyring가 있습니다.

SingleKeyring

1
const keyring = new caver.wallet.keyring.singleKeyring(address, key)
Copied!
SingleKeyring은 계정의 addressprivate key를 저장하는 클래스입니다. 개인키 문자열을 사용해서 SingleKeyring 인스턴스를 생성하고 싶다면 caver.wallet.keyring.create를 참고하세요.
SingleKeyring는 역할이 할당되지 않은 개인키를 사용합니다.
속성
이름
타입
설명
address
string
계정 주소.
key
하나의 개인키를 포함하고 있는 PrivateKey의 인스턴스입니다.

MultipleKeyring

1
const keyring = new caver.wallet.keyring.multipleKeyring(address, keys)
Copied!
MultipleKeyring은 계정의 addressprivate keys를 저장하는 클래스입니다. 개인키 문자열을 사용해서 MultipleKeyring 인스턴스를 생성하고 싶다면 caver.wallet.keyring.create를 참고하세요.
MultipleKeyring는 역할이 할당되지 않은 개인키들을 사용합니다.
속성
이름
타입
설명
address
string
계정 주소.
keys
배열
하나의 개인키를 포함하고 있는 PrivateKey의 인스턴스입니다.

RoleBasedKeyring

1
const keyring = new caver.wallet.keyring.roleBasedKeyring(address, keys)
Copied!
RoleBasedKeyring는 계정의 address와 각 역할에 사용될 private keys를 배열 형식으로 저장하는 클래스입니다.
RoleBasedKeyring는 각 역할에 대해 다수의 키를 포함할 수 있는 2차원 배열 (keys가 비어있으면 [ [], [], [] ]와 같이 보임) keys로서 구현됩니다. 2차원 배열의 첫 번째 원소에는 roleTransactionKey로 사용될 개인키(들), 두 번째 원소에는 roleAccountUpdateKey로 사용될 개인키(들), 세 번째 원소에는 roleFeePayerKey로 사용될 개인키(들)이 저장됩니다.
속성
이름
타입
설명
address
string
계정 주소.
keys
배열
역할에 사용되는 키를 정의하는 2차원 배열입니다. 각 역할PrivateKey 인스턴스를 포함하고 있습니다. 첫 번째 원소는 roleTransactionKey입니다. 두 번째 원소는 roleAccountUpdateKey입니다. 마지막 원소는 roleFeePayerKey입니다.
이하는 각 역할에 정의된 키를 직관적으로 사용하기 위해 키링에 정의된 게터(getter)입니다. 각 역할에 사용되는 키에 게터를 통해 더 쉽게 접근할 수 있습니다.
이름
타입
설명
roleTransactionKey
배열
(계정 업데이트 트랜잭션을 제외한) 트랜잭션 서명에 사용되는 roleTransactionKey입니다. keyring.roleTransactionkeykeys 속성의 첫 번째 요소를 반환합니다.
roleAccountUpdateKey
배열
계정 업데이트 트랜잭션 서명을 위해 사용되는 roleAccountUpdateKey입니다. keyring.roleAccountUpdateKeykeys 속성의 두 번째 요소를 반환합니다.
roleFeePayerKey
배열
이 roleFeePayerKey는 feePayer로 트랜잭션에 서명할 때 사용됩니다. keyring.roleFeePayerKeykeys 속성의 세 번째 요소를 반환합니다.

PrivateKey

1
const privateKey = new caver.wallet.keyring.privateKey('0x{private key}')
Copied!
PrivateKey는 개인키 문자열을 포함하는 클래스입니다. Keyring 내 각 역할에 사용되는 개인키는 이 PrivateKey 인스턴스로 정의됩니다.
속성
이름
타입
설명
privateKey
string
개인키 문자열.

SignatureData

SignatureData는 서명 데이터를 포함한 클래스입니다. sign 또는 signMessage의 결과인 서명은 signatureData로서 반환됩니다. 아래와 같이 signatureData가 서명(들)을 포함하는 것을 확인할 수 있습니다.
1
const signature = new caver.wallet.keyring.signatureData(['0x1b', '0x2dfc6...', '0x15038...'])
Copied!
속성
이름
타입
설명
v
String
ECDSA 리커버리 id.
r
String
ECDSA 서명 r.
s
String
ECDSA 서명 s.

caver.wallet.keyring.generate

1
caver.wallet.keyring.generate([entropy])
Copied!
무작위로 생성된 캐인키로 SingleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
entropy
string
(선택 사항) 엔트로피를 증가시키는 임의의 문자열입니다.
리턴값
타입
설명
무작위로 생성된 하나의 키링 인스턴스가 반환됩니다.
예시
1
> caver.wallet.keyring.generate()
2
SingleKeyring {
3
_address: '0x8ecdfda0281f0d36518f89e0e2444c4f98b2e718',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.keyring.generateSingleKey

1
caver.wallet.keyring.generateSingleKey([entropy])
Copied!
개인키 문자열을 생성합니다.
매개변수
이름
타입
설명
entropy
string
(선택 사항) 엔트로피를 증가시키는 임의의 문자열입니다.
리턴값
타입
설명
string
개인키 문자열이 반환됩니다.
예시
1
> caver.wallet.keyring.generateSingleKey()
2
'0x{private key}'
Copied!

caver.wallet.keyring.generateMultipleKeys

1
caver.wallet.keyring.generateMultipleKeys(num [, entropy])
Copied!
개인키 문자열들을 생성합니다.
매개변수
이름
타입
설명
num
number
개인키 문자열들의 수입니다.
entropy
string
(선택 사항) 엔트로피를 증가시키는 임의의 문자열입니다.
리턴값
타입
설명
배열
개인키들을 포함한 배열이 반환됩니다.
예시
1
> caver.wallet.keyring.generateMultipleKeys(3)
2
[
3
'0x{private key1}',
4
'0x{private key2}',
5
'0x{private key3}'
6
]
Copied!

caver.wallet.keyring.generateRoleBasedKeys

1
caver.wallet.keyring.generateRoleBasedKeys(numArray [, entropy])
Copied!
역할에 정의된 키를 포함하는 요소들을 지닌 2차원 배열을 생성합니다.
매개변수
이름
타입
설명
numArray
배열
역할에 사용되는 키를 정의하는 2차원 배열입니다.
entropy
string
(선택 사항) 엔트로피를 증가시키는 임의의 문자열입니다.
리턴값
타입
설명
배열
역할에 정의된 키를 포함하는 요소들을 지닌 2차원 배열입니다.
예시
1
> caver.wallet.keyring.generateRoleBasedKeys([2, 1, 3])
2
[
3
[
4
'0x{private key1}',
5
'0x{private key2}'
6
],
7
[
8
'0x{private key3}'
9
],
10
[
11
'0x{private key4}',
12
'0x{private key5}',
13
'0x{private key6}'
14
]
15
]
Copied!

caver.wallet.keyring.create

1
caver.wallet.keyring.create(address, key)
Copied!
파라미터로 키링 인스턴스를 생성합니다.
key가 개인키 문자열인 경우, 하나의 개인키를 사용하는 SingleKeyring 인스턴스가 생성됩니다. key가 개인키 문자열들을 포함한 배열인 경우, 다수의 개인키를 사용하는 MultipleKeyring 인스턴스가 생성됩니다. key가 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열인 경우 RoleBasedKeyring가 생성됩니다.
매개변수
이름
타입
설명
address
string
키링 주소입니다.
key
string | Array
개인키 문자열, 개인키들의 배열, 또는 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열입니다.
리턴값
타입
설명
Keyring
키링 인스턴스가 반환됩니다. key 파라미터에 따라 SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring 일 수 있습니다.
예시
1
// Create singleKeyring which uses one private key
2
> caver.wallet.keyring.create('0x{address in hex}', '0x{private key}')
3
SingleKeyring {
4
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
5
_key: PrivateKey { _privateKey: '0x{private key}' }
6
}
7
8
// Create multipleKeyring which uses multiple private keys
9
> caver.wallet.keyring.create('0x{address in hex}', ['0x{private key1}', '0x{private key2}'])
10
MultipleKeyring {
11
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
12
_keys: [
13
PrivateKey { _privateKey: '0x{private key1}' },
14
PrivateKey { _privateKey: '0x{private key2}' }
15
]
16
}
17
18
// Create roleBasedKeyring which uses different private key(s) by roles
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.keyring.create('0x{address in hex}', roleBasedKeys)
25
RoleBasedKeyring {
26
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
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.keyring.createFromPrivateKey

1
caver.wallet.keyring.createFromPrivateKey(key)
Copied!
개인키 문자열 또는 KlaytnWalletKey로부터 SingleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
key
string
파라미터는 개인키 또는 KlaytnWalletKey 둘 중 하나일 수 있습니다.
리턴값
타입
설명
SingleKeyring 인스턴스가 반환됩니다.
예시
1
// Create singleKeyring from private key string
2
> caver.wallet.keyring.createFromPrivateKey('0x{private key}')
3
SingleKeyring {
4
_address: '0xaa7b43f2eab01cfd787b07ce2f2fb5d6d20a8aa0',
5
_key: PrivateKey { _privateKey: '0x{private key}' }
6
}
7
8
// Create singleKeyring from KlaytnWalletKey
9
> caver.wallet.keyring.createFromPrivateKey('0x{private key}0x{type}0x{address in hex}')
10
SingleKeyring {
11
_address: '0xaa7b43f2eab01cfd787b07ce2f2fb5d6d20a8aa0',
12
_key: PrivateKey { _privateKey: '0x{private key}' }
13
}
Copied!

caver.wallet.keyring.createFromKlaytnWalletKey

1
caver.wallet.keyring.createFromKlaytnWalletKey(klaytnWalletKey)
Copied!
KlaytnWalletKey 문자열로부터 SingleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
klaytnWalletKey
string
KlaytnWalletKey 문자열 입니다.
리턴값
타입
설명
SingleKeyring 인스턴스가 반환됩니다.
예시
1
> caver.wallet.keyring.createFromKlaytnWalletKey('0x{private key}0x{type}0x{address in hex}')
2
SingleKeyring {
3
_address: '0xaa7b43f2eab01cfd787b07ce2f2fb5d6d20a8aa0',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.keyring.createWithSingleKey

1
caver.wallet.keyring.createWithSingleKey(address, key)
Copied!
주소와 개인키 문자열로부터 SingleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
address
string
키링 생성을 위해 사용되는 주소입니다.
key
string
개인키 문자열입니다.
리턴값
타입
설명
SingleKeyring 인스턴스가 반환됩니다.
예시
1
> caver.wallet.keyring.createWithSingleKey('0x{address in hex}', '0x{private key}')
2
SingleKeyring {
3
_address: '0xaa7b43f2eab01cfd787b07ce2f2fb5d6d20a8aa0',
4
_key: PrivateKey { _privateKey: '0x{private key}' }
5
}
Copied!

caver.wallet.keyring.createWithMultipleKey

1
caver.wallet.keyring.createWithMultipleKey(address, key)
Copied!
주소와 개인키 문자열로부터 MultipleKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
address
string
키링 주소입니다.
keyArray
배열
개인키 문자열들의 배열입니다.
리턴값
타입
설명
MultipleKeyring 인스턴스가 반환됩니다.
예시
1
> caver.wallet.keyring.createWithMultipleKey('0x{address in hex}', ['0x{private key1}', '0x{private key2}' ])
2
MultipleKeyring {
3
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
4
_keys: [
5
PrivateKey { _privateKey: '0x{private key1}' },
6
PrivateKey { _privateKey: '0x{private key2}' }
7
]
8
}
Copied!

caver.wallet.keyring.createWithRoleBasedKey

1
caver.wallet.keyring.createWithRoleBasedKey(address, roledBasedKeyArray)
Copied!
주소와 key가 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열로부터 RoleBasedKeyring 인스턴스를 생성합니다.
매개변수
이름
타입
설명
address
string
키링 주소입니다.
roledBasedKeyArray
배열
각 역할에 대해 개인키 배열을 포함하고 있는 2차원 배열입니다.
리턴값
타입
설명
RoleBasedKeyring 인스턴스가 반환됩니다.
예시
1
> const roleBasedKeys = [
2
['0x{private key1}', '0x{private key2}'],
3
['0x{private key3}', '0x{private key4}'],
4
['0x{private key5}', '0x{private key6}'],
5
]
6
> caver.wallet.keyring.createWithRoleBasedKey('0x{address in hex}', roleBasedKeys)
7
RoleBasedKeyring {
8
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
9
_keys: [
10
[
11
PrivateKey { _privateKey: '0x{private key1}' },
12
PrivateKey { _privateKey: '0x{private key2}' }
13
],
14
[
15
PrivateKey { _privateKey: '0x{private key3}' },
16
PrivateKey { _privateKey: '0x{private key4}' }
17
],
18
[
19
PrivateKey { _privateKey: '0x{private key5}' },
20
PrivateKey { _privateKey: '0x{private key6}' }
21
]
22
]
23
}
Copied!

caver.wallet.keyring.decrypt

1
caver.wallet.keyring.decrypt(keystore, password)
Copied!
키스토어 v3 또는 v4 JSON을 복호화하고 복호화된 키링 객체를 반환합니다.
매개변수
이름
타입
설명
키스토어
object
복호화할 키스토어 v3 또는 v4입니다.
password
string
암호화에 사용되는 비밀번호.
리턴값
타입
설명
Keyring
복호화된 인스턴스입니다(SingleKeyring, MultipleKeyring 또는RoleBasedKeyring).
예시
1
// Decrypt keystroe v4 (encrypted single keyring)
2
> caver.wallet.keyring.decrypt({
3
version: 4,
4
id: '9c12de05-0153-41c7-a8b7-849472eb5de7',
5
address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
6
keyring: [
7
{
8
ciphertext: 'eacf496cea5e80eca291251b3743bf93cdbcf7072efc3a74efeaf518e2796b15',
9
cipherparams: { iv: 'd688a4319342e872cefcf51aef3ec2da' },
10
cipher: 'aes-128-ctr',
11
kdf: 'scrypt',
12
kdfparams: {
13
dklen: 32,
14
salt: 'c3cee502c7157e0faa42386c6d666116ffcdf093c345166c502e23bc34e6ba40',
15
n: 4096,
16
r: 8,
17
p: 1
18
},
19
mac: '4b49574f3d3356fa0d04f73e07d5a2a6bbfdd185bedfa31f37f347bc98f2ef26'
20
}
21
]
22
}, 'password')
23
SingleKeyring {
24
_address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
25
_key: PrivateKey { _privateKey: '0x{private key}' }
26
}
27
28
// Decrypt keystroe v4 (encrypted multiple keyring)
29
> caver.wallet.keyring.decrypt({
30
version: 4,
31
id: '55da3f9c-6444-4fc1-abfa-f2eabfc57501',
32
address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
33
keyring: [
34
{
35
ciphertext: '93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6',
36
cipherparams: { iv: '84f90907f3f54f53d19cbd6ae1496b86' },
37
cipher: 'aes-128-ctr',
38
kdf: 'scrypt',
39
kdfparams: {
40
dklen: 32,
41
salt: '69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10',
42
n: 4096,
43
r: 8,
44
p: 1,
45
},
46
mac: '8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2',
47
},
48
{
49
ciphertext: '53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6',
50
cipherparams: { iv: 'd7a6f63558996a9f99e7daabd289aa2c' },
51
cipher: 'aes-128-ctr',
52
kdf: 'scrypt',
53
kdfparams: {
54
dklen: 32,
55
salt: '966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f',
56
n: 4096,
57
r: 8,
58
p: 1,
59
},
60
mac: 'bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295',
61
},
62
],
63
}, 'password')
64
MultipleKeyring {
65
_address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
66
_keys: [
67
PrivateKey { _privateKey: '0x{private key1}' },
68
PrivateKey { _privateKey: '0x{private key2}' }
69
]
70
}
71
72
// Decrypt keystroe v4 (encrypted role-based keyring)
73
> caver.wallet.keyring.decrypt({
74
version: 4,
75
id: '55da3f9c-6444-4fc1-abfa-f2eabfc57501',
76
address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
77
keyring: [
78
[
79
{
80
ciphertext: '93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6',
81
cipherparams: { iv: '84f90907f3f54f53d19cbd6ae1496b86' },
82
cipher: 'aes-128-ctr',
83
kdf: 'scrypt',
84
kdfparams: {
85
dklen: 32,
86
salt: '69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10',
87
n: 4096,
88
r: 8,
89
p: 1,
90
},
91
mac: '8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2',
92
},
93
{
94
ciphertext: '53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6',
95
cipherparams: { iv: 'd7a6f63558996a9f99e7daabd289aa2c' },
96
cipher: 'aes-128-ctr',
97
kdf: 'scrypt',
98
kdfparams: {
99
dklen: 32,
100
salt: '966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f',
101
n: 4096,
102
r: 8,
103
p: 1,
104
},
105
mac: 'bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295',
106
},
107
],
108
[
109
{
110
ciphertext: 'f16def98a70bb2dae053f791882f3254c66d63416633b8d91c2848893e7876ce',
111
cipherparams: { iv: 'f5006128a4c53bc02cada64d095c15cf' },
112
cipher: 'aes-128-ctr',
113
kdf: 'scrypt',
114
kdfparams: {
115
dklen: 32,
116
salt: '0d8a2f71f79c4880e43ff0795f6841a24cb18838b3ca8ecaeb0cda72da9a72ce',
117
n: 4096,
118
r: 8,
119
p: 1,
120
},
121
mac: '38b79276c3805b9d2ff5fbabf1b9d4ead295151b95401c1e54aed782502fc90a',
122
},
123
],
124
[
125
{
126
ciphertext: '544dbcc327942a6a52ad6a7d537e4459506afc700a6da4e8edebd62fb3dd55ee',
127
cipherparams: { iv: '05dd5d25ad6426e026818b6fa9b25818' },
128
cipher: 'aes-128-ctr',
129
kdf: 'scrypt',
130
kdfparams: {
131
dklen: 32,
132
salt: '3a9003c1527f65c772c54c6056a38b0048c2e2d58dc0e584a1d867f2039a25aa',
133
n: 4096,
134
r: 8,
135
p: 1,
136
},
137
mac: '19a698b51409cc9ac22d63d329b1201af3c89a04a1faea3111eec4ca97f2e00f',
138
},
139
{
140
ciphertext: 'dd6b920f02cbcf5998ed205f8867ddbd9b6b088add8dfe1774a9fda29ff3920b',
141
cipherparams: { iv: 'ac04c0f4559dad80dc86c975d1ef7067' },
142
cipher: 'aes-128-ctr',
143
kdf: 'scrypt',
144
kdfparams: {
145
dklen: 32,
146
salt: '22279c6dbcc706d7daa120022a236cfe149496dca8232b0f8159d1df999569d6',
147
n: 4096,
148
r: 8,
149
p: 1,
150
},
151
mac: '1c54f7378fa279a49a2f790a0adb683defad8535a21bdf2f3dadc48a7bddf517',
152
},
153
],
154
],
155
}, 'password')
156
RoleBasedKeyring {
157
_address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
158
_keys: [
159
[
160
PrivateKey { _privateKey: '0x{private key1}' },
161
PrivateKey { _privateKey: '0x{private key2}' }
162
],
163
[
164
PrivateKey { _privateKey: '0x{private key3}' }
165
],
166
[
167
PrivateKey { _privateKey: '0x{private key4}' },
168
PrivateKey { _privateKey: '0x{private key5}' }
169
]
170
]
171
}
172
173
// Decrypt keystroe v3 JSON
174
> caver.wallet.keyring.decrypt({
175
version: 3,
176
id: '43f99d36-3905-40e6-bff8-ff0dfc380037',
177
address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
178
crypto: {
179
ciphertext: 'f7296e68807837a5318502c097276a89d58d91b85e45e692aee284a27bcd0955',
180
cipherparams: { iv: '03fd985d07777601078840c73cc6f7f3' },
181
cipher: 'aes-128-ctr',
182
kdf: 'scrypt',
183
kdfparams: {
184
dklen: 32,
185
salt: '46f85271c43fa64ab3338c5235f1d5073bc9379d9b7ba6065c89afb816d83a8a',
186
n: 4096,
187
r: 8,
188
p: 1
189
},
190
mac: '947f13cd1481fa5ba186e59418ef7600fa69e9830054d59e4d5dc67176e1f967'
191
}
192
}, 'password')
193
SingleKeyring {
194
_address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
195
_key: PrivateKey { _privateKey: '0x{private key}' }
196
}
Copied!

keyring.getPublicKey

1
keyring.getPublicKey()
Copied!
공개키 문자열(들)을 반환합니다. keyringSingleKeyring의 인스턴스인 경우 getPublicKey는 공개키 문자열을 반환합니다. keyringMultipleKeyring의 인스턴스인 경우 getPublicKey는 공개키 문자열의 배열을 반환합니다. keyringRoleBasedKeyring의 인스턴스인 경우, getPublicKey는 각 역할에 대해 공개키(들)이 배열로서 정의된 2차원 배열을 반환합니다.
매개변수
이름
타입
설명
compressed
boolean
(optional) Whether in compressed format or not (default: false).
리턴값
타입
설명
string | Array
The public key of the keyring.
예시
1
// Get public key with singleKeyring
2
> keyring.getPublicKey()
3
'0x49b2a...'
4
5
// Get public key with multipleKeyring
6
> keyring.getPublicKey()
7
[ '0x65b51...', '0x8d85c...' ]
8
9
// Get public key with roleBasedKeyring
10
> keyring.getPublicKey()
11
[
12
[ '0x2d939...', '0x6beb4...', '0xd8f2f...' ],
13
[ '0xf09cd...', '0x96a63...', '0x02000...' ],
14
[ '0xc2d33...', '0x3088f...', '0xab193...' ]
15
]
Copied!

keyring.copy

1
keyring.copy()
Copied!
Returns a copied keyring instance.
리턴값
타입
설명
Keyring
A copied keyring instance (SingleKeyring, MultipleKeyring or RoleBasedKeyring).
예시
1
// When keyring is an instance of SingleKeyring
2
> keyring.copy()
3
SingleKeyring {
4
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
5
_key: PrivateKey { _privateKey: '0x{private key}' }
6
}
7
8
// When keyring is an instance of MultipleKeyring
9
> keyring.copy()
10
MultipleKeyring {
11
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
12
_keys: [
13
PrivateKey { _privateKey: '0x{private key1}' },
14
PrivateKey { _privateKey: '0x{private key2}' }
15
]
16
}
17
18
// When keyring is an instance of RoleBasedKeyring
19
> keyring.copy()
20
RoleBasedKeyring {
21
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
22
_keys: [
23
[
24
PrivateKey { _privateKey: '0x{private key1}' },
25
PrivateKey { _privateKey: '0x{private key2}' }
26
],
27
[
28
PrivateKey { _privateKey: '0x{private key3}' },
29
PrivateKey { _privateKey: '0x{private key4}' }
30
],
31
[
32
PrivateKey { _privateKey: '0x{private key5}' },
33
PrivateKey { _privateKey: '0x{private key6}' }
34
]
35
]
36
}
Copied!

keyring.sign

1
keyring.sign(transactionHash, chainId, role [, index])
Copied!
Signs with transactionHash with the private key(s) and returns signature(s). If the user has not defined an index parameter, keyring.sign signs transaction using all the private keys used by the role. If index is defined, the keyring.sign signs transaction using only one private key at the index. The role used in caver-js can be checked through caver.wallet.keyring.role.
When signing transactions, it is recommended to use caver.wallet.sign or transaction.sign.
매개변수
이름
타입
설명
transactionHash
string
The hash string of a transaction to sign.
chainId
string | number
The chain id of the Klaytn blockchain platform.
role
number
키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role를 사용할 수 있습니다.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
리턴값
타입
설명
배열
An array of SignatureData.
예시
1
// Using roleBasedKeyring which has two private key in roleTransactionKey
2
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleTransactionKey)
3
[
4
SignatureData { _v: '0x5044', _r: '0x7a8b6...', _s: '0x17139...' },
5
SignatureData { _v: '0x5043', _r: '0x7f978...', _s: '0x1a532...' }
6
]
7
8
// Using roleBasedKeyring which has two private key in roleTransactionKey with index
9
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleTransactionKey, 1)
10
[
11
SignatureData { _v: '0x5043', _r: '0x7f978...', _s: '0x1a532...' }
12
]
13
14
// Using roleBasedKeyring which has two private key in roleAccountUpdateKey
15
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleAccountUpdateKey)
16
[
17
SignatureData { _v: '0x5044', _r: '0xdbce8...', _s: '0x039a6...' },
18
SignatureData { _v: '0x5044', _r: '0xf69b7...', _s: '0x71dc9...' }
19
]
20
21
// Using roleBasedKeyring which has two private key in roleAccountUpdateKey with index
22
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleAccountUpdateKey, 1)
23
[
24
SignatureData { _v: '0x5044', _r: '0xf69b7...', _s: '0x71dc9...' }
25
]
26
27
// Using roleBasedKeyring which has two private key in roleFeePayerKey
28
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleFeePayerKey)
29
[
30
SignatureData { _v: '0x5043', _r: '0xe48bf...', _s: '0x1cf36...' },
31
SignatureData { _v: '0x5043', _r: '0x82976...', _s: '0x3c5e0...' }
32
]
33
34
// Using roleBasedKeyring which has two private key in roleFeePayerKey with index
35
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleFeePayerKey, 1)
36
[
37
SignatureData { _v: '0x5043', _r: '0x82976...', _s: '0x3c5e0...' }
38
]
Copied!

keyring.signMessage

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

keyring.getKeyByRole

1
keyring.getKeyByRole(role)
Copied!
Returns the private key(s) used by the role entered as a parameter.
매개변수
이름
타입
설명
role
number
키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role를 사용할 수 있습니다.
리턴값
타입
설명
PrivateKey | Array
An instance of PrivateKey or an array containing the PrivateKey instances used by the role.
예시
1
// getKeyByRole with singleKeyring.
2
// The singleKeyring will return the single same PrivateKey intance regardless of role.
3
> keyring.getKeyByRole(caver.wallet.keyring.role.roleTransactionKey)
4
PrivateKey { _privateKey: '0x{private key}' }
5
6
> keyring.getKeyByRole(caver.wallet.keyring.role.roleAccountUpdateKey)
7
PrivateKey { _privateKey: '0x{private key}' }
8
9
> keyring.getKeyByRole(caver.wallet.keyring.role.roleFeePayerKey)
10
PrivateKey { _privateKey: '0x{private key}' }
11
12
// getKeyByRole with multipleKeyring.
13
// The multipleKeyring will also return the single same array of PrivateKey intances regardless of role
14
> keyring.getKeyByRole(caver.wallet.keyring.role.roleTransactionKey)
15
[
16
PrivateKey { _privateKey: '0x{private key1}' },
17
PrivateKey { _privateKey: '0x{private key2}' }
18
]
19
20
> keyring.getKeyByRole(caver.wallet.keyring.role.roleAccountUpdateKey)
21
[
22
PrivateKey { _privateKey: '0x{private key1}' },
23
PrivateKey { _privateKey: '0x{private key2}' }
24
]
25
26
> keyring.getKeyByRole(caver.wallet.keyring.role.roleFeePayerKey)
27
[
28
PrivateKey { _privateKey: '0x{private key1}' },
29
PrivateKey { _privateKey: '0x{private key2}' }
30
]
31
32
// getKeyByRole with roleBasedKeyring.
33
// The roleBasedKeyring will return different array of PrivateKey intances depends on role
34
> keyring.getKeyByRole(caver.wallet.keyring.role.roleTransactionKey)
35
[
36
PrivateKey { _privateKey: '0x{private key1}' }
37
]
38
39
> keyring.getKeyByRole(caver.wallet.keyring.role.roleAccountUpdateKey)
40
[
41
PrivateKey { _privateKey: '0x{private key2}' },
42
PrivateKey { _privateKey: '0x{private key3}' }
43
]
44
45
> keyring.getKeyByRole(caver.wallet.keyring.role.roleFeePayerKey)
46
[
47
PrivateKey { _privateKey: '0x{private key4}' },
48
PrivateKey { _privateKey: '0x{private key5}' },
49
PrivateKey { _privateKey: '0x{private key6}' }
50
]
Copied!

keyring.getKlaytnWalletKey

1
keyring.getKlaytnWalletKey()
Copied!
Returns the KlaytnWalletKey string for the keyring. With MultipleKeyring or RoleBasedKeyring, KlaytnWalletKey cannot be used. In this case, use keyring.encrypt.
리턴값
타입
설명
string
The KlaytnWalletKey of the keyring.
예시
1
> keyring.getKlaytnWalletKey()
2
'0x{private key}0x{type}0x{address in hex}'
Copied!

keyring.toAccount

1
keyring.toAccount([options])
Copied!
Returns the