Ethers.js

如何從安全帽乙太簽名者那裡獲取私鑰?

  • October 12, 2022

在安全帽中,我想從簽名者那裡獲取privateKey , privateKeys在**hardhat.config中初始化。 networks.network.accounts

import { ethers } from "hardhat";
import { Signer } from "ethers";

const accounts = await ethers.getSigners();
const account0: Signer = accounts[0];

我在Signer實例上看不到任何獲取privateKey的屬性/方法。

好吧,考慮將 ether.js 與一些錢包連接起來。私鑰不會傳遞給圖書館,因為它可能會被盜。圖書館向錢包發出請求以簽署交易。

所以私鑰不儲存在簽名者內部。

localhost您可以從網路配置( ,mainnet等)中獲取私鑰:

import { config } from "hardhat";

console.log('Accounts from config:', config.networks.mainnet.accounts);

如果您想獲取安全帽帳戶的私鑰:

const accounts = config.networks.hardhat.accounts;
const index = 0; // first wallet, increment for next wallets
const wallet1 = ethers.Wallet.fromMnemonic(accounts.mnemonic, accounts.path + `/${index}`);

const privateKey1 = wallet1.privateKey
...

這是一個範例,我如何使用它:

https://github.com/0xweb-org/dequanto/blob/8bab2114875b055f5f6ea361951d0d7083f3259c/src/hardhat/HardhatProvider.ts#L41

引用自:https://ethereum.stackexchange.com/questions/137341