| name | defi-protocols |
| description | Master DeFi protocol development including AMMs, lending, yield, and oracles |
| sasmp_version | 1.3.0 |
| version | 2.0.0 |
| updated | 2025-01 |
| bonded_agent | 04-defi-specialist |
| bond_type | PRIMARY_BOND |
| atomic | true |
| single_responsibility | defi_development |
| parameters | {"protocol_type":{"type":"string","required":true,"enum":["amm","lending","yield","oracle","flash_loan"]},"chain":{"type":"string","default":"ethereum"}} |
| retry_config | {"max_attempts":3,"backoff":"exponential","initial_delay_ms":1000} |
| logging | {"level":"info","include_timestamps":true,"track_usage":true} |
DeFi Protocols Skill
Master DeFi protocol development including AMM mechanics, lending systems, yield optimization, and oracle integration.
Quick Start
Skill("defi-protocols", protocol_type="amm", chain="ethereum")
Topics Covered
1. AMM (Automated Market Makers)
Build decentralized exchanges:
- Constant Product: x * y = k (Uniswap V2)
- Concentrated Liquidity: Tick-based (Uniswap V3)
- Stable Swaps: Curve invariant
- TWAP: Time-weighted average price
2. Lending Protocols
Create lending markets:
- Overcollateralized: Aave/Compound model
- Interest Rates: Utilization-based curves
- Liquidation: Health factor, incentives
- Isolated Markets: Risk segmentation
3. Yield Optimization
Maximize returns:
- Auto-compounding: Vault strategies
- Liquidity Mining: Reward distribution
- veTokens: Vote-escrowed governance
- Bribes: Gauge voting incentives
4. Oracle Integration
Secure price feeds:
- Chainlink: Decentralized oracles
- TWAP: Manipulation resistant
- Staleness Checks: Price freshness
- Fallbacks: Multi-oracle setups
Code Examples
AMM Swap Calculation
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
library SwapMath {
uint256 constant FEE_NUMERATOR = 997;
uint256 constant FEE_DENOMINATOR = 1000;
/// @notice Calculate output amount for constant product AMM
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) internal pure returns (uint256) {
uint256 amountInWithFee = amountIn * FEE_NUMERATOR;
uint256 numerator = amountInWithFee * reserveOut;
uint256 denominator = reserveIn * FEE_DENOMINATOR + amountInWithFee;
return numerator / denominator;
}
/// @notice Calculate price impact percentage (basis points)
function getPriceImpact(
uint256 amountIn,
uint256 reserveIn
) internal pure returns (uint256) {
return (amountIn * 10000) / (reserveIn + amountIn);
}
}