Blockchain · How-to
How to Build Dapps on Telos EVM in 2026
Telos EVM lets Solidity developers reuse familiar Ethereum tooling on a low-fee chain. This guide walks through setup, contract work, testnet deployment, frontend connection, and the checks to run before mainnet.
By the DappsAtlas editorial team · Updated

What Telos EVM is and why build on it
Telos EVM is an Ethereum Virtual Machine environment on the Telos network. It is built for developers who want to run Solidity smart contracts and use familiar Ethereum tools while paying low transaction fees.
For a developer, the main appeal is compatibility. Contracts written for the EVM can usually be compiled with the same compilers, tested with the same frameworks, and interacted with through the same wallet and library patterns used on Ethereum.
Before you start, decide what kind of app you are building. Common choices include token contracts, simple marketplaces, lending or staking pools, and apps that read onchain data through a frontend. Each has different security needs, so it helps to pick a narrow first project.
Also check the official Telos documentation for the current state of the network, its supported features, and any chain-specific differences. Treat older tutorials with caution, because network endpoints, tooling versions, and recommended practices change over time.
What tools and accounts you need first
You do not need a specialized Telos SDK to begin. A typical EVM development setup includes the following:
- Node.js, installed from the official site using a current long-term support release
- A code editor with Solidity support
- A package manager such as npm or pnpm
- A browser wallet extension that supports custom EVM networks
- Git, for version control and project templates
You will also need a development framework. Hardhat and Foundry are the two most common choices. Hardhat uses JavaScript or TypeScript for scripts and tests, while Foundry uses Solidity-based tests and a fast command-line toolchain. Either works with EVM chains.
For learning, pick one framework and use it consistently. Install the latest versions from each project's official documentation. Keep a notes file with the exact versions you used, since later updates can change default settings or command names.
How to set up a project with Hardhat or Foundry
Create a project folder and initialize it with your chosen framework. For Hardhat, the usual path is to install the package in an empty folder and run its project initializer, which creates a contracts folder, a test folder, a scripts folder, and a configuration file.
For Foundry, install the toolchain and run the project creation command. It produces a src folder for contracts, a test folder for Solidity tests, and a foundry.toml configuration file.
Keep your project under version control from the first commit. Add a.gitignore entry for environment files, private keys, and build artifacts. Never commit a file that contains a seed phrase or private key.
Use environment variables for secrets. A common pattern is a.env file that is excluded from Git, with a template file such as.env.example listing the variable names without values. Load these values in your configuration rather than writing them directly into scripts.
How to add the Telos EVM network to your tools
Your tools need to know which network to talk to. Add a network entry to your framework configuration that includes a name, the RPC URL, the chain ID, and the account source. Get these values from the official Telos documentation and confirm them against a block explorer.
For a wallet, add the network manually with the same RPC URL, chain ID, currency symbol, and block explorer URL. Send a small test transaction before relying on the connection.
Separate testnet and mainnet configurations. Give each a distinct name so you do not deploy to mainnet by accident. A good habit is to make the deploy script require an explicit network flag and print the chain ID before sending anything.
When you update an RPC endpoint, record the change in your project notes. If a provider rate-limits requests, you may need a different endpoint. Check the documentation for approved providers rather than relying on a random public URL.
How to write and test your first smart contract
Start with a small contract, such as a simple counter, a basic token, or a storage example. Write the contract in Solidity, then compile it. Read the compiler warnings and fix them rather than ignoring them.
Write tests before you deploy anything. Good tests cover the normal path, the failure cases, and access control. For example, check that a non-owner cannot call an admin function, that balances update correctly after a transfer, and that invalid inputs revert.
Common mistakes to avoid include:
- Trusting external calls to return honest data
- Forgetting to check return values from token transfers
- Writing loops over unbounded arrays that could run out of gas
- Using tx.origin for authentication
- Leaving admin functions without clear ownership rules
Use the standard libraries from OpenZeppelin for access control and token standards instead of writing these from scratch. Review their documentation for the version you install, since APIs can change between major releases.
How to deploy to the Telos testnet
Before deploying to mainnet, use the Telos testnet. Obtain testnet tokens from an official faucet listed in the Telos documentation. Faucets have limits and may change, so check their current rules before you request funds.
Your deployment script should do the following:
- Confirm the network and chain ID
- Check the deployer balance
- Deploy the contract with clear constructor arguments
- Print the deployed address and transaction hash
- Save the address to a deployment file
After deployment, verify the source code on the block explorer if the explorer supports verification for Telos EVM. Verified source lets users read the code they are interacting with.
Record the compiler version, optimizer settings, and constructor arguments. You will need these for verification, upgrades, and incident response. Keep test deployments separate from any production addresses in your documentation.
How to connect a frontend to your contract
A frontend needs a library to talk to the chain. Two widely used options are ethers.js and viem. Both can connect to a wallet provider, read contract state, and send transactions. Choose one and follow its current documentation.
A basic connection flow looks like this:
- Detect whether the user has an injected wallet
- Ask the user to connect their account
- Check that the wallet is on the expected chain ID
- Offer a prompt to switch or add the Telos network if needed
- Create a contract instance using the deployed address and the ABI
Split reads from writes. Reads can use a public RPC provider and do not need a wallet signature. Writes must go through the user's wallet, and the interface should show the transaction details and wait for a confirmation.
Handle errors clearly. Show the user when a transaction is rejected, when the wallet is on the wrong network, or when the contract reverts. Avoid showing raw error output directly to users, since it can be confusing.
How to read onchain data and index events
Reading one contract's state is simple with an RPC call. Apps that need history, lists of events, or aggregated data usually need an indexer. An indexer watches the chain, processes logs, and stores results in a database that your app can query quickly.
Envio is one example of an indexing platform that offers APIs for developers, but you must confirm it supports the chains you target before building on it. If you run your own indexer, you can write event handlers in TypeScript and store the data in a database of your choice.
For data that depends on prices, use an oracle service designed for that purpose. Pyth Network is one example of a price oracle provider. Confirm which feeds are available on the chain you use, since not every asset or network is supported.
When you need ecosystem context, such as which protocols are active on a chain, DefiLlama aggregates data for many networks. Use it as a reference, and check its current coverage for Telos directly.
Security checklist before you launch
Security review is part of development, not an optional step. Start with a checklist and run through it before each deployment:
- Confirm which addresses have admin or upgrade powers
- Use a multisig for any contract that controls funds
- Limit the amount of value a new contract can hold during early launch
- Add pause functions only if you have a clear process for using them
- Review every external call for reentrancy risk
- Check token approvals and encourage users to revoke unused ones
Get an independent code review for anything that holds user funds. Automated analysis tools can find common issues, but they do not replace a human review. Keep a record of findings and how you fixed them.
For your own wallets, store the seed phrase offline, use a hardware wallet where possible, and never share keys with a frontend or script. Be wary of phishing sites that copy your interface.
After launch, watch for unusual transactions, set up alerts, and publish a clear way for users to report problems. Keep an incident plan ready so you can act quickly.
Frequently asked questions
Do I need to learn a new language to build on Telos EVM?
Telos EVM runs the Ethereum Virtual Machine, so Solidity contracts and standard EVM libraries generally work with it. Your main changes are the network settings, the native token, and any chain-specific details in the official docs. Always test before assuming a contract or library behaves the same way.
Where should I find the current network settings?
Check the official Telos documentation for current RPC endpoints, chain IDs, block explorer addresses, and faucet links. Those details can change, so copy them from the source rather than from older tutorials. Verify the chain ID in your wallet before signing anything.
How do I protect the wallet I use for deployment?
Keep the funds you use for development separate from your main holdings, and use a test wallet on testnet. Never paste a seed phrase or private key into a website, script, or chat. Hardware wallets or multisig setups are safer for any wallet that controls a mainnet contract.
Can I use existing indexing and analytics tools with a Telos app?
Yes. Indexers such as Envio and general analytics sites such as DefiLlama can help you read data, but support for a specific chain varies. Check each provider's supported-chain list before you build on it. If a service does not list Telos, you can still read contract events through a standard RPC endpoint.
What should I do before launching on mainnet?
Start with a small, clearly scoped contract, write thorough tests, and get an independent review for anything that holds user funds. Use the testnet for a full dry run, then deploy with a small amount first. Monitor the contract after launch and have a plan for pausing or upgrading it.
Mentioned in this guide
dApps in this guide
Envio is a blockchain indexing and data platform offering HyperIndex APIs and fast HyperSync raw data access for developers across 81+ chains.
DefiLlama is a data site that aggregates total value locked, trading volume and fees for DeFi protocols across many chains.
Pyth Network is a first-party price oracle and market data provider for blockchain apps, trading venues and institutions, with its own PYTH token.
Across is an intent-based cross-chain bridge and swap protocol for moving tokens between Ethereum, rollups and other chains, with an API for apps.
Common is a non-custodial ZK privacy dapp on Arbitrum and Aleph Zero EVM that lets users shield funds and withdraw to a new, unlinkable wallet.
Save, formerly Solend, is a Solana lending and borrowing protocol where users earn interest on deposits or borrow against collateral.
Keep reading
Related guides
Blockchain · Chain guide
Avalanche Subnets Explained: What They Are and Why dApps Use Them
Avalanche subnets are custom blockchains that run on Avalanche's shared infrastructure, each with its own validators, fee token and rules. This guide explains how they work, when a dApp benefits from one, and which trade-offs to check before building or using one.
Blockchain · Best list
Best Injective dApps for DeFi, NFTs and More in 2026
Injective is a Layer-1 chain built for finance, so most of its dApps are trading, lending and derivatives venues, with NFTs and games as smaller areas. This guide explains how to judge which Injective dApps are worth using and how to check their current status.
Blockchain · Explainer
Gravity Chain Update Explained: L1, Identity, Parallel EVM
Gravity has moved from its Alpha Mainnet toward Gravity L1, its own layer-1 network, and its public materials describe onchain identity, parallel EVM execution and gigagas-level throughput. This guide explains what each term means, what the sources confirm, and how to check the current state of the network yourself.
Blockchain · Explainer
Oasis Sapphire Explained: Confidential EVM Smart Contracts in 2026
Oasis Sapphire is an EVM-compatible chain that runs smart contracts inside trusted execution environments so that contract state and inputs can stay confidential. This guide explains how it works, what it protects, where it falls short, and how to evaluate it in 2026.
Blockchain · How-to
How to Create a DAO on Velas in 2026: Step-by-Step Guide
A DAO on Velas is a set of smart contracts that hold funds and carry out member votes. This guide covers the design choices, deployment steps, treasury setup and security checks you need before launch.
Blockchain · How-to
How to Bridge to Base: Easy Step-by-Step Guide for 2026
Base is Coinbase's Ethereum layer-2 network, and there are several ways to get funds onto it. This guide covers the official bridge, exchange withdrawals, third-party bridges, costs, timing and the mistakes to avoid.
Blockchain · How-to
How to Get Started on Tezos in 2026: A Step-by-Step Guide
Tezos is a proof-of-stake blockchain with its own token, XTZ. This guide walks through what you need, how to hold and move XTZ safely, how to connect to Tezos apps, and how delegation works.
Blockchain · Explainer
New Dapps Coming to Optimism: How to Track and Use Them
Optimism is an Ethereum layer-2 network, and new applications arrive on it all the time. This guide explains how launches happen, where to verify them, and how to check a new dapp before you connect a wallet.