Key Features
Core functionality of the Pupas Protocol
AI Investment System
Investment Strategies: Automated fund allocation across DeFi protocols
Risk Management: Continuous exposure monitoring and safeguards
Oracle Integration: Real-time price data for LP token pricing and yield
Performance Optimization: Dynamic strategy adjustment based on market conditions
AI Chat System
Multi-Agent Interface: Four specialized assistants for user support
Contextual Assistance: Real-time data processing from multiple sources
User Support System: Automated fund allocation based on AI models
Performance Optimization: Dynamic strategy adjustment based on market conditions
LP Token Mechanics
Dynamic Pricing Model
# LP Token Price stored as integer with 6 decimal precision
let currentPrice = tryGetInteger("global_lpPrice")
Price Updates
Oracle updates LP prices hourly via
updateLpPrice
functionPrice appreciation provides yield to stakers
Transparent on-chain calculation process
Withdrawal Process
# Withdrawal calculation
let lpAmount = pmt.amount
let amountToWithdraw = fraction(lpAmount, tryGetInteger("global_lpPrice"), Scale6)
# LP tokens are burned, USDTu returned to user
[
Burn(lpId, lpAmount),
ScriptTransfer(i.caller, amountToWithdraw, fromBase58String(assetIdStr))
]
Supported Tokens
Token Types
USDT-ERC20
Ethereum
Bridged to Waves via gateway
USDTu
Waves
Native support
Integration
Automatic token type detection via smart contract validation
Unified staking interface for both tokens
Seamless conversion and processing
Oracle System
Price Updates
Hourly price updates via
updateLpPrice
smart contract methodVolatility protection with 10% maximum change per update
On-chain transparency for all price changes
Calculation Process
# Oracle price update with validation
@Callable(i)
func updateLpPrice(lpPrice: Int) = {
let currentOraclePrice = valueOrElse(getInteger("global_lpPrice"), Scale6)
let oracleChangeDelta = abs(max(
fraction(currentOraclePrice, Scale6, lpPrice),
fraction(lpPrice, Scale6, currentOraclePrice)
) - Scale6)
# Validate price change within tolerance
if (oracleChangeDelta > OracleVolatilityTolerance) then
throw("max change for oracle is " + toString(fraction(OracleVolatilityTolerance / 100, Scale6)) + "%")
else
[IntegerEntry("global_lpPrice", lpPrice)]
}
Chat System
Four Specialized Agents
General Support Agent
Platform navigation assistance
Feature explanations
Basic user guidance
Yield Analytics Agent
APY calculations and insights
Performance data analysis
Yield mechanism explanations
Technical Support Agent
Transaction assistance
Smart contract interaction help
Technical troubleshooting
Security & Risk Agent
Risk assessment guidance
Security recommendations
Best practices education
Last updated