Skip to content

Differences vs upstream Curio

Curio Core consumes upstream filecoin-project/curio as a Go module and adds three things:

  1. A SQLite-backed harmonyquery.DBInterface implementation
  2. Curio-core-shape replacements for cluster-aware components (localpiecepark, diskstash)
  3. A new operator dashboard + USDFC settlement task + a few QoL CLI tools

It does not fork upstream Go files. The integration is interface-driven so we follow upstream's releases without merge conflicts.

What runs vs what's stripped

Upstream componentCurio CoreWhy
Yugabyte-based harmonydbSQLite via harmonyquery.DBInterfaceOne binary, one file
Lotus full nodeEmbedded LanternNo 76 GB chain DB
All sealing tasks (SDR, TreeRC, PoRep, CommitBatch, MoveStorage, etc.)StrippedHot-storage doesn't seal
WindowPoSt / WinningPoStStrippedSealed-storage proofs only
Curio Markets (Boost)StrippedPDP is the new market shape
MK20 dealsStrippedNot needed for PDP-only SPs
lib/paths cluster storageinternal/localpiecepark + internal/diskstashSingle-node shape
cmd/curio CLIcmd/curio-coreReduced surface
Curio WebUI (vendored web/ tree)New internal/dashboardCurio Core branding + reduced scope
lib/cachedreader shared piece readerStripped (single-node = no cache needed)OS page cache is enough
IPNI advertiser sidecarNot yet wiredTracking in curio-core#42
tasks/pay/SettleLockupPeriodReplaced with internal/payments.PDPv0_PaySettleSame idea, simpler shape for single-payee

What's kept verbatim from upstream

  • The harmonytask scheduler engine itself (harmony/harmonytask/).
  • The PDPv0 task surface (tasks/pdpv0/*): Prove, InitPP, NextPP, PullPiece, Notify, ChainSync, SaveCache, DelDataSet, TermFWSS, watchers.
  • The pdp HTTP API package serving /pdp/* (uploads, retrievals, dataset CRUD).
  • The FEVM contract bindings in pdp/contract/ and lib/filecoinpayment/.
  • SenderETH and SendTaskETH for on-chain message dispatch.

When upstream ships a PDP fix, we typically rebase our db-seam-refactor branch and the change flows through. Recent example: PR #1245 (PullPiece refactor) was adopted in a few hours.

When to use upstream Curio instead

Use upstream Curio if you need any of:

  • Sealing (proof-of-replication for cold storage)
  • WindowPoSt / WinningPoSt
  • Multi-node cluster operation
  • Boost / MK20 deal markets
  • IPFS HTTP gateway
  • Production scale (today; pre-alpha is the limit on curio-core)

Curio Core is for the single-node hot-storage shape. Upstream Curio is the right choice for everything else.

Released under the Apache 2.0 OR MIT license.