Solidity

使用安全帽部署時,預期私鑰是 Uint8Array

  • August 22, 2021

我正在使用 OpenZeppelin 的可升級合約及其 hardhat-ethers 外掛和 typechain 外掛。Expected private key to be an Uint8Array但是,我在執行部署時不斷收到錯誤消息。

這是我的部署腳本:

import { providers } from "ethers";
import { ethers, upgrades } from "hardhat";

const provider = new providers.JsonRpcProvider();
const signer = provider.getSigner();

// Information about the signer does get logged out correctly
console.log(signer);

const factory = await ethers.getContractFactory('MyContract', signer)
await upgrades.deployProxy(factory);

當我控制台登錄時signer,它的資訊被正確註銷,我認為這意味著簽名者資訊確實傳遞到了getContractFactory.

我在 Jest 中執行它。我沒有執行它,hardhat test因為這個特定的腳本並不是真正的測試,而是我計劃最終使用的部署腳本,我想為它編寫一個測試。除非hardhat test在執行時注入了一些魔法,否則我看不出當我像正常 nodejs 腳本一樣執行它時會有多麼不同。

為什麼總是抱怨私鑰需要是 Uint8Array?我看不出我還能如何將任何私鑰從函式傳遞signer到函式中。

當您直接使用ethers.providers.JsonRpcProvider()時,它會嘗試連接到localhost:8545. 除非你正在執行npx hardhat node,否則它會給你一個錯誤。

您可以嘗試使用安全帽中的提供程序嗎?

import { ethers, upgrades } from "hardhat";

const provider = ethers.provider; // using provider from hardhat

也是private key needs to be an Uint8Array一個奇怪的錯誤。您是否可以在問題中包含錯誤?

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