Agent skill

Devp2p Full Sync

by Nethereum in Nethereum/Nethereum

Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…

MITAuto-check passedBackend & APIs

Install Devp2p Full Sync

skills CLI
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a claude-code

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

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

At a glance

Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…

  • The user mentions full sync
  • SKILL.md covers Package, Mental model:…, Run a bounded backfill and Where the header skeleton…, plus 5 more sections
  • Calls dotnet
  • Downloading blocks/headers/bodies/receipts over devp2p

What it does

Devp2p Full Sync is an agent skill from Nethereum/Nethereum. Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming, and reorg handling. Use this skill whenever the user mentions full sync, block backfill, downloading blocks/headers/bodies/receipts over devp2p, Phase 1 sync, ParallelBlockBackfiller, TipBandBodyFollowService, or handling a chain reorg while syncing.

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

When your agent uses it

  • The user mentions full sync
  • Downloading blocks/headers/bodies/receipts over devp2p
  • ParallelBlockBackfiller
  • TipBandBodyFollowService

Example prompts

  • “/devp2p-full-sync”

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 Full Sync loads about 2.1k tokens when it runs. Until then it costs about 116 tokens; SKILL.md has 914 words of instructions outside code blocks.

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

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). 914 words, ~2,146 tokens.

Download SKILL.mdSave it as .claude/skills/devp2p-full-sync/SKILL.md (or your agent's skills folder).
name
devp2p-full-sync
description
Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming, and reorg handling. Use this skill whenever the user mentions full sync, block backfill, downloading blocks/headers/bodies/receipts over devp2p, Phase 1 sync, ParallelBlockBackfiller, TipBandBodyFollowService, or handling a chain reorg while syncing.
user-invocable
true

Full Sync (Block Archive Backfill) — Nethereum.DevP2P.Sync

Once your node can connect to peers (devp2p-peer-connect) and is wired up as a SyncNode (devp2p-run-a-node), it needs the actual chain data: headers, bodies, and receipts for every block. This is Phase 1 of Nethereum's snap-first sync — downloading and verifying the block archive from [genesis..pivot] — and it's useful on its own even outside a full snap-sync run, for backfilling history behind an already snap-synced head.

Package

bash
dotnet add package Nethereum.DevP2P.Sync

You need an IChainStoreBundle to persist into, an IPeerPool with at least one connected peer, and an IFetchRequestScheduler to fan requests across that pool.

Mental model: content-addressed, pipelined, resumable

Phase 1 downloads three things per block — headers, bodies (transactions + uncles), and receipts — and verifies every one of them cryptographically before it's trusted:

  • Bodies are checked against the header's TransactionsHash and UnclesHash.
  • Receipts are checked against the header's ReceiptHash.
  • The parent-hash chain is validated within and across fetch batches.

A peer that returns bad data doesn't corrupt your archive — a mismatch is detected and the request is retried against another peer. This is the same trustless-fetch principle behind Phase 2 in snap sync (devp2p-snap-sync): never persist what you can't verify.

Run a bounded backfill

ParallelBlockBackfiller runs a concurrent pipeline — header producer/loader, body fetcher, receipt fetcher, and a persistence drain — over a shared BlockTaskQueue:

csharp
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, CancellationToken ct);
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, IBodyFillCursor cursor, CancellationToken ct);
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, bool headersFromStore, CancellationToken ct);

The headersFromStore: true overload is the one you reach for when headers are already persisted (laid down by a header skeleton, or by a previous partial run) and only bodies/receipts are missing:

csharp
var pool = new OnePeerPool();                 // your IPeerPool with a connected peer
var worker = new ServingWorker(chain);        // your IPeerRequestWorker implementation
var backfiller = new ParallelBlockBackfiller(scheduler, pool, worker, bundle);

using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
var result = await backfiller.BackfillAsync(3, 7, headersFromStore: true, cts.Token);

// result.Ran == true
// result.BlocksWritten == 5, result.TransactionsWritten == 5, result.ReceiptsWritten == 5
// bundle.Metadata.GetLastFetchedBody() advances to 7

BlocksWritten/TransactionsWritten/ReceiptsWritten tell you exactly what landed; bundle.Metadata.GetLastFetchedBody() is the durable cursor Phase 1 advances only over the contiguous persisted prefix — so a crash mid-fill leaves the cursor pointing at real, complete data, never past a gap.

Where the header skeleton comes from

The headersFromStore: true path assumes headers are already in the store. BackwardBlockWalker is what lays that skeleton down: it walks the chain backward from a trusted-tip hash anchor, validating the parent-hash chain as it goes, and optionally persisting bodies too. BlockTaskQueue — the producer/consumer queue underneath the backfiller — caps concurrent in-flight requests per peer per stage via maxInFlightPerPeer (default 1; the backfiller itself uses 4, so a fast peer can pipeline across the round trip instead of idling waiting for one response before sending the next request).

Keeping the tip band fed independently

Phase 1's archive backfill and the "keep the live tip fresh" job are deliberately separate concerns: TipBandBodyFollowService fills [execution-head+1 .. trusted-tip] with bodies and receipts so the block executor never starves waiting on the history drain to catch up. It's driven the same way as a bounded backfill, but against an IBodyFillCursor anchored at the execution head rather than a fixed [start, end] range:

csharp
var service = new TipBandBodyFollowService(scheduler, pool, bundle, activations);
var cursor = new ExecutionHeadBodyFillCursor(bundle);

await service.FillOnceAsync(backfiller, cursor, ct);
// cursor advances to the trusted tip independently of bundle.Metadata's archive body cursor

The archive cursor (bundle.Metadata.GetLastFetchedBody()) does not move when you drive the tip band this way — the two cursors track different things on purpose, so a slow archive backfill can never stall block execution at the tip.

Consuming blocks as a stream: IBlockSource

A follower doesn't call the backfiller directly in most cases — it consumes an IBlockSource, a chain-agnostic abstraction (defined in Nethereum.CoreChain) that streams blocks and reports when the source diverges from what was previously seen (a reorg or a bad peer). Two DevP2P-backed implementations exist:

  • DevP2PBlockSource — a multi-peer source (built on the pool + scheduler) that a follower pulls from, reporting chain breaks so the caller can auto-rewind.
  • PushedBlockSource — accepts blocks pushed to it (e.g. from a broadcast peer bridge) rather than pulling.

Note: these two types are named in the README's type table (role description, no method signature block); no tagged doc-example test covers constructing or streaming from either. Check src/Nethereum.CoreChain/Sync/IBlockSource.cs directly for the current interface shape before relying on it as stable.

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

What happens on a reorg

Phase 1 validates the parent-hash chain as it fetches, so a peer serving a block whose parent doesn't match what was already fetched is detected immediately rather than silently corrupting the archive. At the streaming layer, DevP2PBlockSource reports this as a chain break so the follower can auto-rewind to the last common ancestor and re-fetch forward — the same "verify before persist, never trust a single peer" discipline Phase 1 applies to bodies and receipts applies here to chain continuity itself.

Common mistakes

SymptomCauseFix
BackfillAsync(headersFromStore: true) waits forever without progressThe header skeleton hasn't reached the requested startBlock yet — the filler correctly waits rather than falsely declaring failureConfirm BackwardBlockWalker's descent has reached startBlock, or increase how long you wait
bundle.Metadata.GetLastFetchedBody() doesn't move even though blocks are being writtenYou're driving TipBandBodyFollowService, whose cursor is intentionally separate from the archive cursorThis is expected — check the tip-band cursor (ExecutionHeadBodyFillCursor), not the archive one
Backfill throws on a mismatched body/receiptA peer returned data that doesn't match the header's commitment — this is the trustless-fetch check working as intendedThe scheduler retries against another peer; if it persists, suspect a malicious or badly-synced peer
Archive cursor jumps unexpectedly on restart after a crashIt shouldn't — Phase 1 only advances the cursor over the contiguous persisted prefixIf you see this, it's worth filing — this is a documented invariant, not expected behavior

Decision guidance

I want to…Use
Fill a bounded, known range of blocksParallelBlockBackfiller.BackfillAsync(start, end, ct)
Fill bodies/receipts over headers already in the storeBackfillAsync(start, end, headersFromStore: true, ct)
Keep the live tip fed without waiting on historyTipBandBodyFollowService.FillOnceAsync
Consume blocks as a stream with reorg handlingIBlockSource (DevP2PBlockSource pulling, or PushedBlockSource for a push model)
Lay the header skeleton itself, backward from a trusted tipBackwardBlockWalker

For full documentation, see: https://docs.nethereum.com/docs/devp2p/guide-full-sync

© 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-full-sync of Nethereum/Nethereum.

Open the folder on GitHubat commit 229f278

Compare with similar skills

Devp2p Full Sync 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 Full Sync compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Devp2p Full Sync this skillNethereum/Nethereum2.3k—~2.1kAutomated 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 Full Sync

What does Devp2p Full Sync do?

Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…. Devp2p Full Sync is an agent skill from Nethereum/Nethereum.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming, and reorg handling.

When should I use Devp2p Full Sync?

Devp2p Full Sync fits situations like: the user mentions full sync; downloading blocks/headers/bodies/receipts over devp2p; parallelBlockBackfiller; tipBandBodyFollowService.

How do I install Devp2p Full Sync in Claude Code?

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

How do I install Devp2p Full Sync in Codex?

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

Can I use Devp2p Full Sync 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-full-sync -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-full-sync, .gemini/skills/devp2p-full-sync, .github/skills/devp2p-full-sync and .opencode/skills/devp2p-full-sync in your project.

What does Devp2p Full Sync need to run?

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

Does Devp2p Full Sync 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 Full Sync 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 Full Sync use?

Devp2p Full Sync 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 Full Sync use?

About 2.1k tokens (SKILL.md is roughly 8.6k 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 Full Sync?

Skills that share tags, products or a category with Devp2p Full Sync: 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 Full Sync?

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.