将虚拟钱包私钥导入 solana CLI

use*_*376 25 solana solana-cli

我需要通过 Solana CLI 使用 Phantom 钱包,但无法配置它。

例如,要使用以下命令检查余额

solana balance --keypair fileexportedfromphantom
Run Code Online (Sandbox Code Playgroud)

但无法读取信息。

如何将该私钥转换为可在 Solana CLI 中使用的有效形式?

yam*_*men 52

尝试:

solana-keygen recover 'prompt://?key=0/0' -o <file.json>

然后在“显示秘密恢复短语”下输入 Phantom 的 24 字恢复短语。

这是因为 Phantom 使用0/0钱包的派生路径,并且需要额外提供的路径才能到达正确的帐户。

您可以使用相同的命令与1/0, 2/0...N/0来获取不同的 Phantom 派生帐户。

有关使用 Solana 工具进行分层派生的更多信息,请参阅此处:https://docs.solana.com/wallet-guide/paper-wallet#hierarchical-derivation

或者使用 Solflare 钱包在此处检查特定 24 个单词短语的派生路径: https: //solflare.com/access


根据 @FutForFut 最近的评论,这假设您已经或想要使用 Phantom 的秘密恢复短语。在某些情况下,您可能只在菜单中拥有来自 Phantom 的私钥(“显示私钥”)。这是一个 base58 编码的密钥,您需要将其转换为 JSON 文件中的字节数组。

bs58这是使用包 ( https://www.npmjs.com/package/bs58 )的 Javascript 片段:

const bs58 = require('bs58');
const fs = require('fs');
b = bs58.decode('privatekeyexportedfromphantom');
j = new Uint8Array(b.buffer, b.byteOffset, b.byteLength / Uint8Array.BYTES_PER_ELEMENT);
fs.writeFileSync('key.json', `[${j}]`);
Run Code Online (Sandbox Code Playgroud)

privatekeyexportedfromphantom根据需要更新字段key.json


Jon*_*n C 14

这有点烦人,但您必须将 Phantom 返回的 base-58 私钥解码为字节数组。下面是一个简单的 Python 代码片段,使用base58包 ( https://pypi.org/project/base58/ ) 来完成此操作:

import base58
byte_array = base58.b58decode(MY_PRIVATE_KEY_IN_BASE58)
json_string = "[" + ",".join(map(lambda b: str(b), byte_array)) + "]"
print(json_string)
Run Code Online (Sandbox Code Playgroud)

您可以将该输出传送到一个文件,然后将其用作--keypairCLI 工具。