如何通过私钥文件使用web3.Keypair.fromSeed加载Solana钱包
Solana CLI生成私钥在JS环境加载方案
solana-keygen生成的JSON文件内的64字节数组结构为前32字节为私钥种子,后32字节为对应公钥,web3.Keypair.fromSeed()仅需要前32位种子作为入参即可完成加载。
操作步骤
- 提取你提供的64字节数组的前32位作为种子:
[237,158,92,107,132,192,1,57,8,20,213,108,29,227,37,8,3,105,196,244,8,221,184,199,62,253,98,131,33,165,165,215] - JS/Node.js代码实现:
const { Keypair } = require('@solana/web3.js'); // 导入solana-keygen生成的完整64位密钥数组 const fullSecretKey = [237,158,92,107,132,192,1,57,8,20,213,108,29,227,37,8,3,105,196,244,8,221,184,199,62,253,98,131,33,165,165,215,14,7,46,23,221,242,240,226,94,79,161,31,192,163,13,25,106,53,34,215,83,124,162,156,8,97,194,180,213,179,33,68]; // 截取前32位转成Uint8Array作为种子入参 const seed = new Uint8Array(fullSecretKey.slice(0, 32)); const keypair = Keypair.fromSeed(seed); // 输出公钥验证,和你查询到的地址完全一致 console.log(keypair.publicKey.toBase58()); // 输出结果:wm4MapPtFaUoSsyBJppVnChYMGvHzTeAL6BNZ5GmSqH
更简便的替代方案
你也可以不用手动拆分种子,直接调用Keypair.fromSecretKey()方法传入完整64字节数组即可生成密钥对:
const keypair = Keypair.fromSecretKey(new Uint8Array(fullSecretKey));
内容的提问来源于stack exchange,提问作者raddevus
相关产品推荐
相关产品推荐

