Agent skill

Devp2p Run A Node

by Nethereum in Nethereum/Nethereum

Help users run a full Ethereum devp2p node with Nethereum (.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together.

MITAuto-check passedBackend & APIs

Install Devp2p Run A Node

skills CLI
$ npx skills add Nethereum/Nethereum --skill devp2p-run-a-node -a claude-code

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

GitHub CLI
$ gh skill install Nethereum/Nethereum devp2p-run-a-node --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/devp2p-run-a-node .claude/skills/devp2p-run-a-node && 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
devp2p-run-a-node
GitHub stars
2.3k
Token cost
~2k tokens
SKILL.md length
685 words
Files
1
Skills in repo
71
Repo updated
First seen
Licence
MIT

At a glance

Help users run a full Ethereum devp2p node with Nethereum (.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together.

  • The user mentions running an Ethereum node
  • SKILL.md covers Package, Mental model: one facade, four…, Start serving eth and snap to… and Relay locally-submitted…, plus 3 more sections
  • Calls dotnet
  • Relaying a locally-submitted transaction

What it does

Devp2p Run A Node is an agent skill from Nethereum/Nethereum. Help users run a full Ethereum devp2p node with Nethereum (.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together. Use this skill whenever the user mentions running an Ethereum node, SyncNode, serving eth or snap to peers, PeerListener, relaying a locally-submitted transaction, RelayMempool, SubmitAsync, or wants one entry point that combines devp2p connect/discover/sync/mempool.

Its SKILL.md is about 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. It works with Ethereum and .NET. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.

When your agent uses it

  • The user mentions running an Ethereum node
  • Relaying a locally-submitted transaction
  • Wants one entry point that combines devp2p connect/discover/sync/mempool

Example prompts

  • “/devp2p-run-a-node”

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

    Links to these hosts (documentation or services it may open):

    • 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

Devp2p Run A Node loads about 2k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 685 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~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). 685 words, ~1,954 tokens.

Download SKILL.mdSave it as .claude/skills/devp2p-run-a-node/SKILL.md (or your agent's skills folder).
name
devp2p-run-a-node
description
Help users run a full Ethereum devp2p node with Nethereum (.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together. Use this skill whenever the user mentions running an Ethereum node, SyncNode, serving eth or snap to peers, PeerListener, relaying a locally-submitted transaction, RelayMempool, SubmitAsync, or wants one entry point that combines devp2p connect/discover/sync/mempool.
user-invocable
true

Run a Node — SyncNode facade (Nethereum.DevP2P.Sync)

Connecting to a peer and discovering peers (see devp2p-peer-connect and devp2p-peer-discovery) cover the transport primitives one at a time — dialing, listening, discovering. A real node needs all of them working together: a peer pool, a fetch scheduler, an inbound listener serving eth/snap to other nodes, and (optionally) a mempool relay — plus the sync engine (devp2p-full-sync, devp2p-snap-sync). SyncNode is the facade that ties this into one object, in the same spirit as Web3 for the JSON-RPC side of Nethereum: construct it once from your chain's storage and activation config, then reach every sync capability from it.

Package

bash
dotnet add package Nethereum.DevP2P.Sync

You'll need an IChainStoreBundle (block/state storage) and IChainActivations (fork schedule) from Nethereum.CoreChain — these come from whichever chain you're running (mainnet follower or an AppChain), not from this package. You'll also typically have already built the peering resources: an IPeerPool, an IFetchRequestScheduler, and optionally a PeerListener for serving.

Mental model: one facade, four capabilities

csharp
public sealed class SyncNode
{
    public IPeerPool Peers { get; }                    // dial-out / inbound pool (null if not configured)
    public IFetchRequestScheduler Scheduler { get; }   // fans fetch requests across peers (null if not configured)
    public PeerListener Serving { get; }               // inbound listener; serves eth + snap (null if not serving)
    public RelayMempool Mempool { get; }               // good-citizen relay tx pool (null if not relaying)

    public SyncNode(
        IChainStoreBundle bundle, IChainActivations activations, ILogger logger,
        IPeerPool peers = null, IFetchRequestScheduler scheduler = null, PeerListener serving = null,
        RelayMempool mempool = null);

    public Task StartServingAsync(CancellationToken ct = default);   // bind the listener; no-op if not serving
    public Task<SnapBootstrapper.Result> RunSnapBootstrapAsync(      // cold-start state; delegates to the orchestrator
        ICanonicalStateRootSource canonicalTip, SnapSyncOrchestratorOptions options = null,
        CancellationToken ct = default);
}

Each of the four properties is null when you didn't configure that capability — a node that only backfills the archive (no inbound serving) simply won't set serving, and node.Serving stays null. This lets one class model "full node," "archive-only follower," and "serving-only" without three different types. The underlying drivers (SnapSyncOrchestrator, SnapBootstrapper, the phase workers) stay directly usable for advanced control — SyncNode is a front door, not a wall.

Start serving eth and snap to other peers

If you built a PeerListener (the inbound serving composition — binds a port, drives the eth server handshake, and serves eth plus snap/1 to peers syncing from you) and passed it into the constructor's serving parameter, StartServingAsync binds it:

csharp
var node = new SyncNode(bundle, activations, logger, peers: pool, scheduler: scheduler, serving: peerListener);

await node.StartServingAsync(ct);   // no-op if you didn't pass a `serving` PeerListener

This is what makes your node useful to other nodes doing full sync or snap sync against you — without it, your node can dial out and sync but nobody can sync from it. RlpxListener.PeerAccepted alone (see devp2p-peer-connect) does not run the eth Status exchange; PeerListener fills that gap.

Relay locally-submitted transactions

RelayMempool is the "good citizen" side of mempool participation: it admits transactions your own node (or a locally-connected wallet/RPC client) submits — after running them through MempoolAdmissionValidator — holds them in an ITxPool, and announces their hashes to your connected peers. It is deliberately leaf-only: it never re-gossips transactions it received from other peers, so a SyncNode participates in propagation without becoming a full relay hub.

csharp
var node = new SyncNode(bundle, activations, logger, peers: pool, scheduler: scheduler, mempool: relayMempool);

var result = await node.Mempool.SubmitAsync(signedTx);   // MempoolSubmitResult tells you the outcome
if (!result.Accepted)
{
    // result.RejectReason (MempoolRejectReason) + result.RejectMessage explain why
}

SubmitAsync(ISignedTransaction, CancellationToken) : Task<MempoolSubmitResult> — the real signature, from Mempool/RelayMempool.cs. Do not use an Admit-named method; it does not exist. MempoolSubmitResult (Mempool/MempoolSubmitResult.cs) exposes Accepted, TransactionHash, Sender, RejectReason, RejectMessage. Check result.Accepted (and RejectReason/RejectMessage on failure) before assuming a submitted transaction actually made it into the pool — a full pool, a stale nonce, or a validator rejection all fail silently from the caller's perspective unless you inspect the result. (AdmitFromTrustedPeerAsync is the separate inbound path used when relaying transactions received from peers, not the path for a locally-submitted transaction.)

Show full SKILL.md (216 more words)Show less

Cold-start state with the same facade

SyncNode.RunSnapBootstrapAsync is the sync-side capability, delegating straight to SnapSyncOrchestrator.RunAsync:

csharp
var result = await node.RunSnapBootstrapAsync(canonicalTip, options, ct);
// result.Ran / result.SkipReason / result.PivotBlockNumber

See devp2p-snap-sync for the full Phase 2/3 flow this delegates to — the point here is that it's reached from the same node object as serving and mempool relay, not a separately-constructed orchestrator.

Common mistakes

SymptomCauseFix
node.Serving is null at runtimeNo serving: peerListener argument was passed to the constructorStartServingAsync is a safe no-op in this case, but check whether you meant to serve
Peers connect but the node never answers eth/snap requestsUsed bare RlpxListener instead of PeerListenerRlpxListener only completes the transport handshake; PeerListener runs the actual protocol dispatch
Submitted transaction never reaches peersRelayMempool.SubmitAsync rejected it, or node.Mempool is null because no mempool: argument was passedCheck the returned MempoolSubmitResult (Accepted, RejectReason/RejectMessage); confirm the constructor argument
A remote peer connects but is dropped right after StatusFork-ID mismatch (EIP-2124)Confirm both nodes share GenesisHash/ForkBlockNumbers/ForkTimestamps in their DevP2PConfig

Decision guidance

I want to…Use
The single object that gives me peering + serving + sync + mempoolSyncNode
Fine-grained control over pivot selection, retry/backoffSnapSyncOrchestrator directly (advanced — see devp2p-snap-sync)
Only Phase 1 (block archive), no state syncDrive ParallelBlockBackfiller directly (see devp2p-full-sync)
Only serve, never sync outConstruct SyncNode with serving: set and skip RunSnapBootstrapAsync

For full documentation, see: https://docs.nethereum.com/docs/devp2p/guide-run-a-node

© 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/devp2p-run-a-node of Nethereum/Nethereum.

Open the folder on GitHubat commit 229f278

Compare with similar skills

Devp2p Run A Node 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.

Devp2p Run A Node compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Devp2p Run A Node this skillNethereum/Nethereum2.3k—~2kAutomated safety check: PassMIT
FoundatioFoundatioFx/Foundatio2.1k—~3.9kAutomated safety check: PassApache-2.0
NEAR Intents Swap Integrationinternet-court/internet-court-skill6.4k2 repos~939Automated safety check: PassCustom licence
Aspnet Corefanslead/ReverseProxy.Store1632 repos~1.4kAutomated safety check: PassApache-2.0
.NET API Compatibility DesignAaronontheweb/dotnet-skills1.2k2 repos~2.7kAutomated safety check: PassMIT
Msal Auth Code FlowAzureAD/microsoft-authentication-library-for-dotnet1.5k—~917Automated safety check: PassMIT

Similar skills

  • Foundatio

    FoundatioFx/Foundatio

    A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.

    2.1k GitHub stars~3.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • NEAR Intents Swap Integration

    internet-court/internet-court-skill

    Builds cross-chain token swaps and bridge flows with the NEAR Intents 1Click API: quotes, deposit addresses, per-chain deposits and status polling.

    6.4k GitHub starsUsed in 2 repos~939 tokens
    Backend & APIsAuto-check passed
  • Aspnet Core

    fanslead/ReverseProxy.Store

    Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development.

    163 GitHub starsUsed in 2 repos~1.4k tokens
    Backend & APIsAuto-check passed
  • .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
  • Msal Auth Code Flow

    AzureAD/microsoft-authentication-library-for-dotnet

    Authorization Code Flow for web applications using MSAL.NET confidential client to sign in users and access APIs on their behalf

    1.5k GitHub stars~917 tokensUpdated today
    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

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 Devp2p Run A Node

What does Devp2p Run A Node do?

Help users run a full Ethereum devp2p node with Nethereum (.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together. Devp2p Run A Node is an agent skill from Nethereum/Nethereum.NET) — the SyncNode facade that ties peering, serving eth/snap to other peers, syncing, and mempool relay together.

When should I use Devp2p Run A Node?

Devp2p Run A Node fits situations like: the user mentions running an Ethereum node; relaying a locally-submitted transaction; wants one entry point that combines devp2p connect/discover/sync/mempool.

How do I install Devp2p Run A Node in Claude Code?

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

How do I install Devp2p Run A Node in Codex?

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

Can I use Devp2p Run A Node 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 devp2p-run-a-node -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/devp2p-run-a-node, .gemini/skills/devp2p-run-a-node, .github/skills/devp2p-run-a-node and .opencode/skills/devp2p-run-a-node in your project.

What does Devp2p Run A Node need to run?

Going by SKILL.md and its folder, Devp2p Run A Node needs the command-line tools its instructions call (dotnet).

Does Devp2p Run A Node access the network?

SKILL.md names 1 domain. As links in the text: docs.nethereum.com. This is read from the text; nothing was executed.

Is Devp2p Run A Node 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 Devp2p Run A Node use?

Devp2p Run A Node 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 Devp2p Run A Node use?

About 2k tokens (SKILL.md is roughly 7.8k 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 Devp2p Run A Node?

Skills that share tags, products or a category with Devp2p Run A Node: Foundatio (FoundatioFx/Foundatio, 2.1k stars), NEAR Intents Swap Integration (internet-court/internet-court-skill, 6.4k stars), Aspnet Core (fanslead/ReverseProxy.Store, 163 stars) and .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Devp2p Run A Node?

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.