将虚拟钱包私钥导入 solana CLI

Posted

技术标签:

【中文标题】将虚拟钱包私钥导入 solana CLI【英文标题】:Import phantom wallet private key into solana CLI 【发布时间】:2021-11-13 15:55:16 【问题描述】:

我需要通过 solana CLI 使用虚拟钱包,但我无法对其进行配置。 例如使用检查余额

solana balance --keypair fileexportedfromphantom

但无法读取信息

如何将该私钥转换为有效形式以在 solana cli 中使用?

【问题讨论】:

【参考方案1】:

试试:

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

并在“Show Secret Recovery Phrase”下输入来自 Phantom 的 24 个单词的恢复短语。

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

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

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

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

【讨论】:

这就像一个魅力【参考方案2】:

这有点烦人,但您必须将 Phantom 返回的 base-58 私钥解码为字节数组。这是一个简单的 Python 代码 sn-p 来完成此操作,使用 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)

您可以将该输出通过管道传输到一个文件,然后通过 CLI 工具将其用作您的 --keypair

【讨论】:

错误:无法读取密钥对文件。如果我使用 solana-keygen new 来生成密钥,它会显示为数字组合。使用您的脚本生成的输出是二进制的 我得到类似 [�,[,:,�,�,>,�,L,=,�,J,�,这是预期的外观:[157,179,177,192,112,跨度> 奇怪,我自己又测试了一次,它可以工作。对于MY_PRIVATE_KEY_IN_BASE58,您应该输入一个字符串,例如"4AfmonCVDRutyt3vMfsooagRsoNXTCVURGZ7nzSZPP9CWykXUmgA72Sfgrne7EcqtVJE6Gq6aA8xw21bHtbZMQzL" 给出[158,99,132,43,140,119,254,9,6,225,141,208,225,184,48,219,246,115,45,3,0,67,160,190,25,199,130,208,179,210,219,1,41,32,144,228,51,198,235,65,64,71,155,119,235,189,157,49,2,65,230,165,161,159,153,77,213,153,226,174,35,2,212,89] 你能测试一下吗?这是在 ubuntu 20.04 上使用 python 3.8 运行的 对我来说完全一样的失败 为我工作,在终端或 repl 中运行简单的 python 脚本。

以上是关于将虚拟钱包私钥导入 solana CLI的主要内容,如果未能解决你的问题,请参考以下文章

solana cli 纸质钱包生成不同的公钥

如何使用现有钱包签署使用节点 JS 脚本运行的 solana 交易?

如何使用 Solana keygen 中的密钥来使用网络钱包?

尝试发送 USDC 时无法获取钱包签名者 @solana-labs/web3.js

什么是虚拟币钱包储存虚拟币钱包开发

Solana,如何使用 javascript/wallets 将 NFT(spl 代币)发送到另一个钱包