Hashtag Web3 Logo

How to Create and Deploy Your First Smart Contract

A beginner-friendly guide to writing, compiling, and deploying a basic smart contract on the Ethereum blockchain using Remix.

How to Create and Deploy Your First Smart Contract - Hashtag Web3 article cover

Deploying your first smart contract represents a significant milestone for anyone aspiring to become a Web3 developer. While the process may initially appear intimidating, modern tools make it straightforward. This guide provides a detailed walkthrough of creating and deploying a basic smart contract using Remix, a popular web-based Integrated Development Environment (IDE).

Requirements

To get started, you will need:

  • A web browser, preferably Chrome or Firefox.
  • The MetaMask browser extension wallet.

This setup allows you to interact with the Ethereum test network, so there's no need for real cryptocurrency during this initial phase.

Step 1: Set Up Your Wallet and Acquire Test ETH

  1. Install MetaMask: Download the MetaMask extension from the official site if you haven't done so already. 2.Switch to a Test Network: Open MetaMask and select the network dropdown at the top. Choose the "Sepolia" test network. 3.Obtain Test ETH: You will need test Ether to cover gas fees on the Sepolia network. Visit a Sepolia faucet (for example, sepoliafaucet.com), enter your wallet address, and request some funds. The test ETH may take a few minutes to arrive.

Step 2: Write Your Smart Contract in Remix

1.Access Remix: Open your browser and work through to remix.ethereum.org. 2.Create a New File: In the file explorer on the left, create a new file named HelloWorld.sol. 3.Insert the Code: Copy and paste the following basic smart contract code into the newly created file:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract HelloWorld {
 string public message;

 constructor() {
 message = "Hello, Web3 World!";
 }

 function updateMessage(string memory newMessage) public {
 message = newMessage;
 }
}
```**Code Breakdown:**- `pragma solidity ^0.8.20;`: This specifies the Solidity compiler version to use.
- `contract HelloWorld { ... }`: This defines the smart contract.
- `string public message;`: This declares a public state variable named `message` of type `string`. Its public visibility ensures that Remix generates a "getter" function for reading its value.
- `constructor()`: This function runs once when the contract is deployed, initializing the `message`.
- `function updateMessage(...)`: This public function allows anyone to change the `message` variable's value.

### Step 3: Compile Your Contract

1.**Work through to the Compiler Tab**: Click the Solidity compiler icon on the left side of Remix.
2.**Select the Compiler Version**: Ensure the compiler version matches the one specified in your code (e.g., `0.8.20`).
3.**Compile the Contract**: Click the "Compile HelloWorld.sol" button. A green checkmark next to the compiler icon indicates successful compilation.

### Step 4: Deploy to the Sepolia Testnet

1.**Go to the Deploy Tab**: Click the "Deploy & Run Transactions" icon on the left.
2.**Choose Environment**: In the "ENVIRONMENT" dropdown, select "Injected Provider - MetaMask." This instructs Remix to use your MetaMask wallet for deployment. A MetaMask popup will prompt you to connect your account; approve it.
3.**Deploy the Contract**: Make sure your `HelloWorld` contract is selected in the "CONTRACT" dropdown. Click the orange "Deploy" button.
4.**Confirm in MetaMask**: A MetaMask popup will appear for you to confirm the deployment transaction. This will show the estimated gas fee in Sepolia ETH. Click "Confirm."

### Step 5: Interact With Your Deployed Contract

Once the transaction is confirmed, your contract will appear under "Deployed Contracts" at the bottom of the Remix panel.

1.**Read the Message**: Click the blue button labeled `message`. This action retrieves the value of the `message` variable, displaying "Hello, Web3 World!".
2.**Update the Message**: In the `updateMessage` field, type a new message, such as "My first dApp!", and click the orange `transact` button.
3.**Confirm the Transaction**: Another MetaMask popup will appear, as this is a state-changing transaction that requires gas. Click "Confirm."
4.**Read the New Message**: After the transaction confirms, click the `message` button again. You will see the updated value, now reflecting "My first dApp!".

Congratulations on successfully writing, compiling, and deploying your first smart contract to a public [blockchain](/what-is-a-blockchain). This achievement opens the door to exploring more complex contract types and developing frontends that interact with them, advancing your journey as a Web3 developer.

## Verifiable Primary Sources & References

1. [Ethereum Official Yellow Paper & Protocol Specification](https://ethereum.github.io/yellowpaper/paper.pdf)
2. [Solidity Compiler Official Documentation & Language Spec](https://docs.soliditylang.org/)
3. [Base Layer 2 Network Official Documentation](https://docs.base.org/)
4. [zkSync Era Documentation & Zero Knowledge Proofs Architecture](https://docs.zksync.io/)
5. [Ethereum Official Developer Resources & Specs](https://ethereum.org/en/developers/docs/)
6. [OpenZeppelin Audited Smart Contract Libraries](https://docs.openzeppelin.com/)
7. [Foundry Book Ethereum Testing & Deployment Guide](https://book.getfoundry.sh/)
8. [DeFiLlama Public On-Chain TVL Metrics Engine](https://defillama.com/docs/api)
9. [L2BEAT Layer 2 Analytics & Security Framework](https://l2beat.com/)
10. [Dune Analytics On-Chain Query Infrastructure](https://dune.com/docs/)

Looking for a Web3 Job?

Explore thousands of verified blockchain, DeFi, and crypto roles on the #1 Web3 job board.

Related Reading

Explore more guides and career playbooks