我正在使用web3、块菌发出一个闪存贷款请求,并一直在事件侦听器中获取错误:
我正在连接到这个测试网络。
我正在使用下面的代码进行连接,以便在智能契约中获取发出的事件:
const web3 = new Web3();
const eventProvider = new Web3.providers.WebsocketProvider(wss);
eventProvider.on('error', e => {
console.error('WS Infura Error', e);
});
eventProvider.on('connect', function () {
console.log('WSS Connected');
setupListeners();
});
eventProvider.on('end', e => {
console.log('WS closed');
console.log('Attempting to reconnect...');
eventProvider = new Web3.providers.WebsocketProvider(wss);
eventProvider.on('connect', function () {
console.log('WSS Reconnected');
setupListeners();
});
web3.setProvider(eventProvider);
});
web3.setProvider(eventProvider); 请求是:
contract1.methods.flashloan( args_of_my_use_case ).send({
from: addr, //designated Metamask wallet address
gas: gasCost,
value: 0,
nonce: accountNonce,
},
function (error, data) {
if(error){
invariant.currentlyTrading = false;
obj.nowTrading = false;
}
console.log('arb data => ', data, ' arb error => ' ,error, appendText);
});连接工作正常,事件被触发,但是来自闪存贷款请求的响应之一是:
错误:当前提供程序不支持订阅: HDWalletProvider
我的松露配置是:
const dotenv = require('dotenv');
const fs = require('fs');
const envConfig = dotenv.config({silent: true});
const HDWalletProvider = require('@truffle/hdwallet-provider');
const infuraKey = process.env.INFURA_API_KEY;
const ethPubAddr = process.env.ETH_PUBLIC_ADDRESS;
const mnemonic = process.env.METAMASK_PVT_KEY;
console.log("mnemonic -->" , mnemonic);
module.exports = {
networks: {
// Useful for testing. The `development` name is special - truffle uses it by default
// if it's defined here and no other network is specified at the command line.
// You should run a client (like ganache-cli, geth or parity) in a separate terminal
// tab if you use this network and you must also set the `host`, `port` and `network_id`
// options below to some value.
//
mainnet: {
provider: function() {
return new HDWalletProvider(mnemonic, "https://mainnet.infura.io/v3/"+infuraKey);
},
network_id: 1,
from: ethPubAddr
},
ropsten: {
provider: function() {
return new HDWalletProvider(mnemonic, "wss://ropsten.infura.io/ws/v3/"+infuraKey);
},
network_id: 3,
from: ethPubAddr,
gas: 6800000, // Current Ropsten gas limit. See https://ropsten.etherscan.io/block/3141628
gasPrice: 20000000000 // 1.1 GWei - based on the lower end of current txs getting into blocks currently on Ropsten.
// gasLimit: 8000000
},
development: {
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
},
},
// Set default mocha options here, use special reporters etc.
mocha: {
// timeout: 100000
},
// Configure your compilers
compilers: {
solc: {
version: '0.6.10', // Fetch exact version from solc-bin (default: truffle's version)
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
settings: { // See the solidity docs for advice about optimization and evmVersion
/* optimizer: {
enabled: true,
runs: 2
}*/
// evmVersion: "byzantium"
}
}
}
}发布于 2020-06-25 15:06:12
WebSockets提供程序只支持订阅。您提供的URL用于HTTP提供程序
return new HDWalletProvider(mnemonic, "https://mainnet.infura.io/v3/"+infuraKey);`将https://更改为wss://。
https://ethereum.stackexchange.com/questions/84532
复制相似问题