So you've written your Ethereum smart contract, and now you may be wondering how to deploy it. I recommend first deploying the contract to a Test Network (testnet), such as Rinkeby, before deploying it to Ethereum Main Network (mainnet). You can deploy to both testnet and mainnet by using the Remix web app.
Testnets behave similarly to the Ethereum Main Network, but the ETH required to transact with them is free to get from a "faucet." Faucets are apps where you can input your testnet wallet address and receive testnet assets like ETH. (I like Chainlink's Faucet and refer to it in the instructions below.) Testnet ETH enables you to pay the gas to deploy your smart contract to testnet and make test transactions.
Paste your contract code into the Remix IDE and deploy it from the Remix web app. Step by step instructions below:
Set up a test account on your crypto wallet, such as MetaMask. Make sure to select the Testnet of your choice from the Networks dropdown.
Get ETH on Testnet from a faucet by entering the address from your test account above. You will need this in the next step to pay the gas fee for deploying your contract.
Load Remix with http rather than https to allow interaction with the wallet. Create a file in the
contracts folder and paste in your smart contract.
Then compile the contract in the Compile tab.
Note: for more information on the Compiler configuration options, please read the Remix documentation. The default configuration is fine for testing.
Then go to the Deploy tab when it's compiled. In the Deploy tab, use the Environment selector to select "Injected Web3." Confirm the correct Network, account and contract are selected.
Note: if your
constructor function requires any parameters, specify them in the input next to the "Deploy" button. For more on deploy configuration, see the Remix documentation.
Your wallet will confirm the transaction in a pop-up window, including a gas fee. You should still have plenty left for testing transactions.
Note: if you load Remix with https, you may get this message "You are using an
https connection. Please switch to
http if you are using Remix against an
http Web3 provider or allow Mixed Content in your browser." This will prevent you from connecting to your wallet, so make sure to use "http" in the URL.
Optionally deploy to mainnet in the same Deploy tab by selecting "Ethereum Mainnet" from the MetaMask Network selector. This will also prompt the wallet to confirm the transaction, including a gas fee.