Documentation Index
Fetch the complete documentation index at: https://sidiorresearchlabs.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Decentralized lending and borrowing protocol with credit scores and dynamic interest rates on Paxeer Network.
Dynamic APY
Competitive yields
Credit Scoring
On-chain reputation
Multi-Asset
Multiple tokens
Quick Start
API Base URL: https://lending-api.paxeer.app
curl https://lending-api.paxeer.app/api/pools
Key Features
Earn attractive yields by supplying assets to lending pools. Interest rates adjust dynamically based on utilization.
On-chain credit scores determine borrowing power and rates. Build your reputation over time.
Deposit and borrow multiple crypto assets including WETH, USDT, USDC, and more.
Battle-tested smart contracts with comprehensive security measures and audits.
REST API
Get All Lending Pools
Retrieves all available lending pools with current statistics.
curl https://lending-api.paxeer.app/api/pools
Response:
[
{
"assetAddress": "0xD0C1a714c46c364DBDd4E0F7b0B6bA5354460dA7",
"pTokenAddress": "0xE3Df3966007483e8076230e6E7AA381D3bAc52C0",
"symbol": "WETH",
"decimals": 18,
"totalSupplied": "209.119273268701533652",
"supplyApy": "5.21",
"borrowApy": "7.85"
}
]
Get User Lending Positions
Get user-specific data including credit score and borrowing power.
curl https://lending-api.paxeer.app/api/user/0x2fccd991Ecc9bEe62Bd10d751A5c5492e2a788C7
Response:
{
"address": "0x2fccd991Ecc9bEe62Bd10d751A5c5492e2a788C7",
"creditScore": 825,
"borrowingPower": "15000.0",
"amountBorrowed": "5000.0",
"availableToBorrow": "10000.0"
}
Smart Contract Functions
deposit()
Deposit assets into the lending pool to earn interest.
function deposit(
address asset,
uint256 amount
) external
Requires approve() call first to allow the lending pool to transfer your tokens.
Example:
import { ethers } from 'ethers';
const LENDING_POOL_ADDRESS = '0x...';
async function deposit(assetAddress, amount) {
const signer = await provider.getSigner();
// 1. Approve token spending
const token = new ethers.Contract(assetAddress, ERC20_ABI, signer);
const approveTx = await token.approve(LENDING_POOL_ADDRESS, amount);
await approveTx.wait();
// 2. Deposit
const lendingPool = new ethers.Contract(
LENDING_POOL_ADDRESS,
LENDING_POOL_ABI,
signer
);
const depositTx = await lendingPool.deposit(assetAddress, amount);
await depositTx.wait();
}
withdraw()
Withdraw your deposited assets plus earned interest.
function withdraw(
address asset,
uint256 amount
) external
Example:
async function withdraw(assetAddress, amount) {
const signer = await provider.getSigner();
const lendingPool = new ethers.Contract(
LENDING_POOL_ADDRESS,
LENDING_POOL_ABI,
signer
);
const withdrawTx = await lendingPool.withdraw(assetAddress, amount);
await withdrawTx.wait();
}
borrow()
Borrow assets based on your credit score and collateral.
function borrow(
address asset,
uint256 amount
) external
Example:
async function borrow(assetAddress, amount) {
const signer = await provider.getSigner();
const lendingPool = new ethers.Contract(
LENDING_POOL_ADDRESS,
LENDING_POOL_ABI,
signer
);
const borrowTx = await lendingPool.borrow(assetAddress, amount);
await borrowTx.wait();
}
repay()
Repay your borrowed amount to close or reduce your loan.
function repay(
address asset,
uint256 amount
) external
Requires approve() call first to allow the lending pool to transfer repayment tokens.
Example:
async function repay(assetAddress, amount) {
const signer = await provider.getSigner();
// 1. Approve token spending
const token = new ethers.Contract(assetAddress, ERC20_ABI, signer);
const approveTx = await token.approve(LENDING_POOL_ADDRESS, amount);
await approveTx.wait();
// 2. Repay
const lendingPool = new ethers.Contract(
LENDING_POOL_ADDRESS,
LENDING_POOL_ABI,
signer
);
const repayTx = await lendingPool.repay(assetAddress, amount);
await repayTx.wait();
}
Integration Guide
Fetch Pool Data
Get available pools and their current rates:const pools = await fetch('https://lending-api.paxeer.app/api/pools')
.then(res => res.json());
Approve Token Spending
Allow the lending pool to transfer your tokens:const token = new ethers.Contract(assetAddress, ERC20_ABI, signer);
await token.approve(LENDING_POOL_ADDRESS, amount);
Execute Action
Deposit, borrow, withdraw, or repay:const lendingPool = new ethers.Contract(
LENDING_POOL_ADDRESS,
LENDING_POOL_ABI,
signer
);
// Deposit
await lendingPool.deposit(assetAddress, amount);
// Or Borrow
await lendingPool.borrow(assetAddress, amount);
Monitor User Data
Track your positions and credit score:const userData = await fetch(
`https://lending-api.paxeer.app/api/user/${userAddress}`
).then(res => res.json());
console.log('Credit Score:', userData.creditScore);
console.log('Borrowing Power:', userData.borrowingPower);
Contract ABI
[
{
"inputs": [
{ "internalType": "address", "name": "asset", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "address", "name": "asset", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "address", "name": "asset", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "borrow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "address", "name": "asset", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "repay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
React Hook Example
import { useState, useEffect } from 'react';
export function useLendingPools() {
const [pools, setPools] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function fetchPools() {
try {
const response = await fetch('https://lending-api.paxeer.app/api/pools');
const data = await response.json();
setPools(data);
} catch (error) {
console.error('Error fetching pools:', error);
} finally {
setLoading(false);
}
}
fetchPools();
const interval = setInterval(fetchPools, 30000); // Refresh every 30s
return () => clearInterval(interval);
}, []);
return { pools, loading };
}
export function useUserLending(address: string) {
const [userData, setUserData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
if (!address) return;
async function fetchUserData() {
try {
const response = await fetch(
`https://lending-api.paxeer.app/api/user/${address}`
);
const data = await response.json();
setUserData(data);
} catch (error) {
console.error('Error fetching user data:', error);
} finally {
setLoading(false);
}
}
fetchUserData();
const interval = setInterval(fetchUserData, 30000);
return () => clearInterval(interval);
}, [address]);
return { userData, loading };
}
Understanding Credit Scores
Credit scores in the lending protocol range from 300 to 850 and affect:
Higher credit scores increase your maximum borrowing limit.
Better credit scores result in lower borrowing rates.
- Deposit assets consistently
- Repay loans on time
- Maintain healthy collateralization ratios
Best Practices
Always ensure you:
- Understand the risks of lending and borrowing
- Monitor your health factor to avoid liquidation
- Keep track of accruing interest
- Maintain sufficient collateral
Tips for success:
- Start with small amounts to learn the protocol
- Monitor APY changes regularly
- Diversify across multiple assets
- Set up alerts for health factor changes
Resources
API Documentation
Complete API reference
Community Support
Get help from the community
Security Audit
View our security audits