Question: I have just discovered that you can do both a combined smart contract that includes both the token and the crowdsale OR have the token in a separate contract from the crowdsale contract.

Can anyone tell me what the advantages are to either of these methods please?

Many Thanks,

Phil.

Answer: 
You should test your deployment process on private network or test network throughly before trying mainnet. I am testing mine on Rinkeby because in Ropsten block gas limit is too low.

In my experience gasPrice setting in truffle.js is effective. I have successfully deployed my contracts using the following syntax:

```
    geth_mainnet: {
      host: "127.0.0.1",
      port: 8545, // geth-mainnet
      network_id: "1",
      gasPrice: 2000000000, // 2 GWei
      from: "0x...your-address-goes-here..."
    }

```

See [2'505'437 Gas \* 2 Gwei = $6](https://etherscan.io/tx/0x6e993c5b21b6910af99ae46ab2cd6bd91cafcfdf04ebe866af8d7a9228a3cf37) and [5'435'035 Gas \* 2 Gwei = $13](https://etherscan.io/tx/0xca530e98f14147826122b378e2443afa11ae0fc71ccffd5b885fc42a5b049018).

Couple caveats:

* Make sure your account has enough funds not only for your smartcontract deployment, but also for deployment of truffle's Migration contract and calls to that contract.
* If you use low gasPrice, you better make sure mainnet is not too busy, check <https://ethgasstation.info/>. If your transaction does not get enough priority and fails to be mined in 50 blocks, truffle/web3 will timeout. Depending on how far you are in truffle-migrate process, your actual contract deployment might still be ongoing and finish successfully, but contract address will not be recorded under build/.
My approach is:

1. Deploy to a testnet like ropsten and note the gas used
2. Go to <https://web3-tools.com/> and type in the gas to back-calculate the gas required in USD

Like the accepted answer, my basic contract was about 1,400,000 (compared to 21,000) for a transfer

Disclosure: I wrote web3-tools.com