Skip to main content

What are Points Adapters?

The Points Adapters SDK provides a unified collection of 56+ pre-built integrations that fetch and normalize points, rewards, XP, and engagement metrics from leading blockchain protocols. Each adapter follows a consistent interface, making it simple to query user activity across multiple platforms with minimal code.

Quick Example

import etherfi from './adapters/etherfi.ts';

const data = await etherfi.fetch('0x...');
const total = etherfi.total(data); // Get total points
const details = etherfi.data(data); // Get detailed breakdown

Protocol Categories

Our adapter collection spans multiple protocol categories:

Liquid Staking & Restaking

Track points from LST/LRT protocols
  • EtherFi: Liquid restaking points and multipliers
  • Symbiotic: Restaking rewards across multiple phases
  • Karak: XP tracking by phase
  • Kelp DAO: Staking rewards
  • Bedrock: Liquid staking metrics

DeFi Protocols

Monitor lending, DEX, and yield platforms
  • Dolomite: Minerals tracking (terminology example)
  • Mellow: DeFi engagement points
  • Silo Finance: Lending protocol rewards
  • Resolv: Stablecoin protocol points
  • Superform: Cross-chain vault points

Bridges & Interoperability

Cross-chain activity and rewards
  • deBridge: Multi-season bridge points
  • Jumper Exchange: Aggregator rewards
  • Hyperflow: Cross-chain points
  • Swaps.io: Bridge engagement

Gaming & Social

Track gaming rewards and social engagement
  • Galxe: XP, levels, and gold tracking
  • Nansen: Analytics platform points
  • Rainbow: Wallet engagement rewards
  • Hypurr: Gaming ecosystem points

Layer 2s & Chains

Network-specific points programs
  • Taiko: Trailblazer season tracking
  • Sonic: Network activity points
  • Corn: Chain engagement
  • Reya: Network rewards

Infrastructure & Tools

Developer tools and analytics
  • Blockscout: Explorer merits
  • Spark: Infrastructure points
  • PRJX: Project engagement
  • Felix: Tool usage rewards

Adapter Structure

Every adapter in the collection follows a standardized export interface:
interface AdapterExport {
  // Fetch raw data from protocol API
  fetch: (address: string) => Promise<any>;
  
  // Transform into labeled data breakdown
  data: (rawData: any) => Record<string, any>;
  
  // Calculate aggregate totals
  total: (rawData: any) => number | Record<string, number>;
  
  // User's leaderboard position (optional)
  rank?: (rawData: any) => number;
  
  // Whether rewards are claimable (optional)
  claimable?: (rawData: any) => boolean;
  
  // Deprecation timestamps (optional)
  deprecated?: () => Record<string, number>;
  
  // Supported address types
  supportedAddressTypes: ('evm' | 'svm')[];
}

Key Features

Multi-Chain Support

EVM and Solana (SVM) address compatibility

CORS Handling

Built-in CORS proxy for browser environments

Type Safety

Full TypeScript support with typed exports

Address Type Support

Adapters declare which blockchain address formats they support:
  • EVM: Ethereum-style hex addresses (0x...)
  • SVM: Solana base58 addresses
// Adapters supporting both EVM and Solana
export default {
  fetch: async (address: string) => {
    // Auto-detects address type
    const addressType = requireAddressType(address);
    // ...
  },
  supportedAddressTypes: ['evm', 'svm'],
} as AdapterExport;
Examples of multi-chain adapters:
  • deBridge (EVM + SVM)
  • Jumper Exchange (EVM + SVM)
  • Nansen (EVM + SVM)

EtherFi

Type: Liquid RestakingComprehensive points tracking with seasonal breakdowns:
  • All Time Points
  • Current Points
  • Last Month Points
  • Latest 3 Months Points
Supported: EVM addresses

deBridge

Type: Cross-Chain BridgeMulti-season tracking with rank and multipliers:
  • Season 1, 2, 3 points
  • Active/Final multipliers
  • NFT bonuses
  • Claimability detection
Supported: EVM + Solana addresses

Galxe

Type: Social & QuestingGaming-style progression system:
  • User XP and levels
  • Gold currency
  • Username integration
Supported: EVM addresses

Symbiotic

Type: Restaking ProtocolAdvanced points calculation:
  • Multi-phase points tracking
  • Decimal normalization
  • USD deposit tracking
Supported: EVM addresses

Custom Terminology

Adapters support protocol-specific naming conventions beyond “points”:
Some protocols use unique terminology like “Minerals”, “Merits”, or “Cred”:
// Dolomite uses "Minerals" instead of "Points"
total: (data) => ({
  Minerals: data.milestones.amount ?? 0
}),

data: (data) => ({
  Minerals: {
    Amount: data.milestones.amount,
    Rank: data.milestones.rank,
    Airdrop: data.airdrop?.amount,
  }
})
When total returns a custom label, data must use the same top-level key for consistency.

Deprecated Programs

Adapters can mark expired or ended points programs:
deprecated: () => ({
  'Season 1': 1729113600,  // Oct 17, 2024 (Unix timestamp)
  'Season 2': 1763554128,  // Nov 19, 2025
})
This helps users understand which programs are no longer active.

Contributing New Adapters

Want to add support for a new protocol? Follow these steps:
  1. Clone the repository
    git clone https://github.com/0xPortalLabs/points-adapters.git
    
  2. Create your adapter file
    touch adapters/yourprotocol.ts
    
  3. Implement the AdapterExport interface
    • fetch: Query the protocol’s API
    • data: Transform response to labeled breakdown
    • total: Calculate aggregate values
    • supportedAddressTypes: Declare address compatibility
  4. Test your adapter
    deno run -A test.ts adapters/yourprotocol.ts 0x...
    
  5. Submit a pull request

Join the Community

Get help, share feedback, and collaborate with other contributors in our Discord server.

Next Steps

Browse All Adapters

View the complete list of 56 adapters with details

GitHub Repository

Explore source code and contribute

Build docs developers (and LLMs) love