1

我需要通过我用 solana/web3.js 构建的节点脚本从我现有的地址(从 Phantom 钱包创建)发送一些 SOL。我的钱包里有一个私钥。但我无法使用我的私钥字符串签署创建密钥对。

const from = web3.Keypair.generate();
// how to get my wallet account from private key to from account

谢谢

4

2 回答 2

8

如果您有字节数组形式的密钥对,您可以使用Keypair.fromSecretKey来获取您的密钥对:https ://github.com/solana-labs/solana/blob/82a6bbe06891bc58ed1fa0586ae5d168e68516bd/web3.js/src/keypair.ts#L60

如果您只有 base58 编码的字符串,则必须首先使用 bs58 节点包对其进行解码:

import bs58 from `bs58`;
const decoded = bs58.decode(keypairString);
于 2021-09-01T13:20:08.213 回答
2

您可以从钱包中导出私钥,您将获得一个 8 字节整数数组,类似于 [244, 13, 5, ...]

然后,您可以使用将其转换为密钥对

const keyPair = Keypair.fromSecretKey(new Uint8Array([244, 13, 5, ...]));

可以使用上面的keyPair签名

于 2021-09-02T13:29:35.590 回答