Filecoin Docs
BasicsStorage providersNodesNetworksSmart contractsReference
  • Welcome to Filecoin Docs
  • Basics
    • What is Filecoin
      • Crypto-economics
      • Blockchain
      • Storage model
      • Storage market
      • Retrieval market
      • Programming on Filecoin
      • Networks
    • The blockchain
      • Actors
      • Addresses
      • Blocks and tipsets
      • Consensus
      • Drand
      • Proofs
    • Assets
      • The FIL token
      • Wallets
      • Metamask setup
      • Get FIL
      • Transfer FIL
    • Interplanetary consensus
    • How storage works
      • Filecoin plus
      • Storage onramps
      • Filecoin and IPFS
    • How retrieval works
      • Basic retrieval
      • Serving retrievals
      • Saturn
    • Project and community
      • Forums and FIPs
      • Filecoin compared to
      • Filecoin FAQs
      • Related projects
      • Social media
      • The Filecoin project
      • Ways to contribute
  • Storage providers
    • Basics
      • Quickstart guide
    • Filecoin economics
      • Storage proving
      • FIL collateral
      • Block rewards
      • Slashing
      • Committed capacity
    • Filecoin deals
      • Storage deals
      • Verified deals
      • Filecoin programs and tools
      • Snap deals
      • Charging for data
      • Auxiliary services
      • Return-on-investment
    • Architecture
      • Software components
      • Storage provider automation
      • Sealing pipeline
      • Sealing rate
      • Sealing-as-a-service
      • Network indexer
    • Infrastructure
      • Storage
      • Network
      • Backup and disaster recovery
      • Reference architectures
    • Skills
      • Linux
      • Network
      • Security
      • Storage
      • Sales
      • Industry
    • PDP
      • Prerequisites
      • Install & Run Lotus
      • Install & Run YugabyteDB
      • Install & Run Curio
      • Enable PDP
      • Use PDP
  • Nodes
    • Implementations
      • Lotus
      • Venus
    • Full-nodes
      • Pre-requisites
      • Basic setup
      • Node providers
    • Lite-nodes
      • Spin up a lite-node
  • Smart contracts
    • Fundamentals
      • The Filecoin Virtual Machine
      • Filecoin EVM runtime
      • ERC-20 quickstart
      • Roadmap
      • Support
      • FAQs
    • Filecoin EVM-runtime
      • Actor types
      • Address types
      • FILForwarder
      • Difference with Ethereum
      • How gas works
      • Precompiles
    • Programmatic storage
      • Aggregated deal-making
      • Direct deal-making
      • Cross-Chain Data Bridge(CCDB)
      • Data replication, renewal and repair (RaaS)
      • RaaS interfaces
    • Developing contracts
      • Get test tokens
      • Remix
      • Hardhat
      • Foundry
      • Solidity libraries
      • Call built-in actors
      • Filecoin.sol
      • Direct deal-making with Client contract
      • Using RaaS
      • Verify a contract
      • Best practices
    • Advanced
      • Wrapped FIL
      • Oracles
      • Multicall
      • Multisig
      • FEVM Indexers
      • Cross-chain bridges
      • Aggregated deal-making
      • Contract automation
      • Relay
  • Networks
    • Mainnet
      • Explorers
      • RPCs
      • Network performance
    • Calibration
      • Explorers
      • RPCs
    • Local testnet
      • Get test tokens
    • Deprecated networks
  • Reference
    • General
      • Glossary
      • Specifications
      • Tools
    • Exchanges
      • Exchange integration
    • Built-in actors
      • Protocol API
      • Filecoin.sol
    • JSON-RPC
      • Auth
      • Chain
      • Client
      • Create
      • Eth
      • Gas
      • I
      • Log
      • Market
      • Miner
      • Mpool
      • Msig
      • Net
      • Node
      • Paych
      • Raft
      • Start
      • State
      • Sync
      • Wallet
      • Web3
  • Builder Cookbook
    • Overview
    • Table of Contents
    • Data Storage
      • Store Data
      • Retrieve Data
      • Privacy & Access Control
    • dApps
      • Chain-Data Query
      • Oracles
      • Cross-Chain Bridges
      • Decentralized Database
Powered by GitBook
LogoLogo

Basics

  • Overview
  • Crypto-economics
  • Storage model
  • Reference

Developers

  • The FVM
  • EVM-runtime
  • Quickstart
  • Transfer FIL

Contact

  • GitHub
  • Slack
  • Twitter
On this page
  • Attach Storage Locations
  • Add a PDP Configuration Layer
  • Set Up PDP Service Keys
  • Import your Filecoin Wallet Private Key:
  • Restart and Verify
  • 🎉 You’re Ready!
  • 🔜 Next Steps

Was this helpful?

Edit on GitHub
Export as PDF
  1. Storage providers
  2. PDP

Enable PDP

This section enables Proof of Data Possession (PDP) for a Storage Provider node using Curio. These steps guide you through running a standalone PDP service using Curio and pdptool.

PreviousInstall & Run CurioNextUse PDP

Last updated 20 days ago

Was this helpful?

Attach Storage Locations

With Curio running with the GUI layer:

curio run --layers=gui

Run the following commands in your Curio CLI to attach storage paths:

curio cli storage attach --init --seal /fast-storage/path
curio cli storage attach --init --store /long-term-storage/path

Your fast-storage path should point to high-performance storage media such as NVMe or SSD


Add a PDP Configuration Layer

Browse to the Configurations page of the Curio GUI.

Create a new layer named pdp. Enable and set to true the following under Subsystems:

You may find it helpful to search for the setting names in your browser.

  • ✅ EnableParkPiece

  • ✅ EnablePDP

  • ✅ EnableCommP

  • ✅ EnableMoveStorage

In the HTTP section:

  • ✅ Enable: true

  • 🌐 DomainName: your domain (e.g., pdp.mydomain.com)

  • 📡 ListenAddress: 0.0.0.0:443

You must point your domain’s A record to your server’s public IP address for Let’s Encrypt to issue a certificate.


Set Up PDP Service Keys

Build the pdptool:

cd curio/cmd/pdptool
go build .

Generate a service secret:

./pdptool create-service-secret
# Example output:

-----BEGIN PUBLIC KEY-----
LxP9MzVmHdC7KwYBvNAo1jXuIRfGXqQyo2JzE4Uctn0a5eFZbs6Wlvq3dKYgphTD
XAqRsm38LPt2iVcGb9MruZJxEkBhO71wDdNyaFMoXpCJnUqRAezvKlfbIg==
-----END PUBLIC KEY-----

Browse to the PDP page of the Curio GUI and in the Services section:

  • Select Add PDP Service

  • Input a Service Name of your choice (e.g. pdp-service)

  • Copy the previously generated public key into the Public Key field.

  • Select Add Service


Import your Filecoin Wallet Private Key:

There are several ways to obtain private keys for Ethereum addresses. For this guide, we will use a new delegated Filecoin wallet address.

Create a new delegated wallet:

lotus wallet new delegated
# Example output:

t410fuo4dghaeiqzokiqnxruzdr6e3cjktnxprrc56bi

You can display your Lotus wallets at any time by running:

lotus wallet list

Export & convert your new delegated wallet address private key:

lotus wallet export <your-delegated-wallet-address> | xxd -r -p | jq -r '.PrivateKey' | base64 -d | xxd -p -c 32
# Example output:

d4c2e3f9a716bb0e47fa91b2cf4a29870be3c5982fd6eafed71e8ac3f9c0b12

Browse to the PDP page of the Curio GUI and in the Owner Address section:

  • Select Import Key

  • Copy the previously generated private wallet key into the Private Key (Hex) field.

  • Select Import Key

Your 0x wallet address - the delegated Ethereum address derived from your Filecoin Metamask private key - will be added to the Owner Address section of the Curio PDP page.

Make sure to send a small amount of FIL to your 0x wallet - we recommend 5 FIL to ensure uninterrupted PDP operation during initial setup and testing.

Important: Secure your private key material. Don’t expose or store it in plain text without protection.


Restart and Verify

Restart Curio with both layers:

curio run --layers=gui,pdp

If you encounter errors binding to port 443 when starting Curio with the pdp configuration layer, run:

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/curio

Test the PDP service:

./pdptool ping --service-url https://your-domain.com --service-name <ServiceName>

Use the service name specified in the Service Name field when you added your public PDP Service key - e.g. pdp-service

Expected output:

Ping successful: Service is reachable and JWT token is valid.

Note: The first ping often fails. Try again after a short delay.


🎉 You’re Ready!

You’ve successfully launched a PDP-enabled Filecoin Storage Provider stack. Your system is now:

  • ✅ Syncing with the Filecoin network via Lotus

  • ✅ Recording deal and sector metadata in YugabyteDB

  • ✅ Operating Curio to manage sealing and coordination

  • ✅ Submitting Proof of Data Possession to verify storage integrity


🔜 Next Steps

  • 🧭 Monitor logs and metrics

🚙 Take PDP for a test drive with the guide

💬 Join the community - Filecoin Slack -

Use PDP
#fil-pdp
Cover
Cover
Cover

PDP Documentation
Filecoin Slack - #fil-pdp
Filecoin Wallet - MetaMask Setup