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

Class

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

SingleKeyring

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

MultipleKeyring

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

RoleBasedKeyring

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

PrivateKey

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

SignatureData

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

caver.wallet.keyring.generate

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

caver.wallet.keyring.generateSingleKey

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

caver.wallet.keyring.generateMultipleKeys

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

caver.wallet.keyring.generateRoleBasedKeys

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

caver.wallet.keyring.create

caver.wallet.keyring.create(address, key)
파라미터로 키링 인스턴스를 생성합니다.
key가 개인키 문자열인 경우, 하나의 개인키를 사용하는 SingleKeyring 인스턴스가 생성됩니다. key가 개인키 문자열들을 포함한 배열인 경우, 다수의 개인키를 사용하는 MultipleKeyring 인스턴스가 생성됩니다. key가 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열인 경우 RoleBasedKeyring가 생성됩니다.
Parameters
이름
타입
설명
주소
string
키링 주소입니다.
key
string | Array
개인키 문자열, 개인키들의 배열, 또는 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열입니다.
리턴값
타입
설명
Keyring
키링 인스턴스가 반환됩니다. key 파라미터에 따라 SingleKeyring, MultipleKeyring 또는 RoleBasedKeyring 일 수 있습니다.
예시
// Create singleKeyring which uses one private key
> caver.wallet.keyring.create('0x{address in hex}', '0x{private key}')
SingleKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_key: PrivateKey { _privateKey: '0x{private key}' }
}
// Create multipleKeyring which uses multiple private keys
> caver.wallet.keyring.create('0x{address in hex}', ['0x{private key1}', '0x{private key2}'])
MultipleKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_keys: [
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
]
}
// Create roleBasedKeyring which uses different private key(s) by roles
> const roleBasedKeys = [
['0x{private key1}', '0x{private key2}'],
['0x{private key3}', '0x{private key4}'],
['0x{private key5}', '0x{private key6}'],
]
> caver.wallet.keyring.create('0x{address in hex}', roleBasedKeys)
RoleBasedKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_keys: [
[
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
],
[
PrivateKey { _privateKey: '0x{private key3}' },
PrivateKey { _privateKey: '0x{private key4}' }
],
[
PrivateKey { _privateKey: '0x{private key5}' },
PrivateKey { _privateKey: '0x{private key6}' }
]
]
}

caver.wallet.keyring.createFromPrivateKey

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

caver.wallet.keyring.createFromKlaytnWalletKey

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

caver.wallet.keyring.createWithSingleKey

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

caver.wallet.keyring.createWithMultipleKey

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

caver.wallet.keyring.createWithRoleBasedKey

caver.wallet.keyring.createWithRoleBasedKey(address, roledBasedKeyArray)
주소와 key가 각 역할에 사용될 키를 포함하는 요소들을 지닌 2차원 배열로부터 RoleBasedKeyring 인스턴스를 생성합니다.
Parameters
이름
타입
설명
주소
string
키링 주소입니다.
roledBasedKeyArray
Array
각 역할에 대해 개인키 배열을 포함하고 있는 2차원 배열입니다.
리턴값
타입
설명
RoleBasedKeyring 인스턴스가 반환됩니다.
예시
> const roleBasedKeys = [
['0x{private key1}', '0x{private key2}'],
['0x{private key3}', '0x{private key4}'],
['0x{private key5}', '0x{private key6}'],
]
> caver.wallet.keyring.createWithRoleBasedKey('0x{address in hex}', roleBasedKeys)
RoleBasedKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_keys: [
[
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
],
[
PrivateKey { _privateKey: '0x{private key3}' },
PrivateKey { _privateKey: '0x{private key4}' }
],
[
PrivateKey { _privateKey: '0x{private key5}' },
PrivateKey { _privateKey: '0x{private key6}' }
]
]
}

caver.wallet.keyring.decrypt

caver.wallet.keyring.decrypt(keystore, password)
키스토어 v3 또는 v4 JSON을 복호화하고 복호화된 키링 객체를 반환합니다.
Parameters
이름
타입
설명
키스토어
객체
복호화할 키스토어 v3 또는 v4입니다.
password
string
암호화에 사용되는 비밀번호.
리턴값
타입
설명
Keyring
복호화된 인스턴스입니다(SingleKeyring, MultipleKeyring 또는RoleBasedKeyring).
예시
// Decrypt keystroe v4 (encrypted single keyring)
> caver.wallet.keyring.decrypt({
version: 4,
id: '9c12de05-0153-41c7-a8b7-849472eb5de7',
address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
keyring: [
{
ciphertext: 'eacf496cea5e80eca291251b3743bf93cdbcf7072efc3a74efeaf518e2796b15',
cipherparams: { iv: 'd688a4319342e872cefcf51aef3ec2da' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: 'c3cee502c7157e0faa42386c6d666116ffcdf093c345166c502e23bc34e6ba40',
n: 4096,
r: 8,
p: 1
},
mac: '4b49574f3d3356fa0d04f73e07d5a2a6bbfdd185bedfa31f37f347bc98f2ef26'
}
]
}, 'password')
SingleKeyring {
_address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
_key: PrivateKey { _privateKey: '0x{private key}' }
}
// Decrypt keystroe v4 (encrypted multiple keyring)
> caver.wallet.keyring.decrypt({
version: 4,
id: '55da3f9c-6444-4fc1-abfa-f2eabfc57501',
address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
keyring: [
{
ciphertext: '93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6',
cipherparams: { iv: '84f90907f3f54f53d19cbd6ae1496b86' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10',
n: 4096,
r: 8,
p: 1,
},
mac: '8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2',
},
{
ciphertext: '53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6',
cipherparams: { iv: 'd7a6f63558996a9f99e7daabd289aa2c' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f',
n: 4096,
r: 8,
p: 1,
},
mac: 'bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295',
},
],
}, 'password')
MultipleKeyring {
_address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
_keys: [
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
]
}
// Decrypt keystroe v4 (encrypted role-based keyring)
> caver.wallet.keyring.decrypt({
version: 4,
id: '55da3f9c-6444-4fc1-abfa-f2eabfc57501',
address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
keyring: [
[
{
ciphertext: '93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6',
cipherparams: { iv: '84f90907f3f54f53d19cbd6ae1496b86' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10',
n: 4096,
r: 8,
p: 1,
},
mac: '8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2',
},
{
ciphertext: '53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6',
cipherparams: { iv: 'd7a6f63558996a9f99e7daabd289aa2c' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f',
n: 4096,
r: 8,
p: 1,
},
mac: 'bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295',
},
],
[
{
ciphertext: 'f16def98a70bb2dae053f791882f3254c66d63416633b8d91c2848893e7876ce',
cipherparams: { iv: 'f5006128a4c53bc02cada64d095c15cf' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '0d8a2f71f79c4880e43ff0795f6841a24cb18838b3ca8ecaeb0cda72da9a72ce',
n: 4096,
r: 8,
p: 1,
},
mac: '38b79276c3805b9d2ff5fbabf1b9d4ead295151b95401c1e54aed782502fc90a',
},
],
[
{
ciphertext: '544dbcc327942a6a52ad6a7d537e4459506afc700a6da4e8edebd62fb3dd55ee',
cipherparams: { iv: '05dd5d25ad6426e026818b6fa9b25818' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '3a9003c1527f65c772c54c6056a38b0048c2e2d58dc0e584a1d867f2039a25aa',
n: 4096,
r: 8,
p: 1,
},
mac: '19a698b51409cc9ac22d63d329b1201af3c89a04a1faea3111eec4ca97f2e00f',
},
{
ciphertext: 'dd6b920f02cbcf5998ed205f8867ddbd9b6b088add8dfe1774a9fda29ff3920b',
cipherparams: { iv: 'ac04c0f4559dad80dc86c975d1ef7067' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '22279c6dbcc706d7daa120022a236cfe149496dca8232b0f8159d1df999569d6',
n: 4096,
r: 8,
p: 1,
},
mac: '1c54f7378fa279a49a2f790a0adb683defad8535a21bdf2f3dadc48a7bddf517',
},
],
],
}, 'password')
RoleBasedKeyring {
_address: '0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2',
_keys: [
[
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
],
[
PrivateKey { _privateKey: '0x{private key3}' }
],
[
PrivateKey { _privateKey: '0x{private key4}' },
PrivateKey { _privateKey: '0x{private key5}' }
]
]
}
// Decrypt keystroe v3 JSON
> caver.wallet.keyring.decrypt({
version: 3,
id: '43f99d36-3905-40e6-bff8-ff0dfc380037',
address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
crypto: {
ciphertext: 'f7296e68807837a5318502c097276a89d58d91b85e45e692aee284a27bcd0955',
cipherparams: { iv: '03fd985d07777601078840c73cc6f7f3' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '46f85271c43fa64ab3338c5235f1d5073bc9379d9b7ba6065c89afb816d83a8a',
n: 4096,
r: 8,
p: 1
},
mac: '947f13cd1481fa5ba186e59418ef7600fa69e9830054d59e4d5dc67176e1f967'
}
}, 'password')
SingleKeyring {
_address: '0xc02cec4d0346bf4124deeb55c5216a4138a40a8c',
_key: PrivateKey { _privateKey: '0x{private key}' }
}

keyring.getPublicKey

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

keyring.copy

keyring.copy()
Returns a copied keyring instance.
리턴값
타입
설명
Keyring
A copied keyring instance (SingleKeyring, MultipleKeyring or RoleBasedKeyring).
예시
// When keyring is an instance of SingleKeyring
> keyring.copy()
SingleKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_key: PrivateKey { _privateKey: '0x{private key}' }
}
// When keyring is an instance of MultipleKeyring
> keyring.copy()
MultipleKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_keys: [
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
]
}
// When keyring is an instance of RoleBasedKeyring
> keyring.copy()
RoleBasedKeyring {
_address: '0x30fcfa9679c7141a234c1324c7e0a8b715bdfc90',
_keys: [
[
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
],
[
PrivateKey { _privateKey: '0x{private key3}' },
PrivateKey { _privateKey: '0x{private key4}' }
],
[
PrivateKey { _privateKey: '0x{private key5}' },
PrivateKey { _privateKey: '0x{private key6}' }
]
]
}

keyring.sign

keyring.sign(transactionHash, chainId, role [, index])
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.
Parameters
이름
타입
설명
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
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
리턴값
타입
설명
Array
An array of SignatureData.
예시
// Using roleBasedKeyring which has two private key in roleTransactionKey
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleTransactionKey)
[
SignatureData { _v: '0x5044', _r: '0x7a8b6...', _s: '0x17139...' },
SignatureData { _v: '0x5043', _r: '0x7f978...', _s: '0x1a532...' }
]
// Using roleBasedKeyring which has two private key in roleTransactionKey with index
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleTransactionKey, 1)
[
SignatureData { _v: '0x5043', _r: '0x7f978...', _s: '0x1a532...' }
]
// Using roleBasedKeyring which has two private key in roleAccountUpdateKey
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleAccountUpdateKey)
[
SignatureData { _v: '0x5044', _r: '0xdbce8...', _s: '0x039a6...' },
SignatureData { _v: '0x5044', _r: '0xf69b7...', _s: '0x71dc9...' }
]
// Using roleBasedKeyring which has two private key in roleAccountUpdateKey with index
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleAccountUpdateKey, 1)
[
SignatureData { _v: '0x5044', _r: '0xf69b7...', _s: '0x71dc9...' }
]
// Using roleBasedKeyring which has two private key in roleFeePayerKey
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleFeePayerKey)
[
SignatureData { _v: '0x5043', _r: '0xe48bf...', _s: '0x1cf36...' },
SignatureData { _v: '0x5043', _r: '0x82976...', _s: '0x3c5e0...' }
]
// Using roleBasedKeyring which has two private key in roleFeePayerKey with index
> keyring.sign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', '0x2810', caver.wallet.keyring.role.roleFeePayerKey, 1)
[
SignatureData { _v: '0x5043', _r: '0x82976...', _s: '0x3c5e0...' }
]

keyring.ecsign

keyring.ecsign(hash, role [, index])
Signs with hashed data using the private key and returns a signature where V is 0 or 1 (parity of the y-value of a the secp256k1 curve).
This function is only used for certain transaction types. Therefore, it is recommended to use caver.wallet.sign or transaction.sign when signing a transaction.
Parameters
이름
타입
설명
해시
string
The hash string to sign.
role
number
키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role를 사용할 수 있습니다.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
리턴값
타입
설명
Array
An array of SignatureData.
예시
> keyring.ecsign('0xe9a11d9ef95fb437f75d07ce768d43e74f158dd54b106e7d3746ce29d545b550', caver.wallet.keyring.role.roleTransactionKey)
[
SignatureData { _v: '0x00', _r: '0x7a8b6...', _s: '0x17139...' }
]

keyring.signMessage

keyring.signMessage(message, role [, index])
Signs message with Klaytn-specific prefix. 다음 메서드는 Klaytn 고유의 서명을 계산합니다.
sign(keccak256("\x19Klaytn Signed Message:\n" + len(message) + message)))
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.
Parameters
이름
타입
설명
메시지
string
서명할 메시지입니다.
role
number
키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role를 사용할 수 있습니다.
index
number
(선택 사항) 사용하고자 하는 개인키의 인덱스입니다. 인덱스는 각각의 역할에 정의된 개인키들의 배열 길이보다 작아야 합니다. 인덱스가 정의되지 않았을 경우, 이 메서드는 모든 개인키를 사용합니다.
리턴값
타입
설명
객체
서명 결과를 포함하는 객체입니다.
반환된 객체는 다음을 포함합니다.
이름
타입
설명
messageHash
string