Auto EVM
Note: Auto EVM is currenty available exclusively on the Taurus testnet. Mainnet availability is planned for Mainnet Phase-2.
Auto EVM enables any tool available for Ethereum development to be compatible with the Autonomys Network.
Quick Start Guide
This guide provides simple instructions for setting up a remote development environment, and assumes you have a basic understanding of or experience with Ethereum Virtual Machine (EVM) development.
Set up a MetaMask wallet (or any other EVM-compatible wallet) and connect it to our custom EVM
Network Name: Autonomys EVM
New RPC URL: https://auto-evm-0.taurus.subspace.network/ws
Chain ID: 490000
Currency Symbol: tAI3
Send tokens to your wallet using our faucet
Follow the instructions here to get some testnet AI3 (tAI3) tokens from our faucet.
tAI3 (formerly testnet Subspace Credits (tSSC)) is the sole method of payment for gas within the Auto EVM runtime. We are currently working on a bridge to convert farmed AI3 tokens into EVM-compatible tokens to cover gas fees.
Test and deploy your smart contract
You can use Remix, Foundry, or any other tool familiar to you to test and deploy your smart contracts on our custom EVM domain.
If anything above is unfamiliar to you, explore our full guide over the following pages.
Note: Do not tip when submitting transactions in an attempt to accelerate them. Autonomys’ transaction queue operates differently from Ethereum’s. Including a tip alongside gas fees leads to the possibility of two transactions sharing the same nonce. This could result in dual charges for gas fees—once for the execution and storage in the first transaction, and once for storage in the second transaction.
Known issue: gas estimation
When deploying smart contracts to our EVM-compatible Auto EVM domain, you may encounter an error related to gas estimation, typically presenting as:
"No manual gas limit set"
or "Gas estimation failed"
.
This issue often occurs because development tools like Foundry simulate transactions using calculated or hardcoded gas estimation instead of querying the RPC (Remote Procedure Call) for it. Auto EVM may require different gas amounts for certain operations compared to other EVM-compatible chains (like Ethereum testnets).
Note: We have submitted an upstream PR to fix this issue with Foundry. Described below are the workarounds until the issue is resolved by the Foundry team.
Solutions
If you encounter this issue, try the following solutions:
-
Skip simulation: Use the
--skip-simulation
flag when deploying with Foundry to bypass built-in simulation and rely on RPC for gas estimation. -
Set a manual gas limit: Specify a higher gas limit manually in your deployment command or UI.
-
Adjust your deployment script: Modify your script to include custom gas settings or implement
try
/catch
blocks for handling deployment failures. -
Use a web3 provider: If using Remix IDE, switch to an
Injected Web3
environment to leverage external web3 providers like MetaMask. -
Custom deployment function: Create a deployment function with adjustable gas parameters.
Solution examples
Foundry
-
Try using the
--skip-simulation
flag:forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --skip-simulation
. -
Try setting the gas limit manually:
forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --gas-limit 300000
. Start with a higher value (300000
) and gradually lower it to find the optimal limit.
Remix IDE
-
Try settiing the gas limit manually: In the
Deploy & Run Transactions
panel, expand theAdvanced
section. Set a higher value in theGas Limit
field. Start with300000
and adjust as needed. -
Try adjusting the gas price: In the same
Advanced
section, adjust theGas Price
as needed. -
Try switching to the
Injected Web3
environment in theDeploy & Run Transactions
panel: This will use your browser’s web3 provider (e.g., MetaMask), which may better handle gas estimation for the network. -
If the above steps don’t work, create a custom deployment function that includes gas parameters:
function deployWithCustomGas(uint256 gasLimit, uint256 gasPrice) public returns (address) { return address(new YourContract{gas: gasLimit, gasPrice: gasPrice}()); }
Other possible solutions
-
Modify your deployment script and override the default gas settings:
vm.txGasPrice(uint256 gasPrice); vm.txGasLimit(uint256 gasLimit);
-
Implement a
try
/catch
block in your script to handle gas estimation failures:try yourContract.deploy{gas: 300000}(constructorArgs) returns (YourContract deployed) { // Deployment successful } catch Error(string memory reason) { console.log("Deployment failed:", reason); }