跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)

caver.wallet

caver.wallet "是一個在內存錢包中管理Keyring實例的軟件包。 caver.wallet accepts all SingleKeyring, MultipleKeyring, and RoleBasedKeyring, and manages them by address.

Class

KeyringContainer


caver.wallet

KeyringContainer "是一個管理SingleKeyringMultipleKeyringRoleBasedKeyring實例的類。 當 Caver 實例化時,它會在 caver.wallet 中創建一個 KeyringContainer 實例。 您可以通過 caver.wallet 在內存錢包中存儲和管理鑰匙實例。

屬性

名稱類型描述
lengthnumberkeyringContainer 中keyrings的數量。

caver.wallet.generate


caver.wallet.generate(numberOfKeyrings [, entropy])

在 keyringContainer 中生成帶有隨機生成的私鑰的 SingleKeyring 實例。

參數

名稱類型描述
numberOfKeyringsnumber要創建的 SingleKeyring 實例的數量。
entropystring(可選)用於增加熵的隨機字符串。

返回價值

類型描述
Array包含已生成地址的數組。

舉例


// generate without entropy
> caver.wallet.generate(3)
[
'0xb4b0c3781082cf818bfaf5adfc73fdf59d92c1cd',
'0x9957dfd92e4b70f91131c573293343bc5f21f215',
'0xed2fe179c18fa528da2392532998560bd1008511'
]
// generate with entropy
> caver.wallet.generate(3, caver.utils.randomHex(32))
[
'0xb4b0c3781082cf818bfaf5adfc73fdf59d92c1cd',
'0x9957dfd92e4b70f91131c573293343bc5f21f215',
'0xed2fe179c18fa528da2392532998560bd1008511'
]

caver.wallet.newKeyring


caver.wallet.newKeyring(address, key)

使用給定參數創建鑰匙圈實例,並將其添加到 caver.wallet 中。

如果 key 是私鑰字符串,則會創建一個使用單個私鑰的 SingleKeyring 實例。 如果 key 是一個包含私鑰字符串的數組,則會創建一個使用多個私鑰的 MultipleKeyring 實例。 如果 key 是一個二維數組,其中每個元素都包含每個角色要使用的私鑰,則會創建一個 RoleBasedKeyring 實例。 創建的keyring會添加到 caver.wallet

參數

名稱類型描述
addressstring地址字符串。
keystring \Array

返回價值

類型描述
object返回添加到 caver.wallet 的 keyring 實例(SingleKeyringMultipleKeyringRoleBasedKeyring )。

示例


// Create a instance of SingleKeyring and add to caver.wallet
> caver.wallet.newKeyring('0x{address in hex}', '0x{private key}')
SingleKeyring {
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
_key: PrivateKey { _privateKey: '0x{private key}' }
}
// Create a instance of MultipleKeyring and add to caver.wallet
> caver.wallet.newKeyring('0x{address in hex}', ['0x{private key1}', '0x{private key2}'])
MultipleKeyring {
_address: '0x17e7531b40ad5d7b5fa7b4ec78df64ce1cb36d24',
_keys: [
PrivateKey { _privateKey: '0x{private key1}' },
PrivateKey { _privateKey: '0x{private key2}' }
]
}
// Create a instance of RoleBasedKeyring and add to caver.wallet
> const roleBasedKeys = [
['0x{private key1}', '0x{private key2}'],
['0x{private key3}', '0x{private key4}'],
['0x{private key5}', '0x{private key6}'],
]
> caver.wallet.newKeyring('0x{address in hex}', roleBasedKeys)
RoleBasedKeyring {
_address: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_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.updateKeyring


caver.wallet.updateKeyring(keyring)

更新 caver.wallet 中的 keyring。 當一個新的 keyring 實例(SingleKeyringMultipleKeyringRoleBasedKeyring 被作為參數傳遞時,存儲在 caver.wallet 中與給定的 keyring 實例的 address 屬性相匹配的現有密鑰環將被找到並替換為給定的密鑰環。 如果找不到匹配的 keyring,則會出現錯誤。

參數

名稱類型描述
keyringobject要存儲在 caver.wallet 中的新 keyring(SingleKeyringMultipleKeyringRoleBasedKeyring )。

返回價值

類型描述
object存儲在caver.wallet中的已更新 keyring(SingleKeyringMultipleKeyringRoleBasedKeyring )。

示例


> caver.wallet.updateKeyring(newKeyring)
SingleKeyring {
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
_key: PrivateKey { _privateKey: '0x{private key}' }
}

caver.wallet.getKeyring


caver.wallet.getKeyring(address)

返回與 caver.wallet 中的地址相對應的密鑰環實例。

參數

名稱類型描述
addressstring要查詢的 keyring 地址。

返回價值

類型描述
object找到的keyring實例(SingleKeyringMultipleKeyringRoleBasedKeyring )存儲在 caver.wallet 中。

示例


> caver.wallet.getKeyring('0x386a4bb40abbfaa59cecdc3ced202475895fd569')
SingleKeyring {
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
_key: PrivateKey { _privateKey: '0x{private key}' }
}

caver.wallet.isExisted


caver.wallet.isExisted(address)

如果存在與地址匹配的 keyring,則返回 true

參數

名稱類型描述
addressstring要檢查是否存在的keyring地址。

返回價值

類型描述
booleantrue "表示 `caver.wallet "中存在與地址匹配的密鑰。

舉例


> caver.wallet.isExisted('0x386a4bb40abbfaa59cecdc3ced202475895fd569')
true

caver.wallet.add


caver.wallet.add(keyring)

caver.wallet 添加 keyring 實例。 如果新給定的keyring與 caver.wallet 中已存在的keyring地址相同,則會返回錯誤信息。 在這種情況下,使用 updateKeyring 更新caver.wallet中的現有keyring。

參數

名稱類型描述
keyringobject要添加到 caver.wallet 的keyring實例(SingleKeyringMultipleKeyringRoleBasedKeyring )。

返回價值

類型描述
objectcaver.wallet`中添加的keyring(SingleKeyringMultipleKeyringRoleBasedKeyring )。

示例


> caver.wallet.add(keyring)
SingleKeyring {
_address: '0x386a4bb40abbfaa59cecdc3ced202475895fd569',
_key: PrivateKey { _privateKey: '0x{private key}' }
}

caver.wallet.remove


caver.wallet.remove(address)

caver.wallet 中刪除地址與給定鑰匙圈地址一致的keyring。

參數

名稱類型描述
addressstring要在 caver.wallet 中刪除的keyring的地址。

返回價值

類型描述
boolean如果從 caver.wallet'中刪除了keyring,則為 true

示例


> caver.wallet.remove('0x6a3edfad6d1126020d5369e9097db39281876c5d')
true

caver.wallet.signMessage


caver.wallet.signMessage(address, message, role [, index])

使用存儲在 caver.wallet 中的密鑰,用 kaia 專用前綴簽署信息。 這樣就能計算出 kaia 特有的簽名:


sign(keccak256("\x19Klaytn Signed Message:\n" + len(message) + message)))

如果用戶沒有提供索引參數,caver.wallet.signMessage 會使用角色使用的所有私鑰簽署信息。 如果給定了索引參數,caver.wallet.signMessage 將只使用給定索引上的一個私鑰來簽署信息。 在 caver-js 中使用的角色可以通過 caver.wallet.keyring.role找到。

參數

名稱類型描述
addressstring要使用的keyring地址。
messagestring要簽署的信息。
rolenumber表示鑰匙作用的數字。 您可以使用 caver.wallet.keyring.role
indexnumber(可選)要使用的私人密鑰的索引。 索引必須小於為每個角色定義的私鑰數組的長度。 如果沒有定義索引,該方法將使用所有私鑰。

返回價值

類型描述
object包含簽名結果的對象。

返回的對象包含以下內容

名稱類型描述
messageHashstring用 kaia 專用前綴簽署信息。
singaturesArray[SignatureData] (#signaturedata)的數組。
messagestring待簽名消息

示例


// Sign message with roleTransactionKey which uses two private keys
> caver.wallet.signMessage('0x386a4bb40abbfaa59cecdc3ced202475895fd569', 'message to sign', caver.wallet.keyring.role.roleTransactionKey)
{
messageHash: '0x9c4c1ae0aa1faf7e59eaf6fcf36a34542698197b379a9949b58c92925e74c069',
signatures: [
SignatureData { _v: '0x1c', _r: '0xb3239...', _s: '0x584d2...' },
SignatureData { _v: '0x1b', _r: '0x13c64...', _s: '0x60c61...' }
],
message: 'message to sign'
}
// Sign message with roleTransactionKey and index
> caver.wallet.signMessage('0x386a4bb40abbfaa59cecdc3ced202475895fd569', 'message to sign', caver.wallet.keyring.role.roleTransactionKey, 1)
{
messageHash: '0x9c4c1ae0aa1faf7e59eaf6fcf36a34542698197b379a9949b58c92925e74c069',
signatures: [
SignatureData { _v: '0x1b', _r: '0x13c64...', _s: '0x60c61...' }
],
message: 'message to sign'
}

caver.wallet.sign


caver.wallet.sign(address, transaction [, index] [, hasher])

使用 caver.wallet 中的密鑰作為事務的發送方簽署事務,並在事務對象中添加簽名

對於 Account Update 交易,使用 roleTransactionKey ,否則,使用 roleTransactionKey 。 如果用戶沒有定義 "index","caver.wallet.sign "會使用角色使用的所有私鑰簽署交易。 如果定義了 indexcaver.wallet.sign 就會只使用給定索引上的一個私鑰來簽署交易。

參數

名稱類型描述
addressstring要使用的 keyring 地址。
transactionobject[Transaction](.../caver-transaction/caver-transaction.md#class)的實例。
indexnumber(可選)要使用的私人密鑰的索引。 索引必須小於為每個角色定義的私鑰數組的長度。 如果沒有定義索引,該方法將使用所有私鑰。
hasherfunction(可選)用於獲取交易哈希值的哈希函數。 如果將 hasher 作為參數,它將計算事務哈希值,而不是使用 caver-js 中的默認方法計算事務哈希值。 See Basic for details about the default method for transaction hash generation.

返回價值

返回 "對象 "的 "許諾":已簽署的事務。

類型描述
object已簽名的事務實例。 簽名將附加到 transaction.signatures 中。

有關事務類型字段的更多信息,請參閱 [caver.transaction](.../caver-transaction/caver-transaction.md)。

示例


// This example uses the ValueTransfer transaction.
// Please refer to [caver.transaction] for how to use various transaction types.
> const transaction = caver.transaction.valueTransfer.create({
from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
value: 1,
gas: 30000,
})
> const customHasher = () => { ... }
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction).then(console.log)
ValueTransfer {
_type: 'TxTypeValueTransfer',
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_gas: '0x7530',
_signatures: [
SignatureData { _v: '0x4e43', _r: '0xd78a2...', _s: '0x379e9...' },
SignatureData { _v: '0x4e43', _r: '0x70a58...', _s: '0x2ab28...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey and index
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 1).then(console.log)
ValueTransfer {
_type: 'TxTypeValueTransfer',
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_gas: '0x7530',
_signatures: [
SignatureData { _v: '0x4e43', _r: '0x70a58...', _s: '0x2ab28...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey and hasher
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, customHasher).then(console.log)
ValueTransfer {
_type: 'TxTypeValueTransfer',
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_gas: '0x7530',
_signatures: [
SignatureData { _v: '0x4e44', _r: '0x7a8b6...', _s: '0x17139...' },
SignatureData { _v: '0x4e43', _r: '0x7f978...', _s: '0x1a532...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleTransactionKey, index and hasher
> caver.wallet.sign('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0, customHasher).then(console.log)
ValueTransfer {
_type: 'TxTypeValueTransfer',
_from: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_gas: '0x7530',
_signatures: [
SignatureData { _v: '0x4e44', _r: '0x7a8b6...', _s: '0x17139...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}

caver.wallet.signAsFeePayer


caver.wallet.signAsFeePayer(address, transaction [, index] [, hasher])

使用 caver.wallet 中的密鑰,在交易對象中以交易的 費用支付方 身份簽名並附加 費用支付方簽名

要以付費者身份簽署交易,請使用 roleFeePayerKey. 如果用戶沒有定義 "索引","caver.wallet.signAsFeePayer "會使用角色使用的所有私鑰簽署交易。 如果定義了 indexcaver.wallet.signAsFeePayer 將只使用給定索引上的一個私鑰來簽署交易。

如果未定義 "transaction.feePayer",則分配由 "caver.wallet "創建的密鑰地址。

參數

名稱類型描述
addressstring要使用的keyring地址。
transactionobjectFeeDelegatedTransaction](../caver-transaction/fee-delegation.md) 的實例。
indexnumber(可選)要使用的私人密鑰的索引。 索引必須小於為每個角色定義的私鑰數組的長度。 如果沒有定義索引,該方法將使用所有私鑰。
hasherfunction(可選)用於獲取交易哈希值的函數。 如果將 hasher 定義為參數,就會使用它來獲取事務哈希值,而不是使用 caver-js 中的默認實現。

返回價值

返回 "object" 的 "Promise":已簽署的事務。

類型描述
object已簽名的事務實例。 簽名結果會附加到 "transaction.feePayerSignatures "中。

有關事務類型字段的更多信息,請參閱 [caver.transaction](.../caver-transaction/caver-transaction.md)。

示例


// This example uses the FeeDelegatedValueTransfer transaction.
// Please refer to [caver.transaction] for how to use various transaction types.
> const transaction = caver.transaction.feeDelegatedValueTransfer.create({
from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
value: 1,
gas: 30000,
})
> const customHasher = () => { ... }
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction).then(console.log)
FeeDelegatedValueTransfer {
_type: 'TxTypeFeeDelegatedValueTransfer',
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
_gas: '0x7530',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_feePayerSignatures: [
SignatureData { _v: '0x4e44', _r: '0x7010e...', _s: '0x65d6b...' },
SignatureData { _v: '0x4e43', _r: '0x96ef2...', _s: '0x77f34...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey, index
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0).then(console.log)
FeeDelegatedValueTransfer {
_type: 'TxTypeFeeDelegatedValueTransfer',
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
_gas: '0x7530',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_feePayerSignatures: [
SignatureData { _v: '0x4e44', _r: '0x7010e...', _s: '0x65d6b...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey and hasher
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, customHasher).then(console.log)
FeeDelegatedValueTransfer {
_type: 'TxTypeFeeDelegatedValueTransfer',
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
_gas: '0x7530',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_feePayerSignatures: [
SignatureData { _v: '0x4e43', _r: '0xe48bf...', _s: '0x1cf36...' },
SignatureData { _v: '0x4e43', _r: '0x82976...', _s: '0x3c5e0...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}
// Sign a transaction with the address of RoleBasedKeyring which use two private keys for roleFeePayerKey, index and hasher
> caver.wallet.signAsFeePayer('0xe7e9184c125020af5d34eab7848bab799a1dcba9', transaction, 0, customHasher).then(console.log)
FeeDelegatedValueTransfer {
_type: 'TxTypeFeeDelegatedValueTransfer',
_from: '0x6fddbcb99d31b8755c2b840a367f53eea4b4f45c',
_gas: '0x7530',
_signatures: [ SignatureData { _v: '0x01', _r: '0x', _s: '0x' } ],
_feePayer: '0xe7e9184c125020af5d34eab7848bab799a1dcba9',
_feePayerSignatures: [
SignatureData { _v: '0x4e43', _r: '0x82976...', _s: '0x3c5e0...' }
],
_to: '0x3424b91026bdc5ec55df4548e6ebf0f28b60abd7',
_value: '0x1',
_chainId: '0x2710',
_gasPrice: '0x5d21dba00',
_nonce: '0x0'
}

讓這個頁面變得更好