Fix & Optimize contract

This commit is contained in:
2025-12-23 14:05:41 +08:00
parent b927acf3b7
commit d2e9377f78
117 changed files with 745 additions and 191 deletions

View File

@@ -17,6 +17,11 @@ import "../../interfaces/IYTPriceFeed.sol";
contract YTVault is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {
using SafeERC20 for IERC20;
/// @custom:oz-upgrades-unsafe-allow constructor
constructor() {
_disableInitializers();
}
error Forbidden();
error OnlyPoolManager();
error NotSwapper();
@@ -101,6 +106,8 @@ contract YTVault is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {
);
event EmergencyModeSet(bool enabled);
event SwapEnabledSet(bool enabled);
event GovChanged(address indexed oldGov, address indexed newGov);
event PoolManagerChanged(address indexed oldManager, address indexed newManager);
modifier onlyGov() {
if (msg.sender != gov) revert Forbidden();
@@ -159,12 +166,16 @@ contract YTVault is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {
function setGov(address _gov) external onlyGov {
if (_gov == address(0)) revert InvalidAddress();
address oldGov = gov;
gov = _gov;
emit GovChanged(oldGov, _gov);
}
function setPoolManager(address _manager) external onlyGov {
if (_manager == address(0)) revert InvalidAddress();
address oldManager = ytPoolManager;
ytPoolManager = _manager;
emit PoolManagerChanged(oldManager, _manager);
}
function setSwapper(address _swapper, bool _isActive) external onlyGov {
@@ -545,11 +556,12 @@ contract YTVault is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {
}
// 恶化平衡 → 提高手续费
uint256 averageDiff = (initialDiff + nextDiff) / 2;
if (averageDiff > targetAmount) {
averageDiff = targetAmount;
// taxBps = tax * (a + b) / (2 * target)
uint256 sumDiff = initialDiff + nextDiff;
if (sumDiff / 2 > targetAmount) {
sumDiff = targetAmount * 2;
}
uint256 taxBps = _taxBasisPoints * averageDiff / targetAmount;
uint256 taxBps = _taxBasisPoints * sumDiff / (targetAmount * 2);
return _feeBasisPoints + taxBps;
}