包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
5.8 KiB
5.8 KiB
Lending API Implementation
Overview
This directory contains the backend implementation for the AssetX Lending Market system.
API Endpoints
Query Endpoints (Public)
Get User Position
GET /api/lending/position/:address
Returns user's lending position including:
- Supplied USDC balance
- Borrowed USDC balance
- Collateral balances (YT-A, YT-B, YT-C)
- Health Factor
- LTV (Loan-to-Value) ratio
- Supply/Borrow APY
Response:
{
"success": true,
"data": {
"user_address": "0x...",
"wallet_address": "0x...",
"supplied_balance": "10000.00",
"supplied_balance_usd": 10000.00,
"borrowed_balance": "1000.00",
"borrowed_balance_usd": 1000.00,
"collateral_balances": {
"YT-A": {
"token_symbol": "YT-A",
"balance": "1000.00",
"balance_usd": 2000000.00,
"collateral_value": 1400000.00
}
},
"health_factor": 14.0,
"ltv": 10.0,
"supply_apy": 6.1,
"borrow_apy": 9.1
}
}
Get Lending Stats
GET /api/lending/stats
Returns lending market statistics:
- Total supplied/borrowed USD
- Total collateral USD
- Utilization rate
- Average APYs
- User counts
- Total TVL
Response:
{
"success": true,
"data": {
"total_supplied_usd": 50000000.00,
"total_borrowed_usd": 30000000.00,
"total_collateral_usd": 80000000.00,
"utilization_rate": 60.0,
"avg_supply_apy": 6.1,
"avg_borrow_apy": 9.1,
"total_users": 1250,
"active_borrowers": 450,
"total_tvl": 130000000.00
}
}
Get Lending Markets
GET /api/lending/markets
Returns lending market configuration from lending_markets table.
Get All Tokens Info
GET /api/lending/tokens
Returns information about all supported tokens (USDC + YT tokens from assets table).
Response:
{
"success": true,
"data": {
"stablecoins": [
{
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"contract_address_arb": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"contract_address_bsc": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"
}
],
"yt_tokens": [
{
"symbol": "YT-A",
"name": "YT-A",
"decimals": 18,
"contract_address_arb": "0x...",
"contract_address_bsc": "0x...",
"asset_code": "YT-A"
}
]
}
}
Get Token Info
GET /api/lending/tokens/:assetCode
Returns information about a specific token (USDC or YT-A/YT-B/YT-C).
Transaction Endpoints
Supply USDC
POST /api/lending/supply
Content-Type: application/json
{
"amount": "1000.00",
"tx_hash": "0x..."
}
Withdraw USDC
POST /api/lending/withdraw
Content-Type: application/json
{
"amount": "500.00",
"tx_hash": "0x..."
}
Supply Collateral
POST /api/lending/supply-collateral
Content-Type: application/json
{
"asset": "YT-A",
"amount": "100.00",
"tx_hash": "0x..."
}
Withdraw Collateral
POST /api/lending/withdraw-collateral
Content-Type: application/json
{
"asset": "YT-A",
"amount": "50.00",
"tx_hash": "0x..."
}
Borrow USDC
POST /api/lending/borrow
Content-Type: application/json
{
"amount": "1000.00",
"tx_hash": "0x..."
}
Repay USDC
POST /api/lending/repay
Content-Type: application/json
{
"amount": "500.00",
"tx_hash": "0x..."
}
Files
models.go- Data models and request/response structureshandlers.go- HTTP request handlershelpers.go- Helper functions (token info, calculations, validation)tokens.go- Token information endpointsrouters.go- Route documentation (routes registered in main.go)README.md- This file
Current Implementation Status
✅ Completed
- API endpoint structure
- Request/response models
- Basic validation
- Mock data responses
- Database integration for token information
- USDC configuration (hardcoded as per frontend)
- YT token information from
assetstable - Token validation against database
- Health factor and LTV calculation formulas
- Token info query endpoints
⏳ TODO
-
Blockchain Integration
- Connect to smart contracts
- Verify transactions on-chain
- Query real-time balances
- Calculate health factor from chain data
-
Database Integration
- Store transaction records
- Update lending_markets table
- Track user positions
- Generate statistics
-
Authentication
- Add wallet signature verification
- Implement user session management
-
Business Logic
- Interest accrual calculations
- Health factor monitoring
- Liquidation logic
- APY calculations
Database Schema
The lending system uses the following tables from database-schema-v1.1-final.sql:
lending_markets- Lending market configurationtransactions- Transaction recordsprotocol_stats- Protocol-level statistics
Note: User position data is primarily read from blockchain, with caching in database.
Integration with Frontend
Frontend components that use these APIs:
/lending/supply/SupplyPanel.tsx- Supply USDC/lending/supply/WithdrawPanel.tsx- Withdraw USDC/lending/repay/RepayBorrowDebt.tsx- Borrow/Repay USDC/lending/repay/RepaySupplyCollateral.tsx- Supply/Withdraw Collateral/lending/BorrowMarket.tsx- Display lending positions
Testing
# Start the server
go run main.go
# Test endpoints
curl http://localhost:8080/api/lending/stats
curl http://localhost:8080/api/lending/position/0x1234...
# Test transactions (requires auth)
curl -X POST http://localhost:8080/api/lending/supply \
-H "Content-Type: application/json" \
-d '{"amount": "1000", "tx_hash": "0x..."}'
Next Steps
- Implement blockchain RPC integration
- Add real transaction verification
- Implement health factor calculations
- Add liquidation monitoring
- Integrate with frontend
- Add comprehensive tests
- Deploy to testnet