---
title: "EVM behavior"
url: "/docs/learn-about-signet/evm-behavior/index.md"
description: "EVM modifications and differences between Signet and Mainnet EVM."
---
# EVM behavior

Signet targets full EVM compatibility.

This page describes the (very few)
differences between Signet and Ethereum Mainnet EVM behavior.

## USD Native Asset

The native asset on Signet is USD, not ETH. USD plays the same role that ETH does on Ethereum: it pays for gas, it's what `msg.value` transfers, and it's what `address.balance` returns. It has 18 decimals.

USD is minted on Signet when USDC or USDT is deposited through [Passage](/docs/build-on-signet/transfers/enter-signet/index.md). The node observes the deposit event on Ethereum and credits the recipient's balance with native USD, normalizing decimals from 6 to 18. ETH and other supported tokens (WBTC) are bridged as ERC-20 tokens, not native USD. See [System transactions](/docs/build-on-signet/system-transactions/index.md) for details on how deposits are processed.

WUSD is the wrapped ERC-20 version of USD, the same relationship as WETH to ETH on Ethereum. Use WUSD when a contract or protocol requires an ERC-20 rather than the native asset. The SDK refers to the native asset as `USD` and the wrapped token as `WUSD`.

## Inherited header values

The following opcodes inherit the values of the Ethereum block:

- `PREVRANDAO`: `block.difficulty` and `block.prevrandao`
- `TIMESTAMP`: `block.timestamp`

> **Note:** Signet blocks _always_ use the same timestamp as the current Ethereum block.

## Disabled Opcodes

The following opcodes are disabled in Signet:

- `BLOBHASH`: EIP-4844 is not supported.
- `BLOBBASEFEE`: EIP-4844 is not supported.

## Precompiles

Signet supports the
[same precompiles as ethereum], plus the
following additional precompile:

- secp256r1 signature verification as specified in [RIP-7212] at address `0x100`.

## Address Aliasing

To conform to common rollup conventions, Signet uses address aliasing for
L1-to-L2 messages. When a contract on L1 sends a message to Signet via the
[`Transactor`] contract,
the sender's address is modified by adding a constant offset to it. This
ensures that contracts on Signet can distinguish between messages sent from L1
and those sent from the same address on the L2.

The address aliasing offset is `0x1111000000000000000000000000000000001111`.
Aliasing is performed by converting the address to a number, adding the offset,
and then converting back to an address.

Signet differs from other rollup behaviors in that the addresses of ephemeral
contracts are NOT aliased. Signet treats ephemeral L1 contracts equivalently to
EOAs.

| Account Type        | Address Aliased? |
| ------------------- | ---------------- |
| EOA                 | No               |
| EIP-7702 Delegation | No               |
| Ephemeral Contract  | **No**           |
| Smart Contract      | Yes              |

[same precompiles as ethereum]: https://www.evm.codes/precompiled
[RIP-7212]: https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md

[`Transactor`]: /docs/build-on-signet/advanced/execute-from-ethereum/index.md
