Ethereum 为什么;无效发送者“;(-32000)尝试从节点脚本部署以太坊智能合约时?

Ethereum 为什么;无效发送者“;(-32000)尝试从节点脚本部署以太坊智能合约时?,ethereum,web3,truffle,web3js,Ethereum,Web3,Truffle,Web3js,正在尝试将智能合约部署到rinkeby网络,但我收到此错误消息 {code:-32000,消息:“无效发件人”} 我尝试通过Remix部署我的合同,效果很好,但我有点不明白为什么会收到这个错误 const HDWalletProvider=require(“@truffle/hdwallet provider”);//"^1.2.4" const Web3=require(“Web3”);//"^1.3.4" const compiledFactory=require(“./build/fact

正在尝试将智能合约部署到rinkeby网络,但我收到此错误消息
{code:-32000,消息:“无效发件人”}

我尝试通过Remix部署我的合同,效果很好,但我有点不明白为什么会收到这个错误

const HDWalletProvider=require(“@truffle/hdwallet provider”);//"^1.2.4"
const Web3=require(“Web3”);//"^1.3.4"
const compiledFactory=require(“./build/factory.json”);
const abi=compiledFactory.abi;
常量字节码=compiledFactory.evm.bytecode.object;
const provider=新的HDWalletProvider({
助记符:{
短语:
“十二字助记短语十二字助记短语十二字助记短语”,
},
providerOrUrl:“https://rinkeby.infura.io/v3/12345678",
});
const web3=新的web3(提供者);
const deploy=async()=>{
const accounts=wait web3.eth.getAccounts();
log(“试图从帐户部署”,帐户[0]);
试一试{
const result=等待新的web3.eth.Contract(abi)
.deploy({data:bytecode})
.send({from:accounts[0],gas:“1000000”});
log(“合同部署到”,result.options.address);
}捕获(e){
控制台错误(e);
}
};
部署();

让它开始工作。问题是,在发送事务之前必须对其进行签名。下面是更新的部署函数

const deploy=async()=>{
const accounts=wait web3.eth.getAccounts();
const deploymentAccount=accounts[0];
const privateKey=provider.wallet[
deploymentAccount.toLowerCase()的
].privateKey.toString(“十六进制”);
log(“试图从帐户部署”,deploymentAccount);
试一试{
let contract=等待新的web3.eth.contract(abi)
.部署({
数据:字节码,
参数:[],
})
.encodeABI();
让transactionObject={
煤气:400万,
数据:合同,
发件人:deploymentAccount,
//链号:3,,
};
让signedTransactionObject=等待web3.eth.accounts.signTransaction(
transactionObject,
“0x”+私钥
);
让结果=等待web3.eth.sendSignedTransaction(
signedTransactionObject.rawTransaction
);
log(“合同部署到”,result.contractAddress);
}捕获(e){
控制台错误(e);
}
过程。退出(1);
};