Hello this tutorial is awesome. But its a hectic task to download and syncronise the full blockchain of ethereum for private blockchain setup. So I used infura as remote RPC. But after setting up truffle with infura kovan/ropsten test url , when I tried to migrate using truffle I got this error.
root@ubuntu-4gb-nyc3–01:~# truffle migrate — network ropsten (node:14686) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function (node:14686) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. Using network ‘ropsten’.
Running migration: 1_initial_migration.js
**After that it exits to
> root@ubuntu-4gb-nyc3–01:~#
without running 2_deploy_contracts.js**
**My truffle.js looks like the following :**
```js
var bip39 = require(“bip39”);
var hdkey = require(‘ethereumjs-wallet/hdkey’);
var ProviderEngine = require(“web3-provider-engine”);
var WalletSubprovider = require(‘web3-provider-engine/subproviders/wallet.js’);
var Web3Subprovider = require(“web3-provider-engine/subproviders/web3.js”);
var Web3 = require(“web3”);
// Get our mnemonic and create an hdwallet
var mnemonic = “twelve words we can find in metamask settings reveal seed words blabla”;
var hdwallet = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));
// Get the first account using the standard hd path.
var wallet_hdpath = “m/44'/60'/0'/0/”;
var wallet = hdwallet.derivePath(wallet_hdpath + “0”).getWallet();
var address = “0x” + wallet.getAddress().toString(“hex”);
console.log(address);
var providerUrl = “https://ropsten.infura.io/mytoken";
var engine = new ProviderEngine();
engine.addProvider(new WalletSubprovider(wallet, {}));
engine.addProvider(new Web3Subprovider(new Web3.providers.HttpProvider(providerUrl)));
engine.start(); // Required by the provider engine.
module.exports = {
networks: {
ropsten: {
network_id: 3, // Official ropsten network id
provider: engine, // Use our custom provider
from: address, // Use the address we derived
gas: 3000000
}
},
rpc: {
// Use the default host and port when not using ropsten
host: “my-server-ip-goes-here”,
port: 8545
}
};
```
**My 2_deploy_contracts.js looks like the following ;**
```js
var SafeMath = artifacts.require(“./SafeMath.sol”);
var RedPillToken = artifacts.require(“./MyToken.sol”);
var Crowdsale = artifacts.require(“./Crowdsale.sol”);
module.exports = function(deployer) {
var owner = web3.eth.accounts[0];
var wallet = web3.eth.accounts[1];
console.log(“Owner address: “ + owner);
console.log(“Wallet address: “ + wallet);
deployer.deploy(SafeMath, { from: owner });
deployer.link(SafeMath,MyToken);
return deployer.deploy(MyToken, { from: owner }).then(function() {
console.log(“MyToken address: “ + MyToken.address);
return deployer.deploy(Crowdsale, MyToken.address, wallet, { from: owner }).then(function() {
console.log(“Crowdsale address: “ + Crowdsale.address);
return MyToken.deployed().then(function(coin) {
return coin.owner.call().then(function(owner) {
console.log(“MyToken owner : “ + owner);
return coin.transferOwnership(Crowdsale.address, {from: owner}).then(function(txn) {
console.log(“MyToken owner was changed: “ + Crowdsale.address);
});
})
});
});
});
};
```
Where will I find this.provider.sendAsync function?
I m using node : v8.2.1 and Ubuntu 16.04
I m really stuck with this. Any help would be appreciated. Thanks
N.B. I created a 12 word mnemonic from metamask plugin from chrome. and then tried to deploy the conract in ropsten again after updating the truffle.js with the new mnemonic. Again the same error :UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.provider.sendAsync is not a function (node:22993) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Any help would be appreciated. Its eating my head off :)
