
Config local network
- Install Ganache
- Start Ganache and create a new project by point to the truffle-config.js file
Config Real network
- Register a new account on infura.io
- Create a new project
- Get project API and connection link
ROPSTEN_URL=https://ropsten.infura.io/v3/<your-api-key> KOVAN_URL=https://kovan.infura.io/v3/<your-api-key> RINKEBY_URL=https://rinkeby.infura.io/v3/<your-api-key> MAINNET_URL=https://mainnet.infura.io/v3/<your-api-key>
- Goto Truffle project, install node libs
npm install truffle-hdwallet-provider --save npm install bip39 dotenv --save # where * bip39 – used to generate wallet mnemonic * dotenv – simple way to read environment variable files
- Generate MNEMONIC words
node -e "console.log(require('bip39').generateMnemonic())"
- Create `.env` file, put MNEMONIC and <network>_URL to file
MNEMONIC=wallet mnemonic 12 words ROPSTEN_URL=https://ropsten.infura.io/v3/<your-api-key> KOVAN_URL=https://kovan.infura.io/v3/<your-api-key> RINKEBY_URL=https://rinkeby.infura.io/v3/<your-api-key> MAINNET_URL=https://mainnet.infura.io/v3/<your-api-key>
- Update truffle-config.js file
require('dotenv').config() const HDWalletProvider = require('truffle-hdwallet-provider') const MNEMONIC = process.env.MNEMONIC const ROPSTEN_URL = process.env.ROPSTEN_URL const KOVAN_URL = process.env.KOVAN_URL const RINKEBY_URL = process.env.RINKEBY_URL const MAINNET_URL = process.env.MAINNET_URL module.exports = { // Uncommenting the defaults below // provides for an easier quick-start with Ganache. // You can also follow this format for other networks; // see <http://truffleframework.com/docs/advanced/configuration> // for more details on how to specify configuration options! contracts_build_directory: "../frontend/src/Contract/abi", networks: { development: { host: "127.0.0.1", port: 7545, network_id: "*" }, test: { host: "127.0.0.1", port: 7545, network_id: "*" }, ropsten: { provider: () => new HDWalletProvider(MNEMONIC, ROPSTEN_URL), network_id: 3 }, kovan: { provider: () => new HDWalletProvider(MNEMONIC, KOVAN_URL), network_id: 42 }, rinkeby: { provider: () => new HDWalletProvider(MNEMONIC, RINKEBY_URL), network_id: 4 }, // main ethereum network(mainnet) mainnet: { provider: () => new HDWalletProvider(MNEMONIC, MAINNET_URL), network_id: 1 } } };
- To get a public wallet address
truffle console --network <network> truffle(ropsten)> web3.eth.getAccounts((err, accounts) => console.log(accounts)) eg: truffle console --network ropsten truffle(ropsten)> web3.eth.getAccounts((err, accounts) => console.log(accounts)) [ '0x627306090abab3a6e1400e9345bc60c78a8bef57' ]
- Prepare some eth from test network faucet
https://faucet.metamask.io/ https://faucet.ropsten.be/ https://faucet.metamask.io/ http://faucet.bitfwd.xyz/
Deploy a contract to the network
- Remove old build API built files
- Run migrate
# For local network truffle migrate # Fow specific network truffle migrate --network <network> eg: truffle migrate --network ropsten truffle migrate --network mainnet # Migrate contract only truffle migrate -f 2 --network ropsten