# Smart Contracts

**SecureChain** supports **Solidity** based smart contracts. **Smart contracts** are self-executing computer programs that are built on top of blockchain. They operate based on a set of predetermined rules and conditions encoded into their software, which are automatically enforced when specific conditions are met.

## New to Solidity?

Solidity is a high-level programming language that is used to write smart contracts on the SecureChain blockchain. This language is used in other EVM based blokchains as well. It is a contract-oriented language that is designed to be easy to learn and understand for developers.&#x20;

Here are some great resources for learning Solidity:

* The [official Solidity docs](https://docs.soliditylang.org/)
* Solidity [tutorial](https://www.tutorialspoint.com/solidity/index.htm) for programmers

## Smart Contracts in SecureChain vs Ethereum

> SecureChain is EVM compatible blockchain as hence supports all the tools like Remix, truffle, hardhat, etc.&#x20;

SecureChain supports all the solidity based smart contracts as Ethereum or any other EVM blockchains.&#x20;

## Remix

[Remix IDE](https://remix.ethereum.org/) is an open source web and desktop application. It fosters a fast development cycle and has a rich set of plugins with intuitive GUIs. Remix is used for the entire journey of contract development as well as being a playground for learning and teaching contract development.

<figure><img src="https://docs.dithereum.org/images/remix1.jpg" alt=""><figcaption></figcaption></figure>

Create new file in file explorer. Edit contract info at right side.

<figure><img src="https://docs.dithereum.org/images/remix2.jpg" alt=""><figcaption></figcaption></figure>

**Compile contract**

1. Click compiler button, switch UI
2. Select contract you want to compile
3. Set compile flags
4. Click compile button

<figure><img src="https://docs.dithereum.org/images/remix3.jpg" alt=""><figcaption></figcaption></figure>

**Deploy contract to blockchain via wallet such as `MetaMask`.**

1. Set network info in `Metamask`.
2. Back to `Remix`.
   * Switch environment
   * Select contract
   * click deploy button

<figure><img src="https://docs.dithereum.org/images/remix4.jpg" alt=""><figcaption></figcaption></figure>

The contract can be deployed on the chain through MetaMask.
