Public testnet for Tezos X — the execution layer where the EVM and Michelson interfaces share a single chain, secured by Tezos L1. Deploy on Tezos X with the toolstack you already know — Solidity or Michelson — and have your contracts compose atomically with any other contract — EVM or Michelson — in a single transaction.
This dashboard is under active development — services and links may change without notice.
What's new
Recent events on Previewnet, ordered by date — most recent first. Kernel upgrades roll out through the on-chain governance contract.
tx.origin fixed, new gateway address views, and broad Michelson/L1 parity
Security
tx.origin now resolves to the real originator across runtimes. On a cross-interface call, the EVM ORIGIN opcode returns the transaction originator while msg.sender still returns the immediate caller. Previously both returned the immediate caller, so the common EOA-only guard require(tx.origin == msg.sender) could be silently bypassed by routing a call through the Michelson interface. The originator is also preserved across an EVM → Michelson → EVM round-trip — it resolves back to the originating account instead of collapsing onto an internal alias. Direct EOA calls are unchanged (tx.origin == msg.sender as before).New
0xff…07) — both non-payable, log-free, and STATICCALL-safe, so they're callable from a view. originOf(addr, sourceRuntime) classifies an address as Native (a real account on that runtime), Alias (a forwarder standing in for a foreign caller), or Unknown — so a security gate or admin check can reject a foreign account's alias where it expects a genuine local account, the natural complement to the tx.origin fix above. A code-presence back-stop also recognizes CREATE/CREATE2 contracts and EIP-7702 delegated EOAs as Native. resolveAddress(addr, sourceRuntime, targetRuntime) returns the same identity's address on the other runtime and reports whether that counterpart is already materialized (its account exists) or still only derived (computable but not yet created) — letting a dApp route a cross-runtime payment or call to the correct address and, when needed, materialize the account first via a native atomic call rather than sending value to an address with no account behind it yet.staticcall_evm view is surfaced on the synthesized /script, so wallets, indexers, and block explorers find it the same way they find any declared Tezos view.Improvements
monitor/heads/main RPC now honors the protocol and next_protocol filters and emits the current head immediately as the first element of the stream, matching L1's monitor_heads. Wait-for-head flows no longer block until the next block, and filtered clients no longer receive heads they excluded.PUSH timestamp parses large decimal literals and RFC3339 leap-seconds like L1; UNPACK string rejects carriage returns and other non-permitted bytes; UNPACK rejects non-canonical zarith encodings; LSR bytes handles oversized shift counts without trapping; and big-map ids allocated during CREATE_CONTRACT are assigned in storage source order, like externally originated contracts.msg.sender / SENDER instead of a re-derived alias — so msg.sender-based access controls (require(msg.sender == owner) and the like) stay correct even when a call is routed through the gateway within one runtime.Fixes
code_hash write is rolled back. A failed init previously left a half-materialized account that a later call would bless without re-running initialization — permanently bricking the alias.X-Tezos-Sender that is an implicit tz1/tz2/tz3 account, and other user-triggerable errors.Action required
octez-client aliases you set up earlier are throwing errors, this is why.New
VIEW reaching the cross-interface gateway returns the EVM response with no value transfer, so it works even inside Michelson view bodies, where TRANSFER_TOKENS is forbidden. The view takes (destination, calldata) and returns the EVM response wrapped in Some on success.Improvements
Fixes
Improvements
storage_size and paid_storage_size_diff. Originations, transfers and updates surface the contract's actual storage footprint instead of zeros, matching the receipt shape produced by Tezos L1.New
tz1…) now emit a Michelson deposit event of type pair (nat %inbox_level) (nat %inbox_msg_id) on the operation receipt. Indexers can correlate the L2 credit with the exact shared-inbox message that triggered it.Incident
Incident
Improvements
Fixes
EMIT events — now reliably appear on transaction receipts. Block explorers, indexers and on-chain analytics tools see a complete picture of what happened.0x7e205800…01) no longer shows a fake huge balance on Blockscout.New
staticcall pattern.Fixes
New
Full technical changelog: CHANGES_TEZOSX.md ↗
Get connected
MetaMask for the EVM interface, Temple or octez-client for the Michelson interface. Each account holds two addresses — 0x… for EVM and tz1… for Michelson — on the same chain, with separate balances.
wallet_addEthereumChain. No MetaMask?
Install it ↗
Or add manually
Get started
Get testnet XTZ before anything else — works for both interfaces.
Fund any address — MetaMask (0x…) or Temple (tz1…) — with testnet XTZ in seconds. No registration, no rate limit.
Move funds
Deposit from Tezos L1 to the Previewnet, or withdraw back — same UI for both directions.
Move XTZ between Tezos L1 and the Tezos X Previewnet. Supports both deposit and withdraw flows through a single interface.
Explore the chain
A dedicated explorer per interface — plus a unified view that follows atomic cross-interface calls across both.
Inspect EVM transactions, deployed contracts, token transfers, and contract verification on the Previewnet.
MichelsonQuery Michelson contracts, operations, and on-chain storage via the TzKT indexer and REST API.
Follow an atomic call end-to-end — across the EVM and Michelson interfaces — in a single timeline. Bridges Blockscout and TzKT data.
What you can build
Hosted, working applications showcasing what native atomic composability unlocks.
A native atomic composability demo, dressed up as a small game. Every button press is a single transaction that atomically touches both the EVM and Michelson interfaces in the same block — the game is just the wrapper that makes the mechanic tangible.
Live working version of the application built in our cross-interface counter tutorial. Click to play with it; follow the tutorial below to deploy your own.
Tools
Libraries, services, and integrations to write, deploy, and use Tezos X.
Optimized Solidity library for encoding and decoding Michelson values from EVM contracts, backed by formal verification.
A wallet built for Tezos X — one account, both interfaces. Drives any EVM dApp directly
through the cross-interface gateway via window.ethereum / EIP-6963, so dApps see your
Tezos account natively without an extra EVM key.
Already use Temple, Kukai, or MetaMask? Keep them — this is an alternative for
users who want a single integrated app instead of two wallets side by side.
IguanaDEX fork running on the Previewnet — swap, provide liquidity, create pools and tokens. Useful for liquidity and integration tests against EVM contracts.
Background reading: Tezos X — From Roadmap to Reality ↗
Questions or feedback? Reach the team in the Tezos X channel on discord.gg/tezos ↗.
Network
Raw RPC and infrastructure endpoints for direct integration. Canonical reference (chain IDs, rollup address, kernel config): github.com/trilitech/tezos-x-previewnet ↗.