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 |