# Solidity

Solidity is a programming language for developing smart contracts on blockchain platforms like Ethereum. Smart contracts  automatically execute on the blockchain  when their conditions are met. Solidity follows the object-oriented programming (OOP) paradigm.  It has a syntax similar to JavaScript, making it relatively easy for JavaScript developers to learn.

### Solidity Features

* **Type Safety**: Solidity is a statically typed language, so the types of variables are determined at compile time.
* **Inheritance**: Solidity supports the characteristics of object-oriented programming, including multiple inheritance.
* **Libraries**: You can create reusable code in a library and use it in other contracts.
* **Complex custom types:** Supports user-defined types, including structures and enumerations.

### Development Environment

Setting up a development environment to use Solidity includes the following tools:

1. **Remix IDE:** A web-based Solidity IDE that allows you to write, compile, deploy, and test code directly in the browser. This tool is recommended for beginners.
2. **Truffle Suite:** Truffle is one of the most popular frameworks for Solidity development, helping develop, test, and deploy smart contracts.
3. **Hardhat:** Another popular development environment among Solidity developers, providing robust features for testing, debugging, and deployment tasks.
4. **Ganache:** Provides a local blockchain environment, allowing you to deploy and test smart contracts under development.
5. **MetaMask:** A browser extension that allows you to access the Ethereum network and interact with smart contracts.

Becoming a Solidity developer requires understanding  the basic concepts of blockchain technology, how smart contracts work, and the structure of the Ethereum network. Suppose you are interested in Solidity and blockchain development.  In that case,  we recommend  you start practicing using the tools above and basic programming knowledge.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.metadium.com/en/smart-contract/solidity.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
