如何使用PolkadotJS创建账户及通过NPM包实现添加账户功能
用PolkadotJS NPM包实现「Add account」添加账户功能
托管的PolkadotJS应用的添加账户功能本质是基于加密算法生成符合Substrate/Polkadot地址规范的密钥对,不需要直接调用链上接口,账户生成是离线完成的,链上只有当该地址发生交易时才会激活存在,具体实现步骤如下:
- 第一步:安装必要依赖
需要安装@polkadot/keyring(密钥对管理核心库)和@polkadot/util-crypto(加密工具库),安装命令:
npm install @polkadot/keyring @polkadot/util-crypto
- 第二步:初始化Keyring实例
Keyring是管理账户的核心实例,初始化时需要指定对应链的ss58地址前缀,你可以根据对接的链调整参数,示例默认用Substrate开发网前缀42:
import { Keyring } from '@polkadot/keyring'; import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto'; // 必须等wasm加密模块初始化完成再操作 await cryptoWaitReady(); // 初始化Keyring,ss58Format根据对接的链修改:Polkadot为0,Kusama为2,Substrate默认42 const keyring = new Keyring({ type: 'sr25519', ss58Format: 42 });
- 第三步:生成新账户(对应Add account功能)
有两种常用场景:随机生成全新账户、用已有助记词导入账户- 随机生成全新账户
// 生成12位助记词 const mnemonic = mnemonicGenerate(12); // 用助记词生成密钥对,可设置账户名,后续可修改 const newAccount = keyring.addFromMnemonic(mnemonic, { name: '我的新账户' }); // 可选:给账户设置加密密码,加密后私钥只有输入密码才能解锁使用 newAccount.lock(); newAccount.encodePkcs8('你设置的密码');- 已有助记词导入账户
const existMnemonic = '用户输入的12/24位助记词'; const importAccount = keyring.addFromMnemonic(existMnemonic, { name: '导入的账户' }); - 第四步:持久化存储账户信息
生成的账户信息需要加密存储在本地(浏览器端存在localStorage,客户端存在本地配置文件),禁止明文存储助记词、私钥等敏感信息,你可以通过toJson()方法导出加密后的账户信息:
// 导出加密后的账户json,需要传入密码 const accountJson = newAccount.toJson('你设置的密码'); // 存储到本地 localStorage.setItem(`polkadot_account_${newAccount.address}`, JSON.stringify(accountJson));

注意:账户生成全程是离线操作,不需要和链节点交互,只有当你用这个账户发起转账、调用合约等交易时,才需要连接节点广播签名后的交易。
内容的提问来源于stack exchange,提问作者vadersfather
相关产品推荐
相关产品推荐

