我正在尝试将事务发送到Ropsten网络,使用Infura作为Web3提供程序。我的交易被拒绝了(“gas * price +value的资金不足”),我怀疑原因是消息没有得到正确的签名。
这是我的密码:
const Web3 = require('web3');
let endpoint = "https://ropsten.infura.io/v3/XXXXXXXXXXXXXXXXXXXXXX";
web3 = new Web3(new Web3.providers.HttpProvider(endpoint));
private_key = "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
address = "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
web3.eth.accounts.wallet.add(private_key);
recipient = "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
web3.eth.sendTransaction({
from: address,
to: recipient,
value: '10',
gas: 50000,
}).then(function(receipt){
console.log(receipt);
});我是不是遗漏了什么?
发布于 2022-05-05 07:20:06
我认为sendTransaction的问题在于您没有在web3对象中导入任何帐户,所以sendTransaction无法对其进行签名。您可以在web3对象中使用
const Web3 = require('web3');
const web3Provider = new Web3(process.env.RPC_ENDPOINT);
// import wallet in the provider
web3Provider.eth.accounts.wallet.add(WALLET_KEY);导入钱包后,如果您调用sendTransaction,事务数据中的from与导入地址匹配,它将自动签署事务。
发布于 2019-03-06 20:32:35
我会尝试在我的端签署事务,然后使用sendSignedTransaction发送事务。
发布于 2019-03-06 20:47:25
试试这个:
async function signAndSendTransaction() {
const options = {
to : recipient,
value: "10",
gas: 21000
};
const signedTransaction = await web3.eth.accounts.signTransaction(options, private_key);
return await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction);
}https://ethereum.stackexchange.com/questions/68007
复制相似问题