caver.wallet.keyring
caver.wallet.keyring
은 주소와 개인키를 포함한 Keyring 관련 기능을 제공하는 패키지입니다.
Class
Keyring
은 계정의 주소와 개인키를 담고 있는 구조체입니다. 사용자가 자신의 클레이튼 계정을 사용하여 로그인할 수 있도록 하는 caver-js의 클래스입니다.
Keyring
은 저장하는 키의 종류에 따라 세 가지 유형으로 분류할 수 있습니다: 하나의 주소와 하나의 개인키를 저장하는 SingleKeyring, 하나의 주소와 여러 개인키를 저장하는 MultipleKeyring, 각 역할별로 하나의 주소와 하나 이상의 개인키를 저장하는 RoleBasedKeyring입니다.
- SingleKeyring: 사용자가 하나의 개인 키로 서명
- MultipleKeyring: 사용자가 여러 개인 키로 서명
- RoleBasedKeyring: 사용자가 역할별 개인 키로 서명합니다.
SingleKeyring
const keyring = new caver.wallet.keyring.singleKeyring(address, key)
SingleKeyring
은 계정의 address
와 private
key`를 저장하는 클래스입니다. 개인키 문자열로 SingleKeyring 인스턴스를 생성하려면 caver.wallet.keyring.create를 참고하시기 바랍니다.
SingleKeyring
은 역할이 할당되지 않은 개인키를 사용합니다.
속성
이름 | 유형 | 설명 |
---|---|---|
address | string | 계정의 주소입니다. |
Key | PrivateKey | 내부에 하나의 개인키가 포함된 PrivateKey의 인스턴스입니다. |
MultipleKeyring
const keyring = new caver.wallet.keyring.multipleKeyring(address, keys)
MultipleKeyring
은 계정의 address
와 여러 개의 private
key`를 저장하는 클래스입니다. 개인키 문자열로 MultipleKeyring 인스턴스를 생성하려면 caver.wallet.keyring.create를 참조하시기 바랍니다.
MultipleKeyring
은 역할이 할당되지 않은 개인 키를 사용합니다.
속성
이름 | 유형 | 설명 |
---|---|---|
address | string | 계정의 주소입니다. |
keys | Array | 내부에 하나의 개인키를 포함하는 PrivateKey 인스턴스의 배열입니다. |
RoleBasedKeyring
const keyring = new caver.wallet.keyring.roleBasedKeyring(address, keys)
RoleBasedKeyring
은 계정의 address
와 각 역할에 사용할 private
key`를 배열 형태로 저장하는 클래스입니다.
RoleBasedKeyring
은 각 role에 대한 여러 키를 포함할 수 있는 2차원 배열(빈 key
는 [ [], [], [] ]
처럼 보입니다)로 구현되는 key
를 정의합니다. 첫 번째 배열 요소는 roleTransactionKey
에 대한 개인 키를 정의하고, 두 번째 요소는 roleAccountUpdateKey
에 대한 개인 키를 정의하며, 세 번째 요소는 roleFeePayerKey
에 대한 개인 키를 정의합니다.
속성
이름 | 유형 | 설명 |
---|---|---|
address | string | 계정의 주소입니다. |
keys | Array | 각 role에 사용되는 키를 정의하는 2차원 배열입니다. 각 role에는 PrivateKey 인스턴스가 포함됩니다. 첫 번째 요소는 roleTransactionKey 입니다. 두 번째 요소는 roleAccountUpdateKey 입니다. 마지막 요소는 roleFeePayerKey 입니다. |
아래는 각 역할에 정의된 키를 직관적으로 사용할 수 있도록 Keyring에 정의된 게터입니다. 각 역할에 사용되는 키는 아래의 게터를 통해 더 쉽게 접근할 수 있습니다.
이름 | 유형 | 설명 |
---|---|---|
roleTransactionKey | Array | 트랜잭션 서명에 사용된 RoleTransaction 키입니다(계정 업데이트용 트랜잭션 제외). keyring.roleTransactionkey 는 keys 속성의 첫 번째 요소를 반환합니다. |
roleAccountUpdateKey | Array | 계정 업데이트 트랜잭션에 서명하는 데 사용되는 roleAccountUpdateKey입니다. keyring.roleAccountUpdateKey 는 keys 속성의 두 번째 요소를 반환합니다. |
roleFeePayerKey | Array | 수수료 납부자로서 트랜잭션에 서명하는 데 사용되는 역할 수수 료 납부자 키입니다. keyring.roleFeePayerKey 는 keys 속성의 세 번째 요소를 반환합니다. |
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])
무작위로 생성된 개인 키로 싱글키잉 인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
entropy | string | (선택 사항) 엔트로피를 높이기 위한 임의의 문자열입니다. |
리턴 값
유형 | 설명 |
---|---|
SingleKeyring | 무작위로 생성된 단일 Keyring 인스턴스가 반환됩니다. |
예시
> caver.wallet.keyring.generate()SingleKeyring { _address: '0x8ecdfda0281f0d36518f89e0e2444c4f98b2e718', _key: PrivateKey { _privateKey: '0x{private key}' }}
caver.wallet.keyring.generateSingleKey
caver.wallet.keyring.generateSingleKey([entropy])
개인 키 문자열을 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
entropy | string | (선택 사항) 엔트로피를 높이기 위한 임의의 문자열입니다. |
리턴 값
유형 | 설명 |
---|---|
string | 개인 키 문자열이 반환됩니다. |
예시
> caver.wallet.keyring.generateSingleKey()'0x{private key}'
caver.wallet.keyring.generateMultipleKeys
caver.wallet.keyring.generateMultipleKeys(num [, entropy])
개인 키 문자열을 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
Number | 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])
각 배열 요소에 각 role에 대해 정의된 키가 포함된 2D 배열을 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
numArray | Array | 각 role에 대한 키 수가 포함된 배열입니다. |
entropy | string | (선택 사항) 엔트로피를 높이기 위한 임의의 문자열입니다. |
리턴 값
유형 | 설명 |
---|---|
Array | 각 배열 요소에 각 role에 대해 정의된 키가 포함된 2D 배열이 반환됩니다. |
예시
> 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)
매개변수가 있는 Keyring 인스턴스를 생성합니다.
key
가 개인키 문자열인 경우, 단일 개인키를 사용하는 SingleKeyring 인스턴스가 생성됩니다. key
가 개인키 문자열을 포함하는 배열인 경우 여러 개인키를 사용하는 MultipleKeyring 인스턴스가 생성됩니다. key
가 각 요소에 각 역할에 사용할 개인키가 포함된 2D 배열인 경우, RoleBasedKeyring 인스턴스가 만들어집니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
address | string | Keyring의 주소입니다. |
Key | string | Array | 개인 키 문자열, 개인 키 배열 또는 각 요소에 각 role에 사용할 키가 포함된 2D 배열입니다. |
리턴 값
유형 | 설명 |
---|---|
Keyring | 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
인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
Key | string | 이 파라미터는 개인키 또는 KlaytnWalletKey 중 하나만 입력할 수 있습니다. |
리턴 값
유형 | 설명 |
---|---|
SingleKeyring | 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
인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
klaytnWalletKey | string | KlaytnWalletKey 문자열입니다. |
리턴 값
유형 | 설 명 |
---|---|
SingleKeyring | 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
인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
address | string | Keyring을 만드는 데 사용할 주소입니다. |
Key | string | 개인키 문자열입니다. |
리턴 값
유형 | 설명 |
---|---|
SingleKeyring | 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
인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
address | string | Keyring의 주소입니다. |
keyArray | Array | 개인 키 문자열 배열입니다. |
리턴 값
유형 | 설명 |
---|---|
MultipleKeyring | 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)
주소와 각 배열 요소가 각 role에 대해 정의된 키를 포함하는 2D 배열에서 RoleBasedKeyring
인스턴스를 생성합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
address | string | Keyring의 주소입니다. |
roledBasedKeyArray | Array | 각 역할에 대한 개인 키 문자열 배열이 포함된 2차원 배열입니다. |
리턴 값
유형 | 설명 |
---|---|
RoleBasedKeyring | 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을 복호화하고 복호화된 Keyring 인스턴스를 반환합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
keystore | object | 복호화할 키 저장소 v3 또는 v4입니다. |
password | string | 암호화에 사용되는 비밀번호입니다. |
리턴 값
유형 | 설명 |
---|---|
Keyring | 복호화된 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()
공개 키 문자열을 반환합니다. keyring
이 SingleKeyring의 인스턴스인 경우, getPublicKey는 공개키 문자열을 반환합니다. keyring
이 MultipleKeyring의 인스턴스인 경우, getPublicKey는 공개 키 문자열 배열을 반환합니다. keyring
이 RoleBasedKeyring의 인스턴스인 경우, getPublicKey는 각 역할에 사용되는 공개키가 배열로 정의된 2차원 배열을 반환합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
compressed | boolean | (선택 사항) 압축 형식인지 여부(기본값: false ). |
리턴 값
유형 | 설명 |
---|---|
string | Array | 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()
복사된 Keyring 인스턴스를 반환합니다.
리턴 값
유형 | 설명 |
---|---|
Keyring | 복사된 Keyring 인스턴스 (SingleKeyring, MultipleKeyring 또는 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])
트랜잭션 해시를 사용하여 개인 키로 서명하고 서명을 반환합니다. 사용자가 인덱스 매개변수를 정의하지 않은 경우, keyring.sign
은 역할에서 사용하는 모든 개인 키를 사용하여 트랜잭션에 서명합니다. index
가 정의된 경우 keyring.sign
은 인덱스에서 하나의 개인 키만 사용하여 트랜잭션에 서명합니다. caver-js에서 사용되는 역할은 caver.wallet.keyring.role
을 통해 확인할 수 있습니다.
트랜잭션에 서명할 때는 caver.wallet.sign 또는 transaction.sign을 사용하 는 것을 권장합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
transactionHash | string | 서명할 트랜잭션의 해시 문자열입니다. |
chainId | string | number | 클레이튼 블록체인 플랫폼의 체인 아이디입니다. |
role | number | 키의 역할을 나타내는 숫자입니다. caver.wallet.keyring.role 을 사용할 수 있습니다. |
index | number | (선택 사항) 사용하려는 개인키의 인덱스입니다. 인덱스는 각 역할에 대해 정의된 개인키 배열의 길이보다 작아야 합니다. 인덱스가 정의되지 않은 경우 이 메서드는 모든 개인 키를 사용합니다. |
리턴 값
유형 | 설명 |
---|---|
Array | 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])
개인 키를 사용하여 해시된 데이터로 서명하고 V가 0 또는 1(secp256k1 곡선의 y값 패리티)인 서명을 반환합니다.
이 함수는 특정 트랜잭션 유형에만 사용됩니다. 따라서 트랜잭션에 서명할 때는 caver.wallet.sign 또는 transaction.sign을 사용하는 것을 권장합니다.
매개변수
이름 | 유형 | 설명 |
---|---|---|
hash | string | 서명할 해시 문자열입니다. |
role | number |