账户创建与管理
Polkadot 账户是访问网络和进行交易的基础。本指南将介绍如何创建、管理和使用 Polkadot 账户。
账户类型
Polkadot 支持多种加密算法和账户类型:
- sr25519: 默认的 Schnorr 签名算法,推荐使用
- ed25519: Ed25519 签名算法,兼容性更好
- ecdsa: 椭圆曲线数字签名算法,兼容以太坊
基本账户操作
1. 初始化加密库
在使用任何加密功能之前,需要等待加密库准备就绪:
const { cryptoWaitReady } = require('@polkadot/util-crypto');
async function main() {
// 等待加密库初始化
await cryptoWaitReady();
// 继续其他操作...
}
2. 生成助记词
生成新的助记词用于创建账户:
const { mnemonicGenerate } = require('@polkadot/util-crypto');
const mnemonic = mnemonicGenerate();
console.log('Generated mnemonic:', mnemonic);
3. 创建密钥环
密钥环是管理多个账户的容器:
const { Keyring } = require('@polkadot/keyring');
// 创建 sr25519 类型的密钥环
const keyring = new Keyring({
ss58Format: 42, // Polkadot 主网的地址格式
type: 'sr25519' // 使用 sr25519 算法
});
// 从助记词添加账户
const pair = keyring.addFromUri(mnemonic + '//polkadot');
console.log('Account address:', pair.address);
4. 从助记词恢复账户
const { Keyring } = require('@polkadot/keyring');
const keyring = new Keyring({ ss58Format: 42, type: 'ecdsa' });
const pair = keyring.addFromUri('your_mnemonic_here//polkadot');
console.log('Recovered address:', pair.address);
console.log('Public key:', pair.publicKey);
地址格式
SS58 地址格式
Polkadot 使用 SS58 地址格式,不同网络有不同的前缀:
- Polkadot 主网: 0 (ss58Format: 0)
- Westend 测试网: 42 (ss58Format: 42)
- Kusama: 2 (ss58Format: 2)
地址编码
const { encodeAddress, blake2AsU8a } = require('@polkadot/util-crypto');
// 从公钥生成地址
const publicKey = '0x0273082f8d8e82aced358aa4bcfec5fbe4084fd87ac5f124c7cc326c7044812ebb';
const address = encodeAddress(blake2AsU8a(publicKey), 42);
console.log('Encoded address:', address);
账户验证
验证助记词
const { mnemonicValidate } = require('@polkadot/util-crypto');
const isValid = mnemonicValidate(mnemonic);
console.log('Is valid mnemonic:', isValid);
验证地址
const { isAddress } = require('@polkadot/util');
const isValidAddress = isAddress(address);
console.log('Is valid address:', isValidAddress);
完整示例
const { Keyring } = require('@polkadot/api');
const {
cryptoWaitReady,
mnemonicGenerate,
mnemonicValidate,
encodeAddress,
blake2AsU8a,
} = require('@polkadot/util-crypto');
const { isAddress } = require('@polkadot/util');
async function createAccount() {
await cryptoWaitReady();
// 生成助记词
const mnemonic = mnemonicGenerate();
console.log('Generated mnemonic:', mnemonic);
// 验证助记词
const isValid = mnemonicValidate(mnemonic);
console.log('Valid mnemonic:', isValid);
// 创建密钥环
const keyring = new Keyring({ ss58Format: 42, type: 'sr25519' });
const pair = keyring.addFromUri(mnemonic + '//polkadot');
console.log('Account address:', pair.address);
console.log('Public key:', pair.publicKey);
return { mnemonic, pair };
}
createAccount().catch(console.error);
安全注意事项
- 助记词安全: 永远不要在代码中硬编码助记词
- 环境变量: 使用环境变量存储敏感信息
- 网络选择: 确保使用正确的网络地址格式
- 算法选择: 推荐使用 sr25519 算法以获得最佳性能
常见问题
Q: 如何切换网络?
A: 在创建 Keyring 时指定正确的 ss58Format
参数。
Q: 支持哪些加密算法?
A: 支持 sr25519、ed25519 和 ecdsa 三种算法。
Q: 如何备份账户?
A: 安全保存助记词,可以使用硬件钱包进行额外保护。