init: 初始化 AssetX 项目仓库
包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
This commit is contained in:
285
webapp-back/lending/README.md
Normal file
285
webapp-back/lending/README.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# 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:**
|
||||
```json
|
||||
{
|
||||
"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:**
|
||||
```json
|
||||
{
|
||||
"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:**
|
||||
```json
|
||||
{
|
||||
"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 structures
|
||||
- `handlers.go` - HTTP request handlers
|
||||
- `helpers.go` - Helper functions (token info, calculations, validation)
|
||||
- `tokens.go` - Token information endpoints
|
||||
- `routers.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 `assets` table
|
||||
- Token validation against database
|
||||
- Health factor and LTV calculation formulas
|
||||
- Token info query endpoints
|
||||
|
||||
### ⏳ TODO
|
||||
1. **Blockchain Integration**
|
||||
- Connect to smart contracts
|
||||
- Verify transactions on-chain
|
||||
- Query real-time balances
|
||||
- Calculate health factor from chain data
|
||||
|
||||
2. **Database Integration**
|
||||
- Store transaction records
|
||||
- Update lending_markets table
|
||||
- Track user positions
|
||||
- Generate statistics
|
||||
|
||||
3. **Authentication**
|
||||
- Add wallet signature verification
|
||||
- Implement user session management
|
||||
|
||||
4. **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 configuration
|
||||
- `transactions` - Transaction records
|
||||
- `protocol_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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
1. Implement blockchain RPC integration
|
||||
2. Add real transaction verification
|
||||
3. Implement health factor calculations
|
||||
4. Add liquidation monitoring
|
||||
5. Integrate with frontend
|
||||
6. Add comprehensive tests
|
||||
7. Deploy to testnet
|
||||
Reference in New Issue
Block a user