Agent skill

Evm Simulation

by Nethereum in Nethereum/Nethereum

Help users simulate Ethereum transactions, preview state changes, decode call trees, extract token transfers, decode revert reasons, debug EVM execution, or disassemble bytecode using Nethereum.EVM…

MITAuto-check passedBackend & APIs

Install Evm Simulation

skills CLI
$ npx skills add Nethereum/Nethereum --skill evm-simulation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Nethereum/Nethereum evm-simulation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nethereum-skills/skills/evm-simulation .claude/skills/evm-simulation && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
evm-simulation
GitHub stars
2.3k
Token cost
~2.2k tokens
SKILL.md length
348 words
Files
1
Skills in repo
71
Repo updated
First seen
Licence
MIT

At a glance

Help users simulate Ethereum transactions, preview state changes, decode call trees, extract token transfers, decode revert reasons, debug EVM execution, or disassemble bytecode using Nethereum.EVM…

  • The user mentions transaction simulation
  • SKILL.md covers When to Use This, Required Packages, The Transaction Simulation… and Key Classes, plus 8 more sections
  • Calls dotnet; reaches mainnet.infura.io
  • Transaction preview

What it does

Evm Simulation is an agent skill from Nethereum/Nethereum. Help users simulate Ethereum transactions, preview state changes, decode call trees, extract token transfers, decode revert reasons, debug EVM execution, or disassemble bytecode using Nethereum.EVM (.NET). Use this skill whenever the user mentions transaction simulation, transaction preview, state changes preview, call tracing, EVM debugging, bytecode execution, bytecode disassembly, opcode analysis, revert decoding, custom error decoding, ERC-20 simulation, balance change extraction, or anything involving local…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Smart contracts. It works with Ethereum, .NET and C#. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.

When your agent uses it

  • The user mentions transaction simulation
  • Transaction preview
  • State changes preview
  • Bytecode execution

Example prompts

  • “/evm-simulation”

Requirements

  • A credential in YOUR_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 229f278. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • mainnet.infura.io

    Also links to:

    • docs.nethereum.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Evm Simulation loads about 2.2k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 348 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~141
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Nethereum/Nethereum at commit 229f278, republished under its MIT licence (© Nethereum). 348 words, ~2,179 tokens.

Download SKILL.mdSave it as .claude/skills/evm-simulation/SKILL.md (or your agent's skills folder).
name
evm-simulation
description
Help users simulate Ethereum transactions, preview state changes, decode call trees, extract token transfers, decode revert reasons, debug EVM execution, or disassemble bytecode using Nethereum.EVM (.NET). Use this skill whenever the user mentions transaction simulation, transaction preview, state changes preview, call tracing, EVM debugging, bytecode execution, bytecode disassembly, opcode analysis, revert decoding, custom error decoding, ERC-20 simulation, balance change extraction, or anything involving local EVM execution with C# or .NET.
user-invocable
true

EVM Simulation — Nethereum.EVM

The Nethereum EVM simulator is a full in-process Ethereum Virtual Machine that executes bytecode locally against real blockchain state. It powers the wallet transaction preview, DevChain, CoreChain, and the Solidity debugger.

When to Use This

  • Transaction preview: Simulate a transaction to see all balance changes (ETH, ERC-20, NFT) before signing
  • Call tree decoding: Understand which contracts and functions are called during a complex transaction
  • Event extraction: Get all events emitted and consolidate token transfers into net balance changes
  • Revert debugging: Decode why a transaction failed — custom errors, require messages, panic codes
  • ERC-20 testing: Simulate token transfers, approvals, and detect fee-on-transfer tokens
  • Bytecode analysis: Execute, debug, or disassemble EVM bytecode
  • Source-level debugging: Step through execution with Solidity source maps

Required Packages

bash
dotnet add package Nethereum.EVM          # Core simulator, executor, decoder, extractor
dotnet add package Nethereum.EVM.Contracts # ERC-20 contract simulator
dotnet add package Nethereum.Web3          # RPC connection for blockchain state

The Transaction Simulation Pipeline

This is the primary pattern — simulate a transaction and extract all state changes:

csharp
using Nethereum.EVM;
using Nethereum.EVM.BlockchainState;
using Nethereum.EVM.Decoding;
using Nethereum.EVM.Execution;
using Nethereum.EVM.StateChanges;
using Nethereum.Hex.HexConvertors.Extensions;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Web3;
using System.Numerics;

// 1. Connect to blockchain state
var web3 = new Web3("https://mainnet.infura.io/v3/YOUR_KEY");
var blockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();
var block = await web3.Eth.Blocks.GetBlockWithTransactionsHashesByNumber
    .SendRequestAsync(blockNumber);

var nodeDataService = new RpcNodeDataService(web3.Eth, new BlockParameter(blockNumber));
var executionState = new ExecutionStateService(nodeDataService);

// 2. Build execution context
var ctx = new TransactionExecutionContext
{
    Mode = ExecutionMode.Call,           // Simulate without gas payment
    Sender = "0xYourAddress",
    To = "0xContractAddress",
    Data = calldata.HexToByteArray(),    // ABI-encoded function call
    GasLimit = 10_000_000,
    Value = BigInteger.Zero,
    GasPrice = block.BaseFeePerGas.Value + 1_000_000_000,
    MaxFeePerGas = block.BaseFeePerGas.Value + 1_000_000_000,
    MaxPriorityFeePerGas = 1_000_000_000,
    Nonce = BigInteger.Zero,
    IsEip1559 = true,
    IsContractCreation = false,
    BlockNumber = (long)blockNumber.Value,
    Timestamp = (long)block.Timestamp.Value,
    BaseFee = block.BaseFeePerGas.Value,
    Coinbase = "0x0000000000000000000000000000000000000000",
    BlockGasLimit = 30_000_000,
    ExecutionState = executionState,
    TraceEnabled = true
};

// 3. Execute
var executor = new TransactionExecutor(HardforkConfig.Default);
var execResult = await executor.ExecuteAsync(ctx);

// 4. Decode call tree and events
var decoder = new ProgramResultDecoder(abiStorage); // IABIInfoStorage
var decoded = decoder.Decode(execResult, callInput, chainId);

// 5. Extract balance changes
var extractor = new StateChangesExtractor();
var stateChanges = extractor.ExtractFromDecodedResult(
    decoded, executionState, "0xCurrentUserAddress");

// Check results
if (execResult.Success)
{
    Console.WriteLine(stateChanges.ToSummaryString());
    foreach (var change in stateChanges.BalanceChanges)
    {
        Console.WriteLine($"{change.Address}: {change.Change} ({change.Type})");
    }
}
else
{
    Console.WriteLine($"Would revert: {decoded.RevertReason?.GetDisplayMessage()}");
}

Key Classes

ClassPurpose
TransactionExecutorExecutes transactions with full gas/fee logic
TransactionExecutionContextAll inputs: sender, target, calldata, block context, state
TransactionExecutionResultResults: Success, GasUsed, Logs, Traces, ReturnData
HardforkConfigCancun/Prague/Default presets controlling EVM features
ProgramResultDecoderDecodes raw results into call trees, events, errors
DecodedProgramResultRoot call tree, decoded logs, return value, revert reason
DecodedCallFrom, To, Function, InputParameters, InnerCalls, CallType
DecodedLogContractAddress, Event, Parameters, IsDecoded
DecodedErrorError ABI, Parameters, Message
StateChangesExtractorExtracts balance changes from decoded results
StateChangesResultBalanceChanges, RootCall, DecodedLogs, GasUsed, Error
BalanceChangeType (Native/ERC20/ERC721/ERC1155), Change, TokenAddress
EVMSimulatorCore bytecode execution engine
ProgramBytecode, stack, memory, storage, trace
EVMDebuggerSessionInteractive debugging with source maps
ProgramInstructionsUtilsBytecode disassembly and function signature detection
ERC20ContractSimulatorSpecialized ERC-20 token simulation

Decoding Call Trees

csharp
var decoded = decoder.Decode(execResult, callInput, chainId);

// Walk the call tree
void PrintCallTree(DecodedCall call, int indent = 0)
{
    var prefix = new string(' ', indent * 2);
    Console.WriteLine($"{prefix}{call.CallType}: {call.GetDisplayName()} (gas: {call.GasUsed})");
    if (call.InputParameters != null)
        foreach (var p in call.InputParameters)
            Console.WriteLine($"{prefix}  {p.Parameter.Name}: {p.Result}");
    if (call.InnerCalls != null)
        foreach (var inner in call.InnerCalls)
            PrintCallTree(inner, indent + 1);
}
PrintCallTree(decoded.RootCall);

Decoding Reverts

csharp
if (!execResult.Success)
{
    var decoded = decoder.Decode(execResult, callInput, chainId);
    if (decoded.RevertReason != null)
    {
        Console.WriteLine($"Error: {decoded.RevertReason.GetErrorName()}");
        Console.WriteLine($"Message: {decoded.RevertReason.GetDisplayMessage()}");
        if (decoded.RevertReason.Parameters != null)
            foreach (var p in decoded.RevertReason.Parameters)
                Console.WriteLine($"  {p.Parameter.Name}: {p.Result}");
    }
}

Bytecode Execution

csharp
using Nethereum.EVM;
using Nethereum.Hex.HexConvertors.Extensions;

var bytecode = "6004600401".HexToByteArray(); // PUSH1 4, PUSH1 4, ADD
var vm = new EVMSimulator();
var program = new Program(bytecode);
await vm.ExecuteAsync(program, traceEnabled: true);

var result = program.StackPeek(); // 0x08
foreach (var trace in program.Trace)
    Console.WriteLine($"{trace.Instruction?.Instruction} Gas:{trace.GasCost}");

Bytecode Disassembly

csharp
var disassembly = ProgramInstructionsUtils.DisassembleToString(bytecodeHex);
// "0000   60   PUSH1  0x80\n0002   60   PUSH1  0x40\n..."

var instructions = ProgramInstructionsUtils.GetProgramInstructions(bytecodeHex);
bool hasTransfer = ProgramInstructionsUtils.ContainsFunctionSignature(
    instructions, "0xa9059cbb"); // transfer(address,uint256)

ExecutionMode

  • ExecutionMode.Call — simulates without gas payment (like eth_call)
  • ExecutionMode.Transaction — full execution with gas payment validation

HardforkConfig

  • HardforkConfig.Cancun — EIP-4844 only, 6 blobs, precompiles 1-10
  • HardforkConfig.Prague — All EIPs (4844, 7623, 7702), 9 blobs, precompiles 1-17
  • HardforkConfig.Default — Same as Prague

Balance Change Types

TypeSourceKey Properties
NativeCall tree value transfersChange (wei)
ERC20Transfer eventsChange, TokenAddress, TokenSymbol
ERC721Transfer events (indexed tokenId)TokenId, TokenAddress
ERC1155TransferSingle/TransferBatchTokenId, Change, TokenAddress

Validation Statuses

BalanceValidationStatus: NotValidated, Verified, FeeOnTransfer, Rebasing, OwnerMismatch, Mismatch

For full documentation, see: https://docs.nethereum.com/docs/evm-simulator/overview

© Nethereum, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/nethereum-skills/skills/evm-simulation of Nethereum/Nethereum.

Open the folder on GitHubat commit 229f278

Compare with similar skills

Evm Simulation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Evm Simulation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Evm Simulation this skillNethereum/Nethereum2.3k—~2.2kAutomated safety check: PassMIT
.NET API Compatibility DesignAaronontheweb/dotnet-skills1.2k2 repos~2.7kAutomated safety check: PassMIT
Tsp Csharpquerylenshq/ef-querylens225—~1.3kAutomated safety check: PassMIT
Deposit QrSuperior-Trade/superior-skills2141 repos~1.1kAutomated safety check: PassMIT
Explorer Contract Verificationsablier-labs/evm-monorepo353—~1.9kAutomated safety check: PassCustom licence
XML DocumentationVonage/vonage-dotnet-sdk118—~2.7kAutomated safety check: PassApache-2.0

Similar skills

  • .NET API Compatibility Design

    Aaronontheweb/dotnet-skills

    Applies extend-only design rules to NuGet packages and distributed systems, covering source, binary and wire compatibility and how to deprecate members safely.

    1.2k GitHub starsUsed in 2 repos~2.7k tokens
    Backend & APIsAuto-check passed
  • Tsp Csharp

    querylenshq/ef-querylens

    Comprehensive C and .NET development skill for TSP projects.

    225 GitHub stars~1.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Deposit Qr

    Superior-Trade/superior-skills

    A skill your agent uses when a user needs a QR code or wallet payment URI to fund a Superior-managed EVM wallet on a specific chain before using Lighter, Polymarket, Hyperliquid, or other Superior…

    214 GitHub starsUsed in 1 repo~1.1k tokens
    Backend & APIsAuto-check passed
  • Explorer Contract Verification

    sablier-labs/evm-monorepo

    Verify smart contracts on Etherscan, Routescan, and Blockscout block explorers.

    353 GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • XML Documentation

    Vonage/vonage-dotnet-sdk

    Improve XML documentation in the Vonage .NET SDK. An agent skill from Vonage/vonage-dotnet-sdk.

    118 GitHub stars~2.7k tokensUpdated 3 mo ago
    Backend & APIsAuto-check passed
  • Developing Smart Contracts

    LFDT-Lineth/lineth-monorepo

    Solidity smart contract development guidelines for Lineth blockchain.

    126 GitHub stars~1.4k tokensUpdated today
    Backend & APIsAuto-check passed

More from Nethereum/Nethereum

All 71 skills in this repo
  • Aa Batching Paymasters

    Nethereum/Nethereum

    Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Aa Bundler

    Nethereum/Nethereum

    Help users run an ERC-4337 bundler using Nethereum — set up in-process or standalone bundlers with mempool, validation, reputation, and JSON-RPC server.

    2.3k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed
  • Abi Encoding

    Nethereum/Nethereum

    Encode and decode Ethereum ABI data with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Abi Retrieval

    Nethereum/Nethereum

    Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Account Abstraction

    Nethereum/Nethereum

    Help users implement ERC-4337 Account Abstraction with Nethereum — send UserOperations, use smart accounts, route contract calls through a bundler, enable gasless transactions, or work with AA in…

    2.3k GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed
  • Address Utils

    Nethereum/Nethereum

    Validate and format Ethereum addresses with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Evm Simulation

What does Evm Simulation do?

Help users simulate Ethereum transactions, preview state changes, decode call trees, extract token transfers, decode revert reasons, debug EVM execution, or disassemble bytecode using Nethereum.EVM…. Evm Simulation is an agent skill from Nethereum/Nethereum.NET).

When should I use Evm Simulation?

Evm Simulation fits situations like: the user mentions transaction simulation; transaction preview; state changes preview; bytecode execution.

How do I install Evm Simulation in Claude Code?

Run `npx skills add Nethereum/Nethereum --skill evm-simulation -a claude-code`. Or copy the skill folder (plugins/nethereum-skills/skills/evm-simulation in Nethereum/Nethereum) into .claude/skills/evm-simulation in your project. Claude Code loads it when a task matches its description.

How do I install Evm Simulation in Codex?

Run `npx skills add Nethereum/Nethereum --skill evm-simulation -a codex`. Or copy the skill folder (plugins/nethereum-skills/skills/evm-simulation in Nethereum/Nethereum) into .agents/skills/evm-simulation in your project. Codex loads it when a task matches its description.

Can I use Evm Simulation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Nethereum/Nethereum --skill evm-simulation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/evm-simulation, .gemini/skills/evm-simulation, .github/skills/evm-simulation and .opencode/skills/evm-simulation in your project.

What does Evm Simulation need to run?

Going by SKILL.md and its folder, Evm Simulation needs the command-line tools its instructions call (dotnet). Our summary lists: A credential in YOUR_KEY.

Does Evm Simulation access the network?

SKILL.md names 2 domains. In commands or code: mainnet.infura.io; the agent is likely to contact it when it follows the instructions. As links in the text: docs.nethereum.com. This is read from the text; nothing was executed.

Is Evm Simulation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Evm Simulation use?

Evm Simulation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Evm Simulation use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Evm Simulation?

Skills that share tags, products or a category with Evm Simulation: .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars), Tsp Csharp (querylenshq/ef-querylens, 225 stars), Deposit Qr (Superior-Trade/superior-skills, 214 stars) and Explorer Contract Verification (sablier-labs/evm-monorepo, 353 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Evm Simulation?

Nethereum (a GitHub organization) maintains it in Nethereum/Nethereum, which has 2,260 GitHub stars. The repository holds 71 skills in this directory. The repository was last updated on October 5, 2026.

Source: Nethereum/Nethereum on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.