> For the complete documentation index, see [llms.txt](https://docs.metadium.com/en/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.metadium.com/en/smart-contract/solidity.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
