Swift SDK
Installation
Swift Package Manager
Add to your Package.swift:
dependencies: [
.package(url: "https://github.com/crowdproof/sdk-swift.git", from: "1.0.0")
]
Or in Xcode: File > Add Package Dependencies, enter the repository URL.
Requires Swift 5.9+ / iOS 16+ / macOS 13+.
Initialization
import CrowdProofSDK
let client = CrowdProofClient(apiKey: "cp_live_abc123...")
Reputation Scores
// Single score
let score = try await client.getScore("0x1234...", category: .defiLending)
print("Score: \(score.score), Tier: \(score.tier)")
// All categories
let all = try await client.getAllScores("0x1234...")
for s in all.scores {
print("\(s.category): \(s.score)")
}
// Batch query
let batch = try await client.batchQuery(
addresses: ["0x1234...", "0x5678..."],
category: .defiLending
)
ZK Proofs
// Generate
let proof = try await client.generateProof(
subject: "0x1234...",
proofType: .scoreAboveThreshold,
category: .defiLending,
threshold: 700
)
// Verify
let result = try await client.verifyProof(proof.proof)
print("Valid: \(result.valid)")
Identity (DID)
// Register
let did = try await client.registerDID("0x1234...", chainId: 1)
// Resolve
let resolved = try await client.getDID("did:ethr:0x1234...")
Error Handling
do {
let score = try await client.getScore("invalid", category: .defiLending)
} catch let error as CrowdProofError {
print("Error \(error.status): \(error.message)")
if error.status == 429, let retryAfter = error.retryAfter {
try await Task.sleep(for: .seconds(retryAfter))
}
}
Score Categories
The SDK provides a type-safe enum for score categories:
enum ScoreCategory: String, Codable {
case defiLending = "DEFI_LENDING"
case dexTrading = "DEX_TRADING"
case governance = "GOVERNANCE"
case nftActivity = "NFT"
case socialReputation = "SOCIAL"
case creditHistory = "CREDIT_HISTORY"
}