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.
DEPRECATED DEVELOPER TOOL
This documentation refers to the legacy pdptool
, which is intended only for low-level developer testing.
It is not the recommended method for onboarding or interacting with PDP Storage Providers.
For current usage, including working with live PDP SPs and submitting real deals, please use the Synapse SDK and Synapse dApp Tutorial.
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
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:
✅
EnableParkPiece
✅
EnablePDP
✅
EnableCommP
✅
EnableMoveStorage
In the HTTP section:
✅ Enable:
true
🌐 DomainName:
your domain (e.g., pdp.mydomain.com)
📡 ListenAddress:
0.0.0.0:443
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:
Create a new delegated wallet:
lotus wallet new delegated
# Example output:
t410fuo4dghaeiqzokiqnxruzdr6e3cjktnxprrc56bi
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.
🎉 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
Last updated
Was this helpful?