我想通过调用智能合约函数来设置一个值。智能合约部署在Ropsten Testnet上。我使用的是Infura,而不是运行一个节点。
我已经读到Infura不支持send()。那么我有哪些选择呢?
下面是我的代码:
web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io/v3/xxxxxxxxxxxxxxxxxxxxx'));
const abi = PrinterMarketplace;
const contractAddress = '0xa498b78b32755xxxxxxxxxxxxxxf3101a1b92'
contract = await new web3.eth.Contract(
abi,
contractAddress);
contract.methods.setOffer(offerprice, fileHash, client, account).send({ from: account, gas: 3000000 })
出现以下错误:
错误:返回的错误:方法eth_sendTransaction不存在/不可用
1条答案
按热度按时间s5a0g9ez1#
调用使用Infura作为提供者的方法需要您发送rawTransaction或在发送之前对其进行签名。
如果您使用的是truffle,则可以使用@truffle/hdwallet-provider签署交易
下面的代码片段应该可以解决您的问题