> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abs.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# EVM Differences

> Learn the differences between Abstract and Ethereum.

While Abstract is EVM compatible and you can use familiar development
tools from the Ethereum ecosystem, the bytecode that Abstract’s VM
(the [ZKsync VM](https://docs.zksync.io/build/developer-reference/era-vm)) understands
is different than what Ethereum’s [EVM](https://ethereum.org/en/developers/docs/evm/) understands.

These differences exist to both optimize the VM to perform efficiently with ZK proofs
and to provide more powerful ways for developers to build consumer-facing applications.

When building smart contracts on Abstract, it’s helpful to understand what the differences
are between Abstract and Ethereum, and how best to leverage these differences to
create the best experience for your users.

## Recommended Best Practices

Learn more about best practices for building and deploying smart contracts on Abstract.

<CardGroup cols={2}>
  <Card title="Best practices" icon="shield-heart" href="/how-abstract-works/evm-differences/best-practices">
    Recommended changes to make to your smart contracts when deploying on
    Abstract.
  </Card>

  <Card title="Contract deployment" icon="rocket" href="/how-abstract-works/evm-differences/contract-deployment">
    See how contract deployment differs on Abstract compared to Ethereum.
  </Card>
</CardGroup>

## Differences in EVM Instructions

See how Abstract’s VM differs from the EVM’s opcodes and precompiled contracts.

<CardGroup cols={2}>
  <Card title="EVM opcodes" icon="binary" href="/how-abstract-works/evm-differences/evm-opcodes">
    See what opcodes are supported natively or supplemented with system
    contracts.
  </Card>

  <Card title="EVM precompiles" icon="not-equal" href="/how-abstract-works/evm-differences/precompiles">
    See what precompiled smart contracts are supported by Abstract.
  </Card>
</CardGroup>

## Other Differences

Learn the nuances of other differences between Abstract and Ethereum.

<CardGroup cols={3}>
  <Card title="Gas fees" icon="gas-pump" href="/how-abstract-works/evm-differences/best-practices">
    Learn how gas fees and gas refunds work with the bootloader on Abstract.
  </Card>

  <Card title="Nonces" icon="up" href="/how-abstract-works/evm-differences/contract-deployment">
    Explore how nonces are stored on Abstract’s smart contract accounts.
  </Card>

  <Card title="Libraries" icon="file-import" href="/how-abstract-works/evm-differences/contract-deployment">
    Learn how the compiler handles libraries on Abstract.
  </Card>
</CardGroup>
