Skip to main content

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"
}