From 2063923f8d4fbe885cb381021ef06c742aa3353e Mon Sep 17 00:00:00 2001 From: Uncle Fatso Date: Sun, 8 Feb 2026 21:06:26 +0300 Subject: [PATCH] make governance more flexible for most frequent functions Signed-off-by: Uncle Fatso --- src/BondDepository.sol | 14 ++++++++++++-- src/Treasury.sol | 7 ++++++- src/interfaces/IBondDepository.sol | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/BondDepository.sol b/src/BondDepository.sol index 38395f0..3b108d0 100644 --- a/src/BondDepository.sol +++ b/src/BondDepository.sol @@ -130,7 +130,12 @@ contract GhostBondDepository is IBondDepository, NoteKeeper { address _quoteToken, uint32[2] calldata _intervals, bool[2] calldata _booleans - ) external override onlyPolicy returns (uint256 id) { + ) external override returns (uint256 id) { + if ( + msg.sender != authority.governor() && + msg.sender != authority.policy() + ) revert NotGuardianOrPolicy(); + uint256 secondsToConclusion = _terms[1] - block.timestamp; uint256 decimals = IERC20Metadata(_quoteToken).decimals(); uint64 targetDebt = uint64(_booleans[0] @@ -179,7 +184,12 @@ contract GhostBondDepository is IBondDepository, NoteKeeper { emit MarketCreated(id, address(_ftso), _quoteToken, _market[1]); } - function close(uint256 id) external override onlyPolicy { + function close(uint256 id) external override { + if ( + msg.sender != authority.governor() && + msg.sender != authority.policy() + ) revert NotGuardianOrPolicy(); + terms[id].conclusion = uint48(block.timestamp); markets[id].capacity = 0; emit MarketClosed(id); diff --git a/src/Treasury.sol b/src/Treasury.sol index 2ea7a83..b6b536d 100644 --- a/src/Treasury.sol +++ b/src/Treasury.sol @@ -149,7 +149,12 @@ contract GhostTreasury is GhostAccessControlled, ITreasury { emit RepayDebt(msg.sender, ftso, amount, amount); } - function auditReserves() external onlyGovernor { + function auditReserves() external { + if ( + msg.sender != authority.governor() && + msg.sender != authority.guardian() + ) revert NotApproved(); + uint256 reserves; address[] memory reserveTokens = registry[STATUS.RESERVETOKEN]; diff --git a/src/interfaces/IBondDepository.sol b/src/interfaces/IBondDepository.sol index 636160d..d8dba1e 100644 --- a/src/interfaces/IBondDepository.sol +++ b/src/interfaces/IBondDepository.sol @@ -7,6 +7,7 @@ interface IBondDepository { error DepositoryConcluded(uint48 concludedTime); error DepositoryMaxPrice(uint256 price, uint256 maxPrice); error DepositoryMaxSize(uint256 payout, uint256 maxPayout); + error NotGuardianOrPolicy(); event MarketClosed(uint256 indexed id); event Bond(uint256 indexed id, uint256 amount, uint256 price);