【发布时间】:2018-10-30 05:57:53
【问题描述】:
我需要在不使用 MetaMask 的情况下从我的以太坊合约中调用方法。我使用 Infura API 并尝试从最近使用 web3.eth.create() 方法创建的帐户调用我的方法。此方法返回如下对象:
{
address: "0xb8CE9ab6943e0eCED004cG5834Hfn7d",
privateKey: "0x348ce564d427a3311b6536bbcff9390d69395b06ed6",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
我也使用 infura 提供商:
const web3 = new Web3(new Web3.providers.HttpProvider(
"https://rinkeby.infura.io/5555666777888"
))
所以,当我尝试这样写时:
contract.methods.contribute().send({
from: '0xb8CE9ab6943e0eCED004cG5834Hfn7d', // here I paste recently created address
value: web3.utils.toWei("0.5", "ether")
});
我有这个错误:
错误:既没有在给定选项中指定“发件人”地址,也没有在 默认选项。
如果我在from选项中写它怎么可能不是来自地址??
附:使用 Metamask,我的应用程序运行良好。但是当我从 MetaMask 注销并尝试创建新帐户并使用它时,我遇到了这个问题。
【问题讨论】:
-
你有没有试过在最后传递一个回调函数?
-
我已经通过使用私钥签署交易解决了这个问题。事实上,我们不能只从随机地址发送交易。
-
您可以发布您的代码作为答案吗?很高兴看到解决方案
-
查看新答案。