Solidity
使用安全帽部署時,預期私鑰是 Uint8Array
我正在使用 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
一個奇怪的錯誤。您是否可以在問題中包含錯誤?