如何使用@solana/web3.js生成可导入Phantom钱包的Solana私钥
解决方案
你当前输出的是Solana私钥对应Uint8数组的逗号拼接字符串,Phantom等Solana钱包要求导入的是Base58编码的64字节私钥字符串,你只需要将生成的Keypair的secretKey做Base58编码即可得到符合要求的私钥。
1. 前置依赖安装
需要用到bs58库完成编码转换,先执行安装命令:
npm install bs58
2. 生成符合Phantom导入要求的私钥代码
替换你原来的代码即可直接输出可用私钥:
const solanaWeb3 = require("@solana/web3.js"); const bs58 = require("bs58"); const wallet = solanaWeb3.Keypair.generate(); // 输出钱包公钥 console.log("公钥:", wallet.publicKey.toString()); // 输出可直接导入Phantom的Base58格式私钥 const phantomPrivateKey = bs58.encode(wallet.secretKey); console.log("Phantom可用私钥:", phantomPrivateKey);
3. 已有逗号分隔格式私钥的转换方法
如果你已经生成过逗号分隔的私钥字符串,可以用以下代码直接转换为可用格式:
const bs58 = require("bs58"); // 将你之前输出的逗号分隔私钥字符串填入此处 const commaSecretKey = "211,55,244,72,160,174,33,152,24,226,97,172,91,91,47,3,148,83,99,188,150,111,153,248,253,237,31,223,194,194,199,0,181,236,151,66,133,117,159,64,4,85,92,104,144,224,69,164,206,133,124,106,5,104,149,215,125,210,9,192,84,231,101,86"; const uint8SecretKey = new Uint8Array(commaSecretKey.split(",").map(Number)); const phantomPrivateKey = bs58.encode(uint8SecretKey); console.log("转换后可用私钥:", phantomPrivateKey);
重要提示:私钥是钱包资产的唯一凭证,请勿泄露给任何第三方,生成后请妥善离线保管,泄露将直接导致资产全额损失。
内容的提问来源于stack exchange,提问作者Nikolai Dikanev
相关产品推荐
相关产品推荐

