You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All providers (outer circle): Everyone registered in ServiceProviderRegistry
Approved providers (middle circle): Providers that meet baseline requirements, recorded in FilecoinWarmStorageService
Endorsed providers (inner circle): Small set of providers highly trusted by us that we will (initially) be storing at least one copy of everything on
This decision concerns how we identify the endorsed tier.
The core issue
The current proposed mechanism, "endorsement certificates" are using complex cryptographic machinery (EIP-712 signed certificates, distributed via SP capability metadata) to solve what is fundamentally a simple trust problem: "Which SPs should I store at least one copy with?"
For a small, curated inner circle, this complexity may not be justified, particularly since we don't believe this problem will exist as we proceed with future plans for the MSP intermediary layer.
Concerns with endorsement certificates
Complexity:
Significant implementation effort, still incomplete after multiple review rounds (but not too hard to finish)
SP selection logic is becoming difficult to explain
More moving parts = more failure modes
Operational burden:
Requires SP participation: they must submit certificates to their registry entry
Adds delay and coordination overhead
Requires confirmation by us after SP submission
Security:
No multisig: any one of three wallets (Tippy, Orjan, Jenny) can endorse
Single wallet compromise affects entire endorsement chain
No revocation mechanism--only certificate timeout
Cannot react quickly to trust changes or SP quality issues
Performance:
Must walk entire registry to find endorsed providers
Adds latency at startup before system functions
Proposed alternative: endorsed providers contract
A standalone contract holding a list of endorsed provider IDs:
Owner (multisig) can add/remove providers on demand
SDK fetches list in parallel with other initialization
Immediate revocation capability
O(1) lookup vs O(n) registry walk
Appropriate complexity for managing a small curated list
Effort estimate: ~2-3 days
Author contract + basic tests
Add to deployment scripts and docs
Hardcode address per-network in SDK (we could add another address record to FWSS, but I think we can treat this as a separate concern to core FWSS)
Add query to SDK
Decision framework
Ignoring sunk cost:
Aspect
Certificates
Simple Contract
Immediate cost
Lower (PR nearly ready)
Moderate (new work)
Ongoing complexity
High
Low
Security model
Weaker (single-sig)
Stronger (multisig)
Revocation
None (timeout only)
Immediate
SP coordination
Required
None
Explainability
Difficult
Trivial
Fit for small list
Over-engineered
Appropriate
Lock-in
Whichever approach ships, we must support it for the lifetime of SDK versions containing it. Switching later means maintaining both mechanisms in parallel for some period of time and we won't know for sure how long it would be.
With endorsement certificates and their expiry, we'd have the possibility of older SDK users looking for endorsed SPs and finding none once we stop updating them.
Options
Proceed with endorsement certificates: PR feat: Endorsement Certificates #443 is close to ready, but needs certificates rolled out to SPs and testing. Lowest immediate cost, but carries ongoing burdens.
Implement simple contract: Moderate upfront cost, but operationally simpler and more secure long-term.
Background
We have a three-tier provider trust model:
This decision concerns how we identify the endorsed tier.
The core issue
The current proposed mechanism, "endorsement certificates" are using complex cryptographic machinery (EIP-712 signed certificates, distributed via SP capability metadata) to solve what is fundamentally a simple trust problem: "Which SPs should I store at least one copy with?"
For a small, curated inner circle, this complexity may not be justified, particularly since we don't believe this problem will exist as we proceed with future plans for the MSP intermediary layer.
Concerns with endorsement certificates
Complexity:
Operational burden:
Security:
Performance:
Proposed alternative: endorsed providers contract
A standalone contract holding a list of endorsed provider IDs:
Effort estimate: ~2-3 days
Decision framework
Ignoring sunk cost:
Lock-in
Whichever approach ships, we must support it for the lifetime of SDK versions containing it. Switching later means maintaining both mechanisms in parallel for some period of time and we won't know for sure how long it would be.
With endorsement certificates and their expiry, we'd have the possibility of older SDK users looking for endorsed SPs and finding none once we stop updating them.
Options