# EVM Compatibility

## What is EVM

The Ethereum Virtual Machine is the global virtual computer whose state every participant on the Ethereum network stores and agrees on. Any participant can request the execution of arbitrary code on the EVM; code execution changes the state of the EVM.

In the Humanode network, we have our own Ethereum Virtual Machine and the associated state, that is not shared with the Ethereum network. Read more in the [#further-reading](#further-reading "mention") section.

{% embed url="<https://ethereum.org/en/developers/docs/evm/>" %}

## What are Smart Contracts <a href="#smart-contracts" id="smart-contracts"></a>

A reusable snippet of code (a program) which a developer publishes into EVM state. Anyone can request that the smart contract code be executed by making a transaction request. Because developers can write arbitrary executable applications into the EVM (games, marketplaces, financial instruments, etc.) by publishing smart contracts, these are often also called [dapps, or Decentralized Apps](https://ethereum.org/en/developers/docs/dapps/).

{% embed url="<https://ethereum.org/en/developers/docs/smart-contracts/>" %}

## EVM compatibility <a href="#further-reading" id="further-reading"></a>

EVM compatibility simply means the ability to write and deploy smart contract code that is compatible with the Ethereum Virtual Machine.&#x20;

Humanode is EVM compatible chain. It means, that dapps that are run on Ethereum-like network can be easily ported into the Humanode chain without rewriting smart contracts and any business logic itself by using even the same software like Metamask, Truffle, Remix IDE, etc.&#x20;

Connect to the Humanode RPC endpoint and run your code on the Humanode network.

Check the list of available public endpoints on the chains page:

{% content-ref url="/pages/cSXr15XlOQO5wr97rA0g" %}
[Chains](/docs/chains.md)
{% endcontent-ref %}

As an option, you can run your node as well!

{% content-ref url="/pages/0Rt3J5rDJgdzWcJxPvMw" %}
[Node](/docs/node/overview.md)
{% endcontent-ref %}

In addition, humanode provides Humanode Truffle Box predefined setup to deploy and test Ethereum smart contracts on Humanode.

{% content-ref url="/pages/wsEDGrfOe6TC2gaB712z" %}
[Humanode Truffle Box](/docs/tools-and-services/humanode-truffle-box.md)
{% endcontent-ref %}

To learn about the technical details of how we implemented the EVM compatibility see the architecture section.

{% content-ref url="/pages/7J2Bc3TUe2KEhE0J1wPP" %}
[Architecture](/docs/evm/architecture.md)
{% endcontent-ref %}


---

# 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://gitbook.humanode.io/docs/evm/evm-compatibility.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.
