钱包管理
在 Blocklet SDK 中,钱包是一个基本的加密对象,代表了你的应用程序的身份。它对于签署数据、验证请求以及与区块链网络交互至关重要。SDK 提供了一个强大而便捷的工具 getWallet,可以直接从你的应用程序的环境变量中创建和管理钱包实例。
无论你使用的是 ArcBlock 的原生 DID 还是以太坊,该工具都抽象了处理不同加密曲线和密钥格式的复杂性。钱包的密钥来源于 Blocklet Server 设置的环境变量,你可以在配置与环境文档中了解更多信息。
getWallet 工具#
getWallet 函数是创建 WalletObject 的主要方法。默认情况下,它使用应用程序的标准密钥(BLOCKLET_APP_SK)和从环境中配置的链类型(CHAIN_TYPE 或 BLOCKLET_WALLET_TYPE)。
Basic Usage
import getWallet from '@blocklet/sdk/lib/wallet';
// Create a wallet instance using environment variables
const appWallet = getWallet();
// Now you can use the wallet to sign data
const signature = appWallet.sign('data to be signed');该工具足够智能,可以根据配置处理不同的区块链类型。
参数#
虽然 getWallet 可以直接使用环境变量,但你也可以通过传递参数来覆盖其行为。
为特定链创建钱包#
你可以通过提供 type 参数来明确请求特定链类型的钱包。
Creating an Ethereum Wallet
import getWallet from '@blocklet/sdk/lib/wallet';
// Explicitly create an Ethereum wallet using the default secret key
const ethWallet = getWallet('ethereum');专门的钱包辅助工具#
getWallet 函数还附带了几个用于常见用例的辅助方法。
getWallet.getPermanentWallet()#
某些操作可能需要更稳定、长期的身份。为此,Blocklet Server 提供了一个永久密钥(BLOCKLET_APP_PSK)。这个辅助工具使用此永久密钥创建一个钱包。
Using the Permanent Wallet
import getWallet from '@blocklet/sdk/lib/wallet';
const permanentWallet = getWallet.getPermanentWallet();getWallet.getEthereumWallet(permanent)#
这是创建以太坊钱包的便捷快捷方式。它接受一个可选的布尔参数,用于指定是否使用永久密钥。
Creating Ethereum Wallets
import getWallet from '@blocklet/sdk/lib/wallet';
// Get the standard Ethereum wallet (uses BLOCKLET_APP_SK)
const standardEthWallet = getWallet.getEthereumWallet();
// Get the permanent Ethereum wallet (uses BLOCKLET_APP_PSK)
const permanentEthWallet = getWallet.getEthereumWallet(true);getWallet.getPkWallet()#
在某些情况下,你可能需要使用钱包的公钥(BLOCKLET_APP_PK)来验证签名,而无需访问密钥。getPkWallet 辅助工具从公钥创建一个只读的钱包实例。
Creating a Wallet from a Public Key
import getWallet from '@blocklet/sdk/lib/wallet';
// Create a wallet from the app's public key
const pkWallet = getWallet.getPkWallet();
// This wallet can be used to verify signatures, but not to sign data
// const isValid = pkWallet.verify('data', signature);性能与缓存#
为实现最佳性能,getWallet 工具内置了一个 LRU(最近最少使用)缓存。它根据钱包的类型和密钥最多缓存四个钱包实例,确保使用相同参数的重复调用速度极快。此缓存是自动处理的,因此你无需自行实现。
在对钱包管理有了扎实的理解之后,你现在已经具备了在你的 blocklet 中处理加密操作的能力。下一个合理的步骤是了解如何使用这些钱包来保护你的应用程序。