首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当帐户有足够的乙醚时,sendTransaction返回“资金不足”

问当帐户有足够的乙醚时,sendTransaction返回“资金不足”
EN

Ethereum用户
提问于 2019-03-06 20:04:19
回答 3查看 673关注 0票数 2

我正在尝试将事务发送到Ropsten网络,使用Infura作为Web3提供程序。我的交易被拒绝了(“gas * price +value的资金不足”),我怀疑原因是消息没有得到正确的签名。

这是我的密码:

代码语言:javascript
复制
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);
});

我是不是遗漏了什么?

EN

回答 3

Ethereum用户

发布于 2022-05-05 07:20:06

我认为sendTransaction的问题在于您没有在web3对象中导入任何帐户,所以sendTransaction无法对其进行签名。您可以在web3对象中使用

代码语言:javascript
复制
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与导入地址匹配,它将自动签署事务。

票数 1
EN

Ethereum用户

发布于 2019-03-06 20:32:35

我会尝试在我的端签署事务,然后使用sendSignedTransaction发送事务。

票数 0
EN

Ethereum用户

发布于 2019-03-06 20:47:25

试试这个:

代码语言:javascript
复制
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);

}
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/68007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档